@ovok/native 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/components/bt-provider.js.map +1 -1
- package/lib/commonjs/modules/bt-management/constants/custom-device-brand.js +12 -0
- package/lib/commonjs/modules/bt-management/constants/custom-device-brand.js.map +1 -0
- package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js +111 -0
- package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js.map +1 -0
- package/lib/commonjs/modules/bt-management/index.js +209 -0
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js +116 -0
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js +83 -0
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-frame.js +64 -0
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-frame.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-monitor.js +76 -0
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-monitor.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/custom/custom-device-error.js +13 -0
- package/lib/commonjs/modules/bt-management/services/custom/custom-device-error.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js +120 -0
- package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/custom/normalize-ble-uuid.js +32 -0
- package/lib/commonjs/modules/bt-management/services/custom/normalize-ble-uuid.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/device-creator.js +52 -26
- package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +22 -5
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +103 -0
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/accepted-device.js +6 -0
- package/lib/commonjs/modules/bt-management/types/accepted-device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/compiled-custom-field.js +6 -0
- package/lib/commonjs/modules/bt-management/types/compiled-custom-field.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-byte-order.js +2 -0
- package/lib/commonjs/modules/bt-management/types/custom-byte-order.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-case-kind.js +2 -0
- package/lib/commonjs/modules/bt-management/types/custom-case-kind.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-case-spec.js +6 -0
- package/lib/commonjs/modules/bt-management/types/custom-case-spec.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-device-definition.js +4 -0
- package/lib/commonjs/modules/bt-management/types/custom-device-definition.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-device-id.js +2 -0
- package/lib/commonjs/modules/bt-management/types/custom-device-id.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-device-spec.js +6 -0
- package/lib/commonjs/modules/bt-management/types/custom-device-spec.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-field-encoding.js +2 -0
- package/lib/commonjs/modules/bt-management/types/custom-field-encoding.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-field-spec.js +6 -0
- package/lib/commonjs/modules/bt-management/types/custom-field-spec.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-frame-spec.js +6 -0
- package/lib/commonjs/modules/bt-management/types/custom-frame-spec.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-measurement.js +6 -0
- package/lib/commonjs/modules/bt-management/types/custom-measurement.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-monitor-spec.js +6 -0
- package/lib/commonjs/modules/bt-management/types/custom-monitor-spec.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/custom-service-spec.js +6 -0
- package/lib/commonjs/modules/bt-management/types/custom-service-spec.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/device-key-of.js +6 -0
- package/lib/commonjs/modules/bt-management/types/device-key-of.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/device-key.js +6 -0
- package/lib/commonjs/modules/bt-management/types/device-key.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/device-measurement-map.js.map +1 -1
- package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js +54 -0
- package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js.map +1 -0
- package/lib/commonjs/modules/bt-management/utils/create-frame-validator.js +40 -0
- package/lib/commonjs/modules/bt-management/utils/create-frame-validator.js.map +1 -0
- package/lib/commonjs/modules/bt-management/utils/decode-medical-float.js +38 -0
- package/lib/commonjs/modules/bt-management/utils/decode-medical-float.js.map +1 -0
- package/lib/commonjs/modules/bt-management/utils/is-custom-device-definition.js +15 -0
- package/lib/commonjs/modules/bt-management/utils/is-custom-device-definition.js.map +1 -0
- package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js +11 -1
- package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js.map +1 -1
- package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js +33 -1
- package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +4 -0
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js +30 -2
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js +19 -0
- package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/components/bt-provider.js.map +1 -1
- package/lib/module/modules/bt-management/constants/custom-device-brand.js +8 -0
- package/lib/module/modules/bt-management/constants/custom-device-brand.js.map +1 -0
- package/lib/module/modules/bt-management/constants/measurement-field-catalog.js +108 -0
- package/lib/module/modules/bt-management/constants/measurement-field-catalog.js.map +1 -0
- package/lib/module/modules/bt-management/index.js +19 -0
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/custom/compile-custom-case.js +112 -0
- package/lib/module/modules/bt-management/services/custom/compile-custom-case.js.map +1 -0
- package/lib/module/modules/bt-management/services/custom/compile-custom-field.js +78 -0
- package/lib/module/modules/bt-management/services/custom/compile-custom-field.js.map +1 -0
- package/lib/module/modules/bt-management/services/custom/compile-custom-frame.js +59 -0
- package/lib/module/modules/bt-management/services/custom/compile-custom-frame.js.map +1 -0
- package/lib/module/modules/bt-management/services/custom/compile-custom-monitor.js +71 -0
- package/lib/module/modules/bt-management/services/custom/compile-custom-monitor.js.map +1 -0
- package/lib/module/modules/bt-management/services/custom/custom-device-error.js +8 -0
- package/lib/module/modules/bt-management/services/custom/custom-device-error.js.map +1 -0
- package/lib/module/modules/bt-management/services/custom/define-custom-device.js +115 -0
- package/lib/module/modules/bt-management/services/custom/define-custom-device.js.map +1 -0
- package/lib/module/modules/bt-management/services/custom/normalize-ble-uuid.js +27 -0
- package/lib/module/modules/bt-management/services/custom/normalize-ble-uuid.js.map +1 -0
- package/lib/module/modules/bt-management/services/device-creator.js +52 -26
- package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +22 -5
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +98 -0
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -0
- package/lib/module/modules/bt-management/types/accepted-device.js +4 -0
- package/lib/module/modules/bt-management/types/accepted-device.js.map +1 -0
- package/lib/module/modules/bt-management/types/compiled-custom-field.js +4 -0
- package/lib/module/modules/bt-management/types/compiled-custom-field.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-byte-order.js +2 -0
- package/lib/module/modules/bt-management/types/custom-byte-order.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-case-kind.js +2 -0
- package/lib/module/modules/bt-management/types/custom-case-kind.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-case-spec.js +4 -0
- package/lib/module/modules/bt-management/types/custom-case-spec.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-device-definition.js +8 -0
- package/lib/module/modules/bt-management/types/custom-device-definition.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-device-id.js +2 -0
- package/lib/module/modules/bt-management/types/custom-device-id.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-device-spec.js +4 -0
- package/lib/module/modules/bt-management/types/custom-device-spec.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-field-encoding.js +2 -0
- package/lib/module/modules/bt-management/types/custom-field-encoding.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-field-spec.js +4 -0
- package/lib/module/modules/bt-management/types/custom-field-spec.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-frame-spec.js +4 -0
- package/lib/module/modules/bt-management/types/custom-frame-spec.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-measurement.js +4 -0
- package/lib/module/modules/bt-management/types/custom-measurement.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-monitor-spec.js +4 -0
- package/lib/module/modules/bt-management/types/custom-monitor-spec.js.map +1 -0
- package/lib/module/modules/bt-management/types/custom-service-spec.js +4 -0
- package/lib/module/modules/bt-management/types/custom-service-spec.js.map +1 -0
- package/lib/module/modules/bt-management/types/device-key-of.js +4 -0
- package/lib/module/modules/bt-management/types/device-key-of.js.map +1 -0
- package/lib/module/modules/bt-management/types/device-key.js +4 -0
- package/lib/module/modules/bt-management/types/device-key.js.map +1 -0
- package/lib/module/modules/bt-management/types/device-measurement-map.js +5 -0
- package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
- package/lib/module/modules/bt-management/utils/create-custom-field-parser.js +49 -0
- package/lib/module/modules/bt-management/utils/create-custom-field-parser.js.map +1 -0
- package/lib/module/modules/bt-management/utils/create-frame-validator.js +35 -0
- package/lib/module/modules/bt-management/utils/create-frame-validator.js.map +1 -0
- package/lib/module/modules/bt-management/utils/decode-medical-float.js +33 -0
- package/lib/module/modules/bt-management/utils/decode-medical-float.js.map +1 -0
- package/lib/module/modules/bt-management/utils/is-custom-device-definition.js +10 -0
- package/lib/module/modules/bt-management/utils/is-custom-device-definition.js.map +1 -0
- package/lib/module/modules/data-sync/components/android/android-health-sync.js +11 -1
- package/lib/module/modules/data-sync/components/android/android-health-sync.js.map +1 -1
- package/lib/module/modules/data-sync/components/apple/apple-health-sync.js +33 -1
- package/lib/module/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +4 -0
- package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/storage-manager.js +30 -2
- package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/sync-state-manager.js +19 -0
- package/lib/module/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +2 -2
- 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/components/bt-provider.d.ts +2 -2
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/constants/custom-device-brand.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/constants/custom-device-brand.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts +26 -0
- package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +19 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +5 -4
- 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/custom/compile-custom-case.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-field.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-frame.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-frame.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/custom-device-error.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/custom-device-error.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts +12 -5
- package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts +12 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -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/custom/custom.device.d.ts +43 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/accepted-device.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/accepted-device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts +5 -4
- 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/btprovider-props.d.ts +2 -2
- package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/compiled-custom-field.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/compiled-custom-field.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +2 -2
- 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/custom-byte-order.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-byte-order.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-kind.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-kind.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts +18 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts +22 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-id.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-id.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-spec.d.ts +33 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-spec.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-frame-spec.d.ts +27 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-frame-spec.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-measurement.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-measurement.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-monitor-spec.d.ts +14 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-monitor-spec.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-service-spec.d.ts +15 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-service-spec.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-data.d.ts +2 -2
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-data.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-key-of.d.ts +8 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-key-of.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-key.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-key.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +10 -5
- 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/result-callback.d.ts +2 -2
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/utils/create-custom-field-parser.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/create-frame-validator.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/create-frame-validator.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/decode-medical-float.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/decode-medical-float.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/is-custom-device-definition.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/is-custom-device-definition.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts +2 -0
- 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/storage-manager.d.ts +20 -0
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.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/services/managers/sync-state-manager.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +2 -2
- 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/components/bt-provider.d.ts +2 -2
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/constants/custom-device-brand.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/constants/custom-device-brand.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts +26 -0
- package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts +19 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +5 -4
- 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/custom/compile-custom-case.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-field.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-frame.d.ts +13 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-frame.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts +10 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/custom-device-error.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/custom-device-error.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts +12 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts +7 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts +12 -5
- package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts +12 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -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/custom/custom.device.d.ts +43 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/accepted-device.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-management/types/accepted-device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts +5 -4
- 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/btprovider-props.d.ts +2 -2
- package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/compiled-custom-field.d.ts +16 -0
- package/lib/typescript/module/src/modules/bt-management/types/compiled-custom-field.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +2 -2
- 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/custom-byte-order.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-byte-order.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-case-kind.d.ts +12 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-case-kind.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts +18 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts +22 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-id.d.ts +10 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-id.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts +12 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts +10 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-field-spec.d.ts +33 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-field-spec.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-frame-spec.d.ts +27 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-frame-spec.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-measurement.d.ts +10 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-measurement.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-monitor-spec.d.ts +14 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-monitor-spec.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-service-spec.d.ts +15 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-service-spec.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-data.d.ts +2 -2
- package/lib/typescript/module/src/modules/bt-management/types/device-data.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/device-key-of.d.ts +8 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-key-of.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-key.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-key.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +10 -5
- 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/result-callback.d.ts +2 -2
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/utils/create-custom-field-parser.d.ts +12 -0
- package/lib/typescript/module/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/utils/create-frame-validator.d.ts +10 -0
- package/lib/typescript/module/src/modules/bt-management/utils/create-frame-validator.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/utils/decode-medical-float.d.ts +9 -0
- package/lib/typescript/module/src/modules/bt-management/utils/decode-medical-float.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/utils/is-custom-device-definition.d.ts +9 -0
- package/lib/typescript/module/src/modules/bt-management/utils/is-custom-device-definition.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts +2 -0
- 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/storage-manager.d.ts +20 -0
- package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.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/services/managers/sync-state-manager.d.ts +13 -0
- package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","_netinfo","React","_interopRequireWildcard","_androidHealthSyncService","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AndroidHealthSync","exports","memo","dataToSync","chunkSize","onError","onProgress","client","useClient","patient","useMedplumProfile","serviceRef","useRef","isConnected","type","useNetInfo","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","AndroidHealthSyncService","getInstance","patientId","id","onSyncError","error","startSync","useEffect","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/android/android-health-sync.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_core","require","_netinfo","React","_interopRequireWildcard","_androidHealthSyncService","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AndroidHealthSync","exports","memo","dataToSync","chunkSize","onError","onProgress","client","useClient","patient","useMedplumProfile","serviceRef","useRef","isConnected","type","useNetInfo","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","AndroidHealthSyncService","getInstance","patientId","id","onSyncError","error","startSync","useEffect","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/android/android-health-sync.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -45,6 +45,28 @@ const AppleHealthSync = exports.AppleHealthSync = /*#__PURE__*/React.memo(({
|
|
|
45
45
|
onErrorRef.current?.(error);
|
|
46
46
|
}
|
|
47
47
|
}, [client, dataToSync, chunkSize, patient?.id, updateProgress]);
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The first sync, which nothing used to start.
|
|
51
|
+
*
|
|
52
|
+
* `useListenChanges` subscribes to HealthKit observer queries, and the
|
|
53
|
+
* native side scopes those to samples that start from NOW —
|
|
54
|
+
* `HKQuery.predicateForSamples(withStart: Date.init(), …)` in
|
|
55
|
+
* `@kingstinct/react-native-healthkit`. So the subscription can never fire
|
|
56
|
+
* for data that already exists, and the only other caller, the network
|
|
57
|
+
* effect below, returns early while `serviceRef.current` is null — which
|
|
58
|
+
* only this path assigns. A patient installed the app, granted HealthKit
|
|
59
|
+
* and saw nothing: their existing history was never read, and nothing new
|
|
60
|
+
* arrived unless they moved with the app open.
|
|
61
|
+
*
|
|
62
|
+
* `startSync` reads the per-code watermark off the server and pages
|
|
63
|
+
* forward from it, so it IS the initial sync; it just had no caller here.
|
|
64
|
+
* `AndroidHealthSync` has had this effect all along — this is the platform
|
|
65
|
+
* catching up with its sibling, not a new mechanism.
|
|
66
|
+
*/
|
|
67
|
+
React.useEffect(() => {
|
|
68
|
+
syncData();
|
|
69
|
+
}, [syncData]);
|
|
48
70
|
(0, _useListenChanges.useListenChanges)(dataToSync, () => {
|
|
49
71
|
syncData();
|
|
50
72
|
});
|
|
@@ -64,7 +86,17 @@ const AppleHealthSync = exports.AppleHealthSync = /*#__PURE__*/React.memo(({
|
|
|
64
86
|
}, [onError, onProgress]);
|
|
65
87
|
React.useEffect(() => {
|
|
66
88
|
return () => {
|
|
67
|
-
|
|
89
|
+
/*
|
|
90
|
+
* A teardown that throws takes the unmount with it, and React has no
|
|
91
|
+
* boundary for a cleanup function — so a sync that fails to stop
|
|
92
|
+
* became a crash on the way out of a screen. The error goes to the
|
|
93
|
+
* app's own handler, which is what `onError` is for.
|
|
94
|
+
*/
|
|
95
|
+
try {
|
|
96
|
+
serviceRef.current?.stopSync();
|
|
97
|
+
} catch (error) {
|
|
98
|
+
onErrorRef.current?.(error);
|
|
99
|
+
}
|
|
68
100
|
serviceRef.current = null;
|
|
69
101
|
};
|
|
70
102
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","_netinfo","React","_interopRequireWildcard","_useListenChanges","_appleHealthSyncService","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AppleHealthSync","exports","memo","dataToSync","chunkSize","onError","onProgress","client","useClient","patient","useMedplumProfile","serviceRef","useRef","isConnected","type","useNetInfo","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","AppleHealthSyncService","getInstance","patientId","id","onSyncError","error","startSync","
|
|
1
|
+
{"version":3,"names":["_core","require","_netinfo","React","_interopRequireWildcard","_useListenChanges","_appleHealthSyncService","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AppleHealthSync","exports","memo","dataToSync","chunkSize","onError","onProgress","client","useClient","patient","useMedplumProfile","serviceRef","useRef","isConnected","type","useNetInfo","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","AppleHealthSyncService","getInstance","patientId","id","onSyncError","error","startSync","useEffect","useListenChanges","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-sync.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,7 +19,11 @@ class BaseHealthSyncService {
|
|
|
19
19
|
this.storageManager = new _storageManager.StorageManager(props.client, this.getProviderName());
|
|
20
20
|
this.dataProcessor = new _dataProcessor.DataProcessor(props.client, props.patientId, this.getProviderName(), props.chunkSize ?? 5000, this.storageManager, this.getTotalCountsFunction(), this.getDataFromProviderFunction(), this.getConverterFunction());
|
|
21
21
|
}
|
|
22
|
+
/** One run at a time; see `SyncStateManager.once` for why that matters. */
|
|
22
23
|
async startSync() {
|
|
24
|
+
return this.stateManager.once(() => this.runSync());
|
|
25
|
+
}
|
|
26
|
+
async runSync() {
|
|
23
27
|
try {
|
|
24
28
|
if (!this.client.isInitialized) {
|
|
25
29
|
this.onSyncError(new Error("Client not initialized"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dataProcessor","require","_storageManager","_syncProgressManager","_syncStateManager","BaseHealthSyncService","constructor","props","client","patientId","dataToSync","onSyncError","progressManager","SyncProgressManager","updateProgress","stateManager","SyncStateManager","storageManager","StorageManager","getProviderName","dataProcessor","DataProcessor","chunkSize","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","startSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasAnchor","observationBodies","currentHasAnchor","getObservationBodiesForType","entries","generateObservationEntries","incrementSyncedObservations","length","result","saveObservations","addResult","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":";;;;;;AAkBA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAEO,MAAeI,qBAAqB,CAUzC;EAeAC,WAAWA,CAACC,KAAoC,EAAE;IAChD,IAAI,CAACC,MAAM,GAAGD,KAAK,CAACC,MAAM;IAC1B,IAAI,CAACC,SAAS,GAAGF,KAAK,CAACE,SAAS;IAChC,IAAI,CAACC,UAAU,GAAGH,KAAK,CAACG,UAAU;IAClC,IAAI,CAACC,WAAW,GAAGJ,KAAK,CAACI,WAAW;IAEpC,IAAI,CAACC,eAAe,GAAG,IAAIC,wCAAmB,CAC5CN,KAAK,CAACO,cAAc,EACpBP,KAAK,CAACG,UACR,CAAC;IACD,IAAI,CAACK,YAAY,GAAG,IAAIC,kCAAgB,CAAC,CAAC;IAC1C,IAAI,CAACC,cAAc,GAAG,IAAIC,8BAAc,CACtCX,KAAK,CAACC,MAAM,EACZ,IAAI,CAACW,eAAe,CAAC,CACvB,CAAC;IACD,IAAI,CAACC,aAAa,GAAG,IAAIC,4BAAa,CACpCd,KAAK,CAACC,MAAM,EACZD,KAAK,CAACE,SAAS,EACf,IAAI,CAACU,eAAe,CAAC,CAAC,EACtBZ,KAAK,CAACe,SAAS,IAAI,IAAI,EACvB,IAAI,CAACL,cAAc,EACnB,IAAI,CAACM,sBAAsB,CAAC,CAAC,EAC7B,IAAI,CAACC,2BAA2B,CAAC,CAAC,EAClC,IAAI,CAACC,oBAAoB,CAAC,CAC5B,CAAC;EACH;EAgBA,MAAaC,SAASA,CAAA,EAAkB;IACtC,IAAI;MACF,IAAI,CAAC,IAAI,
|
|
1
|
+
{"version":3,"names":["_dataProcessor","require","_storageManager","_syncProgressManager","_syncStateManager","BaseHealthSyncService","constructor","props","client","patientId","dataToSync","onSyncError","progressManager","SyncProgressManager","updateProgress","stateManager","SyncStateManager","storageManager","StorageManager","getProviderName","dataProcessor","DataProcessor","chunkSize","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","startSync","once","runSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasAnchor","observationBodies","currentHasAnchor","getObservationBodiesForType","entries","generateObservationEntries","incrementSyncedObservations","length","result","saveObservations","addResult","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.StorageManager = void 0;
|
|
7
7
|
var _saveBundleObservations = require("../../utils/save-bundle-observations.js");
|
|
8
8
|
class StorageManager {
|
|
9
|
+
/**
|
|
10
|
+
* Where an anchor goes when the host client has no storage.
|
|
11
|
+
*
|
|
12
|
+
* `clientStorage` is assigned from `OvokClient`'s `storage` option and from
|
|
13
|
+
* nowhere else, so a host that constructs its client without one leaves it
|
|
14
|
+
* `undefined` — and the `?.` below then swallowed every write while
|
|
15
|
+
* `getAnchor` answered `undefined` for ever. That is not a lost
|
|
16
|
+
* optimisation: `getObservationBodiesForType` reports `hasAnchor` from the
|
|
17
|
+
* anchor the provider just returned, and `syncDataByType` loops while it is
|
|
18
|
+
* true. An anchor that never advances means the next read starts from the
|
|
19
|
+
* beginning again, returns the same first chunk and the same anchor, and
|
|
20
|
+
* uploads it — for ever.
|
|
21
|
+
*
|
|
22
|
+
* The sync must not depend on what the host passed. This map keeps the
|
|
23
|
+
* anchor for the life of the service instance, which is what lets the loop
|
|
24
|
+
* end; when the host DOES provide storage the anchor also survives a
|
|
25
|
+
* restart, which is what keeps the next cold start short.
|
|
26
|
+
*/
|
|
27
|
+
inMemoryAnchors = new Map();
|
|
9
28
|
constructor(client, provider) {
|
|
10
29
|
this.client = client;
|
|
11
30
|
this.provider = provider;
|
|
@@ -17,10 +36,19 @@ class StorageManager {
|
|
|
17
36
|
});
|
|
18
37
|
}
|
|
19
38
|
saveAnchor(typeIdentifier, anchor) {
|
|
20
|
-
this.
|
|
39
|
+
const key = this.anchorKey(typeIdentifier);
|
|
40
|
+
if (this.client.clientStorage) {
|
|
41
|
+
this.client.clientStorage.setString(key, anchor);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.inMemoryAnchors.set(key, anchor);
|
|
21
45
|
}
|
|
22
46
|
getAnchor(typeIdentifier) {
|
|
23
|
-
|
|
47
|
+
const key = this.anchorKey(typeIdentifier);
|
|
48
|
+
return this.client.clientStorage ? this.client.clientStorage.getString(key) : this.inMemoryAnchors.get(key);
|
|
49
|
+
}
|
|
50
|
+
anchorKey(typeIdentifier) {
|
|
51
|
+
return `${this.provider}-sync-${typeIdentifier}-anchor`;
|
|
24
52
|
}
|
|
25
53
|
saveAnchors(anchors) {
|
|
26
54
|
anchors.forEach(({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_saveBundleObservations","require","StorageManager","constructor","client","provider","saveObservations","entries","saveBundleObservations","saveAnchor","typeIdentifier","anchor","clientStorage","setString","getAnchor","getString","saveAnchors","anchors","forEach","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":";;;;;;AAIA,IAAAA,uBAAA,GAAAC,OAAA;AAEO,MAAMC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"names":["_saveBundleObservations","require","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","entries","saveBundleObservations","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":";;;;;;AAIA,IAAAA,uBAAA,GAAAC,OAAA;AAEO,MAAMC,cAAc,CAAC;EAC1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACmBC,eAAe,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE5DC,WAAWA,CACDC,MAAkB,EAClBC,QAAwB,EAChC;IAAA,KAFQD,MAAkB,GAAlBA,MAAkB;IAAA,KAClBC,QAAwB,GAAxBA,QAAwB;EAC/B;EAEH,MAAMC,gBAAgBA,CACpBC,OAAgE,EAClC;IAC9B,OAAO,IAAAC,8CAAsB,EAAC;MAC5BD,OAAO;MACPH,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;EACJ;EAEAK,UAAUA,CAACC,cAAsB,EAAEC,MAAc,EAAQ;IACvD,MAAMC,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,IAAI,IAAI,CAACN,MAAM,CAACU,aAAa,EAAE;MAC7B,IAAI,CAACV,MAAM,CAACU,aAAa,CAACC,SAAS,CAACH,GAAG,EAAED,MAAM,CAAC;MAEhD;IACF;IAEA,IAAI,CAACV,eAAe,CAACe,GAAG,CAACJ,GAAG,EAAED,MAAM,CAAC;EACvC;EAEAM,SAASA,CAACP,cAAsB,EAAsB;IACpD,MAAME,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,OAAO,IAAI,CAACN,MAAM,CAACU,aAAa,GAC5B,IAAI,CAACV,MAAM,CAACU,aAAa,CAACI,SAAS,CAACN,GAAG,CAAC,GACxC,IAAI,CAACX,eAAe,CAACkB,GAAG,CAACP,GAAG,CAAC;EACnC;EAEQC,SAASA,CAACH,cAAsB,EAAU;IAChD,OAAO,GAAG,IAAI,CAACL,QAAQ,SAASK,cAAc,SAAS;EACzD;EAEAU,WAAWA,CACTC,OAA0D,EACpD;IACNA,OAAO,CAACC,OAAO,CAAC,CAAC;MAAEZ,cAAc;MAAEC;IAAO,CAAC,KAAK;MAC9C,IAAI,CAACF,UAAU,CAACC,cAAc,EAAEC,MAAM,CAAC;IACzC,CAAC,CAAC;EACJ;AACF;AAACY,OAAA,CAAAvB,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -5,6 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.SyncStateManager = void 0;
|
|
7
7
|
class SyncStateManager {
|
|
8
|
+
/**
|
|
9
|
+
* A sync in flight, so a second caller joins it rather than starting another.
|
|
10
|
+
*
|
|
11
|
+
* There are three callers and they overlap by construction:
|
|
12
|
+
* `InstanceManager.getInstanceInternal` starts one as a side effect of
|
|
13
|
+
* handing back the instance, the component starts one on mount, and the
|
|
14
|
+
* change subscription starts one whenever the provider reports new samples.
|
|
15
|
+
* Two runs over one data type read the same chunk and upload it twice,
|
|
16
|
+
* because the read cursor only advances once a read has returned.
|
|
17
|
+
*/
|
|
18
|
+
|
|
8
19
|
shouldStopSync = false;
|
|
9
20
|
initialDataFetched = false;
|
|
10
21
|
latestObservationDates = [];
|
|
@@ -12,6 +23,14 @@ class SyncStateManager {
|
|
|
12
23
|
addResult(result) {
|
|
13
24
|
this.results.push(result);
|
|
14
25
|
}
|
|
26
|
+
|
|
27
|
+
/** Runs `sync`, or joins the run already under way. */
|
|
28
|
+
async once(sync) {
|
|
29
|
+
this.inFlight ??= sync().finally(() => {
|
|
30
|
+
this.inFlight = undefined;
|
|
31
|
+
});
|
|
32
|
+
return this.inFlight;
|
|
33
|
+
}
|
|
15
34
|
reset() {
|
|
16
35
|
this.shouldStopSync = false;
|
|
17
36
|
this.initialDataFetched = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SyncStateManager","shouldStopSync","initialDataFetched","latestObservationDates","results","addResult","result","push","reset","pause","resume","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-state-manager.ts"],"mappings":";;;;;;AAEO,MAAMA,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"names":["SyncStateManager","shouldStopSync","initialDataFetched","latestObservationDates","results","addResult","result","push","once","sync","inFlight","finally","undefined","reset","pause","resume","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-state-manager.ts"],"mappings":";;;;;;AAEO,MAAMA,gBAAgB,CAAC;EAC5B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAGSC,cAAc,GAAG,KAAK;EACtBC,kBAAkB,GAAG,KAAK;EAC1BC,sBAAsB,GAGxB,EAAE;EACAC,OAAO,GAA0B,EAAE;EAE1CC,SAASA,CAACC,MAA2B,EAAQ;IAC3C,IAAI,CAACF,OAAO,CAACG,IAAI,CAACD,MAAM,CAAC;EAC3B;;EAEA;EACA,MAAME,IAAIA,CAACC,IAAyB,EAAiB;IACnD,IAAI,CAACC,QAAQ,KAAKD,IAAI,CAAC,CAAC,CAACE,OAAO,CAAC,MAAM;MACrC,IAAI,CAACD,QAAQ,GAAGE,SAAS;IAC3B,CAAC,CAAC;IAEF,OAAO,IAAI,CAACF,QAAQ;EACtB;EAEAG,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACZ,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACC,kBAAkB,GAAG,KAAK;IAC/B,IAAI,CAACC,sBAAsB,GAAG,EAAE;IAChC,IAAI,CAACC,OAAO,GAAG,EAAE;EACnB;EAEAU,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACb,cAAc,GAAG,IAAI;EAC5B;EAEAc,MAAMA,CAAA,EAAS;IACb,IAAI,CAACd,cAAc,GAAG,KAAK;EAC7B;AACF;AAACe,OAAA,CAAAhB,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","AppState","useDeviceList","sentryLogger","BTManager","Fragment","_Fragment","jsx","_jsx","BTProviderChildWrapper","memo","bleManager","acceptedDevices","children","onDeviceFound","onError","onDeviceStatusChanged","onResult","btManagerRef","useRef","setDeviceListItems","useEffect","length","btManager","current","startScan","destroy","undefined","status","deviceData","measurementTypeKey","prev","newList","index","findIndex","item","deviceType","name","listener","addEventListener","state","remove"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider-child-wrapper.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SAASC,aAAa,QAAQ,qDAAkD;AAChF,SAASC,YAAY,QAAQ,sCAAmC;AAChE,SAASC,SAAS,QAAQ,2BAAwB;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAInD,OAAO,MAAMC,sBAAsB,gBAAGT,KAAK,CAACU,IAAI,CAC9C,
|
|
1
|
+
{"version":3,"names":["React","AppState","useDeviceList","sentryLogger","BTManager","Fragment","_Fragment","jsx","_jsx","BTProviderChildWrapper","memo","bleManager","acceptedDevices","children","onDeviceFound","onError","onDeviceStatusChanged","onResult","btManagerRef","useRef","setDeviceListItems","useEffect","length","btManager","current","startScan","destroy","undefined","status","deviceData","measurementTypeKey","prev","newList","index","findIndex","item","deviceType","name","listener","addEventListener","state","remove"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider-child-wrapper.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ActivityIndicator","useRequestPermissions","BTProviderChildWrapper","DefaultPermissionFallback","jsx","_jsx","BTProvider","permissionFallback","onAccessPermissionChanged","props","accessPermission","openBleSetting","undefined","testID","retry"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,iBAAiB,QAAQ,oBAAoB;AAEtD,SAASC,qBAAqB,QAAQ,qCAAkC;AAIxE,SAASC,sBAAsB,QAAQ,gCAA6B;AACpE,SAASC,yBAAyB,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1E,OAAO,MAAMC,UAAU,GAAGA,
|
|
1
|
+
{"version":3,"names":["React","ActivityIndicator","useRequestPermissions","BTProviderChildWrapper","DefaultPermissionFallback","jsx","_jsx","BTProvider","permissionFallback","onAccessPermissionChanged","props","accessPermission","openBleSetting","undefined","testID","retry"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,iBAAiB,QAAQ,oBAAoB;AAEtD,SAASC,qBAAqB,QAAQ,qCAAkC;AAIxE,SAASC,sBAAsB,QAAQ,gCAA6B;AACpE,SAASC,yBAAyB,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1E,OAAO,MAAMC,UAAU,GAAGA,CAAsC;EAC9DC,kBAAkB;EAClBC,yBAAyB;EACzB,GAAGC;AACwC,CAAC,KAAK;EACjD,MAAM;IAAEC,gBAAgB;IAAEC;EAAe,CAAC,GAAGV,qBAAqB,CAAC;IACjEO;EACF,CAAC,CAAC;EAEF,IAAIE,gBAAgB,KAAKE,SAAS,EAAE;IAClC,oBAAOP,IAAA,CAACL,iBAAiB;MAACa,MAAM,EAAC;IAAoB,CAAE,CAAC;EAC1D;EAEA,IAAI,CAACH,gBAAgB,EAAE;IACrB,OAAOH,kBAAkB,GACvBA,kBAAkB,CAAC,CAAC,gBAEpBF,IAAA,CAACF,yBAAyB;MAACW,KAAK,EAAEH;IAAe,CAAE,CACpD;EACH;EAEA,oBAAON,IAAA,CAACH,sBAAsB;IAAA,GAAKO;EAAK,CAAG,CAAC;AAC9C,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Marks an object as the output of defineCustomDevice. A hand-rolled definition that
|
|
5
|
+
* skipped registration validation therefore cannot be passed to acceptedDevices.
|
|
6
|
+
*/
|
|
7
|
+
export const CUSTOM_DEVICE_BRAND = Symbol.for("ovok.customDevice");
|
|
8
|
+
//# sourceMappingURL=custom-device-brand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CUSTOM_DEVICE_BRAND","Symbol","for"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/custom-device-brand.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,OAAO,MAAMA,mBAAkC,GAAGC,MAAM,CAACC,GAAG,CAAC,mBAAmB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { MeasurementTypeKey } from "@ovok/core";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The measurement types a declaration may produce, the properties each one accepts, the
|
|
7
|
+
* canonical unit of every property, and the physiological envelope outside which a decoded
|
|
8
|
+
* value is treated as a decoding fault rather than a reading.
|
|
9
|
+
*
|
|
10
|
+
* A measurement type absent from this catalog cannot be declared. ECG, urine analysis and
|
|
11
|
+
* the cosinuss multi-parameter stream are absent on purpose: they are assembled across
|
|
12
|
+
* several notifications and need a device class, not a declaration.
|
|
13
|
+
*
|
|
14
|
+
* The property names mirror the measurement types in @ovok/core. A typo would otherwise
|
|
15
|
+
* produce an object the backend silently drops, so it is rejected at registration instead.
|
|
16
|
+
*
|
|
17
|
+
* `required` marks the properties without which the reading is not that measurement. Every
|
|
18
|
+
* property in @ovok/core is optional, so a declaration that named only `systolic` would
|
|
19
|
+
* otherwise compile and then post a blood pressure with no diastolic - a plausible clinical
|
|
20
|
+
* record of something that was never measured. A "result" case must declare all of them.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
export const measurementFieldCatalog = {
|
|
24
|
+
[MeasurementTypeKey.bloodPressure]: {
|
|
25
|
+
systolic: {
|
|
26
|
+
unit: "mmHg",
|
|
27
|
+
min: 30,
|
|
28
|
+
max: 300,
|
|
29
|
+
required: true
|
|
30
|
+
},
|
|
31
|
+
diastolic: {
|
|
32
|
+
unit: "mmHg",
|
|
33
|
+
min: 10,
|
|
34
|
+
max: 220,
|
|
35
|
+
required: true
|
|
36
|
+
},
|
|
37
|
+
heartRate: {
|
|
38
|
+
unit: "bpm",
|
|
39
|
+
min: 20,
|
|
40
|
+
max: 300
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
[MeasurementTypeKey.bodyWeight]: {
|
|
44
|
+
bodyWeight: {
|
|
45
|
+
unit: "kg",
|
|
46
|
+
min: 1,
|
|
47
|
+
max: 500,
|
|
48
|
+
required: true
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
[MeasurementTypeKey.temperature]: {
|
|
52
|
+
bodyTemp: {
|
|
53
|
+
unit: "Cel",
|
|
54
|
+
min: 25,
|
|
55
|
+
max: 45,
|
|
56
|
+
required: true
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
[MeasurementTypeKey.bloodGlucose]: {
|
|
60
|
+
bloodGlucose: {
|
|
61
|
+
unit: "mg/dL",
|
|
62
|
+
min: 10,
|
|
63
|
+
max: 1000,
|
|
64
|
+
required: true
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
[MeasurementTypeKey.bloodOxygenPulseRate]: {
|
|
68
|
+
bloodOxygen: {
|
|
69
|
+
unit: "%",
|
|
70
|
+
min: 50,
|
|
71
|
+
max: 100,
|
|
72
|
+
required: true
|
|
73
|
+
},
|
|
74
|
+
pulseRate: {
|
|
75
|
+
unit: "bpm",
|
|
76
|
+
min: 20,
|
|
77
|
+
max: 300,
|
|
78
|
+
required: true
|
|
79
|
+
},
|
|
80
|
+
perfusionIndex: {
|
|
81
|
+
unit: "%",
|
|
82
|
+
min: 0,
|
|
83
|
+
max: 25
|
|
84
|
+
},
|
|
85
|
+
rrInterval: {
|
|
86
|
+
unit: "ms",
|
|
87
|
+
min: 200,
|
|
88
|
+
max: 3000
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
[MeasurementTypeKey.heartRate]: {
|
|
92
|
+
heartRate: {
|
|
93
|
+
unit: "bpm",
|
|
94
|
+
min: 20,
|
|
95
|
+
max: 300,
|
|
96
|
+
required: true
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
[MeasurementTypeKey.respiratoryRate]: {
|
|
100
|
+
respiratoryRate: {
|
|
101
|
+
unit: "/min",
|
|
102
|
+
min: 2,
|
|
103
|
+
max: 90,
|
|
104
|
+
required: true
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=measurement-field-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","measurementFieldCatalog","bloodPressure","systolic","unit","min","max","required","diastolic","heartRate","bodyWeight","temperature","bodyTemp","bloodGlucose","bloodOxygenPulseRate","bloodOxygen","pulseRate","perfusionIndex","rrInterval","respiratoryRate"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/measurement-field-catalog.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAO,MAAMC,uBAEZ,GAAG;EACF,CAACD,kBAAkB,CAACE,aAAa,GAAG;IAClCC,QAAQ,EAAE;MAAEC,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DC,SAAS,EAAE;MAAEJ,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC9DE,SAAS,EAAE;MAAEL,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE;IAAI;EAC9C,CAAC;EACD,CAACN,kBAAkB,CAACU,UAAU,GAAG;IAC/BA,UAAU,EAAE;MAAEN,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK;EAC7D,CAAC;EACD,CAACP,kBAAkB,CAACW,WAAW,GAAG;IAChCC,QAAQ,EAAE;MAAER,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAK;EAC5D,CAAC;EACD,CAACP,kBAAkB,CAACa,YAAY,GAAG;IACjCA,YAAY,EAAE;MAAET,IAAI,EAAE,OAAO;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,IAAI;MAAEC,QAAQ,EAAE;IAAK;EACpE,CAAC;EACD,CAACP,kBAAkB,CAACc,oBAAoB,GAAG;IACzCC,WAAW,EAAE;MAAEX,IAAI,EAAE,GAAG;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DS,SAAS,EAAE;MAAEZ,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DU,cAAc,EAAE;MAAEb,IAAI,EAAE,GAAG;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAG,CAAC;IAC9CY,UAAU,EAAE;MAAEd,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE,GAAG;MAAEC,GAAG,EAAE;IAAK;EAChD,CAAC;EACD,CAACN,kBAAkB,CAACS,SAAS,GAAG;IAC9BA,SAAS,EAAE;MAAEL,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK;EAC9D,CAAC;EACD,CAACP,kBAAkB,CAACmB,eAAe,GAAG;IACpCA,eAAe,EAAE;MAAEf,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAK;EACnE;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
export * from "./types/i-bt-managed-device.js";
|
|
4
|
+
export * from "./types/accepted-device.js";
|
|
5
|
+
export * from "./types/compiled-custom-field.js";
|
|
6
|
+
export * from "./types/custom-byte-order.js";
|
|
7
|
+
export * from "./types/custom-case-kind.js";
|
|
8
|
+
export * from "./types/custom-case-spec.js";
|
|
9
|
+
export * from "./types/custom-device-definition.js";
|
|
10
|
+
export * from "./types/custom-device-id.js";
|
|
11
|
+
export * from "./types/custom-device-spec.js";
|
|
12
|
+
export * from "./types/custom-field-encoding.js";
|
|
13
|
+
export * from "./types/custom-field-spec.js";
|
|
14
|
+
export * from "./types/custom-frame-spec.js";
|
|
15
|
+
export * from "./types/custom-measurement.js";
|
|
16
|
+
export * from "./types/custom-monitor-spec.js";
|
|
17
|
+
export * from "./types/custom-service-spec.js";
|
|
18
|
+
export * from "./types/device-key.js";
|
|
19
|
+
export * from "./types/device-key-of.js";
|
|
4
20
|
export * from "./types/device-data.js";
|
|
5
21
|
export * from "./types/device-status.js";
|
|
6
22
|
export * from "./types/integrated-devices.js";
|
|
@@ -13,7 +29,10 @@ export * from "./types/result-callback.js";
|
|
|
13
29
|
export * from "./types/error-callback.js";
|
|
14
30
|
export * from "./types/device-status-change-callback.js";
|
|
15
31
|
export * from "./services/devices/bt-managed-device.js";
|
|
32
|
+
export * from "./services/devices/custom/custom.device.js";
|
|
16
33
|
export * from "./services/bt-manager.js";
|
|
34
|
+
export * from "./services/custom/define-custom-device.js";
|
|
35
|
+
export * from "./constants/measurement-field-catalog.js";
|
|
17
36
|
export * from "./components/bt-provider.js";
|
|
18
37
|
export * from "./components/default-permission-fallback.js";
|
|
19
38
|
export * from "./hooks/use-request-permissions.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,0BAAuB;
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,2CAAwC;AAEtD,cAAc,0CAAuC;AAErD,cAAc,6BAA0B;AACxC,cAAc,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","lastScanTimestamp","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","Date","now","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","enable","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","Error","message","name","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":";;AAAA;AACA,SAASA,OAAO,EAAEC,QAAQ,QAAQ,cAAc;AAChD,SAIEC,QAAQ,EACRC,KAAK,QAEA,sBAAsB;AAE7B,SAASC,IAAI,QAAQ,wBAAe;AACpC,SAASC,YAAY,QAAQ,sCAAmC;
|
|
1
|
+
{"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","lastScanTimestamp","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","Date","now","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","enable","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","Error","message","name","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { measurementFieldCatalog } from "../../constants/measurement-field-catalog.js";
|
|
4
|
+
import { CaseType } from "../../types/case-type.js";
|
|
5
|
+
import { createCustomFieldParser } from "../../utils/create-custom-field-parser.js";
|
|
6
|
+
import { compileCustomField } from "./compile-custom-field.js";
|
|
7
|
+
import { customDeviceError } from "./custom-device-error.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A "result" frame compiles to CaseType.DEPENDENT, not CaseType.RESULT.
|
|
11
|
+
*
|
|
12
|
+
* BTDataProcessor only forwards a RESULT case while the device is already streaming, so a
|
|
13
|
+
* device that sends one self-contained notification - the common shape for a standard GATT
|
|
14
|
+
* sensor - would be silently dropped. A DEPENDENT case is always handed to the device, which
|
|
15
|
+
* reports the reading and then rewrites the frame to OTHER so the status returns to
|
|
16
|
+
* CONNECTED. Devices that do stream first behave identically.
|
|
17
|
+
*/
|
|
18
|
+
const CASE_TYPES = {
|
|
19
|
+
result: CaseType.DEPENDENT,
|
|
20
|
+
stream: CaseType.STREAM,
|
|
21
|
+
idle: CaseType.OTHER
|
|
22
|
+
};
|
|
23
|
+
const assertMeasurementTypeKey = (id, path, caseSpec) => {
|
|
24
|
+
const key = caseSpec.measurementTypeKey;
|
|
25
|
+
if (key === undefined) {
|
|
26
|
+
if (caseSpec.kind === "result") {
|
|
27
|
+
throw customDeviceError(id, `${path}.measurementTypeKey`, 'is required on a "result" case');
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
if (!measurementFieldCatalog[key]) {
|
|
32
|
+
throw customDeviceError(id, `${path}.measurementTypeKey`, `"${key}" cannot be declared; it is assembled across several notifications and needs a device class in the SDK. Declarable types: ${Object.keys(measurementFieldCatalog).join(", ")}`);
|
|
33
|
+
}
|
|
34
|
+
return key;
|
|
35
|
+
};
|
|
36
|
+
const registerField = (id, path, compiled, measurementTypeKey, fields) => {
|
|
37
|
+
const key = `${measurementTypeKey}:${compiled.name}`;
|
|
38
|
+
const existing = fields.get(key);
|
|
39
|
+
if (existing && (existing.min !== compiled.min || existing.max !== compiled.max)) {
|
|
40
|
+
throw customDeviceError(id, path, `declares ${compiled.name} with different bounds (${compiled.min}-${compiled.max}) than an earlier case (${existing.min}-${existing.max}); a property must mean the same thing in every frame`);
|
|
41
|
+
}
|
|
42
|
+
fields.set(key, compiled);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* A reading must carry every property that makes it that measurement. A blood pressure
|
|
47
|
+
* without a diastolic is not a partial blood pressure, it is a clinical record of something
|
|
48
|
+
* the device never reported, so the declaration is refused rather than the reading dropped.
|
|
49
|
+
*/
|
|
50
|
+
const assertRequiredFields = (id, path, declared, measurementTypeKey) => {
|
|
51
|
+
const catalog = measurementFieldCatalog[measurementTypeKey] ?? {};
|
|
52
|
+
const declaredNames = new Set(declared.map(field => field?.name));
|
|
53
|
+
const missing = Object.entries(catalog).filter(([name, field]) => field.required && !declaredNames.has(name)).map(([name]) => name);
|
|
54
|
+
if (missing.length > 0) {
|
|
55
|
+
throw customDeviceError(id, `${path}.fields`, `does not declare ${missing.join(", ")}, which ${measurementTypeKey} needs to be a complete reading`);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const compileFields = (id, path, declared, measurementTypeKey, minLengthBytes, fields) => {
|
|
59
|
+
const names = new Set();
|
|
60
|
+
return declared.map((field, index) => {
|
|
61
|
+
if (names.has(field.name)) {
|
|
62
|
+
throw customDeviceError(id, `${path}.fields[${index}].name`, `"${field.name}" is declared twice in this case`);
|
|
63
|
+
}
|
|
64
|
+
names.add(field.name);
|
|
65
|
+
const compiled = compileCustomField(id, `${path}.fields[${index}]`, field, measurementTypeKey, minLengthBytes);
|
|
66
|
+
registerField(id, path, compiled, measurementTypeKey, fields);
|
|
67
|
+
return {
|
|
68
|
+
name: compiled.name,
|
|
69
|
+
parseType: "custom",
|
|
70
|
+
byteIndexes: compiled.byteIndexes,
|
|
71
|
+
customParserDefinition: createCustomFieldParser(compiled)
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/** Validates one declared frame shape and turns it into a parsing case. */
|
|
77
|
+
export const compileCustomCase = (id, path, caseSpec, minLengthBytes, fields) => {
|
|
78
|
+
const caseType = CASE_TYPES[caseSpec.kind];
|
|
79
|
+
if (!caseType) {
|
|
80
|
+
throw customDeviceError(id, `${path}.kind`, `is "${String(caseSpec.kind)}"; expected ${Object.keys(CASE_TYPES).join(", ")}`);
|
|
81
|
+
}
|
|
82
|
+
const measurementTypeKey = assertMeasurementTypeKey(id, path, caseSpec);
|
|
83
|
+
const declared = caseSpec.fields ?? [];
|
|
84
|
+
if (caseSpec.kind !== "result") {
|
|
85
|
+
if (declared.length > 0) {
|
|
86
|
+
throw customDeviceError(id, path, 'declares fields, but fields may be declared on only a "result" case');
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
measurementTypeKey,
|
|
90
|
+
caseType,
|
|
91
|
+
caseValue: String(caseSpec.selector ?? "").toLowerCase(),
|
|
92
|
+
parseDefinitions: [],
|
|
93
|
+
description: caseSpec.description
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (declared.length === 0 || !measurementTypeKey) {
|
|
97
|
+
throw customDeviceError(id, path, 'is a "result" case and must declare at least one field');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Every field is checked first, so a misspelt property is reported as the typo it is
|
|
101
|
+
// rather than as the required property it failed to satisfy.
|
|
102
|
+
const parseDefinitions = compileFields(id, path, declared, measurementTypeKey, minLengthBytes, fields);
|
|
103
|
+
assertRequiredFields(id, path, declared, measurementTypeKey);
|
|
104
|
+
return {
|
|
105
|
+
measurementTypeKey,
|
|
106
|
+
caseType,
|
|
107
|
+
caseValue: String(caseSpec.selector ?? "").toLowerCase(),
|
|
108
|
+
parseDefinitions,
|
|
109
|
+
description: caseSpec.description
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=compile-custom-case.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["measurementFieldCatalog","CaseType","createCustomFieldParser","compileCustomField","customDeviceError","CASE_TYPES","result","DEPENDENT","stream","STREAM","idle","OTHER","assertMeasurementTypeKey","id","path","caseSpec","key","measurementTypeKey","undefined","kind","Object","keys","join","registerField","compiled","fields","name","existing","get","min","max","set","assertRequiredFields","declared","catalog","declaredNames","Set","map","field","missing","entries","filter","required","has","length","compileFields","minLengthBytes","names","index","add","parseType","byteIndexes","customParserDefinition","compileCustomCase","caseType","String","caseValue","selector","toLowerCase","parseDefinitions","description"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-case.ts"],"mappings":"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","ignoreList":[]}
|