@capacitor-community/bluetooth-le 6.1.0 → 7.0.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/dist/plugin.js CHANGED
@@ -105,7 +105,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
105
105
  }
106
106
  return s;
107
107
  })
108
- .join(' ');
108
+ .join('');
109
109
  }
110
110
  function webUUIDToString(uuid) {
111
111
  if (typeof uuid === 'string') {
@@ -206,7 +206,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
206
206
  await this.queue(async () => {
207
207
  var _a;
208
208
  const key = `onEnabledChanged`;
209
- await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());
209
+ await ((_a = this.eventListeners.get(key)) === null || _a === undefined ? undefined : _a.remove());
210
210
  const listener = await BluetoothLe.addListener(key, (result) => {
211
211
  callback(result.value);
212
212
  });
@@ -218,7 +218,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
218
218
  await this.queue(async () => {
219
219
  var _a;
220
220
  const key = `onEnabledChanged`;
221
- await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());
221
+ await ((_a = this.eventListeners.get(key)) === null || _a === undefined ? undefined : _a.remove());
222
222
  this.eventListeners.delete(key);
223
223
  await BluetoothLe.stopEnabledNotifications();
224
224
  });
@@ -262,7 +262,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
262
262
  options = this.validateRequestBleDeviceOptions(options);
263
263
  await this.queue(async () => {
264
264
  var _a;
265
- await ((_a = this.scanListener) === null || _a === void 0 ? void 0 : _a.remove());
265
+ await ((_a = this.scanListener) === null || _a === undefined ? undefined : _a.remove());
266
266
  this.scanListener = await BluetoothLe.addListener('onScanResult', (resultInternal) => {
267
267
  const result = Object.assign(Object.assign({}, resultInternal), { manufacturerData: this.convertObject(resultInternal.manufacturerData), serviceData: this.convertObject(resultInternal.serviceData), rawAdvertisement: resultInternal.rawAdvertisement
268
268
  ? this.convertValue(resultInternal.rawAdvertisement)
@@ -275,7 +275,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
275
275
  async stopLEScan() {
276
276
  await this.queue(async () => {
277
277
  var _a;
278
- await ((_a = this.scanListener) === null || _a === void 0 ? void 0 : _a.remove());
278
+ await ((_a = this.scanListener) === null || _a === undefined ? undefined : _a.remove());
279
279
  this.scanListener = null;
280
280
  await BluetoothLe.stopLEScan();
281
281
  });
@@ -310,7 +310,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
310
310
  var _a;
311
311
  if (onDisconnect) {
312
312
  const key = `disconnected|${deviceId}`;
313
- await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());
313
+ await ((_a = this.eventListeners.get(key)) === null || _a === undefined ? undefined : _a.remove());
314
314
  const listener = await BluetoothLe.addListener(key, () => {
315
315
  onDisconnect(deviceId);
316
316
  });
@@ -382,7 +382,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
382
382
  service = parseUUID(service);
383
383
  characteristic = parseUUID(characteristic);
384
384
  return this.queue(async () => {
385
- if (!(value === null || value === void 0 ? void 0 : value.buffer)) {
385
+ if (!(value === null || value === undefined ? undefined : value.buffer)) {
386
386
  throw new Error('Invalid data.');
387
387
  }
388
388
  let writeValue = value;
@@ -399,7 +399,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
399
399
  service = parseUUID(service);
400
400
  characteristic = parseUUID(characteristic);
401
401
  await this.queue(async () => {
402
- if (!(value === null || value === void 0 ? void 0 : value.buffer)) {
402
+ if (!(value === null || value === undefined ? undefined : value.buffer)) {
403
403
  throw new Error('Invalid data.');
404
404
  }
405
405
  let writeValue = value;
@@ -430,7 +430,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
430
430
  characteristic = parseUUID(characteristic);
431
431
  descriptor = parseUUID(descriptor);
432
432
  return this.queue(async () => {
433
- if (!(value === null || value === void 0 ? void 0 : value.buffer)) {
433
+ if (!(value === null || value === undefined ? undefined : value.buffer)) {
434
434
  throw new Error('Invalid data.');
435
435
  }
436
436
  let writeValue = value;
@@ -450,9 +450,9 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
450
450
  await this.queue(async () => {
451
451
  var _a;
452
452
  const key = `notification|${deviceId}|${service}|${characteristic}`;
453
- await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());
453
+ await ((_a = this.eventListeners.get(key)) === null || _a === undefined ? undefined : _a.remove());
454
454
  const listener = await BluetoothLe.addListener(key, (event) => {
455
- callback(this.convertValue(event === null || event === void 0 ? void 0 : event.value));
455
+ callback(this.convertValue(event === null || event === undefined ? undefined : event.value));
456
456
  });
457
457
  this.eventListeners.set(key, listener);
458
458
  await BluetoothLe.startNotifications({
@@ -468,7 +468,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
468
468
  await this.queue(async () => {
469
469
  var _a;
470
470
  const key = `notification|${deviceId}|${service}|${characteristic}`;
471
- await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());
471
+ await ((_a = this.eventListeners.get(key)) === null || _a === undefined ? undefined : _a.remove());
472
472
  this.eventListeners.delete(key);
473
473
  await BluetoothLe.stopNotifications({
474
474
  deviceId,
@@ -576,7 +576,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
576
576
  const filters = this.getFilters(options);
577
577
  const device = await navigator.bluetooth.requestDevice({
578
578
  filters: filters.length ? filters : undefined,
579
- optionalServices: options === null || options === void 0 ? void 0 : options.optionalServices,
579
+ optionalServices: options === null || options === undefined ? undefined : options.optionalServices,
580
580
  acceptAllDevices: filters.length === 0,
581
581
  });
582
582
  this.deviceMap.set(device.id, device);
@@ -593,7 +593,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
593
593
  this.scan = await navigator.bluetooth.requestLEScan({
594
594
  filters: filters.length ? filters : undefined,
595
595
  acceptAllAdvertisements: filters.length === 0,
596
- keepRepeatedDevices: options === null || options === void 0 ? void 0 : options.allowDuplicates,
596
+ keepRepeatedDevices: options === null || options === undefined ? undefined : options.allowDuplicates,
597
597
  });
598
598
  }
599
599
  onAdvertisementReceived(event) {
@@ -601,7 +601,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
601
601
  const deviceId = event.device.id;
602
602
  this.deviceMap.set(deviceId, event.device);
603
603
  const isNew = !this.discoveredDevices.has(deviceId);
604
- if (isNew || ((_a = this.requestBleDeviceOptions) === null || _a === void 0 ? void 0 : _a.allowDuplicates)) {
604
+ if (isNew || ((_a = this.requestBleDeviceOptions) === null || _a === undefined ? undefined : _a.allowDuplicates)) {
605
605
  this.discoveredDevices.set(deviceId, true);
606
606
  const device = this.getBleDevice(event.device);
607
607
  const result = {
@@ -611,14 +611,14 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
611
611
  txPower: event.txPower,
612
612
  manufacturerData: mapToObject(event.manufacturerData),
613
613
  serviceData: mapToObject(event.serviceData),
614
- uuids: (_b = event.uuids) === null || _b === void 0 ? void 0 : _b.map(webUUIDToString),
614
+ uuids: (_b = event.uuids) === null || _b === undefined ? undefined : _b.map(webUUIDToString),
615
615
  };
616
616
  this.notifyListeners('onScanResult', result);
617
617
  }
618
618
  }
619
619
  async stopLEScan() {
620
620
  var _a;
621
- if ((_a = this.scan) === null || _a === void 0 ? void 0 : _a.active) {
621
+ if ((_a = this.scan) === null || _a === undefined ? undefined : _a.active) {
622
622
  this.scan.stop();
623
623
  }
624
624
  this.scan = null;
@@ -639,7 +639,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
639
639
  const bleDevices = devices
640
640
  .filter((device) => {
641
641
  var _a;
642
- return (_a = device.gatt) === null || _a === void 0 ? void 0 : _a.connected;
642
+ return (_a = device.gatt) === null || _a === undefined ? undefined : _a.connected;
643
643
  })
644
644
  .map((device) => {
645
645
  this.deviceMap.set(device.id, device);
@@ -667,7 +667,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
667
667
  catch (error) {
668
668
  // cancel pending connect call, does not work yet in chromium because of a bug:
669
669
  // https://bugs.chromium.org/p/chromium/issues/detail?id=684073
670
- await ((_b = device.gatt) === null || _b === void 0 ? void 0 : _b.disconnect());
670
+ await ((_b = device.gatt) === null || _b === undefined ? undefined : _b.disconnect());
671
671
  if (error === timeoutError) {
672
672
  throw new Error('Connection timeout');
673
673
  }
@@ -689,11 +689,11 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
689
689
  }
690
690
  async disconnect(options) {
691
691
  var _a;
692
- (_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.disconnect();
692
+ (_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === undefined ? undefined : _a.disconnect();
693
693
  }
694
694
  async getServices(options) {
695
695
  var _a, _b;
696
- const services = (_b = (await ((_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.getPrimaryServices()))) !== null && _b !== void 0 ? _b : [];
696
+ const services = (_b = (await ((_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === undefined ? undefined : _a.getPrimaryServices()))) !== null && _b !== undefined ? _b : [];
697
697
  const bleServices = [];
698
698
  for (const service of services) {
699
699
  const characteristics = await service.getCharacteristics();
@@ -735,12 +735,12 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
735
735
  }
736
736
  async getCharacteristic(options) {
737
737
  var _a;
738
- const service = await ((_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.getPrimaryService(options === null || options === void 0 ? void 0 : options.service));
739
- return service === null || service === void 0 ? void 0 : service.getCharacteristic(options === null || options === void 0 ? void 0 : options.characteristic);
738
+ const service = await ((_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === undefined ? undefined : _a.getPrimaryService(options === null || options === undefined ? undefined : options.service));
739
+ return service === null || service === undefined ? undefined : service.getCharacteristic(options === null || options === undefined ? undefined : options.characteristic);
740
740
  }
741
741
  async getDescriptor(options) {
742
742
  const characteristic = await this.getCharacteristic(options);
743
- return characteristic === null || characteristic === void 0 ? void 0 : characteristic.getDescriptor(options === null || options === void 0 ? void 0 : options.descriptor);
743
+ return characteristic === null || characteristic === undefined ? undefined : characteristic.getDescriptor(options === null || options === undefined ? undefined : options.descriptor);
744
744
  }
745
745
  async discoverServices(_options) {
746
746
  throw this.unavailable('discoverServices is not available on web.');
@@ -756,7 +756,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
756
756
  }
757
757
  async read(options) {
758
758
  const characteristic = await this.getCharacteristic(options);
759
- const value = await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.readValue());
759
+ const value = await (characteristic === null || characteristic === undefined ? undefined : characteristic.readValue());
760
760
  return { value };
761
761
  }
762
762
  async write(options) {
@@ -768,7 +768,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
768
768
  else {
769
769
  dataView = options.value;
770
770
  }
771
- await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.writeValueWithResponse(dataView));
771
+ await (characteristic === null || characteristic === undefined ? undefined : characteristic.writeValueWithResponse(dataView));
772
772
  }
773
773
  async writeWithoutResponse(options) {
774
774
  const characteristic = await this.getCharacteristic(options);
@@ -779,11 +779,11 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
779
779
  else {
780
780
  dataView = options.value;
781
781
  }
782
- await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.writeValueWithoutResponse(dataView));
782
+ await (characteristic === null || characteristic === undefined ? undefined : characteristic.writeValueWithoutResponse(dataView));
783
783
  }
784
784
  async readDescriptor(options) {
785
785
  const descriptor = await this.getDescriptor(options);
786
- const value = await (descriptor === null || descriptor === void 0 ? void 0 : descriptor.readValue());
786
+ const value = await (descriptor === null || descriptor === undefined ? undefined : descriptor.readValue());
787
787
  return { value };
788
788
  }
789
789
  async writeDescriptor(options) {
@@ -795,37 +795,37 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
795
795
  else {
796
796
  dataView = options.value;
797
797
  }
798
- await (descriptor === null || descriptor === void 0 ? void 0 : descriptor.writeValue(dataView));
798
+ await (descriptor === null || descriptor === undefined ? undefined : descriptor.writeValue(dataView));
799
799
  }
800
800
  async startNotifications(options) {
801
801
  const characteristic = await this.getCharacteristic(options);
802
- characteristic === null || characteristic === void 0 ? void 0 : characteristic.removeEventListener('characteristicvaluechanged', this.onCharacteristicValueChangedCallback);
803
- characteristic === null || characteristic === void 0 ? void 0 : characteristic.addEventListener('characteristicvaluechanged', this.onCharacteristicValueChangedCallback);
804
- await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.startNotifications());
802
+ characteristic === null || characteristic === undefined ? undefined : characteristic.removeEventListener('characteristicvaluechanged', this.onCharacteristicValueChangedCallback);
803
+ characteristic === null || characteristic === undefined ? undefined : characteristic.addEventListener('characteristicvaluechanged', this.onCharacteristicValueChangedCallback);
804
+ await (characteristic === null || characteristic === undefined ? undefined : characteristic.startNotifications());
805
805
  }
806
806
  onCharacteristicValueChanged(event) {
807
807
  var _a, _b;
808
808
  const characteristic = event.target;
809
- const key = `notification|${(_a = characteristic.service) === null || _a === void 0 ? void 0 : _a.device.id}|${(_b = characteristic.service) === null || _b === void 0 ? void 0 : _b.uuid}|${characteristic.uuid}`;
809
+ const key = `notification|${(_a = characteristic.service) === null || _a === undefined ? undefined : _a.device.id}|${(_b = characteristic.service) === null || _b === undefined ? undefined : _b.uuid}|${characteristic.uuid}`;
810
810
  this.notifyListeners(key, {
811
811
  value: characteristic.value,
812
812
  });
813
813
  }
814
814
  async stopNotifications(options) {
815
815
  const characteristic = await this.getCharacteristic(options);
816
- await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.stopNotifications());
816
+ await (characteristic === null || characteristic === undefined ? undefined : characteristic.stopNotifications());
817
817
  }
818
818
  getFilters(options) {
819
819
  var _a;
820
820
  const filters = [];
821
- for (const service of (_a = options === null || options === void 0 ? void 0 : options.services) !== null && _a !== void 0 ? _a : []) {
821
+ for (const service of (_a = options === null || options === undefined ? undefined : options.services) !== null && _a !== undefined ? _a : []) {
822
822
  filters.push({
823
823
  services: [service],
824
- name: options === null || options === void 0 ? void 0 : options.name,
825
- namePrefix: options === null || options === void 0 ? void 0 : options.namePrefix,
824
+ name: options === null || options === undefined ? undefined : options.name,
825
+ namePrefix: options === null || options === undefined ? undefined : options.namePrefix,
826
826
  });
827
827
  }
828
- if (((options === null || options === void 0 ? void 0 : options.name) || (options === null || options === void 0 ? void 0 : options.namePrefix)) && filters.length === 0) {
828
+ if (((options === null || options === undefined ? undefined : options.name) || (options === null || options === undefined ? undefined : options.namePrefix)) && filters.length === 0) {
829
829
  filters.push({
830
830
  name: options.name,
831
831
  namePrefix: options.namePrefix,
@@ -845,7 +845,7 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
845
845
  const bleDevice = {
846
846
  deviceId: device.id,
847
847
  // use undefined instead of null if name is not available
848
- name: (_a = device.name) !== null && _a !== void 0 ? _a : undefined,
848
+ name: (_a = device.name) !== null && _a !== undefined ? _a : undefined,
849
849
  };
850
850
  return bleDevice;
851
851
  }
@@ -868,8 +868,6 @@ var capacitorCommunityBluetoothLe = (function (exports, core) {
868
868
  exports.textToDataView = textToDataView;
869
869
  exports.webUUIDToString = webUUIDToString;
870
870
 
871
- Object.defineProperty(exports, '__esModule', { value: true });
872
-
873
871
  return exports;
874
872
 
875
873
  })({}, capacitorExports);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/conversion.js","esm/plugin.js","esm/queue.js","esm/validators.js","esm/bleClient.js","esm/timeout.js","esm/web.js"],"sourcesContent":["/**\n * Android scan mode\n */\nexport var ScanMode;\n(function (ScanMode) {\n /**\n * Perform Bluetooth LE scan in low power mode. This mode is enforced if the scanning application is not in foreground.\n * https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_POWER\n */\n ScanMode[ScanMode[\"SCAN_MODE_LOW_POWER\"] = 0] = \"SCAN_MODE_LOW_POWER\";\n /**\n * Perform Bluetooth LE scan in balanced power mode. (default) Scan results are returned at a rate that provides a good trade-off between scan frequency and power consumption.\n * https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_BALANCED\n */\n ScanMode[ScanMode[\"SCAN_MODE_BALANCED\"] = 1] = \"SCAN_MODE_BALANCED\";\n /**\n * Scan using highest duty cycle. It's recommended to only use this mode when the application is running in the foreground.\n * https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_LATENCY\n */\n ScanMode[ScanMode[\"SCAN_MODE_LOW_LATENCY\"] = 2] = \"SCAN_MODE_LOW_LATENCY\";\n})(ScanMode || (ScanMode = {}));\n/**\n * Android connection priority used in `requestConnectionPriority`\n */\nexport var ConnectionPriority;\n(function (ConnectionPriority) {\n /**\n * Use the connection parameters recommended by the Bluetooth SIG. This is the default value if no connection parameter update is requested.\n * https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_BALANCED\n */\n ConnectionPriority[ConnectionPriority[\"CONNECTION_PRIORITY_BALANCED\"] = 0] = \"CONNECTION_PRIORITY_BALANCED\";\n /**\n * Request a high priority, low latency connection. An application should only request high priority connection parameters to transfer large amounts of data over LE quickly. Once the transfer is complete, the application should request CONNECTION_PRIORITY_BALANCED connection parameters to reduce energy use.\n * https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_HIGH\n */\n ConnectionPriority[ConnectionPriority[\"CONNECTION_PRIORITY_HIGH\"] = 1] = \"CONNECTION_PRIORITY_HIGH\";\n /**\n * Request low power, reduced data rate connection parameters.\n * https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_LOW_POWER\n */\n ConnectionPriority[ConnectionPriority[\"CONNECTION_PRIORITY_LOW_POWER\"] = 2] = \"CONNECTION_PRIORITY_LOW_POWER\";\n})(ConnectionPriority || (ConnectionPriority = {}));\n//# sourceMappingURL=definitions.js.map","/**\n * Convert an array of numbers into a DataView.\n */\nexport function numbersToDataView(value) {\n return new DataView(Uint8Array.from(value).buffer);\n}\n/**\n * Convert a DataView into an array of numbers.\n */\nexport function dataViewToNumbers(value) {\n return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\n}\n/**\n * Convert a string into a DataView.\n */\nexport function textToDataView(value) {\n return numbersToDataView(value.split('').map((s) => s.charCodeAt(0)));\n}\n/**\n * Convert a DataView into a string.\n */\nexport function dataViewToText(value) {\n return String.fromCharCode(...dataViewToNumbers(value));\n}\n/**\n * Convert a 16 bit UUID into a 128 bit UUID string\n * @param value number, e.g. 0x180d\n * @return string, e.g. '0000180d-0000-1000-8000-00805f9b34fb'\n */\nexport function numberToUUID(value) {\n return `0000${value.toString(16).padStart(4, '0')}-0000-1000-8000-00805f9b34fb`;\n}\n/**\n * Convert a string of hex into a DataView of raw bytes.\n * Note: characters other than [0-9a-fA-F] are ignored\n * @param hex string of values, e.g. \"00 01 02\" or \"000102\"\n * @return DataView of raw bytes\n */\nexport function hexStringToDataView(hex) {\n const bin = [];\n let i, c, isEmpty = 1, buffer = 0;\n for (i = 0; i < hex.length; i++) {\n c = hex.charCodeAt(i);\n if ((c > 47 && c < 58) || (c > 64 && c < 71) || (c > 96 && c < 103)) {\n buffer = (buffer << 4) ^ ((c > 64 ? c + 9 : c) & 15);\n if ((isEmpty ^= 1)) {\n bin.push(buffer & 0xff);\n }\n }\n }\n return numbersToDataView(bin);\n}\nexport function dataViewToHexString(value) {\n return dataViewToNumbers(value)\n .map((n) => {\n let s = n.toString(16);\n if (s.length == 1) {\n s = '0' + s;\n }\n return s;\n })\n .join(' ');\n}\nexport function webUUIDToString(uuid) {\n if (typeof uuid === 'string') {\n return uuid;\n }\n else if (typeof uuid === 'number') {\n return numberToUUID(uuid);\n }\n else {\n throw new Error('Invalid UUID');\n }\n}\nexport function mapToObject(map) {\n const obj = {};\n if (!map) {\n return undefined;\n }\n map.forEach((value, key) => {\n obj[key.toString()] = value;\n });\n return obj;\n}\n//# sourceMappingURL=conversion.js.map","import { registerPlugin } from '@capacitor/core';\nexport const BluetoothLe = registerPlugin('BluetoothLe', {\n web: () => import('./web').then((m) => new m.BluetoothLeWeb()),\n});\n//# sourceMappingURL=plugin.js.map","const makeQueue = () => {\n let currentTask = Promise.resolve();\n // create a new promise so that errors can be bubbled\n // up to the caller without being caught by the queue\n return (fn) => new Promise((resolve, reject) => {\n currentTask = currentTask\n .then(() => fn())\n .then(resolve)\n .catch(reject);\n });\n};\nexport function getQueue(enabled) {\n if (enabled) {\n return makeQueue();\n }\n return (fn) => fn();\n}\n//# sourceMappingURL=queue.js.map","export function parseUUID(uuid) {\n if (typeof uuid !== 'string') {\n throw new Error(`Invalid UUID type ${typeof uuid}. Expected string.`);\n }\n uuid = uuid.toLowerCase();\n const is128BitUuid = uuid.search(/^[0-9a-f]{8}\\b-[0-9a-f]{4}\\b-[0-9a-f]{4}\\b-[0-9a-f]{4}\\b-[0-9a-f]{12}$/) >= 0;\n if (!is128BitUuid) {\n throw new Error(`Invalid UUID format ${uuid}. Expected 128 bit string (e.g. \"0000180d-0000-1000-8000-00805f9b34fb\").`);\n }\n return uuid;\n}\n//# sourceMappingURL=validators.js.map","import { Capacitor } from '@capacitor/core';\nimport { dataViewToHexString, hexStringToDataView } from './conversion';\nimport { BluetoothLe } from './plugin';\nimport { getQueue } from './queue';\nimport { parseUUID } from './validators';\nclass BleClientClass {\n constructor() {\n this.scanListener = null;\n this.eventListeners = new Map();\n this.queue = getQueue(true);\n }\n enableQueue() {\n this.queue = getQueue(true);\n }\n disableQueue() {\n this.queue = getQueue(false);\n }\n async initialize(options) {\n await this.queue(async () => {\n await BluetoothLe.initialize(options);\n });\n }\n async isEnabled() {\n const enabled = await this.queue(async () => {\n const result = await BluetoothLe.isEnabled();\n return result.value;\n });\n return enabled;\n }\n async requestEnable() {\n await this.queue(async () => {\n await BluetoothLe.requestEnable();\n });\n }\n async enable() {\n await this.queue(async () => {\n await BluetoothLe.enable();\n });\n }\n async disable() {\n await this.queue(async () => {\n await BluetoothLe.disable();\n });\n }\n async startEnabledNotifications(callback) {\n await this.queue(async () => {\n var _a;\n const key = `onEnabledChanged`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n const listener = await BluetoothLe.addListener(key, (result) => {\n callback(result.value);\n });\n this.eventListeners.set(key, listener);\n await BluetoothLe.startEnabledNotifications();\n });\n }\n async stopEnabledNotifications() {\n await this.queue(async () => {\n var _a;\n const key = `onEnabledChanged`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n this.eventListeners.delete(key);\n await BluetoothLe.stopEnabledNotifications();\n });\n }\n async isLocationEnabled() {\n const enabled = await this.queue(async () => {\n const result = await BluetoothLe.isLocationEnabled();\n return result.value;\n });\n return enabled;\n }\n async openLocationSettings() {\n await this.queue(async () => {\n await BluetoothLe.openLocationSettings();\n });\n }\n async openBluetoothSettings() {\n await this.queue(async () => {\n await BluetoothLe.openBluetoothSettings();\n });\n }\n async openAppSettings() {\n await this.queue(async () => {\n await BluetoothLe.openAppSettings();\n });\n }\n async setDisplayStrings(displayStrings) {\n await this.queue(async () => {\n await BluetoothLe.setDisplayStrings(displayStrings);\n });\n }\n async requestDevice(options) {\n options = options ? this.validateRequestBleDeviceOptions(options) : undefined;\n const result = await this.queue(async () => {\n const device = await BluetoothLe.requestDevice(options);\n return device;\n });\n return result;\n }\n async requestLEScan(options, callback) {\n options = this.validateRequestBleDeviceOptions(options);\n await this.queue(async () => {\n var _a;\n await ((_a = this.scanListener) === null || _a === void 0 ? void 0 : _a.remove());\n this.scanListener = await BluetoothLe.addListener('onScanResult', (resultInternal) => {\n const result = Object.assign(Object.assign({}, resultInternal), { manufacturerData: this.convertObject(resultInternal.manufacturerData), serviceData: this.convertObject(resultInternal.serviceData), rawAdvertisement: resultInternal.rawAdvertisement\n ? this.convertValue(resultInternal.rawAdvertisement)\n : undefined });\n callback(result);\n });\n await BluetoothLe.requestLEScan(options);\n });\n }\n async stopLEScan() {\n await this.queue(async () => {\n var _a;\n await ((_a = this.scanListener) === null || _a === void 0 ? void 0 : _a.remove());\n this.scanListener = null;\n await BluetoothLe.stopLEScan();\n });\n }\n async getDevices(deviceIds) {\n if (!Array.isArray(deviceIds)) {\n throw new Error('deviceIds must be an array');\n }\n return this.queue(async () => {\n const result = await BluetoothLe.getDevices({ deviceIds });\n return result.devices;\n });\n }\n async getConnectedDevices(services) {\n if (!Array.isArray(services)) {\n throw new Error('services must be an array');\n }\n services = services.map(parseUUID);\n return this.queue(async () => {\n const result = await BluetoothLe.getConnectedDevices({ services });\n return result.devices;\n });\n }\n async getBondedDevices() {\n return this.queue(async () => {\n const result = await BluetoothLe.getBondedDevices();\n return result.devices;\n });\n }\n async connect(deviceId, onDisconnect, options) {\n await this.queue(async () => {\n var _a;\n if (onDisconnect) {\n const key = `disconnected|${deviceId}`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n const listener = await BluetoothLe.addListener(key, () => {\n onDisconnect(deviceId);\n });\n this.eventListeners.set(key, listener);\n }\n await BluetoothLe.connect(Object.assign({ deviceId }, options));\n });\n }\n async createBond(deviceId, options) {\n await this.queue(async () => {\n await BluetoothLe.createBond(Object.assign({ deviceId }, options));\n });\n }\n async isBonded(deviceId) {\n const isBonded = await this.queue(async () => {\n const result = await BluetoothLe.isBonded({ deviceId });\n return result.value;\n });\n return isBonded;\n }\n async disconnect(deviceId) {\n await this.queue(async () => {\n await BluetoothLe.disconnect({ deviceId });\n });\n }\n async getServices(deviceId) {\n const services = await this.queue(async () => {\n const result = await BluetoothLe.getServices({ deviceId });\n return result.services;\n });\n return services;\n }\n async discoverServices(deviceId) {\n await this.queue(async () => {\n await BluetoothLe.discoverServices({ deviceId });\n });\n }\n async getMtu(deviceId) {\n const value = await this.queue(async () => {\n const result = await BluetoothLe.getMtu({ deviceId });\n return result.value;\n });\n return value;\n }\n async requestConnectionPriority(deviceId, connectionPriority) {\n await this.queue(async () => {\n await BluetoothLe.requestConnectionPriority({ deviceId, connectionPriority });\n });\n }\n async readRssi(deviceId) {\n const value = await this.queue(async () => {\n const result = await BluetoothLe.readRssi({ deviceId });\n return parseFloat(result.value);\n });\n return value;\n }\n async read(deviceId, service, characteristic, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n const value = await this.queue(async () => {\n const result = await BluetoothLe.read(Object.assign({ deviceId,\n service,\n characteristic }, options));\n return this.convertValue(result.value);\n });\n return value;\n }\n async write(deviceId, service, characteristic, value, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n return this.queue(async () => {\n if (!(value === null || value === void 0 ? void 0 : value.buffer)) {\n throw new Error('Invalid data.');\n }\n let writeValue = value;\n if (Capacitor.getPlatform() !== 'web') {\n // on native we can only write strings\n writeValue = dataViewToHexString(value);\n }\n await BluetoothLe.write(Object.assign({ deviceId,\n service,\n characteristic, value: writeValue }, options));\n });\n }\n async writeWithoutResponse(deviceId, service, characteristic, value, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n await this.queue(async () => {\n if (!(value === null || value === void 0 ? void 0 : value.buffer)) {\n throw new Error('Invalid data.');\n }\n let writeValue = value;\n if (Capacitor.getPlatform() !== 'web') {\n // on native we can only write strings\n writeValue = dataViewToHexString(value);\n }\n await BluetoothLe.writeWithoutResponse(Object.assign({ deviceId,\n service,\n characteristic, value: writeValue }, options));\n });\n }\n async readDescriptor(deviceId, service, characteristic, descriptor, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n descriptor = parseUUID(descriptor);\n const value = await this.queue(async () => {\n const result = await BluetoothLe.readDescriptor(Object.assign({ deviceId,\n service,\n characteristic,\n descriptor }, options));\n return this.convertValue(result.value);\n });\n return value;\n }\n async writeDescriptor(deviceId, service, characteristic, descriptor, value, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n descriptor = parseUUID(descriptor);\n return this.queue(async () => {\n if (!(value === null || value === void 0 ? void 0 : value.buffer)) {\n throw new Error('Invalid data.');\n }\n let writeValue = value;\n if (Capacitor.getPlatform() !== 'web') {\n // on native we can only write strings\n writeValue = dataViewToHexString(value);\n }\n await BluetoothLe.writeDescriptor(Object.assign({ deviceId,\n service,\n characteristic,\n descriptor, value: writeValue }, options));\n });\n }\n async startNotifications(deviceId, service, characteristic, callback) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n await this.queue(async () => {\n var _a;\n const key = `notification|${deviceId}|${service}|${characteristic}`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n const listener = await BluetoothLe.addListener(key, (event) => {\n callback(this.convertValue(event === null || event === void 0 ? void 0 : event.value));\n });\n this.eventListeners.set(key, listener);\n await BluetoothLe.startNotifications({\n deviceId,\n service,\n characteristic,\n });\n });\n }\n async stopNotifications(deviceId, service, characteristic) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n await this.queue(async () => {\n var _a;\n const key = `notification|${deviceId}|${service}|${characteristic}`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n this.eventListeners.delete(key);\n await BluetoothLe.stopNotifications({\n deviceId,\n service,\n characteristic,\n });\n });\n }\n validateRequestBleDeviceOptions(options) {\n if (options.services) {\n options.services = options.services.map(parseUUID);\n }\n if (options.optionalServices) {\n options.optionalServices = options.optionalServices.map(parseUUID);\n }\n return options;\n }\n convertValue(value) {\n if (typeof value === 'string') {\n return hexStringToDataView(value);\n }\n else if (value === undefined) {\n return new DataView(new ArrayBuffer(0));\n }\n return value;\n }\n convertObject(obj) {\n if (obj === undefined) {\n return undefined;\n }\n const result = {};\n for (const key of Object.keys(obj)) {\n result[key] = this.convertValue(obj[key]);\n }\n return result;\n }\n}\nexport const BleClient = new BleClientClass();\n//# sourceMappingURL=bleClient.js.map","export async function runWithTimeout(promise, time, exception) {\n let timer;\n return Promise.race([\n promise,\n new Promise((_, reject) => {\n timer = setTimeout(() => reject(exception), time);\n }),\n ]).finally(() => clearTimeout(timer));\n}\n//# sourceMappingURL=timeout.js.map","import { WebPlugin } from '@capacitor/core';\nimport { hexStringToDataView, mapToObject, webUUIDToString } from './conversion';\nimport { runWithTimeout } from './timeout';\nexport class BluetoothLeWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.deviceMap = new Map();\n this.discoveredDevices = new Map();\n this.scan = null;\n this.DEFAULT_CONNECTION_TIMEOUT = 10000;\n this.onAdvertisementReceivedCallback = this.onAdvertisementReceived.bind(this);\n this.onDisconnectedCallback = this.onDisconnected.bind(this);\n this.onCharacteristicValueChangedCallback = this.onCharacteristicValueChanged.bind(this);\n }\n async initialize() {\n if (typeof navigator === 'undefined' || !navigator.bluetooth) {\n throw this.unavailable('Web Bluetooth API not available in this browser.');\n }\n const isAvailable = await navigator.bluetooth.getAvailability();\n if (!isAvailable) {\n throw this.unavailable('No Bluetooth radio available.');\n }\n }\n async isEnabled() {\n // not available on web\n return { value: true };\n }\n async requestEnable() {\n throw this.unavailable('requestEnable is not available on web.');\n }\n async enable() {\n throw this.unavailable('enable is not available on web.');\n }\n async disable() {\n throw this.unavailable('disable is not available on web.');\n }\n async startEnabledNotifications() {\n // not available on web\n }\n async stopEnabledNotifications() {\n // not available on web\n }\n async isLocationEnabled() {\n throw this.unavailable('isLocationEnabled is not available on web.');\n }\n async openLocationSettings() {\n throw this.unavailable('openLocationSettings is not available on web.');\n }\n async openBluetoothSettings() {\n throw this.unavailable('openBluetoothSettings is not available on web.');\n }\n async openAppSettings() {\n throw this.unavailable('openAppSettings is not available on web.');\n }\n async setDisplayStrings() {\n // not available on web\n }\n async requestDevice(options) {\n const filters = this.getFilters(options);\n const device = await navigator.bluetooth.requestDevice({\n filters: filters.length ? filters : undefined,\n optionalServices: options === null || options === void 0 ? void 0 : options.optionalServices,\n acceptAllDevices: filters.length === 0,\n });\n this.deviceMap.set(device.id, device);\n const bleDevice = this.getBleDevice(device);\n return bleDevice;\n }\n async requestLEScan(options) {\n this.requestBleDeviceOptions = options;\n const filters = this.getFilters(options);\n await this.stopLEScan();\n this.discoveredDevices = new Map();\n navigator.bluetooth.removeEventListener('advertisementreceived', this.onAdvertisementReceivedCallback);\n navigator.bluetooth.addEventListener('advertisementreceived', this.onAdvertisementReceivedCallback);\n this.scan = await navigator.bluetooth.requestLEScan({\n filters: filters.length ? filters : undefined,\n acceptAllAdvertisements: filters.length === 0,\n keepRepeatedDevices: options === null || options === void 0 ? void 0 : options.allowDuplicates,\n });\n }\n onAdvertisementReceived(event) {\n var _a, _b;\n const deviceId = event.device.id;\n this.deviceMap.set(deviceId, event.device);\n const isNew = !this.discoveredDevices.has(deviceId);\n if (isNew || ((_a = this.requestBleDeviceOptions) === null || _a === void 0 ? void 0 : _a.allowDuplicates)) {\n this.discoveredDevices.set(deviceId, true);\n const device = this.getBleDevice(event.device);\n const result = {\n device,\n localName: device.name,\n rssi: event.rssi,\n txPower: event.txPower,\n manufacturerData: mapToObject(event.manufacturerData),\n serviceData: mapToObject(event.serviceData),\n uuids: (_b = event.uuids) === null || _b === void 0 ? void 0 : _b.map(webUUIDToString),\n };\n this.notifyListeners('onScanResult', result);\n }\n }\n async stopLEScan() {\n var _a;\n if ((_a = this.scan) === null || _a === void 0 ? void 0 : _a.active) {\n this.scan.stop();\n }\n this.scan = null;\n }\n async getDevices(options) {\n const devices = await navigator.bluetooth.getDevices();\n const bleDevices = devices\n .filter((device) => options.deviceIds.includes(device.id))\n .map((device) => {\n this.deviceMap.set(device.id, device);\n const bleDevice = this.getBleDevice(device);\n return bleDevice;\n });\n return { devices: bleDevices };\n }\n async getConnectedDevices(_options) {\n const devices = await navigator.bluetooth.getDevices();\n const bleDevices = devices\n .filter((device) => {\n var _a;\n return (_a = device.gatt) === null || _a === void 0 ? void 0 : _a.connected;\n })\n .map((device) => {\n this.deviceMap.set(device.id, device);\n const bleDevice = this.getBleDevice(device);\n return bleDevice;\n });\n return { devices: bleDevices };\n }\n async getBondedDevices() {\n return {};\n }\n async connect(options) {\n var _a, _b;\n const device = this.getDeviceFromMap(options.deviceId);\n device.removeEventListener('gattserverdisconnected', this.onDisconnectedCallback);\n device.addEventListener('gattserverdisconnected', this.onDisconnectedCallback);\n const timeoutError = Symbol();\n if (device.gatt === undefined) {\n throw new Error('No gatt server available.');\n }\n try {\n const timeout = (_a = options.timeout) !== null && _a !== void 0 ? _a : this.DEFAULT_CONNECTION_TIMEOUT;\n await runWithTimeout(device.gatt.connect(), timeout, timeoutError);\n }\n catch (error) {\n // cancel pending connect call, does not work yet in chromium because of a bug:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=684073\n await ((_b = device.gatt) === null || _b === void 0 ? void 0 : _b.disconnect());\n if (error === timeoutError) {\n throw new Error('Connection timeout');\n }\n else {\n throw error;\n }\n }\n }\n onDisconnected(event) {\n const deviceId = event.target.id;\n const key = `disconnected|${deviceId}`;\n this.notifyListeners(key, null);\n }\n async createBond(_options) {\n throw this.unavailable('createBond is not available on web.');\n }\n async isBonded(_options) {\n throw this.unavailable('isBonded is not available on web.');\n }\n async disconnect(options) {\n var _a;\n (_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n async getServices(options) {\n var _a, _b;\n const services = (_b = (await ((_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.getPrimaryServices()))) !== null && _b !== void 0 ? _b : [];\n const bleServices = [];\n for (const service of services) {\n const characteristics = await service.getCharacteristics();\n const bleCharacteristics = [];\n for (const characteristic of characteristics) {\n bleCharacteristics.push({\n uuid: characteristic.uuid,\n properties: this.getProperties(characteristic),\n descriptors: await this.getDescriptors(characteristic),\n });\n }\n bleServices.push({ uuid: service.uuid, characteristics: bleCharacteristics });\n }\n return { services: bleServices };\n }\n async getDescriptors(characteristic) {\n try {\n const descriptors = await characteristic.getDescriptors();\n return descriptors.map((descriptor) => ({\n uuid: descriptor.uuid,\n }));\n }\n catch (_a) {\n return [];\n }\n }\n getProperties(characteristic) {\n return {\n broadcast: characteristic.properties.broadcast,\n read: characteristic.properties.read,\n writeWithoutResponse: characteristic.properties.writeWithoutResponse,\n write: characteristic.properties.write,\n notify: characteristic.properties.notify,\n indicate: characteristic.properties.indicate,\n authenticatedSignedWrites: characteristic.properties.authenticatedSignedWrites,\n reliableWrite: characteristic.properties.reliableWrite,\n writableAuxiliaries: characteristic.properties.writableAuxiliaries,\n };\n }\n async getCharacteristic(options) {\n var _a;\n const service = await ((_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.getPrimaryService(options === null || options === void 0 ? void 0 : options.service));\n return service === null || service === void 0 ? void 0 : service.getCharacteristic(options === null || options === void 0 ? void 0 : options.characteristic);\n }\n async getDescriptor(options) {\n const characteristic = await this.getCharacteristic(options);\n return characteristic === null || characteristic === void 0 ? void 0 : characteristic.getDescriptor(options === null || options === void 0 ? void 0 : options.descriptor);\n }\n async discoverServices(_options) {\n throw this.unavailable('discoverServices is not available on web.');\n }\n async getMtu(_options) {\n throw this.unavailable('getMtu is not available on web.');\n }\n async requestConnectionPriority(_options) {\n throw this.unavailable('requestConnectionPriority is not available on web.');\n }\n async readRssi(_options) {\n throw this.unavailable('readRssi is not available on web.');\n }\n async read(options) {\n const characteristic = await this.getCharacteristic(options);\n const value = await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.readValue());\n return { value };\n }\n async write(options) {\n const characteristic = await this.getCharacteristic(options);\n let dataView;\n if (typeof options.value === 'string') {\n dataView = hexStringToDataView(options.value);\n }\n else {\n dataView = options.value;\n }\n await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.writeValueWithResponse(dataView));\n }\n async writeWithoutResponse(options) {\n const characteristic = await this.getCharacteristic(options);\n let dataView;\n if (typeof options.value === 'string') {\n dataView = hexStringToDataView(options.value);\n }\n else {\n dataView = options.value;\n }\n await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.writeValueWithoutResponse(dataView));\n }\n async readDescriptor(options) {\n const descriptor = await this.getDescriptor(options);\n const value = await (descriptor === null || descriptor === void 0 ? void 0 : descriptor.readValue());\n return { value };\n }\n async writeDescriptor(options) {\n const descriptor = await this.getDescriptor(options);\n let dataView;\n if (typeof options.value === 'string') {\n dataView = hexStringToDataView(options.value);\n }\n else {\n dataView = options.value;\n }\n await (descriptor === null || descriptor === void 0 ? void 0 : descriptor.writeValue(dataView));\n }\n async startNotifications(options) {\n const characteristic = await this.getCharacteristic(options);\n characteristic === null || characteristic === void 0 ? void 0 : characteristic.removeEventListener('characteristicvaluechanged', this.onCharacteristicValueChangedCallback);\n characteristic === null || characteristic === void 0 ? void 0 : characteristic.addEventListener('characteristicvaluechanged', this.onCharacteristicValueChangedCallback);\n await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.startNotifications());\n }\n onCharacteristicValueChanged(event) {\n var _a, _b;\n const characteristic = event.target;\n const key = `notification|${(_a = characteristic.service) === null || _a === void 0 ? void 0 : _a.device.id}|${(_b = characteristic.service) === null || _b === void 0 ? void 0 : _b.uuid}|${characteristic.uuid}`;\n this.notifyListeners(key, {\n value: characteristic.value,\n });\n }\n async stopNotifications(options) {\n const characteristic = await this.getCharacteristic(options);\n await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.stopNotifications());\n }\n getFilters(options) {\n var _a;\n const filters = [];\n for (const service of (_a = options === null || options === void 0 ? void 0 : options.services) !== null && _a !== void 0 ? _a : []) {\n filters.push({\n services: [service],\n name: options === null || options === void 0 ? void 0 : options.name,\n namePrefix: options === null || options === void 0 ? void 0 : options.namePrefix,\n });\n }\n if (((options === null || options === void 0 ? void 0 : options.name) || (options === null || options === void 0 ? void 0 : options.namePrefix)) && filters.length === 0) {\n filters.push({\n name: options.name,\n namePrefix: options.namePrefix,\n });\n }\n return filters;\n }\n getDeviceFromMap(deviceId) {\n const device = this.deviceMap.get(deviceId);\n if (device === undefined) {\n throw new Error('Device not found. Call \"requestDevice\", \"requestLEScan\" or \"getDevices\" first.');\n }\n return device;\n }\n getBleDevice(device) {\n var _a;\n const bleDevice = {\n deviceId: device.id,\n // use undefined instead of null if name is not available\n name: (_a = device.name) !== null && _a !== void 0 ? _a : undefined,\n };\n return bleDevice;\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["ScanMode","ConnectionPriority","registerPlugin","Capacitor","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/conversion.js","esm/plugin.js","esm/queue.js","esm/validators.js","esm/bleClient.js","esm/timeout.js","esm/web.js"],"sourcesContent":["/**\n * Android scan mode\n */\nexport var ScanMode;\n(function (ScanMode) {\n /**\n * Perform Bluetooth LE scan in low power mode. This mode is enforced if the scanning application is not in foreground.\n * https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_POWER\n */\n ScanMode[ScanMode[\"SCAN_MODE_LOW_POWER\"] = 0] = \"SCAN_MODE_LOW_POWER\";\n /**\n * Perform Bluetooth LE scan in balanced power mode. (default) Scan results are returned at a rate that provides a good trade-off between scan frequency and power consumption.\n * https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_BALANCED\n */\n ScanMode[ScanMode[\"SCAN_MODE_BALANCED\"] = 1] = \"SCAN_MODE_BALANCED\";\n /**\n * Scan using highest duty cycle. It's recommended to only use this mode when the application is running in the foreground.\n * https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_LATENCY\n */\n ScanMode[ScanMode[\"SCAN_MODE_LOW_LATENCY\"] = 2] = \"SCAN_MODE_LOW_LATENCY\";\n})(ScanMode || (ScanMode = {}));\n/**\n * Android connection priority used in `requestConnectionPriority`\n */\nexport var ConnectionPriority;\n(function (ConnectionPriority) {\n /**\n * Use the connection parameters recommended by the Bluetooth SIG. This is the default value if no connection parameter update is requested.\n * https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_BALANCED\n */\n ConnectionPriority[ConnectionPriority[\"CONNECTION_PRIORITY_BALANCED\"] = 0] = \"CONNECTION_PRIORITY_BALANCED\";\n /**\n * Request a high priority, low latency connection. An application should only request high priority connection parameters to transfer large amounts of data over LE quickly. Once the transfer is complete, the application should request CONNECTION_PRIORITY_BALANCED connection parameters to reduce energy use.\n * https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_HIGH\n */\n ConnectionPriority[ConnectionPriority[\"CONNECTION_PRIORITY_HIGH\"] = 1] = \"CONNECTION_PRIORITY_HIGH\";\n /**\n * Request low power, reduced data rate connection parameters.\n * https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_LOW_POWER\n */\n ConnectionPriority[ConnectionPriority[\"CONNECTION_PRIORITY_LOW_POWER\"] = 2] = \"CONNECTION_PRIORITY_LOW_POWER\";\n})(ConnectionPriority || (ConnectionPriority = {}));\n//# sourceMappingURL=definitions.js.map","/**\n * Convert an array of numbers into a DataView.\n */\nexport function numbersToDataView(value) {\n return new DataView(Uint8Array.from(value).buffer);\n}\n/**\n * Convert a DataView into an array of numbers.\n */\nexport function dataViewToNumbers(value) {\n return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\n}\n/**\n * Convert a string into a DataView.\n */\nexport function textToDataView(value) {\n return numbersToDataView(value.split('').map((s) => s.charCodeAt(0)));\n}\n/**\n * Convert a DataView into a string.\n */\nexport function dataViewToText(value) {\n return String.fromCharCode(...dataViewToNumbers(value));\n}\n/**\n * Convert a 16 bit UUID into a 128 bit UUID string\n * @param value number, e.g. 0x180d\n * @return string, e.g. '0000180d-0000-1000-8000-00805f9b34fb'\n */\nexport function numberToUUID(value) {\n return `0000${value.toString(16).padStart(4, '0')}-0000-1000-8000-00805f9b34fb`;\n}\n/**\n * Convert a string of hex into a DataView of raw bytes.\n * Note: characters other than [0-9a-fA-F] are ignored\n * @param hex string of values, e.g. \"00 01 02\" or \"000102\"\n * @return DataView of raw bytes\n */\nexport function hexStringToDataView(hex) {\n const bin = [];\n let i, c, isEmpty = 1, buffer = 0;\n for (i = 0; i < hex.length; i++) {\n c = hex.charCodeAt(i);\n if ((c > 47 && c < 58) || (c > 64 && c < 71) || (c > 96 && c < 103)) {\n buffer = (buffer << 4) ^ ((c > 64 ? c + 9 : c) & 15);\n if ((isEmpty ^= 1)) {\n bin.push(buffer & 0xff);\n }\n }\n }\n return numbersToDataView(bin);\n}\nexport function dataViewToHexString(value) {\n return dataViewToNumbers(value)\n .map((n) => {\n let s = n.toString(16);\n if (s.length == 1) {\n s = '0' + s;\n }\n return s;\n })\n .join('');\n}\nexport function webUUIDToString(uuid) {\n if (typeof uuid === 'string') {\n return uuid;\n }\n else if (typeof uuid === 'number') {\n return numberToUUID(uuid);\n }\n else {\n throw new Error('Invalid UUID');\n }\n}\nexport function mapToObject(map) {\n const obj = {};\n if (!map) {\n return undefined;\n }\n map.forEach((value, key) => {\n obj[key.toString()] = value;\n });\n return obj;\n}\n//# sourceMappingURL=conversion.js.map","import { registerPlugin } from '@capacitor/core';\nexport const BluetoothLe = registerPlugin('BluetoothLe', {\n web: () => import('./web').then((m) => new m.BluetoothLeWeb()),\n});\n//# sourceMappingURL=plugin.js.map","const makeQueue = () => {\n let currentTask = Promise.resolve();\n // create a new promise so that errors can be bubbled\n // up to the caller without being caught by the queue\n return (fn) => new Promise((resolve, reject) => {\n currentTask = currentTask\n .then(() => fn())\n .then(resolve)\n .catch(reject);\n });\n};\nexport function getQueue(enabled) {\n if (enabled) {\n return makeQueue();\n }\n return (fn) => fn();\n}\n//# sourceMappingURL=queue.js.map","export function parseUUID(uuid) {\n if (typeof uuid !== 'string') {\n throw new Error(`Invalid UUID type ${typeof uuid}. Expected string.`);\n }\n uuid = uuid.toLowerCase();\n const is128BitUuid = uuid.search(/^[0-9a-f]{8}\\b-[0-9a-f]{4}\\b-[0-9a-f]{4}\\b-[0-9a-f]{4}\\b-[0-9a-f]{12}$/) >= 0;\n if (!is128BitUuid) {\n throw new Error(`Invalid UUID format ${uuid}. Expected 128 bit string (e.g. \"0000180d-0000-1000-8000-00805f9b34fb\").`);\n }\n return uuid;\n}\n//# sourceMappingURL=validators.js.map","import { Capacitor } from '@capacitor/core';\nimport { dataViewToHexString, hexStringToDataView } from './conversion';\nimport { BluetoothLe } from './plugin';\nimport { getQueue } from './queue';\nimport { parseUUID } from './validators';\nclass BleClientClass {\n constructor() {\n this.scanListener = null;\n this.eventListeners = new Map();\n this.queue = getQueue(true);\n }\n enableQueue() {\n this.queue = getQueue(true);\n }\n disableQueue() {\n this.queue = getQueue(false);\n }\n async initialize(options) {\n await this.queue(async () => {\n await BluetoothLe.initialize(options);\n });\n }\n async isEnabled() {\n const enabled = await this.queue(async () => {\n const result = await BluetoothLe.isEnabled();\n return result.value;\n });\n return enabled;\n }\n async requestEnable() {\n await this.queue(async () => {\n await BluetoothLe.requestEnable();\n });\n }\n async enable() {\n await this.queue(async () => {\n await BluetoothLe.enable();\n });\n }\n async disable() {\n await this.queue(async () => {\n await BluetoothLe.disable();\n });\n }\n async startEnabledNotifications(callback) {\n await this.queue(async () => {\n var _a;\n const key = `onEnabledChanged`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n const listener = await BluetoothLe.addListener(key, (result) => {\n callback(result.value);\n });\n this.eventListeners.set(key, listener);\n await BluetoothLe.startEnabledNotifications();\n });\n }\n async stopEnabledNotifications() {\n await this.queue(async () => {\n var _a;\n const key = `onEnabledChanged`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n this.eventListeners.delete(key);\n await BluetoothLe.stopEnabledNotifications();\n });\n }\n async isLocationEnabled() {\n const enabled = await this.queue(async () => {\n const result = await BluetoothLe.isLocationEnabled();\n return result.value;\n });\n return enabled;\n }\n async openLocationSettings() {\n await this.queue(async () => {\n await BluetoothLe.openLocationSettings();\n });\n }\n async openBluetoothSettings() {\n await this.queue(async () => {\n await BluetoothLe.openBluetoothSettings();\n });\n }\n async openAppSettings() {\n await this.queue(async () => {\n await BluetoothLe.openAppSettings();\n });\n }\n async setDisplayStrings(displayStrings) {\n await this.queue(async () => {\n await BluetoothLe.setDisplayStrings(displayStrings);\n });\n }\n async requestDevice(options) {\n options = options ? this.validateRequestBleDeviceOptions(options) : undefined;\n const result = await this.queue(async () => {\n const device = await BluetoothLe.requestDevice(options);\n return device;\n });\n return result;\n }\n async requestLEScan(options, callback) {\n options = this.validateRequestBleDeviceOptions(options);\n await this.queue(async () => {\n var _a;\n await ((_a = this.scanListener) === null || _a === void 0 ? void 0 : _a.remove());\n this.scanListener = await BluetoothLe.addListener('onScanResult', (resultInternal) => {\n const result = Object.assign(Object.assign({}, resultInternal), { manufacturerData: this.convertObject(resultInternal.manufacturerData), serviceData: this.convertObject(resultInternal.serviceData), rawAdvertisement: resultInternal.rawAdvertisement\n ? this.convertValue(resultInternal.rawAdvertisement)\n : undefined });\n callback(result);\n });\n await BluetoothLe.requestLEScan(options);\n });\n }\n async stopLEScan() {\n await this.queue(async () => {\n var _a;\n await ((_a = this.scanListener) === null || _a === void 0 ? void 0 : _a.remove());\n this.scanListener = null;\n await BluetoothLe.stopLEScan();\n });\n }\n async getDevices(deviceIds) {\n if (!Array.isArray(deviceIds)) {\n throw new Error('deviceIds must be an array');\n }\n return this.queue(async () => {\n const result = await BluetoothLe.getDevices({ deviceIds });\n return result.devices;\n });\n }\n async getConnectedDevices(services) {\n if (!Array.isArray(services)) {\n throw new Error('services must be an array');\n }\n services = services.map(parseUUID);\n return this.queue(async () => {\n const result = await BluetoothLe.getConnectedDevices({ services });\n return result.devices;\n });\n }\n async getBondedDevices() {\n return this.queue(async () => {\n const result = await BluetoothLe.getBondedDevices();\n return result.devices;\n });\n }\n async connect(deviceId, onDisconnect, options) {\n await this.queue(async () => {\n var _a;\n if (onDisconnect) {\n const key = `disconnected|${deviceId}`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n const listener = await BluetoothLe.addListener(key, () => {\n onDisconnect(deviceId);\n });\n this.eventListeners.set(key, listener);\n }\n await BluetoothLe.connect(Object.assign({ deviceId }, options));\n });\n }\n async createBond(deviceId, options) {\n await this.queue(async () => {\n await BluetoothLe.createBond(Object.assign({ deviceId }, options));\n });\n }\n async isBonded(deviceId) {\n const isBonded = await this.queue(async () => {\n const result = await BluetoothLe.isBonded({ deviceId });\n return result.value;\n });\n return isBonded;\n }\n async disconnect(deviceId) {\n await this.queue(async () => {\n await BluetoothLe.disconnect({ deviceId });\n });\n }\n async getServices(deviceId) {\n const services = await this.queue(async () => {\n const result = await BluetoothLe.getServices({ deviceId });\n return result.services;\n });\n return services;\n }\n async discoverServices(deviceId) {\n await this.queue(async () => {\n await BluetoothLe.discoverServices({ deviceId });\n });\n }\n async getMtu(deviceId) {\n const value = await this.queue(async () => {\n const result = await BluetoothLe.getMtu({ deviceId });\n return result.value;\n });\n return value;\n }\n async requestConnectionPriority(deviceId, connectionPriority) {\n await this.queue(async () => {\n await BluetoothLe.requestConnectionPriority({ deviceId, connectionPriority });\n });\n }\n async readRssi(deviceId) {\n const value = await this.queue(async () => {\n const result = await BluetoothLe.readRssi({ deviceId });\n return parseFloat(result.value);\n });\n return value;\n }\n async read(deviceId, service, characteristic, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n const value = await this.queue(async () => {\n const result = await BluetoothLe.read(Object.assign({ deviceId,\n service,\n characteristic }, options));\n return this.convertValue(result.value);\n });\n return value;\n }\n async write(deviceId, service, characteristic, value, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n return this.queue(async () => {\n if (!(value === null || value === void 0 ? void 0 : value.buffer)) {\n throw new Error('Invalid data.');\n }\n let writeValue = value;\n if (Capacitor.getPlatform() !== 'web') {\n // on native we can only write strings\n writeValue = dataViewToHexString(value);\n }\n await BluetoothLe.write(Object.assign({ deviceId,\n service,\n characteristic, value: writeValue }, options));\n });\n }\n async writeWithoutResponse(deviceId, service, characteristic, value, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n await this.queue(async () => {\n if (!(value === null || value === void 0 ? void 0 : value.buffer)) {\n throw new Error('Invalid data.');\n }\n let writeValue = value;\n if (Capacitor.getPlatform() !== 'web') {\n // on native we can only write strings\n writeValue = dataViewToHexString(value);\n }\n await BluetoothLe.writeWithoutResponse(Object.assign({ deviceId,\n service,\n characteristic, value: writeValue }, options));\n });\n }\n async readDescriptor(deviceId, service, characteristic, descriptor, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n descriptor = parseUUID(descriptor);\n const value = await this.queue(async () => {\n const result = await BluetoothLe.readDescriptor(Object.assign({ deviceId,\n service,\n characteristic,\n descriptor }, options));\n return this.convertValue(result.value);\n });\n return value;\n }\n async writeDescriptor(deviceId, service, characteristic, descriptor, value, options) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n descriptor = parseUUID(descriptor);\n return this.queue(async () => {\n if (!(value === null || value === void 0 ? void 0 : value.buffer)) {\n throw new Error('Invalid data.');\n }\n let writeValue = value;\n if (Capacitor.getPlatform() !== 'web') {\n // on native we can only write strings\n writeValue = dataViewToHexString(value);\n }\n await BluetoothLe.writeDescriptor(Object.assign({ deviceId,\n service,\n characteristic,\n descriptor, value: writeValue }, options));\n });\n }\n async startNotifications(deviceId, service, characteristic, callback) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n await this.queue(async () => {\n var _a;\n const key = `notification|${deviceId}|${service}|${characteristic}`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n const listener = await BluetoothLe.addListener(key, (event) => {\n callback(this.convertValue(event === null || event === void 0 ? void 0 : event.value));\n });\n this.eventListeners.set(key, listener);\n await BluetoothLe.startNotifications({\n deviceId,\n service,\n characteristic,\n });\n });\n }\n async stopNotifications(deviceId, service, characteristic) {\n service = parseUUID(service);\n characteristic = parseUUID(characteristic);\n await this.queue(async () => {\n var _a;\n const key = `notification|${deviceId}|${service}|${characteristic}`;\n await ((_a = this.eventListeners.get(key)) === null || _a === void 0 ? void 0 : _a.remove());\n this.eventListeners.delete(key);\n await BluetoothLe.stopNotifications({\n deviceId,\n service,\n characteristic,\n });\n });\n }\n validateRequestBleDeviceOptions(options) {\n if (options.services) {\n options.services = options.services.map(parseUUID);\n }\n if (options.optionalServices) {\n options.optionalServices = options.optionalServices.map(parseUUID);\n }\n return options;\n }\n convertValue(value) {\n if (typeof value === 'string') {\n return hexStringToDataView(value);\n }\n else if (value === undefined) {\n return new DataView(new ArrayBuffer(0));\n }\n return value;\n }\n convertObject(obj) {\n if (obj === undefined) {\n return undefined;\n }\n const result = {};\n for (const key of Object.keys(obj)) {\n result[key] = this.convertValue(obj[key]);\n }\n return result;\n }\n}\nexport const BleClient = new BleClientClass();\n//# sourceMappingURL=bleClient.js.map","export async function runWithTimeout(promise, time, exception) {\n let timer;\n return Promise.race([\n promise,\n new Promise((_, reject) => {\n timer = setTimeout(() => reject(exception), time);\n }),\n ]).finally(() => clearTimeout(timer));\n}\n//# sourceMappingURL=timeout.js.map","import { WebPlugin } from '@capacitor/core';\nimport { hexStringToDataView, mapToObject, webUUIDToString } from './conversion';\nimport { runWithTimeout } from './timeout';\nexport class BluetoothLeWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.deviceMap = new Map();\n this.discoveredDevices = new Map();\n this.scan = null;\n this.DEFAULT_CONNECTION_TIMEOUT = 10000;\n this.onAdvertisementReceivedCallback = this.onAdvertisementReceived.bind(this);\n this.onDisconnectedCallback = this.onDisconnected.bind(this);\n this.onCharacteristicValueChangedCallback = this.onCharacteristicValueChanged.bind(this);\n }\n async initialize() {\n if (typeof navigator === 'undefined' || !navigator.bluetooth) {\n throw this.unavailable('Web Bluetooth API not available in this browser.');\n }\n const isAvailable = await navigator.bluetooth.getAvailability();\n if (!isAvailable) {\n throw this.unavailable('No Bluetooth radio available.');\n }\n }\n async isEnabled() {\n // not available on web\n return { value: true };\n }\n async requestEnable() {\n throw this.unavailable('requestEnable is not available on web.');\n }\n async enable() {\n throw this.unavailable('enable is not available on web.');\n }\n async disable() {\n throw this.unavailable('disable is not available on web.');\n }\n async startEnabledNotifications() {\n // not available on web\n }\n async stopEnabledNotifications() {\n // not available on web\n }\n async isLocationEnabled() {\n throw this.unavailable('isLocationEnabled is not available on web.');\n }\n async openLocationSettings() {\n throw this.unavailable('openLocationSettings is not available on web.');\n }\n async openBluetoothSettings() {\n throw this.unavailable('openBluetoothSettings is not available on web.');\n }\n async openAppSettings() {\n throw this.unavailable('openAppSettings is not available on web.');\n }\n async setDisplayStrings() {\n // not available on web\n }\n async requestDevice(options) {\n const filters = this.getFilters(options);\n const device = await navigator.bluetooth.requestDevice({\n filters: filters.length ? filters : undefined,\n optionalServices: options === null || options === void 0 ? void 0 : options.optionalServices,\n acceptAllDevices: filters.length === 0,\n });\n this.deviceMap.set(device.id, device);\n const bleDevice = this.getBleDevice(device);\n return bleDevice;\n }\n async requestLEScan(options) {\n this.requestBleDeviceOptions = options;\n const filters = this.getFilters(options);\n await this.stopLEScan();\n this.discoveredDevices = new Map();\n navigator.bluetooth.removeEventListener('advertisementreceived', this.onAdvertisementReceivedCallback);\n navigator.bluetooth.addEventListener('advertisementreceived', this.onAdvertisementReceivedCallback);\n this.scan = await navigator.bluetooth.requestLEScan({\n filters: filters.length ? filters : undefined,\n acceptAllAdvertisements: filters.length === 0,\n keepRepeatedDevices: options === null || options === void 0 ? void 0 : options.allowDuplicates,\n });\n }\n onAdvertisementReceived(event) {\n var _a, _b;\n const deviceId = event.device.id;\n this.deviceMap.set(deviceId, event.device);\n const isNew = !this.discoveredDevices.has(deviceId);\n if (isNew || ((_a = this.requestBleDeviceOptions) === null || _a === void 0 ? void 0 : _a.allowDuplicates)) {\n this.discoveredDevices.set(deviceId, true);\n const device = this.getBleDevice(event.device);\n const result = {\n device,\n localName: device.name,\n rssi: event.rssi,\n txPower: event.txPower,\n manufacturerData: mapToObject(event.manufacturerData),\n serviceData: mapToObject(event.serviceData),\n uuids: (_b = event.uuids) === null || _b === void 0 ? void 0 : _b.map(webUUIDToString),\n };\n this.notifyListeners('onScanResult', result);\n }\n }\n async stopLEScan() {\n var _a;\n if ((_a = this.scan) === null || _a === void 0 ? void 0 : _a.active) {\n this.scan.stop();\n }\n this.scan = null;\n }\n async getDevices(options) {\n const devices = await navigator.bluetooth.getDevices();\n const bleDevices = devices\n .filter((device) => options.deviceIds.includes(device.id))\n .map((device) => {\n this.deviceMap.set(device.id, device);\n const bleDevice = this.getBleDevice(device);\n return bleDevice;\n });\n return { devices: bleDevices };\n }\n async getConnectedDevices(_options) {\n const devices = await navigator.bluetooth.getDevices();\n const bleDevices = devices\n .filter((device) => {\n var _a;\n return (_a = device.gatt) === null || _a === void 0 ? void 0 : _a.connected;\n })\n .map((device) => {\n this.deviceMap.set(device.id, device);\n const bleDevice = this.getBleDevice(device);\n return bleDevice;\n });\n return { devices: bleDevices };\n }\n async getBondedDevices() {\n return {};\n }\n async connect(options) {\n var _a, _b;\n const device = this.getDeviceFromMap(options.deviceId);\n device.removeEventListener('gattserverdisconnected', this.onDisconnectedCallback);\n device.addEventListener('gattserverdisconnected', this.onDisconnectedCallback);\n const timeoutError = Symbol();\n if (device.gatt === undefined) {\n throw new Error('No gatt server available.');\n }\n try {\n const timeout = (_a = options.timeout) !== null && _a !== void 0 ? _a : this.DEFAULT_CONNECTION_TIMEOUT;\n await runWithTimeout(device.gatt.connect(), timeout, timeoutError);\n }\n catch (error) {\n // cancel pending connect call, does not work yet in chromium because of a bug:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=684073\n await ((_b = device.gatt) === null || _b === void 0 ? void 0 : _b.disconnect());\n if (error === timeoutError) {\n throw new Error('Connection timeout');\n }\n else {\n throw error;\n }\n }\n }\n onDisconnected(event) {\n const deviceId = event.target.id;\n const key = `disconnected|${deviceId}`;\n this.notifyListeners(key, null);\n }\n async createBond(_options) {\n throw this.unavailable('createBond is not available on web.');\n }\n async isBonded(_options) {\n throw this.unavailable('isBonded is not available on web.');\n }\n async disconnect(options) {\n var _a;\n (_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n async getServices(options) {\n var _a, _b;\n const services = (_b = (await ((_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.getPrimaryServices()))) !== null && _b !== void 0 ? _b : [];\n const bleServices = [];\n for (const service of services) {\n const characteristics = await service.getCharacteristics();\n const bleCharacteristics = [];\n for (const characteristic of characteristics) {\n bleCharacteristics.push({\n uuid: characteristic.uuid,\n properties: this.getProperties(characteristic),\n descriptors: await this.getDescriptors(characteristic),\n });\n }\n bleServices.push({ uuid: service.uuid, characteristics: bleCharacteristics });\n }\n return { services: bleServices };\n }\n async getDescriptors(characteristic) {\n try {\n const descriptors = await characteristic.getDescriptors();\n return descriptors.map((descriptor) => ({\n uuid: descriptor.uuid,\n }));\n }\n catch (_a) {\n return [];\n }\n }\n getProperties(characteristic) {\n return {\n broadcast: characteristic.properties.broadcast,\n read: characteristic.properties.read,\n writeWithoutResponse: characteristic.properties.writeWithoutResponse,\n write: characteristic.properties.write,\n notify: characteristic.properties.notify,\n indicate: characteristic.properties.indicate,\n authenticatedSignedWrites: characteristic.properties.authenticatedSignedWrites,\n reliableWrite: characteristic.properties.reliableWrite,\n writableAuxiliaries: characteristic.properties.writableAuxiliaries,\n };\n }\n async getCharacteristic(options) {\n var _a;\n const service = await ((_a = this.getDeviceFromMap(options.deviceId).gatt) === null || _a === void 0 ? void 0 : _a.getPrimaryService(options === null || options === void 0 ? void 0 : options.service));\n return service === null || service === void 0 ? void 0 : service.getCharacteristic(options === null || options === void 0 ? void 0 : options.characteristic);\n }\n async getDescriptor(options) {\n const characteristic = await this.getCharacteristic(options);\n return characteristic === null || characteristic === void 0 ? void 0 : characteristic.getDescriptor(options === null || options === void 0 ? void 0 : options.descriptor);\n }\n async discoverServices(_options) {\n throw this.unavailable('discoverServices is not available on web.');\n }\n async getMtu(_options) {\n throw this.unavailable('getMtu is not available on web.');\n }\n async requestConnectionPriority(_options) {\n throw this.unavailable('requestConnectionPriority is not available on web.');\n }\n async readRssi(_options) {\n throw this.unavailable('readRssi is not available on web.');\n }\n async read(options) {\n const characteristic = await this.getCharacteristic(options);\n const value = await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.readValue());\n return { value };\n }\n async write(options) {\n const characteristic = await this.getCharacteristic(options);\n let dataView;\n if (typeof options.value === 'string') {\n dataView = hexStringToDataView(options.value);\n }\n else {\n dataView = options.value;\n }\n await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.writeValueWithResponse(dataView));\n }\n async writeWithoutResponse(options) {\n const characteristic = await this.getCharacteristic(options);\n let dataView;\n if (typeof options.value === 'string') {\n dataView = hexStringToDataView(options.value);\n }\n else {\n dataView = options.value;\n }\n await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.writeValueWithoutResponse(dataView));\n }\n async readDescriptor(options) {\n const descriptor = await this.getDescriptor(options);\n const value = await (descriptor === null || descriptor === void 0 ? void 0 : descriptor.readValue());\n return { value };\n }\n async writeDescriptor(options) {\n const descriptor = await this.getDescriptor(options);\n let dataView;\n if (typeof options.value === 'string') {\n dataView = hexStringToDataView(options.value);\n }\n else {\n dataView = options.value;\n }\n await (descriptor === null || descriptor === void 0 ? void 0 : descriptor.writeValue(dataView));\n }\n async startNotifications(options) {\n const characteristic = await this.getCharacteristic(options);\n characteristic === null || characteristic === void 0 ? void 0 : characteristic.removeEventListener('characteristicvaluechanged', this.onCharacteristicValueChangedCallback);\n characteristic === null || characteristic === void 0 ? void 0 : characteristic.addEventListener('characteristicvaluechanged', this.onCharacteristicValueChangedCallback);\n await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.startNotifications());\n }\n onCharacteristicValueChanged(event) {\n var _a, _b;\n const characteristic = event.target;\n const key = `notification|${(_a = characteristic.service) === null || _a === void 0 ? void 0 : _a.device.id}|${(_b = characteristic.service) === null || _b === void 0 ? void 0 : _b.uuid}|${characteristic.uuid}`;\n this.notifyListeners(key, {\n value: characteristic.value,\n });\n }\n async stopNotifications(options) {\n const characteristic = await this.getCharacteristic(options);\n await (characteristic === null || characteristic === void 0 ? void 0 : characteristic.stopNotifications());\n }\n getFilters(options) {\n var _a;\n const filters = [];\n for (const service of (_a = options === null || options === void 0 ? void 0 : options.services) !== null && _a !== void 0 ? _a : []) {\n filters.push({\n services: [service],\n name: options === null || options === void 0 ? void 0 : options.name,\n namePrefix: options === null || options === void 0 ? void 0 : options.namePrefix,\n });\n }\n if (((options === null || options === void 0 ? void 0 : options.name) || (options === null || options === void 0 ? void 0 : options.namePrefix)) && filters.length === 0) {\n filters.push({\n name: options.name,\n namePrefix: options.namePrefix,\n });\n }\n return filters;\n }\n getDeviceFromMap(deviceId) {\n const device = this.deviceMap.get(deviceId);\n if (device === undefined) {\n throw new Error('Device not found. Call \"requestDevice\", \"requestLEScan\" or \"getDevices\" first.');\n }\n return device;\n }\n getBleDevice(device) {\n var _a;\n const bleDevice = {\n deviceId: device.id,\n // use undefined instead of null if name is not available\n name: (_a = device.name) !== null && _a !== void 0 ? _a : undefined,\n };\n return bleDevice;\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["ScanMode","ConnectionPriority","registerPlugin","Capacitor","WebPlugin"],"mappings":"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"}