@ovok/native 1.2.0 → 1.3.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.
Files changed (59) hide show
  1. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +67 -7
  2. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/index.js +22 -0
  4. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/services/background-sync/background-ble-manager.js +27 -0
  6. package/lib/commonjs/modules/bt-management/services/background-sync/background-ble-manager.js.map +1 -0
  7. package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js +31 -0
  8. package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -0
  9. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +98 -0
  10. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -0
  11. package/lib/commonjs/modules/bt-management/services/bt-manager.js +19 -4
  12. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  13. package/lib/commonjs/modules/bt-management/types/background-sync.js +6 -0
  14. package/lib/commonjs/modules/bt-management/types/background-sync.js.map +1 -0
  15. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +67 -7
  16. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  17. package/lib/module/modules/bt-management/index.js +2 -0
  18. package/lib/module/modules/bt-management/index.js.map +1 -1
  19. package/lib/module/modules/bt-management/services/background-sync/background-ble-manager.js +22 -0
  20. package/lib/module/modules/bt-management/services/background-sync/background-ble-manager.js.map +1 -0
  21. package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js +26 -0
  22. package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -0
  23. package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +94 -0
  24. package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -0
  25. package/lib/module/modules/bt-management/services/bt-manager.js +19 -4
  26. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  27. package/lib/module/modules/bt-management/types/background-sync.js +4 -0
  28. package/lib/module/modules/bt-management/types/background-sync.js.map +1 -0
  29. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +2 -0
  31. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-ble-manager.d.ts +13 -0
  33. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-ble-manager.d.ts.map +1 -0
  34. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts +3 -0
  35. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -0
  36. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +25 -0
  37. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -0
  38. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +8 -2
  39. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  40. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +32 -0
  41. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -0
  42. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts +2 -0
  43. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
  44. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  45. package/lib/typescript/module/src/modules/bt-management/index.d.ts +2 -0
  46. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  47. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-ble-manager.d.ts +13 -0
  48. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-ble-manager.d.ts.map +1 -0
  49. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts +3 -0
  50. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -0
  51. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +25 -0
  52. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -0
  53. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +8 -2
  54. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  55. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +32 -0
  56. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -0
  57. package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts +2 -0
  58. package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
  59. package/package.json +1 -1
@@ -4,6 +4,9 @@ import * as React from "react";
4
4
  import { AppState } from "react-native";
5
5
  import { useDeviceList } from "../../bt-device/components/hooks/use-device-list.js";
6
6
  import { sentryLogger } from "../../helpers/utils/sentry-logger.js";
7
+ import { getRestoredBleState } from "../services/background-sync/background-ble-manager.js";
8
+ import { getBackgroundServiceUUIDs } from "../services/background-sync/background-service-uuids.js";
9
+ import { BackgroundSyncCoordinator } from "../services/background-sync/background-sync-coordinator.js";
7
10
  import { BTManager } from "../services/bt-manager.js";
8
11
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
9
12
  export const BTProviderChildWrapper = /*#__PURE__*/React.memo(({
@@ -13,25 +16,49 @@ export const BTProviderChildWrapper = /*#__PURE__*/React.memo(({
13
16
  onDeviceFound,
14
17
  onError,
15
18
  onDeviceStatusChanged,
16
- onResult
19
+ onResult,
20
+ backgroundSync
17
21
  }) => {
18
22
  const btManagerRef = React.useRef(null);
23
+ const backgroundSyncRef = React.useRef(backgroundSync);
24
+ const backgroundSyncCoordinatorRef = React.useRef(null);
19
25
  const {
20
26
  setDeviceListItems
21
27
  } = useDeviceList();
28
+ backgroundSyncRef.current = backgroundSync;
22
29
  React.useEffect(() => {
23
30
  if (!acceptedDevices.length) {
24
31
  return;
25
32
  }
26
33
  sentryLogger("info", "Creating BTManager");
27
- const btManager = new BTManager(bleManager, acceptedDevices);
34
+ const currentBackgroundSync = backgroundSyncRef.current;
35
+ const isBackgroundEnabled = currentBackgroundSync?.enabled === true;
36
+ const backgroundOptions = isBackgroundEnabled ? {
37
+ backgroundEnabled: true,
38
+ serviceUUIDs: getBackgroundServiceUUIDs(acceptedDevices, currentBackgroundSync.serviceUUIDs)
39
+ } : undefined;
40
+ const btManager = backgroundOptions ? new BTManager(bleManager, acceptedDevices, backgroundOptions) : new BTManager(bleManager, acceptedDevices);
41
+ const coordinator = isBackgroundEnabled && currentBackgroundSync ? new BackgroundSyncCoordinator({
42
+ ...currentBackgroundSync,
43
+ enabled: true,
44
+ onResult: async result => {
45
+ const latest = backgroundSyncRef.current;
46
+ if (!latest?.enabled) {
47
+ return;
48
+ }
49
+ await latest.onResult(result);
50
+ }
51
+ }) : null;
28
52
  btManagerRef.current = btManager;
53
+ backgroundSyncCoordinatorRef.current = coordinator;
29
54
  btManager.startScan();
30
55
  return () => {
31
56
  sentryLogger("info", "Destroying scan service");
57
+ backgroundSyncCoordinatorRef.current = null;
58
+ btManagerRef.current = null;
32
59
  btManager.destroy();
33
60
  };
34
- }, [acceptedDevices, bleManager]);
61
+ }, [acceptedDevices, backgroundSync?.enabled, backgroundSync?.maxRetries, backgroundSync?.retryBackoffMs, backgroundSync?.serviceUUIDs, backgroundSync?.storage, backgroundSync?.storageKey, bleManager]);
35
62
  React.useEffect(() => {
36
63
  if (!onDeviceFound || !acceptedDevices.length) {
37
64
  return;
@@ -51,14 +78,28 @@ export const BTProviderChildWrapper = /*#__PURE__*/React.memo(({
51
78
  };
52
79
  }, [onError, acceptedDevices]);
53
80
  React.useEffect(() => {
54
- if (!onResult || !acceptedDevices.length) {
81
+ if (!acceptedDevices.length) {
55
82
  return;
56
83
  }
57
- btManagerRef.current?.onResult(onResult);
84
+ const callback = backgroundSync?.enabled === true ? data => {
85
+ onResult?.(data);
86
+ const coordinator = backgroundSyncCoordinatorRef.current;
87
+ if (coordinator) {
88
+ void coordinator.enqueue(data).catch(error => {
89
+ onError?.({
90
+ error: error instanceof Error ? error : String(error)
91
+ });
92
+ });
93
+ }
94
+ } : onResult;
95
+ if (!callback) {
96
+ return;
97
+ }
98
+ btManagerRef.current?.onResult(callback);
58
99
  return () => {
59
100
  btManagerRef.current?.onResult(undefined);
60
101
  };
61
- }, [onResult, acceptedDevices]);
102
+ }, [backgroundSync?.enabled, onError, onResult, acceptedDevices]);
62
103
  React.useEffect(() => {
63
104
  if (!onDeviceStatusChanged || !acceptedDevices.length) {
64
105
  return;
@@ -90,17 +131,36 @@ export const BTProviderChildWrapper = /*#__PURE__*/React.memo(({
90
131
  btManagerRef.current?.onDeviceStatusChanged(undefined);
91
132
  };
92
133
  }, [onDeviceStatusChanged, acceptedDevices, setDeviceListItems]);
134
+ React.useEffect(() => {
135
+ if (!acceptedDevices.length || backgroundSync?.enabled !== true) {
136
+ return;
137
+ }
138
+ const restoredState = getRestoredBleState(backgroundSync.restoreStateIdentifier);
139
+ if (restoredState?.connectedPeripherals.length) {
140
+ btManagerRef.current?.restoreDevices(restoredState.connectedPeripherals);
141
+ }
142
+ void backgroundSyncCoordinatorRef.current?.flush().catch(error => {
143
+ onError?.({
144
+ error: error instanceof Error ? error : String(error)
145
+ });
146
+ });
147
+ }, [acceptedDevices, backgroundSync?.enabled, backgroundSync?.restoreStateIdentifier, onError]);
93
148
  React.useEffect(() => {
94
149
  const listener = AppState.addEventListener("change", state => {
95
150
  if (state !== "active") {
96
151
  return;
97
152
  }
98
153
  btManagerRef.current?.startScan();
154
+ void backgroundSyncCoordinatorRef.current?.flush().catch(error => {
155
+ onError?.({
156
+ error: error instanceof Error ? error : String(error)
157
+ });
158
+ });
99
159
  });
100
160
  return () => {
101
161
  listener.remove();
102
162
  };
103
- }, []);
163
+ }, [onError]);
104
164
  return /*#__PURE__*/_jsx(_Fragment, {
105
165
  children: children
106
166
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","AppState","useDeviceList","sentryLogger","BTManager","Fragment","_Fragment","jsx","_jsx","BTProviderChildWrapper","memo","bleManager","acceptedDevices","children","onDeviceFound","onError","onDeviceStatusChanged","onResult","btManagerRef","useRef","setDeviceListItems","useEffect","length","btManager","current","startScan","destroy","undefined","status","deviceData","measurementTypeKey","prev","newList","index","findIndex","item","deviceType","name","listener","addEventListener","state","remove"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider-child-wrapper.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","AppState","useDeviceList","sentryLogger","getRestoredBleState","getBackgroundServiceUUIDs","BackgroundSyncCoordinator","BTManager","Fragment","_Fragment","jsx","_jsx","BTProviderChildWrapper","memo","bleManager","acceptedDevices","children","onDeviceFound","onError","onDeviceStatusChanged","onResult","backgroundSync","btManagerRef","useRef","backgroundSyncRef","backgroundSyncCoordinatorRef","setDeviceListItems","current","useEffect","length","currentBackgroundSync","isBackgroundEnabled","enabled","backgroundOptions","backgroundEnabled","serviceUUIDs","undefined","btManager","coordinator","result","latest","startScan","destroy","maxRetries","retryBackoffMs","storage","storageKey","callback","data","enqueue","catch","error","Error","String","status","deviceData","measurementTypeKey","prev","newList","index","findIndex","item","deviceType","name","restoredState","restoreStateIdentifier","connectedPeripherals","restoreDevices","flush","listener","addEventListener","state","remove"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider-child-wrapper.tsx"],"mappings":"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","ignoreList":[]}
@@ -28,12 +28,14 @@ export * from "./types/service.type.js";
28
28
  export * from "./types/device-status.js";
29
29
  export * from "./types/btprovider-props.js";
30
30
  export * from "./types/btprovider-children-props.js";
31
+ export * from "./types/background-sync.js";
31
32
  export * from "./types/result-callback.js";
32
33
  export * from "./types/error-callback.js";
33
34
  export * from "./types/device-status-change-callback.js";
34
35
  export * from "./services/devices/bt-managed-device.js";
35
36
  export * from "./services/devices/custom/custom.device.js";
36
37
  export * from "./services/bt-manager.js";
38
+ export * from "./services/background-sync/background-ble-manager.js";
37
39
  export * from "./services/custom/define-custom-device.js";
38
40
  export * from "./services/devices/standard-gatt/standard-gatt.devices.js";
39
41
  export * from "./services/devices/boso/boso.medicus.js";
@@ -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,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,2CAAwC;AACtD,cAAc,2DAAwD;AACtE,cAAc,yCAAsC;AACpD,cAAc,oDAAiD;AAC/D,cAAc,mDAAgD;AAC9D,cAAc,0DAAuD;AACrE,cAAc,kDAA+C;AAC7D,cAAc,mDAAgD;AAC9D,cAAc,4CAAyC;AACvD,cAAc,4CAAyC;AACvD,cAAc,iDAA8C;AAC5D,cAAc,+CAA4C;AAC1D,cAAc,mDAAgD;AAC9D,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,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,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;AAErD,cAAc,yCAAsC;AACpD,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,sDAAmD;AACjE,cAAc,2CAAwC;AACtD,cAAc,2DAAwD;AACtE,cAAc,yCAAsC;AACpD,cAAc,oDAAiD;AAC/D,cAAc,mDAAgD;AAC9D,cAAc,0DAAuD;AACrE,cAAc,kDAA+C;AAC7D,cAAc,mDAAgD;AAC9D,cAAc,4CAAyC;AACvD,cAAc,4CAAyC;AACvD,cAAc,iDAA8C;AAC5D,cAAc,+CAA4C;AAC1D,cAAc,mDAAgD;AAC9D,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,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import { BleManager } from "react-native-ble-plx";
4
+ const DEFAULT_RESTORE_STATE_IDENTIFIER = "com.ovok.native.background-sync";
5
+ const restoredStates = new Map();
6
+ /**
7
+ * Creates a BLE manager configured for iOS CoreBluetooth state restoration. The returned
8
+ * manager must be created once at module scope, not inside a React render.
9
+ */
10
+ const createBackgroundBleManager = ({
11
+ restoreStateIdentifier = DEFAULT_RESTORE_STATE_IDENTIFIER,
12
+ onRestoreState
13
+ } = {}) => new BleManager({
14
+ restoreStateIdentifier,
15
+ restoreStateFunction: state => {
16
+ restoredStates.set(restoreStateIdentifier, state);
17
+ onRestoreState?.(state);
18
+ }
19
+ });
20
+ const getRestoredBleState = (restoreStateIdentifier = DEFAULT_RESTORE_STATE_IDENTIFIER) => restoredStates.get(restoreStateIdentifier);
21
+ export { DEFAULT_RESTORE_STATE_IDENTIFIER, createBackgroundBleManager, getRestoredBleState };
22
+ //# sourceMappingURL=background-ble-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BleManager","DEFAULT_RESTORE_STATE_IDENTIFIER","restoredStates","Map","createBackgroundBleManager","restoreStateIdentifier","onRestoreState","restoreStateFunction","state","set","getRestoredBleState","get"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/background-sync/background-ble-manager.ts"],"mappings":";;AAAA,SACEA,UAAU,QAGL,sBAAsB;AAE7B,MAAMC,gCAAgC,GACpC,iCAAiC;AAEnC,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAAkC,CAAC;AAOjE;AACA;AACA;AACA;AACA,MAAMC,0BAA0B,GAAGA,CAAC;EAClCC,sBAAsB,GAAGJ,gCAAgC;EACzDK;AAC2B,CAAC,GAAG,CAAC,CAAC,KACjC,IAAIN,UAAU,CAAC;EACbK,sBAAsB;EACtBE,oBAAoB,EAAGC,KAAK,IAAK;IAC/BN,cAAc,CAACO,GAAG,CAACJ,sBAAsB,EAAEG,KAAK,CAAC;IACjDF,cAAc,GAAGE,KAAK,CAAC;EACzB;AACF,CAAC,CAAC;AAEJ,MAAME,mBAAmB,GAAGA,CAC1BL,sBAAsB,GAAGJ,gCAAgC,KAEzDC,cAAc,CAACS,GAAG,CAACN,sBAAsB,CAAC;AAE5C,SAEEJ,gCAAgC,EAChCG,0BAA0B,EAC1BM,mBAAmB","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ import { IntegratedDevices } from "../../types/integrated-devices.js";
4
+ import { bc01MainServices } from "../devices/bc01/bc01.main-services.js";
5
+ import { bp2MainServices } from "../devices/bp2/bp2.main-services.js";
6
+ import { f4MainServices } from "../devices/f4/f4.main-services.js";
7
+ import { spo2MainServices } from "../devices/spo/spo2.main-services.js";
8
+ const normalize = uuid => uuid.toLowerCase();
9
+ const serviceUUIDs = services => services.map(service => normalize(service.uuid));
10
+ const BUILT_IN_SERVICE_UUIDS = {
11
+ [IntegratedDevices.BP2]: serviceUUIDs(bp2MainServices),
12
+ [IntegratedDevices.F4]: serviceUUIDs(f4MainServices),
13
+ [IntegratedDevices.PC60WF]: serviceUUIDs(spo2MainServices),
14
+ [IntegratedDevices.BC01]: serviceUUIDs(bc01MainServices),
15
+ [IntegratedDevices.VEROVAL_DUO_CONTROL]: ["5d4b8aa6-a26a-4a1b-99f5-cd4473c786e3"],
16
+ [IntegratedDevices.VEROVAL_ECG]: ["0000a000-0000-1000-8000-00805f9b34fb"]
17
+ };
18
+ export const getBackgroundServiceUUIDs = (acceptedDevices, additionalServiceUUIDs = []) => {
19
+ const uuids = new Set(additionalServiceUUIDs.map(normalize));
20
+ acceptedDevices.forEach(acceptedDevice => {
21
+ const deviceUUIDs = typeof acceptedDevice === "string" ? BUILT_IN_SERVICE_UUIDS[acceptedDevice] : serviceUUIDs(acceptedDevice.mainServices);
22
+ deviceUUIDs?.forEach(uuid => uuids.add(normalize(uuid)));
23
+ });
24
+ return [...uuids];
25
+ };
26
+ //# sourceMappingURL=background-service-uuids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["IntegratedDevices","bc01MainServices","bp2MainServices","f4MainServices","spo2MainServices","normalize","uuid","toLowerCase","serviceUUIDs","services","map","service","BUILT_IN_SERVICE_UUIDS","BP2","F4","PC60WF","BC01","VEROVAL_DUO_CONTROL","VEROVAL_ECG","getBackgroundServiceUUIDs","acceptedDevices","additionalServiceUUIDs","uuids","Set","forEach","acceptedDevice","deviceUUIDs","mainServices","add"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/background-sync/background-service-uuids.ts"],"mappings":";;AAEA,SAASA,iBAAiB,QAAQ,mCAAgC;AAElE,SAASC,gBAAgB,QAAQ,uCAAoC;AACrE,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,cAAc,QAAQ,mCAAgC;AAC/D,SAASC,gBAAgB,QAAQ,sCAAmC;AAEpE,MAAMC,SAAS,GAAIC,IAAY,IAAaA,IAAI,CAACC,WAAW,CAAC,CAAC;AAE9D,MAAMC,YAAY,GAAIC,QAA6B,IACjDA,QAAQ,CAACC,GAAG,CAAEC,OAAO,IAAKN,SAAS,CAACM,OAAO,CAACL,IAAI,CAAC,CAAC;AAEpD,MAAMM,sBAAoE,GAAG;EAC3E,CAACZ,iBAAiB,CAACa,GAAG,GAAGL,YAAY,CAACN,eAAe,CAAC;EACtD,CAACF,iBAAiB,CAACc,EAAE,GAAGN,YAAY,CAACL,cAAc,CAAC;EACpD,CAACH,iBAAiB,CAACe,MAAM,GAAGP,YAAY,CAACJ,gBAAgB,CAAC;EAC1D,CAACJ,iBAAiB,CAACgB,IAAI,GAAGR,YAAY,CAACP,gBAAgB,CAAC;EACxD,CAACD,iBAAiB,CAACiB,mBAAmB,GAAG,CACvC,sCAAsC,CACvC;EACD,CAACjB,iBAAiB,CAACkB,WAAW,GAAG,CAC/B,sCAAsC;AAE1C,CAAC;AAED,OAAO,MAAMC,yBAAyB,GAAGA,CACvCC,eAA0C,EAC1CC,sBAAyC,GAAG,EAAE,KACjC;EACb,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAACF,sBAAsB,CAACX,GAAG,CAACL,SAAS,CAAC,CAAC;EAE5De,eAAe,CAACI,OAAO,CAAEC,cAAc,IAAK;IAC1C,MAAMC,WAAW,GACf,OAAOD,cAAc,KAAK,QAAQ,GAC9Bb,sBAAsB,CAACa,cAAc,CAAC,GACtCjB,YAAY,CAAEiB,cAAc,CAA4BE,YAAY,CAAC;IAE3ED,WAAW,EAAEF,OAAO,CAAElB,IAAI,IAAKgB,KAAK,CAACM,GAAG,CAACvB,SAAS,CAACC,IAAI,CAAC,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEF,OAAO,CAAC,GAAGgB,KAAK,CAAC;AACnB,CAAC","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ const DEFAULT_QUEUE_KEY = "@ovok/native/background-sync/results";
4
+ const DEFAULT_MAX_RETRIES = 3;
5
+ const DEFAULT_RETRY_BACKOFF_MS = 30_000;
6
+ let resultSequence = 0;
7
+ const createResultId = () => {
8
+ resultSequence += 1;
9
+ return `${Date.now()}-${resultSequence}-${Math.random().toString(36).slice(2, 10)}`;
10
+ };
11
+
12
+ /**
13
+ * A small durable, at-least-once queue. The result is written before delivery and removed only
14
+ * after the consumer resolves. A process death between those two operations can deliver a
15
+ * result twice, so consumers should de-duplicate by `id`.
16
+ */
17
+ class BackgroundSyncCoordinator {
18
+ operation = Promise.resolve();
19
+ constructor(options) {
20
+ this.options = options;
21
+ this.storageKey = options.storageKey ?? DEFAULT_QUEUE_KEY;
22
+ this.maxRetries = Math.max(1, options.maxRetries ?? DEFAULT_MAX_RETRIES);
23
+ this.retryBackoffMs = Math.max(1, options.retryBackoffMs ?? DEFAULT_RETRY_BACKOFF_MS);
24
+ }
25
+ enqueue = result => this.runExclusive(async () => {
26
+ const queue = await this.readQueue();
27
+ queue.push({
28
+ id: createResultId(),
29
+ queuedAt: new Date().toISOString(),
30
+ attempt: 0,
31
+ nextAttemptAt: 0,
32
+ result
33
+ });
34
+ await this.writeQueue(queue);
35
+ await this.flushQueue(queue);
36
+ });
37
+ flush = () => this.runExclusive(async () => {
38
+ await this.flushQueue(await this.readQueue());
39
+ });
40
+ runExclusive = operation => {
41
+ const next = this.operation.then(operation, operation);
42
+ this.operation = next.catch(() => undefined);
43
+ return next;
44
+ };
45
+ readQueue = async () => {
46
+ const serialized = await this.options.storage.getItem(this.storageKey);
47
+ if (!serialized) {
48
+ return [];
49
+ }
50
+ try {
51
+ const parsed = JSON.parse(serialized);
52
+ if (!Array.isArray(parsed)) {
53
+ throw new Error("Background sync queue is not an array");
54
+ }
55
+ return parsed;
56
+ } catch (error) {
57
+ await this.options.storage.setItem(this.storageKey, "[]");
58
+ throw new Error(`Background sync queue could not be read: ${error instanceof Error ? error.message : String(error)}`);
59
+ }
60
+ };
61
+ writeQueue = async queue => {
62
+ await this.options.storage.setItem(this.storageKey, JSON.stringify(queue));
63
+ };
64
+ flushQueue = async queue => {
65
+ let changed = false;
66
+ const now = Date.now();
67
+ for (const item of [...queue]) {
68
+ if (item.exhausted || item.nextAttemptAt > now) {
69
+ continue;
70
+ }
71
+ const attempt = item.attempt + 1;
72
+ try {
73
+ await this.options.onResult({
74
+ ...item.result,
75
+ id: item.id,
76
+ queuedAt: item.queuedAt,
77
+ attempt
78
+ });
79
+ queue.splice(queue.indexOf(item), 1);
80
+ changed = true;
81
+ } catch {
82
+ item.attempt = attempt;
83
+ item.exhausted = attempt >= this.maxRetries;
84
+ item.nextAttemptAt = item.exhausted ? Number.MAX_SAFE_INTEGER : Date.now() + this.retryBackoffMs * 2 ** (attempt - 1);
85
+ changed = true;
86
+ }
87
+ }
88
+ if (changed) {
89
+ await this.writeQueue(queue);
90
+ }
91
+ };
92
+ }
93
+ export { BackgroundSyncCoordinator, DEFAULT_QUEUE_KEY };
94
+ //# sourceMappingURL=background-sync-coordinator.js.map
@@ -0,0 +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","push","id","queuedAt","toISOString","attempt","nextAttemptAt","writeQueue","flushQueue","flush","next","then","catch","undefined","serialized","storage","getItem","parsed","JSON","parse","Array","isArray","Error","error","setItem","message","String","stringify","changed","item","exhausted","onResult","splice","indexOf","Number","MAX_SAFE_INTEGER"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/background-sync/background-sync-coordinator.ts"],"mappings":"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","ignoreList":[]}
@@ -10,9 +10,10 @@ export class BTManager {
10
10
  static MAX_DEVICES = 15; // Safety limit to prevent unbounded growth
11
11
  devices = new Map();
12
12
  eventSubscriptions = [];
13
- constructor(bleManager, acceptedDevices) {
13
+ constructor(bleManager, acceptedDevices, options = {}) {
14
14
  this.bleManager = bleManager;
15
15
  this.acceptedDevices = acceptedDevices;
16
+ this.options = options;
16
17
  this.deviceCreator = new DeviceCreator(this.acceptedDevices);
17
18
  }
18
19
  destroy = () => {
@@ -51,9 +52,20 @@ export class BTManager {
51
52
  }
52
53
  this.stateChangeListener?.remove();
53
54
  this.stateChangeListener = undefined;
54
- this.bleManager.startDeviceScan(null, {
55
- scanMode: ScanMode.Balanced
56
- }, this.onScanResult);
55
+ const serviceUUIDs = this.options.serviceUUIDs ?? [];
56
+ if (Platform.OS === "ios" && this.options.backgroundEnabled && !serviceUUIDs.length) {
57
+ this.onErrorCallback?.({
58
+ error: "Background Bluetooth sync on iOS requires at least one service UUID. Add serviceUUIDs for custom devices."
59
+ });
60
+ return;
61
+ }
62
+ void Promise.resolve(this.bleManager.startDeviceScan(this.options.backgroundEnabled ? [...serviceUUIDs] : null, {
63
+ scanMode: this.options.backgroundEnabled ? ScanMode.LowPower : ScanMode.Balanced
64
+ }, this.onScanResult)).catch(error => {
65
+ this.onErrorCallback?.({
66
+ error: error instanceof Error ? error : String(error)
67
+ });
68
+ });
57
69
  sentryLogger("info", "BT_MANAGER: Scan started (continuous mode)");
58
70
  return;
59
71
  }
@@ -92,6 +104,9 @@ export class BTManager {
92
104
  });
93
105
  this.devices.clear();
94
106
  };
107
+ restoreDevices = devices => {
108
+ devices.forEach(device => this.onScanResult(null, device));
109
+ };
95
110
  onDeviceFound = callback => {
96
111
  sentryLogger("info", "BT_MANAGER: Setting onDeviceFound callback");
97
112
  this.onDeviceFoundCallback = callback;
@@ -1 +1 @@
1
- {"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","Error","message","advertisedName","name","trim","localName","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","constructor","bleManager","acceptedDevices","options","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","onStateChange","state","PoweredOn","index","indexOf","splice","serviceUUIDs","OS","backgroundEnabled","length","error","Promise","resolve","startDeviceScan","scanMode","LowPower","Balanced","onScanResult","catch","Error","String","sendIntent","push","stopDeviceScan","sub","restoreDevices","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","message","advertisedName","name","trim","localName","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,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=background-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/background-sync.ts"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"bt-provider-child-wrapper.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/components/bt-provider-child-wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF,eAAO,MAAM,sBAAsB,EA+G9B,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE,EACvC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,KAC3D,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"bt-provider-child-wrapper.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/components/bt-provider-child-wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAGjF,eAAO,MAAM,sBAAsB,EAsN9B,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE,EACvC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,KAC3D,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}
@@ -26,12 +26,14 @@ export * from "./types/service.type";
26
26
  export * from "./types/device-status";
27
27
  export * from "./types/btprovider-props";
28
28
  export * from "./types/btprovider-children-props";
29
+ export * from "./types/background-sync";
29
30
  export * from "./types/result-callback";
30
31
  export * from "./types/error-callback";
31
32
  export * from "./types/device-status-change-callback";
32
33
  export * from "./services/devices/bt-managed-device";
33
34
  export * from "./services/devices/custom/custom.device";
34
35
  export * from "./services/bt-manager";
36
+ export * from "./services/background-sync/background-ble-manager";
35
37
  export * from "./services/custom/define-custom-device";
36
38
  export * from "./services/devices/standard-gatt/standard-gatt.devices";
37
39
  export * from "./services/devices/boso/boso.medicus";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/bt-management/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AAEtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,wDAAwD,CAAC;AACvE,cAAc,sCAAsC,CAAC;AACrD,cAAc,iDAAiD,CAAC;AAChE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAE3D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/bt-management/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AAEtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uBAAuB,CAAC;AACtC,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,wDAAwD,CAAC;AACvE,cAAc,sCAAsC,CAAC;AACrD,cAAc,iDAAiD,CAAC;AAChE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAE3D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { BleManager, BleManagerOptions, BleRestoredState } from "react-native-ble-plx";
2
+ declare const DEFAULT_RESTORE_STATE_IDENTIFIER = "com.ovok.native.background-sync";
3
+ interface BackgroundBleManagerOptions extends Pick<BleManagerOptions, "restoreStateIdentifier"> {
4
+ onRestoreState?: (state: BleRestoredState | null) => void;
5
+ }
6
+ /**
7
+ * Creates a BLE manager configured for iOS CoreBluetooth state restoration. The returned
8
+ * manager must be created once at module scope, not inside a React render.
9
+ */
10
+ declare const createBackgroundBleManager: ({ restoreStateIdentifier, onRestoreState, }?: BackgroundBleManagerOptions) => BleManager;
11
+ declare const getRestoredBleState: (restoreStateIdentifier?: string) => BleRestoredState | null | undefined;
12
+ export { BackgroundBleManagerOptions, DEFAULT_RESTORE_STATE_IDENTIFIER, createBackgroundBleManager, getRestoredBleState, };
13
+ //# sourceMappingURL=background-ble-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-ble-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/background-sync/background-ble-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B,QAAA,MAAM,gCAAgC,oCACH,CAAC;AAIpC,UAAU,2BACR,SAAQ,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACzD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3D;AAED;;;GAGG;AACH,QAAA,MAAM,0BAA0B,GAAI,8CAGjC,2BAAgC,KAAG,UAOlC,CAAC;AAEL,QAAA,MAAM,mBAAmB,GACvB,+BAAyD,KACxD,gBAAgB,GAAG,IAAI,GAAG,SACe,CAAC;AAE7C,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,EAChC,0BAA0B,EAC1B,mBAAmB,GACpB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { AcceptedDevice } from "../../types/accepted-device";
2
+ export declare const getBackgroundServiceUUIDs: (acceptedDevices: readonly AcceptedDevice[], additionalServiceUUIDs?: readonly string[]) => string[];
3
+ //# sourceMappingURL=background-service-uuids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-service-uuids.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/background-sync/background-service-uuids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AA2B7D,eAAO,MAAM,yBAAyB,GACpC,iBAAiB,SAAS,cAAc,EAAE,EAC1C,yBAAwB,SAAS,MAAM,EAAO,KAC7C,MAAM,EAaR,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { BackgroundSyncOptions } from "../../types/background-sync";
2
+ import { DeviceKey } from "../../types/device-key";
3
+ import { ResultCallback } from "../../types/result-callback";
4
+ declare const DEFAULT_QUEUE_KEY = "@ovok/native/background-sync/results";
5
+ /**
6
+ * A small durable, at-least-once queue. The result is written before delivery and removed only
7
+ * after the consumer resolves. A process death between those two operations can deliver a
8
+ * result twice, so consumers should de-duplicate by `id`.
9
+ */
10
+ declare class BackgroundSyncCoordinator<T extends DeviceKey> {
11
+ private readonly options;
12
+ private readonly storageKey;
13
+ private readonly maxRetries;
14
+ private readonly retryBackoffMs;
15
+ private operation;
16
+ constructor(options: BackgroundSyncOptions<T>);
17
+ enqueue: (result: ResultCallback<T>) => Promise<void>;
18
+ flush: () => Promise<void>;
19
+ private runExclusive;
20
+ private readQueue;
21
+ private writeQueue;
22
+ private flushQueue;
23
+ }
24
+ export { BackgroundSyncCoordinator, DEFAULT_QUEUE_KEY };
25
+ //# sourceMappingURL=background-sync-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-sync-coordinator.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/background-sync/background-sync-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAwB,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAW7D,QAAA,MAAM,iBAAiB,yCAAyC,CAAC;AAYjE;;;;GAIG;AACH,cAAM,yBAAyB,CAAC,CAAC,SAAS,SAAS;IAM9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,SAAS,CAAoC;gBAEjB,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAS9D,OAAO,GAAI,QAAQ,cAAc,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CActD;IAEE,KAAK,QAAO,OAAO,CAAC,IAAI,CAAC,CAG3B;IAEL,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,SAAS,CAuBf;IAEF,OAAO,CAAC,UAAU,CAIhB;IAEF,OAAO,CAAC,UAAU,CAoChB;CACH;AAED,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,22 +1,28 @@
1
- import { BleManager } from "react-native-ble-plx";
1
+ import { BleManager, Device } from "react-native-ble-plx";
2
2
  import { AcceptedDevice } from "../types/accepted-device";
3
3
  import { DeviceKeyOf } from "../types/device-key-of";
4
4
  import { DeviceStatusChangeCallback } from "../types/device-status-change-callback";
5
5
  import { ErrorCallback } from "../types/error-callback";
6
6
  import { ResultCallback } from "../types/result-callback";
7
7
  import { BTManagedDevice } from "./devices/bt-managed-device";
8
+ export interface BTManagerOptions {
9
+ backgroundEnabled?: boolean;
10
+ serviceUUIDs?: readonly string[];
11
+ }
8
12
  export declare class BTManager<T extends readonly AcceptedDevice[]> {
9
13
  private readonly bleManager;
10
14
  private readonly acceptedDevices;
15
+ private readonly options;
11
16
  private static readonly MAX_DEVICES;
12
17
  private devices;
13
18
  private stateChangeListener;
14
19
  private eventSubscriptions;
15
20
  private deviceCreator;
16
- constructor(bleManager: BleManager, acceptedDevices: T);
21
+ constructor(bleManager: BleManager, acceptedDevices: T, options?: BTManagerOptions);
17
22
  destroy: () => void;
18
23
  startScan: () => void;
19
24
  stopScan: () => void;
25
+ restoreDevices: (devices: readonly Device[]) => void;
20
26
  onDeviceFound: (callback?: (device: BTManagedDevice<DeviceKeyOf<T>>, manager: BTManager<T>) => Promise<void>) => void;
21
27
  onError: (callback?: (data: ErrorCallback) => void) => void;
22
28
  onDeviceStatusChanged: (callback?: (data: DeviceStatusChangeCallback) => void) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"bt-manager.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/bt-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,UAAU,EAKX,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,qBAAa,SAAS,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE;IAUtD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAVlC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IACzC,OAAO,CAAC,OAAO,CAAsD;IAErE,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,kBAAkB,CAAsB;IAEhD,OAAO,CAAC,aAAa,CAAmB;gBAGrB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,CAAC;IAK9B,OAAO,aAuBZ;IAEK,SAAS,aAuDd;IAEK,QAAQ,aAmBb;IAEK,aAAa,GAClB,WAAW,CACT,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC,IAAI,CAAC,UAIlB;IAEK,OAAO,GAAI,WAAW,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,UAGxD;IAEK,qBAAqB,GAC1B,WAAW,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,UAIrD;IAEK,QAAQ,GACb,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,UAIzD;IAGF,OAAO,CAAC,gBAAgB,CAAC,CAAiD;IAC1E,OAAO,CAAC,eAAe,CAAC,CAAgC;IACxD,OAAO,CAAC,qBAAqB,CAAC,CAGX;IACnB,OAAO,CAAC,6BAA6B,CAAC,CAE5B;IAEV,OAAO,CAAC,YAAY,CA+ElB;IAEF,OAAO,CAAC,8BAA8B,CAUpC;CACH"}
1
+ {"version":3,"file":"bt-manager.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/bt-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,UAAU,EACV,MAAM,EAIP,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,qBAAa,SAAS,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE;IAUtD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IACzC,OAAO,CAAC,OAAO,CAAsD;IAErE,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,kBAAkB,CAAsB;IAEhD,OAAO,CAAC,aAAa,CAAmB;gBAGrB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,CAAC,EAClB,OAAO,GAAE,gBAAqB;IAK1C,OAAO,aAuBZ;IAEK,SAAS,aA8Ed;IAEK,QAAQ,aAmBb;IAEK,cAAc,GAAI,SAAS,SAAS,MAAM,EAAE,UAEjD;IAEK,aAAa,GAClB,WAAW,CACT,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC,IAAI,CAAC,UAIlB;IAEK,OAAO,GAAI,WAAW,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,UAGxD;IAEK,qBAAqB,GAC1B,WAAW,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,UAIrD;IAEK,QAAQ,GACb,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,UAIzD;IAGF,OAAO,CAAC,gBAAgB,CAAC,CAAiD;IAC1E,OAAO,CAAC,eAAe,CAAC,CAAgC;IACxD,OAAO,CAAC,qBAAqB,CAAC,CAGX;IACnB,OAAO,CAAC,6BAA6B,CAAC,CAE5B;IAEV,OAAO,CAAC,YAAY,CA+ElB;IAEF,OAAO,CAAC,8BAA8B,CAUpC;CACH"}