@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.
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +67 -7
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/index.js +22 -0
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-ble-manager.js +27 -0
- package/lib/commonjs/modules/bt-management/services/background-sync/background-ble-manager.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js +31 -0
- package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +98 -0
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +19 -4
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/types/background-sync.js +6 -0
- package/lib/commonjs/modules/bt-management/types/background-sync.js.map +1 -0
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +67 -7
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/index.js +2 -0
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/bt-management/services/background-sync/background-ble-manager.js +22 -0
- package/lib/module/modules/bt-management/services/background-sync/background-ble-manager.js.map +1 -0
- package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js +26 -0
- package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -0
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +94 -0
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -0
- package/lib/module/modules/bt-management/services/bt-manager.js +19 -4
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/types/background-sync.js +4 -0
- package/lib/module/modules/bt-management/types/background-sync.js.map +1 -0
- 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/index.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-ble-manager.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-ble-manager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +25 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +8 -2
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +32 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/index.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-ble-manager.d.ts +13 -0
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-ble-manager.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +25 -0
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +8 -2
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +32 -0
- package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DeviceKey } from "./device-key";
|
|
2
|
+
import { ResultCallback } from "./result-callback";
|
|
3
|
+
interface BackgroundSyncStorage {
|
|
4
|
+
getItem: (key: string) => Promise<string | null>;
|
|
5
|
+
setItem: (key: string, value: string) => Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
interface BackgroundSyncResult<T extends DeviceKey = DeviceKey> extends ResultCallback<T> {
|
|
8
|
+
/** Stable identifier for idempotent delivery by the application backend. */
|
|
9
|
+
id: string;
|
|
10
|
+
queuedAt: string;
|
|
11
|
+
attempt: number;
|
|
12
|
+
}
|
|
13
|
+
interface BackgroundSyncOptions<T extends DeviceKey = DeviceKey> {
|
|
14
|
+
/** Background delivery is opt-in. */
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
/** A durable key-value store, such as expo-sqlite/kv-store. */
|
|
17
|
+
storage: BackgroundSyncStorage;
|
|
18
|
+
/** Called after a result is persisted. Resolve only after the result is accepted. */
|
|
19
|
+
onResult: (result: BackgroundSyncResult<T>) => Promise<void>;
|
|
20
|
+
/** Storage key used by the queue. */
|
|
21
|
+
storageKey?: string;
|
|
22
|
+
/** Additional service UUIDs to scan, useful for custom/native device declarations. */
|
|
23
|
+
serviceUUIDs?: readonly string[];
|
|
24
|
+
/** iOS restoration identifier. Keep this stable for the lifetime of the app. */
|
|
25
|
+
restoreStateIdentifier?: string;
|
|
26
|
+
/** Number of delivery attempts before an item is retained as exhausted. */
|
|
27
|
+
maxRetries?: number;
|
|
28
|
+
/** Base delay for retries. Delays grow exponentially up to the third attempt. */
|
|
29
|
+
retryBackoffMs?: number;
|
|
30
|
+
}
|
|
31
|
+
export { BackgroundSyncOptions, BackgroundSyncResult, BackgroundSyncStorage };
|
|
32
|
+
//# sourceMappingURL=background-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-sync.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/background-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,UAAU,oBAAoB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAC5D,SAAQ,cAAc,CAAC,CAAC,CAAC;IAEzB,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAE7D,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,+DAA+D;IAC/D,OAAO,EAAE,qBAAqB,CAAC;IAE/B,qFAAqF;IACrF,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sFAAsF;IACtF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEjC,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,CAAC"}
|
package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { BleManager } from "react-native-ble-plx";
|
|
|
2
2
|
import { BTManager } from "../services/bt-manager";
|
|
3
3
|
import { BTManagedDevice } from "../services/devices/bt-managed-device";
|
|
4
4
|
import { AcceptedDevice } from "./accepted-device";
|
|
5
|
+
import { BackgroundSyncOptions } from "./background-sync";
|
|
5
6
|
import { DeviceKeyOf } from "./device-key-of";
|
|
6
7
|
import { DeviceStatusChangeCallback } from "./device-status-change-callback";
|
|
7
8
|
import { ErrorCallback } from "./error-callback";
|
|
@@ -9,6 +10,7 @@ import { ResultCallback } from "./result-callback";
|
|
|
9
10
|
export interface BTProviderChildWrapperProps<T extends readonly AcceptedDevice[]> {
|
|
10
11
|
bleManager: BleManager;
|
|
11
12
|
acceptedDevices: T;
|
|
13
|
+
backgroundSync?: BackgroundSyncOptions<DeviceKeyOf<T>>;
|
|
12
14
|
onDeviceFound?: (device: BTManagedDevice<DeviceKeyOf<T>>, manager: BTManager<T>) => Promise<void>;
|
|
13
15
|
onError?: (data: ErrorCallback) => void;
|
|
14
16
|
onDeviceStatusChanged?: (data: DeviceStatusChangeCallback) => void;
|
package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"btprovider-children-props.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/btprovider-children-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,SAAS,cAAc,EAAE;IAEnC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC3D"}
|
|
1
|
+
{"version":3,"file":"btprovider-children-props.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/btprovider-children-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,SAAS,cAAc,EAAE;IAEnC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,CAAC,CAAC;IACnB,cAAc,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC3D"}
|
|
@@ -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;
|
|
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 @@
|
|
|
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,
|
|
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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DeviceKey } from "./device-key";
|
|
2
|
+
import { ResultCallback } from "./result-callback";
|
|
3
|
+
interface BackgroundSyncStorage {
|
|
4
|
+
getItem: (key: string) => Promise<string | null>;
|
|
5
|
+
setItem: (key: string, value: string) => Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
interface BackgroundSyncResult<T extends DeviceKey = DeviceKey> extends ResultCallback<T> {
|
|
8
|
+
/** Stable identifier for idempotent delivery by the application backend. */
|
|
9
|
+
id: string;
|
|
10
|
+
queuedAt: string;
|
|
11
|
+
attempt: number;
|
|
12
|
+
}
|
|
13
|
+
interface BackgroundSyncOptions<T extends DeviceKey = DeviceKey> {
|
|
14
|
+
/** Background delivery is opt-in. */
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
/** A durable key-value store, such as expo-sqlite/kv-store. */
|
|
17
|
+
storage: BackgroundSyncStorage;
|
|
18
|
+
/** Called after a result is persisted. Resolve only after the result is accepted. */
|
|
19
|
+
onResult: (result: BackgroundSyncResult<T>) => Promise<void>;
|
|
20
|
+
/** Storage key used by the queue. */
|
|
21
|
+
storageKey?: string;
|
|
22
|
+
/** Additional service UUIDs to scan, useful for custom/native device declarations. */
|
|
23
|
+
serviceUUIDs?: readonly string[];
|
|
24
|
+
/** iOS restoration identifier. Keep this stable for the lifetime of the app. */
|
|
25
|
+
restoreStateIdentifier?: string;
|
|
26
|
+
/** Number of delivery attempts before an item is retained as exhausted. */
|
|
27
|
+
maxRetries?: number;
|
|
28
|
+
/** Base delay for retries. Delays grow exponentially up to the third attempt. */
|
|
29
|
+
retryBackoffMs?: number;
|
|
30
|
+
}
|
|
31
|
+
export { BackgroundSyncOptions, BackgroundSyncResult, BackgroundSyncStorage };
|
|
32
|
+
//# sourceMappingURL=background-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-sync.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/background-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,UAAU,oBAAoB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAC5D,SAAQ,cAAc,CAAC,CAAC,CAAC;IAEzB,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAE7D,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,+DAA+D;IAC/D,OAAO,EAAE,qBAAqB,CAAC;IAE/B,qFAAqF;IACrF,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sFAAsF;IACtF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEjC,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,CAAC"}
|
package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { BleManager } from "react-native-ble-plx";
|
|
|
2
2
|
import { BTManager } from "../services/bt-manager";
|
|
3
3
|
import { BTManagedDevice } from "../services/devices/bt-managed-device";
|
|
4
4
|
import { AcceptedDevice } from "./accepted-device";
|
|
5
|
+
import { BackgroundSyncOptions } from "./background-sync";
|
|
5
6
|
import { DeviceKeyOf } from "./device-key-of";
|
|
6
7
|
import { DeviceStatusChangeCallback } from "./device-status-change-callback";
|
|
7
8
|
import { ErrorCallback } from "./error-callback";
|
|
@@ -9,6 +10,7 @@ import { ResultCallback } from "./result-callback";
|
|
|
9
10
|
export interface BTProviderChildWrapperProps<T extends readonly AcceptedDevice[]> {
|
|
10
11
|
bleManager: BleManager;
|
|
11
12
|
acceptedDevices: T;
|
|
13
|
+
backgroundSync?: BackgroundSyncOptions<DeviceKeyOf<T>>;
|
|
12
14
|
onDeviceFound?: (device: BTManagedDevice<DeviceKeyOf<T>>, manager: BTManager<T>) => Promise<void>;
|
|
13
15
|
onError?: (data: ErrorCallback) => void;
|
|
14
16
|
onDeviceStatusChanged?: (data: DeviceStatusChangeCallback) => void;
|
package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"btprovider-children-props.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/btprovider-children-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,SAAS,cAAc,EAAE;IAEnC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC3D"}
|
|
1
|
+
{"version":3,"file":"btprovider-children-props.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/btprovider-children-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,SAAS,cAAc,EAAE;IAEnC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,CAAC,CAAC;IACnB,cAAc,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC3D"}
|