@ovok/native 1.5.5 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -17
- package/app.plugin.js +104 -0
- package/lib/commonjs/index.js +11 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/modules/auth/delete-account-button/components/delete-account-button.js +2 -0
- package/lib/commonjs/modules/auth/delete-account-button/components/delete-account-button.js.map +1 -1
- package/lib/commonjs/modules/auth/hooks/use-rate-limit-cooldown.js +23 -0
- package/lib/commonjs/modules/auth/hooks/use-rate-limit-cooldown.js.map +1 -0
- package/lib/commonjs/modules/auth/hooks/use-session.js +91 -0
- package/lib/commonjs/modules/auth/hooks/use-session.js.map +1 -0
- package/lib/commonjs/modules/auth/index.js +44 -0
- package/lib/commonjs/modules/auth/index.js.map +1 -1
- package/lib/commonjs/modules/auth/logout-button/components/logout-button.js +3 -1
- package/lib/commonjs/modules/auth/logout-button/components/logout-button.js.map +1 -1
- package/lib/commonjs/modules/auth/register/components/form/inputs.js +48 -1
- package/lib/commonjs/modules/auth/register/components/form/inputs.js.map +1 -1
- package/lib/commonjs/modules/auth/register/components/form/register-button.js +4 -0
- package/lib/commonjs/modules/auth/register/components/form/register-button.js.map +1 -1
- package/lib/commonjs/modules/auth/register/components/form/register-form-provider.js +6 -0
- package/lib/commonjs/modules/auth/register/components/form/register-form-provider.js.map +1 -1
- package/lib/commonjs/modules/auth/reset-password/components/form/inputs.js +12 -0
- package/lib/commonjs/modules/auth/reset-password/components/form/inputs.js.map +1 -1
- package/lib/commonjs/modules/auth/reset-password/components/form/reset-password-button.js +4 -0
- package/lib/commonjs/modules/auth/reset-password/components/form/reset-password-button.js.map +1 -1
- package/lib/commonjs/modules/auth/reset-password/components/form/reset-password-form-provider.js +7 -1
- package/lib/commonjs/modules/auth/reset-password/components/form/reset-password-form-provider.js.map +1 -1
- package/lib/commonjs/modules/auth/session/components/session-list.js +82 -0
- package/lib/commonjs/modules/auth/session/components/session-list.js.map +1 -0
- package/lib/commonjs/modules/auth/session/events.js +19 -0
- package/lib/commonjs/modules/auth/session/events.js.map +1 -0
- package/lib/commonjs/modules/auth/session/index.js +13 -0
- package/lib/commonjs/modules/auth/session/index.js.map +1 -0
- package/lib/commonjs/modules/auth/session/types/session-list-props.js +6 -0
- package/lib/commonjs/modules/auth/session/types/session-list-props.js.map +1 -0
- package/lib/commonjs/modules/auth/sign-in/components/form/inputs.js +25 -0
- package/lib/commonjs/modules/auth/sign-in/components/form/inputs.js.map +1 -1
- package/lib/commonjs/modules/auth/sign-in/components/form/login-form-provider.js +48 -1
- package/lib/commonjs/modules/auth/sign-in/components/form/login-form-provider.js.map +1 -1
- package/lib/commonjs/modules/auth/sign-in/components/form/mfa-code-input.js +58 -0
- package/lib/commonjs/modules/auth/sign-in/components/form/mfa-code-input.js.map +1 -0
- package/lib/commonjs/modules/auth/sign-in/components/form/sign-in-with-email.js +2 -0
- package/lib/commonjs/modules/auth/sign-in/components/form/sign-in-with-email.js.map +1 -1
- package/lib/commonjs/modules/auth/sign-in/components/form/signin-button.js +13 -5
- package/lib/commonjs/modules/auth/sign-in/components/form/signin-button.js.map +1 -1
- package/lib/commonjs/modules/auth/types/session.js +2 -0
- package/lib/commonjs/modules/auth/types/session.js.map +1 -0
- package/lib/commonjs/modules/auth/utils/rate-limit.js +37 -0
- package/lib/commonjs/modules/auth/utils/rate-limit.js.map +1 -0
- package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js +3 -2
- package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -1
- package/lib/commonjs/modules/background-sync/background-safe-storage.js +79 -0
- package/lib/commonjs/modules/background-sync/background-safe-storage.js.map +1 -0
- package/lib/commonjs/modules/background-sync/index.js +11 -0
- package/lib/commonjs/modules/background-sync/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +123 -21
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/runtime-context.js +91 -0
- package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-background-sync.js +47 -0
- package/lib/commonjs/modules/bt-management/hooks/use-background-sync.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-state.js +51 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-state.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-device-connection.js +36 -0
- package/lib/commonjs/modules/bt-management/hooks/use-device-connection.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-health-import.js +46 -0
- package/lib/commonjs/modules/bt-management/hooks/use-health-import.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-measurements.js +57 -0
- package/lib/commonjs/modules/bt-management/hooks/use-measurements.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-nearby-devices.js +26 -0
- package/lib/commonjs/modules/bt-management/hooks/use-nearby-devices.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-paired-devices.js +49 -0
- package/lib/commonjs/modules/bt-management/hooks/use-paired-devices.js.map +1 -0
- package/lib/commonjs/modules/bt-management/index.js +143 -0
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +41 -4
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +75 -4
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js +57 -0
- package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +111 -3
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/measurement-state-machine.js +5 -3
- package/lib/commonjs/modules/bt-management/services/devices/measurement-state-machine.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.main-services.js +12 -0
- package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.main-services.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.js +9 -3
- package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.js.map +1 -1
- package/lib/commonjs/modules/bt-management/testing/fake-ble-manager.js +52 -0
- package/lib/commonjs/modules/bt-management/testing/fake-ble-manager.js.map +1 -0
- package/lib/commonjs/modules/bt-management/testing/index.js +28 -0
- package/lib/commonjs/modules/bt-management/testing/index.js.map +1 -0
- package/lib/commonjs/modules/bt-management/testing/recorded-frames.js +23 -0
- package/lib/commonjs/modules/bt-management/testing/recorded-frames.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/bluetooth-error.js +80 -0
- package/lib/commonjs/modules/bt-management/types/bluetooth-error.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/device-connection-event.js +6 -0
- package/lib/commonjs/modules/bt-management/types/device-connection-event.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/result-policy.js +6 -0
- package/lib/commonjs/modules/bt-management/types/result-policy.js.map +1 -0
- package/lib/commonjs/modules/bt-management/utils/result-identity.js +63 -0
- package/lib/commonjs/modules/bt-management/utils/result-identity.js.map +1 -0
- package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js +8 -2
- package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +23 -4
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/data-processor.js +2 -2
- package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/retry-save.js +65 -0
- package/lib/commonjs/modules/data-sync/utils/retry-save.js.map +1 -0
- package/lib/commonjs/modules/helpers/form-items/form-field.js +2 -0
- package/lib/commonjs/modules/helpers/form-items/form-field.js.map +1 -1
- package/lib/commonjs/modules/helpers/index.js +12 -0
- package/lib/commonjs/modules/helpers/index.js.map +1 -1
- package/lib/commonjs/modules/helpers/utils/s-log.js +4 -13
- package/lib/commonjs/modules/helpers/utils/s-log.js.map +1 -1
- package/lib/commonjs/modules/helpers/utils/sentry-logger.js +28 -17
- package/lib/commonjs/modules/helpers/utils/sentry-logger.js.map +1 -1
- package/lib/commonjs/modules/helpers/utils/telemetry.js +143 -0
- package/lib/commonjs/modules/helpers/utils/telemetry.js.map +1 -0
- package/lib/commonjs/modules/image/components/optimized-image.js +24 -2
- package/lib/commonjs/modules/image/components/optimized-image.js.map +1 -1
- package/lib/commonjs/modules/questionnaire-response-form/components/content/questionnaire-content-error.js +18 -9
- package/lib/commonjs/modules/questionnaire-response-form/components/content/questionnaire-content-error.js.map +1 -1
- package/lib/commonjs/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-next-button.js +3 -2
- package/lib/commonjs/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-next-button.js.map +1 -1
- package/lib/commonjs/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-submit-button.js +4 -2
- package/lib/commonjs/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-submit-button.js.map +1 -1
- package/lib/commonjs/modules/questionnaire-response-form/components/questionnaire-form-provider.js +42 -17
- package/lib/commonjs/modules/questionnaire-response-form/components/questionnaire-form-provider.js.map +1 -1
- package/lib/commonjs/modules/questionnaire-response-form/components/questionnaire-navigation-provider.js +2 -1
- package/lib/commonjs/modules/questionnaire-response-form/components/questionnaire-navigation-provider.js.map +1 -1
- package/lib/commonjs/modules/questionnaire-response-form/contexts/questionnaire-navigation-context.js.map +1 -1
- package/lib/commonjs/modules/tile/components/task-icon.js +2 -1
- package/lib/commonjs/modules/tile/components/task-icon.js.map +1 -1
- package/lib/commonjs/modules/ui/components/background-sync-setting.js +113 -0
- package/lib/commonjs/modules/ui/components/background-sync-setting.js.map +1 -0
- package/lib/commonjs/modules/ui/components/bluetooth-state-notice.js +105 -0
- package/lib/commonjs/modules/ui/components/bluetooth-state-notice.js.map +1 -0
- package/lib/commonjs/modules/ui/components/ecg-strip-viewer.js +165 -0
- package/lib/commonjs/modules/ui/components/ecg-strip-viewer.js.map +1 -0
- package/lib/commonjs/modules/ui/components/health-import-card.js +130 -0
- package/lib/commonjs/modules/ui/components/health-import-card.js.map +1 -0
- package/lib/commonjs/modules/ui/components/manual-entry-form.js +123 -0
- package/lib/commonjs/modules/ui/components/manual-entry-form.js.map +1 -0
- package/lib/commonjs/modules/ui/components/pairing-flow.js +222 -0
- package/lib/commonjs/modules/ui/components/pairing-flow.js.map +1 -0
- package/lib/commonjs/modules/ui/components/supported-devices-catalog-list.js +99 -0
- package/lib/commonjs/modules/ui/components/supported-devices-catalog-list.js.map +1 -0
- package/lib/commonjs/modules/ui/components/urine-test-result.js +94 -0
- package/lib/commonjs/modules/ui/components/urine-test-result.js.map +1 -0
- package/lib/commonjs/modules/ui/index.js +116 -0
- package/lib/commonjs/modules/ui/index.js.map +1 -0
- package/lib/commonjs/modules/ui/types.js +6 -0
- package/lib/commonjs/modules/ui/types.js.map +1 -0
- package/lib/commonjs/modules/ui/use-ovok-ui.js +51 -0
- package/lib/commonjs/modules/ui/use-ovok-ui.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/modules/auth/delete-account-button/components/delete-account-button.js +2 -0
- package/lib/module/modules/auth/delete-account-button/components/delete-account-button.js.map +1 -1
- package/lib/module/modules/auth/hooks/use-rate-limit-cooldown.js +17 -0
- package/lib/module/modules/auth/hooks/use-rate-limit-cooldown.js.map +1 -0
- package/lib/module/modules/auth/hooks/use-session.js +85 -0
- package/lib/module/modules/auth/hooks/use-session.js.map +1 -0
- package/lib/module/modules/auth/index.js +4 -0
- package/lib/module/modules/auth/index.js.map +1 -1
- package/lib/module/modules/auth/logout-button/components/logout-button.js +3 -1
- package/lib/module/modules/auth/logout-button/components/logout-button.js.map +1 -1
- package/lib/module/modules/auth/register/components/form/inputs.js +48 -1
- package/lib/module/modules/auth/register/components/form/inputs.js.map +1 -1
- package/lib/module/modules/auth/register/components/form/register-button.js +4 -0
- package/lib/module/modules/auth/register/components/form/register-button.js.map +1 -1
- package/lib/module/modules/auth/register/components/form/register-form-provider.js +6 -0
- package/lib/module/modules/auth/register/components/form/register-form-provider.js.map +1 -1
- package/lib/module/modules/auth/reset-password/components/form/inputs.js +12 -0
- package/lib/module/modules/auth/reset-password/components/form/inputs.js.map +1 -1
- package/lib/module/modules/auth/reset-password/components/form/reset-password-button.js +4 -0
- package/lib/module/modules/auth/reset-password/components/form/reset-password-button.js.map +1 -1
- package/lib/module/modules/auth/reset-password/components/form/reset-password-form-provider.js +7 -1
- package/lib/module/modules/auth/reset-password/components/form/reset-password-form-provider.js.map +1 -1
- package/lib/module/modules/auth/session/components/session-list.js +76 -0
- package/lib/module/modules/auth/session/components/session-list.js.map +1 -0
- package/lib/module/modules/auth/session/events.js +13 -0
- package/lib/module/modules/auth/session/events.js.map +1 -0
- package/lib/module/modules/auth/session/index.js +4 -0
- package/lib/module/modules/auth/session/index.js.map +1 -0
- package/lib/module/modules/auth/session/types/session-list-props.js +4 -0
- package/lib/module/modules/auth/session/types/session-list-props.js.map +1 -0
- package/lib/module/modules/auth/sign-in/components/form/inputs.js +25 -0
- package/lib/module/modules/auth/sign-in/components/form/inputs.js.map +1 -1
- package/lib/module/modules/auth/sign-in/components/form/login-form-provider.js +48 -1
- package/lib/module/modules/auth/sign-in/components/form/login-form-provider.js.map +1 -1
- package/lib/module/modules/auth/sign-in/components/form/mfa-code-input.js +52 -0
- package/lib/module/modules/auth/sign-in/components/form/mfa-code-input.js.map +1 -0
- package/lib/module/modules/auth/sign-in/components/form/sign-in-with-email.js +2 -0
- package/lib/module/modules/auth/sign-in/components/form/sign-in-with-email.js.map +1 -1
- package/lib/module/modules/auth/sign-in/components/form/signin-button.js +13 -5
- package/lib/module/modules/auth/sign-in/components/form/signin-button.js.map +1 -1
- package/lib/module/modules/auth/types/session.js +2 -0
- package/lib/module/modules/auth/types/session.js.map +1 -0
- package/lib/module/modules/auth/utils/rate-limit.js +31 -0
- package/lib/module/modules/auth/utils/rate-limit.js.map +1 -0
- package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js +3 -2
- package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -1
- package/lib/module/modules/background-sync/background-safe-storage.js +74 -0
- package/lib/module/modules/background-sync/background-safe-storage.js.map +1 -0
- package/lib/module/modules/background-sync/index.js +1 -0
- package/lib/module/modules/background-sync/index.js.map +1 -1
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +123 -21
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/runtime-context.js +82 -0
- package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-background-sync.js +41 -0
- package/lib/module/modules/bt-management/hooks/use-background-sync.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-bluetooth-state.js +45 -0
- package/lib/module/modules/bt-management/hooks/use-bluetooth-state.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-device-connection.js +30 -0
- package/lib/module/modules/bt-management/hooks/use-device-connection.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-health-import.js +40 -0
- package/lib/module/modules/bt-management/hooks/use-health-import.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-measurements.js +51 -0
- package/lib/module/modules/bt-management/hooks/use-measurements.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-nearby-devices.js +20 -0
- package/lib/module/modules/bt-management/hooks/use-nearby-devices.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-paired-devices.js +43 -0
- package/lib/module/modules/bt-management/hooks/use-paired-devices.js.map +1 -0
- package/lib/module/modules/bt-management/index.js +13 -0
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +41 -4
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
- package/lib/module/modules/bt-management/services/bt-manager.js +75 -4
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js +57 -0
- package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +111 -3
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/measurement-state-machine.js +5 -3
- package/lib/module/modules/bt-management/services/devices/measurement-state-machine.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/spo/spo2.main-services.js +12 -0
- package/lib/module/modules/bt-management/services/devices/spo/spo2.main-services.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.js +9 -3
- package/lib/module/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.js.map +1 -1
- package/lib/module/modules/bt-management/testing/fake-ble-manager.js +48 -0
- package/lib/module/modules/bt-management/testing/fake-ble-manager.js.map +1 -0
- package/lib/module/modules/bt-management/testing/index.js +5 -0
- package/lib/module/modules/bt-management/testing/index.js.map +1 -0
- package/lib/module/modules/bt-management/testing/recorded-frames.js +17 -0
- package/lib/module/modules/bt-management/testing/recorded-frames.js.map +1 -0
- package/lib/module/modules/bt-management/types/bluetooth-error.js +74 -0
- package/lib/module/modules/bt-management/types/bluetooth-error.js.map +1 -0
- package/lib/module/modules/bt-management/types/device-connection-event.js +4 -0
- package/lib/module/modules/bt-management/types/device-connection-event.js.map +1 -0
- package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
- package/lib/module/modules/bt-management/types/result-policy.js +4 -0
- package/lib/module/modules/bt-management/types/result-policy.js.map +1 -0
- package/lib/module/modules/bt-management/utils/result-identity.js +57 -0
- package/lib/module/modules/bt-management/utils/result-identity.js.map +1 -0
- package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js +8 -2
- package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +23 -4
- package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/data-processor.js +2 -2
- package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js +1 -1
- package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
- package/lib/module/modules/data-sync/utils/retry-save.js +60 -0
- package/lib/module/modules/data-sync/utils/retry-save.js.map +1 -0
- package/lib/module/modules/helpers/form-items/form-field.js +2 -0
- package/lib/module/modules/helpers/form-items/form-field.js.map +1 -1
- package/lib/module/modules/helpers/index.js +1 -0
- package/lib/module/modules/helpers/index.js.map +1 -1
- package/lib/module/modules/helpers/utils/s-log.js +4 -12
- package/lib/module/modules/helpers/utils/s-log.js.map +1 -1
- package/lib/module/modules/helpers/utils/sentry-logger.js +26 -14
- package/lib/module/modules/helpers/utils/sentry-logger.js.map +1 -1
- package/lib/module/modules/helpers/utils/telemetry.js +131 -0
- package/lib/module/modules/helpers/utils/telemetry.js.map +1 -0
- package/lib/module/modules/image/components/optimized-image.js +25 -3
- package/lib/module/modules/image/components/optimized-image.js.map +1 -1
- package/lib/module/modules/questionnaire-response-form/components/content/questionnaire-content-error.js +20 -11
- package/lib/module/modules/questionnaire-response-form/components/content/questionnaire-content-error.js.map +1 -1
- package/lib/module/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-next-button.js +3 -2
- package/lib/module/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-next-button.js.map +1 -1
- package/lib/module/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-submit-button.js +4 -2
- package/lib/module/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-submit-button.js.map +1 -1
- package/lib/module/modules/questionnaire-response-form/components/questionnaire-form-provider.js +42 -17
- package/lib/module/modules/questionnaire-response-form/components/questionnaire-form-provider.js.map +1 -1
- package/lib/module/modules/questionnaire-response-form/components/questionnaire-navigation-provider.js +2 -1
- package/lib/module/modules/questionnaire-response-form/components/questionnaire-navigation-provider.js.map +1 -1
- package/lib/module/modules/questionnaire-response-form/contexts/questionnaire-navigation-context.js.map +1 -1
- package/lib/module/modules/tile/components/task-icon.js +2 -1
- package/lib/module/modules/tile/components/task-icon.js.map +1 -1
- package/lib/module/modules/ui/components/background-sync-setting.js +107 -0
- package/lib/module/modules/ui/components/background-sync-setting.js.map +1 -0
- package/lib/module/modules/ui/components/bluetooth-state-notice.js +99 -0
- package/lib/module/modules/ui/components/bluetooth-state-notice.js.map +1 -0
- package/lib/module/modules/ui/components/ecg-strip-viewer.js +159 -0
- package/lib/module/modules/ui/components/ecg-strip-viewer.js.map +1 -0
- package/lib/module/modules/ui/components/health-import-card.js +124 -0
- package/lib/module/modules/ui/components/health-import-card.js.map +1 -0
- package/lib/module/modules/ui/components/manual-entry-form.js +117 -0
- package/lib/module/modules/ui/components/manual-entry-form.js.map +1 -0
- package/lib/module/modules/ui/components/pairing-flow.js +216 -0
- package/lib/module/modules/ui/components/pairing-flow.js.map +1 -0
- package/lib/module/modules/ui/components/supported-devices-catalog-list.js +93 -0
- package/lib/module/modules/ui/components/supported-devices-catalog-list.js.map +1 -0
- package/lib/module/modules/ui/components/urine-test-result.js +89 -0
- package/lib/module/modules/ui/components/urine-test-result.js.map +1 -0
- package/lib/module/modules/ui/index.js +13 -0
- package/lib/module/modules/ui/index.js.map +1 -0
- package/lib/module/modules/ui/types.js +4 -0
- package/lib/module/modules/ui/types.js.map +1 -0
- package/lib/module/modules/ui/use-ovok-ui.js +45 -0
- package/lib/module/modules/ui/use-ovok-ui.js.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/delete-account-button/components/delete-account-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-rate-limit-cooldown.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-rate-limit-cooldown.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-session.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-session.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/index.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/auth/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/logout-button/components/logout-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/register/components/form/inputs.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/register/components/form/register-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/register/components/form/register-form-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/reset-password/components/form/inputs.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/reset-password/components/form/reset-password-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/reset-password/components/form/reset-password-form-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/session/components/session-list.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/auth/session/components/session-list.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/session/events.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/auth/session/events.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/session/index.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/auth/session/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/session/types/session-list-props.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/auth/session/types/session-list-props.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/inputs.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/login-form-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/mfa-code-input.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/mfa-code-input.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/sign-in-with-email.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/sign-in-with-email.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/signin-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/sign-in.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/sign-in.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/contexts/login-form-context.d.ts +2 -46
- package/lib/typescript/commonjs/src/modules/auth/sign-in/contexts/login-form-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/hooks/use-login-form.d.ts +1 -47
- package/lib/typescript/commonjs/src/modules/auth/sign-in/hooks/use-login-form.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/types/login-form-context-type.d.ts +11 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/types/login-form-context-type.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/types/session.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/auth/types/session.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/utils/rate-limit.d.ts +11 -0
- package/lib/typescript/commonjs/src/modules/auth/utils/rate-limit.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/background-sync/background-safe-storage.d.ts +29 -0
- package/lib/typescript/commonjs/src/modules/background-sync/background-safe-storage.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/background-sync/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/background-sync/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +46 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-background-sync.d.ts +14 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-background-sync.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-state.d.ts +11 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-state.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-device-connection.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-device-connection.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-health-import.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-health-import.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-measurements.d.ts +11 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-measurements.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-nearby-devices.d.ts +8 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-nearby-devices.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-paired-devices.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-paired-devices.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +22 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +9 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/measurement-state-machine.d.ts +3 -2
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/measurement-state-machine.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.main-services.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/testing/fake-ble-manager.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/bt-management/testing/fake-ble-manager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/testing/index.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/testing/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/testing/recorded-frames.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/bt-management/testing/recorded-frames.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/bluetooth-error.d.ts +23 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/bluetooth-error.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-connection-event.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-connection-event.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/error-callback.d.ts +5 -2
- package/lib/typescript/commonjs/src/modules/bt-management/types/error-callback.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/i-bt-managed-device.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/i-bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts +8 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/result-identity.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/result-identity.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/retry-save.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/retry-save.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/helpers/form-items/form-field.d.ts +4 -1
- package/lib/typescript/commonjs/src/modules/helpers/form-items/form-field.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/helpers/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/helpers/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/helpers/utils/s-log.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/helpers/utils/sentry-logger.d.ts +7 -1
- package/lib/typescript/commonjs/src/modules/helpers/utils/sentry-logger.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/helpers/utils/telemetry.d.ts +68 -0
- package/lib/typescript/commonjs/src/modules/helpers/utils/telemetry.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/image/components/optimized-image.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/image/components/optimized-image.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/image/types/optimized-image-props.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/image/types/optimized-image-props.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/components/content/questionnaire-content-error.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-next-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-submit-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/components/questionnaire-form-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/components/questionnaire-navigation-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/contexts/questionnaire-navigation-context.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/contexts/questionnaire-navigation-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/hooks/use-navigation-handlers.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/hooks/use-navigation-handlers.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/hooks/use-questionnaire-navigation.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/hooks/use-questionnaire-navigation.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/types/questionnaire-form-context-type.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/types/questionnaire-form-context-type.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/types/questionnaire-navigation-provider-props.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/questionnaire-response-form/types/questionnaire-navigation-provider-props.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/tile/components/task-icon.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/ui/components/background-sync-setting.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/ui/components/background-sync-setting.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/bluetooth-state-notice.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/ui/components/bluetooth-state-notice.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/ecg-strip-viewer.d.ts +17 -0
- package/lib/typescript/commonjs/src/modules/ui/components/ecg-strip-viewer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/health-import-card.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/ui/components/health-import-card.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/manual-entry-form.d.ts +20 -0
- package/lib/typescript/commonjs/src/modules/ui/components/manual-entry-form.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/pairing-flow.d.ts +15 -0
- package/lib/typescript/commonjs/src/modules/ui/components/pairing-flow.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/supported-devices-catalog-list.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/ui/components/supported-devices-catalog-list.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/urine-test-result.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/ui/components/urine-test-result.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/index.d.ts +11 -0
- package/lib/typescript/commonjs/src/modules/ui/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/types.d.ts +24 -0
- package/lib/typescript/commonjs/src/modules/ui/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/use-ovok-ui.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/ui/use-ovok-ui.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +1 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/delete-account-button/components/delete-account-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/hooks/use-rate-limit-cooldown.d.ts +2 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-rate-limit-cooldown.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-session.d.ts +16 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-session.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/index.d.ts +4 -0
- package/lib/typescript/module/src/modules/auth/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/logout-button/components/logout-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/register/components/form/inputs.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/register/components/form/register-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/register/components/form/register-form-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/reset-password/components/form/inputs.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/reset-password/components/form/reset-password-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/reset-password/components/form/reset-password-form-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/session/components/session-list.d.ts +4 -0
- package/lib/typescript/module/src/modules/auth/session/components/session-list.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/session/events.d.ts +5 -0
- package/lib/typescript/module/src/modules/auth/session/events.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/session/index.d.ts +3 -0
- package/lib/typescript/module/src/modules/auth/session/index.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/session/types/session-list-props.d.ts +5 -0
- package/lib/typescript/module/src/modules/auth/session/types/session-list-props.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/sign-in/components/form/inputs.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/components/form/login-form-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/components/form/mfa-code-input.d.ts +9 -0
- package/lib/typescript/module/src/modules/auth/sign-in/components/form/mfa-code-input.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/sign-in/components/form/sign-in-with-email.d.ts +4 -0
- package/lib/typescript/module/src/modules/auth/sign-in/components/form/sign-in-with-email.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/components/form/signin-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/components/sign-in.d.ts +4 -0
- package/lib/typescript/module/src/modules/auth/sign-in/components/sign-in.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/contexts/login-form-context.d.ts +2 -46
- package/lib/typescript/module/src/modules/auth/sign-in/contexts/login-form-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/hooks/use-login-form.d.ts +1 -47
- package/lib/typescript/module/src/modules/auth/sign-in/hooks/use-login-form.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/types/login-form-context-type.d.ts +11 -1
- package/lib/typescript/module/src/modules/auth/sign-in/types/login-form-context-type.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/types/session.d.ts +13 -0
- package/lib/typescript/module/src/modules/auth/types/session.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/utils/rate-limit.d.ts +11 -0
- package/lib/typescript/module/src/modules/auth/utils/rate-limit.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/background-sync/background-safe-storage.d.ts +29 -0
- package/lib/typescript/module/src/modules/background-sync/background-safe-storage.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/background-sync/index.d.ts +1 -0
- package/lib/typescript/module/src/modules/background-sync/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +46 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-background-sync.d.ts +14 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-background-sync.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-state.d.ts +11 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-state.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-device-connection.d.ts +7 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-device-connection.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-health-import.d.ts +16 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-health-import.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-measurements.d.ts +11 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-measurements.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-nearby-devices.d.ts +8 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-nearby-devices.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-paired-devices.d.ts +16 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-paired-devices.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts +13 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +22 -0
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +4 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +9 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/measurement-state-machine.d.ts +3 -2
- package/lib/typescript/module/src/modules/bt-management/services/devices/measurement-state-machine.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.main-services.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/testing/fake-ble-manager.d.ts +16 -0
- package/lib/typescript/module/src/modules/bt-management/testing/fake-ble-manager.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/testing/index.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/testing/index.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/testing/recorded-frames.d.ts +12 -0
- package/lib/typescript/module/src/modules/bt-management/testing/recorded-frames.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +3 -1
- package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/bluetooth-error.d.ts +23 -0
- package/lib/typescript/module/src/modules/bt-management/types/bluetooth-error.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts +4 -0
- package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +4 -0
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/device-connection-event.d.ts +16 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-connection-event.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/error-callback.d.ts +5 -2
- package/lib/typescript/module/src/modules/bt-management/types/error-callback.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/i-bt-managed-device.d.ts +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/i-bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts +8 -0
- package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/utils/result-identity.d.ts +10 -0
- package/lib/typescript/module/src/modules/bt-management/utils/result-identity.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts +4 -0
- package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts +2 -0
- package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/retry-save.d.ts +5 -0
- package/lib/typescript/module/src/modules/data-sync/utils/retry-save.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/helpers/form-items/form-field.d.ts +4 -1
- package/lib/typescript/module/src/modules/helpers/form-items/form-field.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/helpers/index.d.ts +1 -0
- package/lib/typescript/module/src/modules/helpers/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/helpers/utils/s-log.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/helpers/utils/sentry-logger.d.ts +7 -1
- package/lib/typescript/module/src/modules/helpers/utils/sentry-logger.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/helpers/utils/telemetry.d.ts +68 -0
- package/lib/typescript/module/src/modules/helpers/utils/telemetry.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/image/components/optimized-image.d.ts +1 -1
- package/lib/typescript/module/src/modules/image/components/optimized-image.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/image/types/optimized-image-props.d.ts +4 -0
- package/lib/typescript/module/src/modules/image/types/optimized-image-props.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/components/content/questionnaire-content-error.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-next-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/components/navigation/questionnaire-navigation-submit-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/components/questionnaire-form-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/components/questionnaire-navigation-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/contexts/questionnaire-navigation-context.d.ts +1 -0
- package/lib/typescript/module/src/modules/questionnaire-response-form/contexts/questionnaire-navigation-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/hooks/use-navigation-handlers.d.ts +1 -0
- package/lib/typescript/module/src/modules/questionnaire-response-form/hooks/use-navigation-handlers.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/hooks/use-questionnaire-navigation.d.ts +1 -0
- package/lib/typescript/module/src/modules/questionnaire-response-form/hooks/use-questionnaire-navigation.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/types/questionnaire-form-context-type.d.ts +2 -0
- package/lib/typescript/module/src/modules/questionnaire-response-form/types/questionnaire-form-context-type.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/questionnaire-response-form/types/questionnaire-navigation-provider-props.d.ts +1 -0
- package/lib/typescript/module/src/modules/questionnaire-response-form/types/questionnaire-navigation-provider-props.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/tile/components/task-icon.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/ui/components/background-sync-setting.d.ts +9 -0
- package/lib/typescript/module/src/modules/ui/components/background-sync-setting.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/bluetooth-state-notice.d.ts +12 -0
- package/lib/typescript/module/src/modules/ui/components/bluetooth-state-notice.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/ecg-strip-viewer.d.ts +17 -0
- package/lib/typescript/module/src/modules/ui/components/ecg-strip-viewer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/health-import-card.d.ts +13 -0
- package/lib/typescript/module/src/modules/ui/components/health-import-card.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/manual-entry-form.d.ts +20 -0
- package/lib/typescript/module/src/modules/ui/components/manual-entry-form.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/pairing-flow.d.ts +15 -0
- package/lib/typescript/module/src/modules/ui/components/pairing-flow.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/supported-devices-catalog-list.d.ts +16 -0
- package/lib/typescript/module/src/modules/ui/components/supported-devices-catalog-list.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/urine-test-result.d.ts +10 -0
- package/lib/typescript/module/src/modules/ui/components/urine-test-result.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/index.d.ts +11 -0
- package/lib/typescript/module/src/modules/ui/index.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/types.d.ts +24 -0
- package/lib/typescript/module/src/modules/ui/types.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/use-ovok-ui.d.ts +7 -0
- package/lib/typescript/module/src/modules/ui/use-ovok-ui.d.ts.map +1 -0
- package/package.json +145 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useBluetoothRuntime","useMeasurements","onResult","policy","maxResults","runtime","measurements","setMeasurements","useState","seen","useRef","Set","onResultRef","current","useEffect","subscribe","result","has","id","add","slice","byKind","filter","key","String","data","measurementTypeKey","clear"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-measurements.ts"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAI9B,SAAwBC,mBAAmB,QAAQ,sBAAmB;AAOtE,OAAO,MAAMC,eAAe,GAAGA,CAC7BC,QAA0C,EAC1C;EAAEC,MAAM,GAAG,KAAK;EAAEC,UAAU,GAAG;AAA4B,CAAC,GAAG,CAAC,CAAC,KACC;EAClE,MAAMC,OAAO,GAAGL,mBAAmB,CAAC,CAAC;EACrC,MAAM,CAACM,YAAY,EAAEC,eAAe,CAAC,GAAGR,KAAK,CAACS,QAAQ,CAA2B,EAAE,CAAC;EACpF,MAAMC,IAAI,GAAGV,KAAK,CAACW,MAAM,CAAC,IAAIC,GAAG,CAAS,CAAC,CAAC;EAC5C,MAAMC,WAAW,GAAGb,KAAK,CAACW,MAAM,CAACR,QAAQ,CAAC;EAE1CU,WAAW,CAACC,OAAO,GAAGX,QAAQ;EAE9BH,KAAK,CAACe,SAAS,CAAC,MAAM;IACpB,OAAOT,OAAO,CAACU,SAAS,CAAgB,QAAQ,EAAGC,MAAM,IAAK;MAC5D,IAAIP,IAAI,CAACI,OAAO,CAACI,GAAG,CAACD,MAAM,CAACE,EAAE,CAAC,EAAE;QAAC;MAAO;MACzCT,IAAI,CAACI,OAAO,CAACM,GAAG,CAACH,MAAM,CAACE,EAAE,CAAC;MAC3BX,eAAe,CAAEM,OAAO,IAAK,CAAC,GAAGA,OAAO,EAAEG,MAAM,CAAC,CAACI,KAAK,CAAC,CAAChB,UAAU,CAAC,CAAC;MACrEQ,WAAW,CAACC,OAAO,GAAGG,MAAM,CAAC;IAC/B,CAAC,CAAC;EACJ,CAAC,EAAE,CAACZ,UAAU,EAAEC,OAAO,CAAC,CAAC;;EAEzB;EACA;EACAN,KAAK,CAACe,SAAS,CAAC,MAAM;IACpB,IAAIX,MAAM,KAAK,KAAK,EAAE;MAAC;IAAO;IAC9BI,eAAe,CAAEM,OAAO,IAAK;MAC3B,MAAMQ,MAAM,GAAG,IAAIV,GAAG,CAAS,CAAC;MAEhC,OAAOE,OAAO,CAACS,MAAM,CAAEN,MAAM,IAAK;QAChC,MAAMO,GAAG,GAAGC,MAAM,CAACR,MAAM,CAACS,IAAI,CAACC,kBAAkB,CAAC;QAElD,IAAIvB,MAAM,KAAK,uCAAuC,IAAIkB,MAAM,CAACJ,GAAG,CAACM,GAAG,CAAC,EAAE;UAAC,OAAO,KAAK;QAAC;QACzFF,MAAM,CAACF,GAAG,CAACI,GAAG,CAAC;QAEf,OAAO,IAAI;MACb,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,EAAE,CAACpB,MAAM,CAAC,CAAC;EAEZ,OAAO;IAAEG,YAAY;IAAEqB,KAAK,EAAEA,CAAA,KAAM;MAAElB,IAAI,CAACI,OAAO,CAACc,KAAK,CAAC,CAAC;MAAEpB,eAAe,CAAC,EAAE,CAAC;IAAE;EAAE,CAAC;AACtF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { useBluetoothRuntime } from "./runtime-context.js";
|
|
5
|
+
export const useNearbyDevices = () => {
|
|
6
|
+
const runtime = useBluetoothRuntime();
|
|
7
|
+
const [, redraw] = React.useReducer(value => value + 1, 0);
|
|
8
|
+
React.useEffect(() => runtime.subscribe("deviceFound", redraw), [runtime]);
|
|
9
|
+
return {
|
|
10
|
+
devices: runtime.devices,
|
|
11
|
+
pair: async id => {
|
|
12
|
+
const device = runtime.devices.find(item => item.id === id);
|
|
13
|
+
if (device) {
|
|
14
|
+
await device.device.connect();
|
|
15
|
+
}
|
|
16
|
+
return device;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=use-nearby-devices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useBluetoothRuntime","useNearbyDevices","runtime","redraw","useReducer","value","useEffect","subscribe","devices","pair","id","device","find","item","connect"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-nearby-devices.ts"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAI9B,SAAwBC,mBAAmB,QAAQ,sBAAmB;AAEtE,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAG3B;EACH,MAAMC,OAAO,GAAGF,mBAAmB,CAAC,CAAC;EACrC,MAAM,GAAGG,MAAM,CAAC,GAAGJ,KAAK,CAACK,UAAU,CAAEC,KAAK,IAAKA,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;EAE5DN,KAAK,CAACO,SAAS,CAAC,MAAMJ,OAAO,CAACK,SAAS,CAAC,aAAa,EAAEJ,MAAM,CAAC,EAAE,CAACD,OAAO,CAAC,CAAC;EAE1E,OAAO;IACLM,OAAO,EAAEN,OAAO,CAACM,OAAO;IACxBC,IAAI,EAAE,MAAOC,EAAE,IAAK;MAClB,MAAMC,MAAM,GAAGT,OAAO,CAACM,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","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable import/group-exports */
|
|
4
|
+
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { useBluetoothRuntime } from "./runtime-context.js";
|
|
7
|
+
export const usePairedDevices = ({
|
|
8
|
+
storage,
|
|
9
|
+
storageKey = "@ovok/native/paired-devices",
|
|
10
|
+
autoPair = false
|
|
11
|
+
}) => {
|
|
12
|
+
const runtime = useBluetoothRuntime();
|
|
13
|
+
const [paired, setPaired] = React.useState([]);
|
|
14
|
+
const save = React.useCallback(async next => {
|
|
15
|
+
setPaired(next);
|
|
16
|
+
await storage.setItem(storageKey, JSON.stringify(next));
|
|
17
|
+
}, [storage, storageKey]);
|
|
18
|
+
React.useEffect(() => {
|
|
19
|
+
void storage.getItem(storageKey).then(value => {
|
|
20
|
+
try {
|
|
21
|
+
const parsed = value ? JSON.parse(value) : [];
|
|
22
|
+
setPaired(Array.isArray(parsed) ? parsed.filter(id => typeof id === "string") : []);
|
|
23
|
+
} catch {
|
|
24
|
+
setPaired([]);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}, [storage, storageKey]);
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
if (!autoPair) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
runtime.devices.filter(device => paired.includes(device.id)).forEach(device => void device.device.connect());
|
|
33
|
+
}, [autoPair, paired, runtime, runtime.devices]);
|
|
34
|
+
return {
|
|
35
|
+
paired,
|
|
36
|
+
pair: device => save([...new Set([...paired, device.id])]),
|
|
37
|
+
forget: async id => {
|
|
38
|
+
await runtime.manager?.forget(id);
|
|
39
|
+
await save(paired.filter(candidate => candidate !== id));
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=use-paired-devices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useBluetoothRuntime","usePairedDevices","storage","storageKey","autoPair","runtime","paired","setPaired","useState","save","useCallback","next","setItem","JSON","stringify","useEffect","getItem","then","value","parsed","parse","Array","isArray","filter","id","devices","device","includes","forEach","connect","pair","Set","forget","manager","candidate"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-paired-devices.ts"],"mappings":";;AAAA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAAwBC,mBAAmB,QAAQ,sBAAmB;AAatE,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,OAAO;EACPC,UAAU,GAAG,6BAA6B;EAC1CC,QAAQ,GAAG;AACY,CAAC,KAIrB;EACH,MAAMC,OAAO,GAAGL,mBAAmB,CAAC,CAAC;EACrC,MAAM,CAACM,MAAM,EAAEC,SAAS,CAAC,GAAGR,KAAK,CAACS,QAAQ,CAAoB,EAAE,CAAC;EAEjE,MAAMC,IAAI,GAAGV,KAAK,CAACW,WAAW,CAC5B,MAAOC,IAAuB,IAAK;IACjCJ,SAAS,CAACI,IAAI,CAAC;IACf,MAAMT,OAAO,CAACU,OAAO,CAACT,UAAU,EAAEU,IAAI,CAACC,SAAS,CAACH,IAAI,CAAC,CAAC;EACzD,CAAC,EACD,CAACT,OAAO,EAAEC,UAAU,CACtB,CAAC;EAEDJ,KAAK,CAACgB,SAAS,CAAC,MAAM;IACpB,KAAKb,OAAO,CAACc,OAAO,CAACb,UAAU,CAAC,CAACc,IAAI,CAAEC,KAAK,IAAK;MAC/C,IAAI;QACF,MAAMC,MAAe,GAAGD,KAAK,GAAGL,IAAI,CAACO,KAAK,CAACF,KAAK,CAAC,GAAG,EAAE;QAEtDX,SAAS,CAACc,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,GAAGA,MAAM,CAACI,MAAM,CAAEC,EAAE,IAAK,OAAOA,EAAE,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;MACvF,CAAC,CAAC,MAAM;QACNjB,SAAS,CAAC,EAAE,CAAC;MACf;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACL,OAAO,EAAEC,UAAU,CAAC,CAAC;EAEzBJ,KAAK,CAACgB,SAAS,CAAC,MAAM;IACpB,IAAI,CAACX,QAAQ,EAAE;MAAC;IAAO;IACvBC,OAAO,CAACoB,OAAO,CACZF,MAAM,CAAEG,MAAM,IAAKpB,MAAM,CAACqB,QAAQ,CAACD,MAAM,CAACF,EAAE,CAAC,CAAC,CAC9CI,OAAO,CAAEF,MAAM,IAAK,KAAKA,MAAM,CAACA,MAAM,CAACG,OAAO,CAAC,CAAC,CAAC;EACtD,CAAC,EAAE,CAACzB,QAAQ,EAAEE,MAAM,EAAED,OAAO,EAAEA,OAAO,CAACoB,OAAO,CAAC,CAAC;EAEhD,OAAO;IACLnB,MAAM;IACNwB,IAAI,EAAGJ,MAAM,IAAKjB,IAAI,CAAC,CAAC,GAAG,IAAIsB,GAAG,CAAC,CAAC,GAAGzB,MAAM,EAAEoB,MAAM,CAACF,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5DQ,MAAM,EAAE,MAAOR,EAAE,IAAK;MACpB,MAAMnB,OAAO,CAAC4B,OAAO,EAAED,MAAM,CAACR,EAAE,CAAC;MACjC,MAAMf,IAAI,CAACH,MAAM,CAACiB,MAAM,CAAEW,SAAS,IAAKA,SAAS,KAAKV,EAAE,CAAC,CAAC;IAC5D;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -31,7 +31,10 @@ export * from "./types/btprovider-children-props.js";
|
|
|
31
31
|
export * from "./types/background-sync.js";
|
|
32
32
|
export * from "./types/result-callback.js";
|
|
33
33
|
export * from "./types/error-callback.js";
|
|
34
|
+
export * from "./types/bluetooth-error.js";
|
|
34
35
|
export * from "./types/device-status-change-callback.js";
|
|
36
|
+
export * from "./types/device-connection-event.js";
|
|
37
|
+
export * from "./types/result-policy.js";
|
|
35
38
|
export * from "./services/devices/bt-managed-device.js";
|
|
36
39
|
export * from "./services/devices/blood-glucose/blood-glucose.device.js";
|
|
37
40
|
export * from "./services/devices/custom/custom.device.js";
|
|
@@ -39,6 +42,8 @@ export * from "./services/bt-manager.js";
|
|
|
39
42
|
export * from "./services/background-sync/background-ble-manager.js";
|
|
40
43
|
export * from "./services/background-sync/background-sync-coordinator.js";
|
|
41
44
|
export * from "./services/background-sync/background-service-uuids.js";
|
|
45
|
+
export * from "./utils/result-identity.js";
|
|
46
|
+
export * from "./testing/index.js";
|
|
42
47
|
export * from "./services/custom/define-custom-device.js";
|
|
43
48
|
export * from "./services/devices/standard-gatt/standard-gatt.devices.js";
|
|
44
49
|
export * from "./services/devices/boso/boso.medicus.js";
|
|
@@ -67,4 +72,12 @@ export * from "./components/bt-provider.js";
|
|
|
67
72
|
export * from "./components/bluetooth-device-picker.js";
|
|
68
73
|
export * from "./components/default-permission-fallback.js";
|
|
69
74
|
export * from "./hooks/use-request-permissions.js";
|
|
75
|
+
export * from "./hooks/runtime-context.js";
|
|
76
|
+
export * from "./hooks/use-bluetooth-state.js";
|
|
77
|
+
export * from "./hooks/use-nearby-devices.js";
|
|
78
|
+
export * from "./hooks/use-paired-devices.js";
|
|
79
|
+
export * from "./hooks/use-device-connection.js";
|
|
80
|
+
export * from "./hooks/use-measurements.js";
|
|
81
|
+
export * from "./hooks/use-background-sync.js";
|
|
82
|
+
export * from "./hooks/use-health-import.js";
|
|
70
83
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,8BAA2B;AACzC,cAAc,2BAAwB;AACtC,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,8BAA2B;AACzC,cAAc,2BAAwB;AACtC,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,4BAAyB;AACvC,cAAc,0CAAuC;AACrD,cAAc,oCAAiC;AAC/C,cAAc,0BAAuB;AAErC,cAAc,yCAAsC;AACpD,cAAc,0DAAuD;AACrE,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,sDAAmD;AACjE,cAAc,2DAAwD;AACtE,cAAc,wDAAqD;AACnE,cAAc,4BAAyB;AACvC,cAAc,oBAAW;AACzB,cAAc,2CAAwC;AACtD,cAAc,2DAAwD;AACtE,cAAc,yCAAsC;AACpD,cAAc,oDAAiD;AAC/D,cAAc,mDAAgD;AAC9D,cAAc,0DAAuD;AACrE,cAAc,kDAA+C;AAC7D,cAAc,uDAAoD;AAClE,cAAc,0DAAuD;AACrE,cAAc,mDAAgD;AAC9D,cAAc,4CAAyC;AACvD,cAAc,4CAAyC;AACvD,cAAc,iDAA8C;AAC5D,cAAc,+CAA4C;AAC1D,cAAc,mDAAgD;AAC9D,cAAc,+CAA4C;AAC1D,cAAc,2CAAwC;AACtD,cAAc,8CAA2C;AACzD,cAAc,4CAAyC;AACvD,cAAc,0CAAuC;AACrD,cAAc,6CAA0C;AACxD,cAAc,+CAA4C;AAC1D,cAAc,+CAA4C;AAE1D,cAAc,0CAAuC;AAErD,cAAc,6BAA0B;AACxC,cAAc,yCAAsC;AACpD,cAAc,6CAA0C;AACxD,cAAc,oCAAiC;AAC/C,cAAc,4BAAyB;AACvC,cAAc,gCAA6B;AAC3C,cAAc,+BAA4B;AAC1C,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,6BAA0B;AACxC,cAAc,gCAA6B;AAC3C,cAAc,8BAA2B","ignoreList":[]}
|
package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { recordOvokMetric } from "../../../helpers/utils/telemetry.js";
|
|
4
|
+
import { reviveResultDates } from "../../utils/result-identity.js";
|
|
3
5
|
const DEFAULT_QUEUE_KEY = "@ovok/native/background-sync/results";
|
|
4
6
|
const DEFAULT_MAX_RETRIES = 3;
|
|
5
7
|
const DEFAULT_RETRY_BACKOFF_MS = 30_000;
|
|
@@ -8,6 +10,10 @@ const createResultId = () => {
|
|
|
8
10
|
resultSequence += 1;
|
|
9
11
|
return `${Date.now()}-${resultSequence}-${Math.random().toString(36).slice(2, 10)}`;
|
|
10
12
|
};
|
|
13
|
+
const createQueueId = () => {
|
|
14
|
+
resultSequence += 1;
|
|
15
|
+
return `${Date.now()}-queue-${resultSequence}-${Math.random().toString(36).slice(2, 10)}`;
|
|
16
|
+
};
|
|
11
17
|
|
|
12
18
|
/**
|
|
13
19
|
* A small durable, at-least-once queue. The result is written before delivery and removed only
|
|
@@ -24,14 +30,19 @@ class BackgroundSyncCoordinator {
|
|
|
24
30
|
}
|
|
25
31
|
enqueue = result => this.runExclusive(async () => {
|
|
26
32
|
const queue = await this.readQueue();
|
|
33
|
+
const stableId = result.id ?? createResultId();
|
|
27
34
|
queue.push({
|
|
28
|
-
|
|
35
|
+
queueId: createQueueId(),
|
|
29
36
|
queuedAt: new Date().toISOString(),
|
|
30
37
|
attempt: 0,
|
|
31
38
|
nextAttemptAt: 0,
|
|
32
|
-
result
|
|
39
|
+
result: {
|
|
40
|
+
...result,
|
|
41
|
+
id: stableId
|
|
42
|
+
}
|
|
33
43
|
});
|
|
34
44
|
await this.writeQueue(queue);
|
|
45
|
+
recordOvokMetric("ovok.queue.depth", queue.length);
|
|
35
46
|
await this.flushQueue(queue);
|
|
36
47
|
});
|
|
37
48
|
flush = (options = {}) => this.runExclusive(async () => {
|
|
@@ -52,7 +63,18 @@ class BackgroundSyncCoordinator {
|
|
|
52
63
|
if (!Array.isArray(parsed)) {
|
|
53
64
|
throw new Error("Background sync queue is not an array");
|
|
54
65
|
}
|
|
55
|
-
return parsed
|
|
66
|
+
return parsed.map(item => {
|
|
67
|
+
const typed = item;
|
|
68
|
+
const result = reviveResultDates(typed.result);
|
|
69
|
+
return {
|
|
70
|
+
...typed,
|
|
71
|
+
queueId: typed.queueId ?? typed.id ?? createQueueId(),
|
|
72
|
+
result: {
|
|
73
|
+
...result,
|
|
74
|
+
id: result.id ?? typed.id ?? createResultId()
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
});
|
|
56
78
|
} catch (error) {
|
|
57
79
|
await this.options.storage.setItem(this.storageKey, "[]");
|
|
58
80
|
throw new Error(`Background sync queue could not be read: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -78,21 +100,36 @@ class BackgroundSyncCoordinator {
|
|
|
78
100
|
try {
|
|
79
101
|
await this.options.onResult({
|
|
80
102
|
...item.result,
|
|
81
|
-
id: item.id,
|
|
103
|
+
id: item.result.id,
|
|
104
|
+
queueId: item.queueId,
|
|
82
105
|
queuedAt: item.queuedAt,
|
|
83
106
|
attempt
|
|
84
107
|
});
|
|
85
108
|
queue.splice(queue.indexOf(item), 1);
|
|
109
|
+
recordOvokMetric("ovok.queue.delivered", 1, {
|
|
110
|
+
attempt,
|
|
111
|
+
measurementTypeKey: item.result.data.measurementTypeKey
|
|
112
|
+
});
|
|
86
113
|
changed = true;
|
|
87
114
|
} catch {
|
|
88
115
|
item.attempt = attempt;
|
|
89
116
|
item.exhausted = attempt >= this.maxRetries;
|
|
90
117
|
item.nextAttemptAt = item.exhausted ? Number.MAX_SAFE_INTEGER : Date.now() + this.retryBackoffMs * 2 ** (attempt - 1);
|
|
118
|
+
recordOvokMetric("ovok.queue.retries", 1, {
|
|
119
|
+
attempt
|
|
120
|
+
});
|
|
121
|
+
if (item.exhausted) {
|
|
122
|
+
recordOvokMetric("ovok.queue.exhausted", 1, {
|
|
123
|
+
attempt,
|
|
124
|
+
exhausted: true
|
|
125
|
+
});
|
|
126
|
+
}
|
|
91
127
|
changed = true;
|
|
92
128
|
}
|
|
93
129
|
}
|
|
94
130
|
if (changed) {
|
|
95
131
|
await this.writeQueue(queue);
|
|
132
|
+
recordOvokMetric("ovok.queue.depth", queue.length);
|
|
96
133
|
}
|
|
97
134
|
};
|
|
98
135
|
}
|
package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_QUEUE_KEY","DEFAULT_MAX_RETRIES","DEFAULT_RETRY_BACKOFF_MS","resultSequence","createResultId","Date","now","Math","random","toString","slice","BackgroundSyncCoordinator","operation","Promise","resolve","constructor","options","storageKey","maxRetries","max","retryBackoffMs","enqueue","result","runExclusive","queue","readQueue","
|
|
1
|
+
{"version":3,"names":["recordOvokMetric","reviveResultDates","DEFAULT_QUEUE_KEY","DEFAULT_MAX_RETRIES","DEFAULT_RETRY_BACKOFF_MS","resultSequence","createResultId","Date","now","Math","random","toString","slice","createQueueId","BackgroundSyncCoordinator","operation","Promise","resolve","constructor","options","storageKey","maxRetries","max","retryBackoffMs","enqueue","result","runExclusive","queue","readQueue","stableId","id","push","queueId","queuedAt","toISOString","attempt","nextAttemptAt","writeQueue","length","flushQueue","flush","next","then","catch","undefined","serialized","storage","getItem","parsed","JSON","parse","Array","isArray","Error","map","item","typed","error","setItem","message","String","stringify","changed","exhausted","resetExhausted","includeExhausted","onResult","splice","indexOf","measurementTypeKey","data","Number","MAX_SAFE_INTEGER"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/background-sync/background-sync-coordinator.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,10 +5,13 @@ import { Linking, Platform } from "react-native";
|
|
|
5
5
|
import { ScanMode, State } from "react-native-ble-plx";
|
|
6
6
|
import { slog } from "../../helpers/index.js";
|
|
7
7
|
import { sentryLogger } from "../../helpers/utils/sentry-logger.js";
|
|
8
|
+
import { addOvokSpanEvent, recordOvokMetric } from "../../helpers/utils/telemetry.js";
|
|
9
|
+
import { toBluetoothError } from "../types/bluetooth-error.js";
|
|
8
10
|
import { DeviceCreator } from "./device-creator.js";
|
|
9
11
|
class BTManager {
|
|
10
12
|
static MAX_DEVICES = 15; // Safety limit to prevent unbounded growth
|
|
11
13
|
devices = new Map();
|
|
14
|
+
forgottenDeviceIds = new Set();
|
|
12
15
|
eventSubscriptions = [];
|
|
13
16
|
scanGeneration = 0;
|
|
14
17
|
scanActive = false;
|
|
@@ -36,10 +39,12 @@ class BTManager {
|
|
|
36
39
|
this.onDeviceFoundCallback = undefined;
|
|
37
40
|
this.onResultCallback = undefined;
|
|
38
41
|
this.onDeviceStatusChangedCallback = undefined;
|
|
42
|
+
this.onConnectionEventCallback = undefined;
|
|
39
43
|
this.devices.forEach(device => {
|
|
40
44
|
device.destroy();
|
|
41
45
|
});
|
|
42
46
|
this.devices.clear();
|
|
47
|
+
this.forgottenDeviceIds.clear();
|
|
43
48
|
this.deviceCreator.destroy();
|
|
44
49
|
};
|
|
45
50
|
startScan = () => {
|
|
@@ -77,7 +82,7 @@ class BTManager {
|
|
|
77
82
|
subscription = this.bleManager.onStateChange(onStateChange, true);
|
|
78
83
|
} catch (error) {
|
|
79
84
|
this.onErrorCallback?.({
|
|
80
|
-
error:
|
|
85
|
+
error: toBluetoothError(error)
|
|
81
86
|
});
|
|
82
87
|
return;
|
|
83
88
|
}
|
|
@@ -116,11 +121,44 @@ class BTManager {
|
|
|
116
121
|
this.onDeviceFoundCallback = undefined;
|
|
117
122
|
this.onResultCallback = undefined;
|
|
118
123
|
this.onDeviceStatusChangedCallback = undefined;
|
|
124
|
+
this.onConnectionEventCallback = undefined;
|
|
119
125
|
this.devices.forEach(device => {
|
|
120
126
|
device.destroy();
|
|
121
127
|
});
|
|
122
128
|
this.devices.clear();
|
|
123
129
|
};
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Pauses discovery without tearing down devices or their callbacks.
|
|
133
|
+
*
|
|
134
|
+
* Use this when an app temporarily stops scanning, for example while it is in the
|
|
135
|
+
* background but an already-connected device may still deliver a measurement.
|
|
136
|
+
*/
|
|
137
|
+
pauseScan = () => {
|
|
138
|
+
if (this.destroyed) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
sentryLogger("info", "BT_MANAGER: Pausing scan");
|
|
142
|
+
this.scanGeneration += 1;
|
|
143
|
+
this.scanActive = false;
|
|
144
|
+
this.scanStarting = false;
|
|
145
|
+
this.removeStateChangeListener();
|
|
146
|
+
this.bleManager.stopDeviceScan();
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Resumes discovery without clearing devices or callbacks.
|
|
151
|
+
*
|
|
152
|
+
* Restarting unconditionally also recovers when an app stopped the underlying BLE scan
|
|
153
|
+
* directly while BTManager still believed it was active.
|
|
154
|
+
*/
|
|
155
|
+
resumeScan = () => {
|
|
156
|
+
if (this.destroyed) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
sentryLogger("info", "BT_MANAGER: Resuming scan");
|
|
160
|
+
this.restartScan();
|
|
161
|
+
};
|
|
124
162
|
restartScan = () => {
|
|
125
163
|
if (this.destroyed) {
|
|
126
164
|
return;
|
|
@@ -171,16 +209,35 @@ class BTManager {
|
|
|
171
209
|
});
|
|
172
210
|
this.scanActive = true;
|
|
173
211
|
sentryLogger("info", "BT_MANAGER: Scan started (continuous mode)");
|
|
212
|
+
addOvokSpanEvent("bluetooth.scan.started", {
|
|
213
|
+
platform: Platform.OS,
|
|
214
|
+
background: this.backgroundScanEnabled
|
|
215
|
+
});
|
|
174
216
|
} catch (error) {
|
|
175
217
|
this.onErrorCallback?.({
|
|
176
|
-
error:
|
|
218
|
+
error: toBluetoothError(error)
|
|
177
219
|
});
|
|
178
220
|
} finally {
|
|
179
221
|
this.scanStarting = false;
|
|
180
222
|
}
|
|
181
223
|
};
|
|
182
224
|
restoreDevices = devices => {
|
|
183
|
-
devices.forEach(device =>
|
|
225
|
+
devices.forEach(device => {
|
|
226
|
+
this.forgottenDeviceIds.delete(device.id);
|
|
227
|
+
this.onScanResult(null, device);
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
/** Disconnects one device and prevents it from being re-created by later advertisements. */
|
|
232
|
+
forget = async deviceId => {
|
|
233
|
+
this.forgottenDeviceIds.add(deviceId);
|
|
234
|
+
this.autoConnectCandidates.delete(deviceId);
|
|
235
|
+
const device = this.devices.get(deviceId);
|
|
236
|
+
if (!device) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
this.devices.delete(deviceId);
|
|
240
|
+
await device.disconnect();
|
|
184
241
|
};
|
|
185
242
|
onDeviceFound = callback => {
|
|
186
243
|
sentryLogger("info", "BT_MANAGER: Setting onDeviceFound callback");
|
|
@@ -194,6 +251,10 @@ class BTManager {
|
|
|
194
251
|
sentryLogger("info", "BT_MANAGER: Setting onDeviceStatusChanged callback");
|
|
195
252
|
this.onDeviceStatusChangedCallback = callback;
|
|
196
253
|
};
|
|
254
|
+
onConnectionEvent = callback => {
|
|
255
|
+
sentryLogger("info", "BT_MANAGER: Setting onConnectionEvent callback");
|
|
256
|
+
this.onConnectionEventCallback = callback;
|
|
257
|
+
};
|
|
197
258
|
onResult = callback => {
|
|
198
259
|
sentryLogger("info", "BT_MANAGER: Setting onResult callback");
|
|
199
260
|
this.onResultCallback = callback;
|
|
@@ -205,7 +266,7 @@ class BTManager {
|
|
|
205
266
|
try {
|
|
206
267
|
if (error) {
|
|
207
268
|
this.onErrorCallback?.({
|
|
208
|
-
error: error
|
|
269
|
+
error: toBluetoothError(error)
|
|
209
270
|
});
|
|
210
271
|
sentryLogger("error", "BT_MANAGER: Scan result error", {
|
|
211
272
|
error: error instanceof Error ? error.message : error
|
|
@@ -226,6 +287,9 @@ class BTManager {
|
|
|
226
287
|
if (!device) {
|
|
227
288
|
return;
|
|
228
289
|
}
|
|
290
|
+
if (this.forgottenDeviceIds.has(device.id)) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
229
293
|
if (this.devices.has(device.id)) {
|
|
230
294
|
return;
|
|
231
295
|
}
|
|
@@ -248,14 +312,21 @@ class BTManager {
|
|
|
248
312
|
deviceName,
|
|
249
313
|
onError: this.onErrorCallback?.bind(this),
|
|
250
314
|
onDeviceStatusChanged: this.onDeviceStatusChangedCallback?.bind(this),
|
|
315
|
+
onConnectionEvent: this.onConnectionEventCallback?.bind(this),
|
|
251
316
|
onResult: this.onResultCallback?.bind(this),
|
|
252
317
|
oneReadingPerConnection: this.options.oneReadingPerConnection,
|
|
253
318
|
deliveredEcgFileNames: this.options.deliveredEcgFileNames,
|
|
319
|
+
resultPolicy: this.options.resultPolicies?.[deviceName],
|
|
254
320
|
onDeviceDisconnected: () => {
|
|
255
321
|
this.removeDeviceFromFoundedDevices?.bind(this)(device.id);
|
|
256
322
|
}
|
|
257
323
|
});
|
|
258
324
|
this.devices.set(device.id, deviceClass);
|
|
325
|
+
recordOvokMetric("ovok.devices.found", 1, {
|
|
326
|
+
deviceId: device.id,
|
|
327
|
+
model: deviceName,
|
|
328
|
+
platform: Platform.OS
|
|
329
|
+
});
|
|
259
330
|
this.onDeviceFoundCallback?.(deviceClass, this);
|
|
260
331
|
this.queueAutoConnect(deviceClass);
|
|
261
332
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","scanGeneration","scanActive","scanStarting","destroyed","autoConnectCandidates","constructor","bleManager","acceptedDevices","options","deviceCreator","backgroundScanEnabled","backgroundEnabled","destroy","stopScan","autoConnectTimer","clearTimeout","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","stateChangeListener","generation","subscription","poweredOnBeforeSubscription","onStateChange","state","PoweredOn","removeStateChangeListener","startDeviceScan","OS","sendIntent","error","Error","String","push","setBackgroundScanEnabled","enabled","restartScan","stopDeviceScan","sub","remove","index","indexOf","splice","serviceUUIDs","length","scanMode","LowPower","Balanced","onScanResult","restoreDevices","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","message","advertisedName","name","trim","localName","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","oneReadingPerConnection","deliveredEcgFileNames","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","queueAutoConnect","autoConnect","setTimeout","values","connect","onDeviceSelectionRequired","select","selected","Math","max","autoConnectDelayMs","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","addOvokSpanEvent","recordOvokMetric","toBluetoothError","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","forgottenDeviceIds","Set","eventSubscriptions","scanGeneration","scanActive","scanStarting","destroyed","autoConnectCandidates","constructor","bleManager","acceptedDevices","options","deviceCreator","backgroundScanEnabled","backgroundEnabled","destroy","stopScan","autoConnectTimer","clearTimeout","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","onConnectionEventCallback","forEach","device","clear","startScan","stateChangeListener","generation","subscription","poweredOnBeforeSubscription","onStateChange","state","PoweredOn","removeStateChangeListener","startDeviceScan","OS","sendIntent","error","push","setBackgroundScanEnabled","enabled","restartScan","stopDeviceScan","sub","remove","pauseScan","resumeScan","index","indexOf","splice","serviceUUIDs","length","scanMode","LowPower","Balanced","onScanResult","platform","background","restoreDevices","delete","id","forget","deviceId","add","get","disconnect","onDeviceFound","callback","onError","onDeviceStatusChanged","onConnectionEvent","onResult","Error","message","advertisedName","name","trim","localName","has","deviceName","getDeviceName","size","currentSize","deviceClass","createDevice","bind","oneReadingPerConnection","deliveredEcgFileNames","resultPolicy","resultPolicies","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","model","queueAutoConnect","autoConnect","setTimeout","values","connect","onDeviceSelectionRequired","select","selected","Math","max","autoConnectDelayMs"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
/* eslint-disable max-lines */
|
|
4
|
+
|
|
3
5
|
import { sentryLogger } from "../../../helpers/utils/sentry-logger.js";
|
|
6
|
+
import { addOvokSpanEvent, recordOvokDuration, recordOvokMetric, startOvokSpan } from "../../../helpers/utils/telemetry.js";
|
|
4
7
|
import { DeviceStatus } from "../../types/device-status.js";
|
|
5
8
|
import { base64ToHex } from "../../utils/base-64-to-hex.js";
|
|
6
9
|
import { BTCommandWriter } from "./bt-command-writer.js";
|
|
@@ -15,21 +18,55 @@ export class BTConnectionHandler {
|
|
|
15
18
|
this.writer = new BTCommandWriter(device, callbacks.onError);
|
|
16
19
|
}
|
|
17
20
|
connect = async () => {
|
|
21
|
+
const startedAt = Date.now();
|
|
22
|
+
const span = startOvokSpan("bluetooth.connect", {
|
|
23
|
+
deviceId: this.device.id,
|
|
24
|
+
deviceName: this.device.name ?? "unknown"
|
|
25
|
+
});
|
|
18
26
|
try {
|
|
19
27
|
await this.connectWithRetries();
|
|
20
28
|
await this.requestPreferredMtu();
|
|
21
29
|
await this.device.discoverAllServicesAndCharacteristics();
|
|
22
30
|
await readDeviceInformation(this.device, this.callbacks.onDeviceInfo);
|
|
31
|
+
await this.readBatteryLevel();
|
|
23
32
|
this.callbacks.onStatusChanged?.(DeviceStatus.CONNECTED);
|
|
24
33
|
this.onDisconnectSubscription = this.device.onDisconnected(this.onDeviceDisconnected);
|
|
25
34
|
await this.subscribeToAllCharacteristics();
|
|
35
|
+
span?.setStatus?.({
|
|
36
|
+
code: 1
|
|
37
|
+
});
|
|
26
38
|
} catch (error) {
|
|
27
39
|
sentryLogger("error", "BT_MANAGER: Error connecting to device", {
|
|
28
40
|
error: error instanceof Error ? error.message : error,
|
|
29
41
|
deviceName: this.device.name
|
|
30
42
|
});
|
|
31
43
|
this.callbacks.onError?.(error);
|
|
44
|
+
if (/pair|bond|authentication|passkey|pin/i.test(String(error))) {
|
|
45
|
+
recordOvokMetric("ovok.pairing.failures", 1, {
|
|
46
|
+
deviceId: this.device.id,
|
|
47
|
+
deviceName: this.device.name ?? "unknown"
|
|
48
|
+
});
|
|
49
|
+
addOvokSpanEvent("pairing.failed", {
|
|
50
|
+
deviceId: this.device.id,
|
|
51
|
+
deviceName: this.device.name ?? "unknown"
|
|
52
|
+
});
|
|
53
|
+
this.callbacks.onConnectionEvent?.({
|
|
54
|
+
kind: "pairing",
|
|
55
|
+
pairingCodeRequired: true
|
|
56
|
+
});
|
|
57
|
+
}
|
|
32
58
|
this.callbacks.onStatusChanged?.(DeviceStatus.DISCONNECTED);
|
|
59
|
+
span?.recordException?.(error instanceof Error ? error : String(error));
|
|
60
|
+
span?.setStatus?.({
|
|
61
|
+
code: 2,
|
|
62
|
+
message: error instanceof Error ? error.message : String(error)
|
|
63
|
+
});
|
|
64
|
+
} finally {
|
|
65
|
+
recordOvokDuration("ovok.device.connection.duration", Date.now() - startedAt, {
|
|
66
|
+
deviceId: this.device.id,
|
|
67
|
+
deviceName: this.device.name ?? "unknown"
|
|
68
|
+
});
|
|
69
|
+
span?.end();
|
|
33
70
|
}
|
|
34
71
|
};
|
|
35
72
|
destroy = () => {
|
|
@@ -64,6 +101,26 @@ export class BTConnectionHandler {
|
|
|
64
101
|
});
|
|
65
102
|
}
|
|
66
103
|
};
|
|
104
|
+
|
|
105
|
+
/** Reads the standard Battery Service when a peripheral exposes it. */
|
|
106
|
+
readBatteryLevel = async () => {
|
|
107
|
+
try {
|
|
108
|
+
const characteristic = await this.device.readCharacteristicForService("180F", "2A19");
|
|
109
|
+
if (!characteristic.value) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const value = Number.parseInt(base64ToHex(characteristic.value)[0] ?? "", 16);
|
|
113
|
+
if (value === undefined || value > 100) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
this.callbacks.onConnectionEvent?.({
|
|
117
|
+
kind: "battery",
|
|
118
|
+
batteryLevel: value
|
|
119
|
+
});
|
|
120
|
+
} catch {
|
|
121
|
+
// Battery is optional. A device without the standard service must still connect.
|
|
122
|
+
}
|
|
123
|
+
};
|
|
67
124
|
connectWithRetries = async () => {
|
|
68
125
|
const maxRetries = 5;
|
|
69
126
|
const retryDelay = 1000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sentryLogger","DeviceStatus","base64ToHex","BTCommandWriter","readDeviceInformation","BTConnectionHandler","characteristicSubscriptions","constructor","device","mainServices","callbacks","preferredMtu","writer","onError","connect","connectWithRetries","requestPreferredMtu","discoverAllServicesAndCharacteristics","onDeviceInfo","onStatusChanged","CONNECTED","onDisconnectSubscription","onDisconnected","onDeviceDisconnected","subscribeToAllCharacteristics","error","Error","message","
|
|
1
|
+
{"version":3,"names":["sentryLogger","addOvokSpanEvent","recordOvokDuration","recordOvokMetric","startOvokSpan","DeviceStatus","base64ToHex","BTCommandWriter","readDeviceInformation","BTConnectionHandler","characteristicSubscriptions","constructor","device","mainServices","callbacks","preferredMtu","writer","onError","connect","startedAt","Date","now","span","deviceId","id","deviceName","name","connectWithRetries","requestPreferredMtu","discoverAllServicesAndCharacteristics","onDeviceInfo","readBatteryLevel","onStatusChanged","CONNECTED","onDisconnectSubscription","onDisconnected","onDeviceDisconnected","subscribeToAllCharacteristics","setStatus","code","error","Error","message","test","String","onConnectionEvent","kind","pairingCodeRequired","DISCONNECTED","recordException","end","destroy","forEach","sub","remove","reset","sendCommands","commands","send","negotiated","requestMTU","useNegotiatedMtu","mtu","requestedMtu","characteristic","readCharacteristicForService","value","Number","parseInt","undefined","batteryLevel","maxRetries","retryDelay","maxDelay","connected","retryCount","isConnected","errorCode","willRetry","Promise","resolve","setTimeout","Math","min","pow","isNormalDisconnect","mainService","monitorUuid","monitorUuids","subscription","monitorCharacteristicForService","uuid","result","hexValue","onDataReceived","push","initialCommands","length","onCommandSent"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-connection-handler.ts"],"mappings":"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","ignoreList":[]}
|