@capacitor-community/bluetooth-le 8.0.0-0 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CapacitorCommunityBluetoothLe.podspec +17 -17
  2. package/LICENSE +21 -21
  3. package/Package.swift +27 -27
  4. package/README.md +5 -3
  5. package/android/build.gradle +73 -71
  6. package/android/src/main/AndroidManifest.xml +22 -22
  7. package/android/src/main/java/com/capacitorjs/community/plugins/bluetoothle/BluetoothLe.kt +1094 -1094
  8. package/android/src/main/java/com/capacitorjs/community/plugins/bluetoothle/Conversion.kt +51 -51
  9. package/android/src/main/java/com/capacitorjs/community/plugins/bluetoothle/Device.kt +771 -771
  10. package/android/src/main/java/com/capacitorjs/community/plugins/bluetoothle/DeviceList.kt +28 -28
  11. package/android/src/main/java/com/capacitorjs/community/plugins/bluetoothle/DeviceScanner.kt +189 -189
  12. package/dist/docs.json +43 -43
  13. package/dist/esm/bleClient.d.ts +278 -278
  14. package/dist/esm/bleClient.js +361 -361
  15. package/dist/esm/bleClient.js.map +1 -1
  16. package/dist/esm/config.d.ts +53 -53
  17. package/dist/esm/config.js +2 -2
  18. package/dist/esm/conversion.d.ts +56 -56
  19. package/dist/esm/conversion.js +134 -134
  20. package/dist/esm/conversion.js.map +1 -1
  21. package/dist/esm/definitions.d.ts +352 -352
  22. package/dist/esm/definitions.js +42 -42
  23. package/dist/esm/definitions.js.map +1 -1
  24. package/dist/esm/index.d.ts +5 -5
  25. package/dist/esm/index.js +5 -5
  26. package/dist/esm/plugin.d.ts +2 -2
  27. package/dist/esm/plugin.js +4 -4
  28. package/dist/esm/queue.d.ts +3 -3
  29. package/dist/esm/queue.js +17 -17
  30. package/dist/esm/queue.js.map +1 -1
  31. package/dist/esm/timeout.d.ts +1 -1
  32. package/dist/esm/timeout.js +9 -9
  33. package/dist/esm/validators.d.ts +1 -1
  34. package/dist/esm/validators.js +11 -11
  35. package/dist/esm/validators.js.map +1 -1
  36. package/dist/esm/web.d.ts +57 -57
  37. package/dist/esm/web.js +403 -403
  38. package/dist/esm/web.js.map +1 -1
  39. package/dist/plugin.cjs.js +964 -964
  40. package/dist/plugin.cjs.js.map +1 -1
  41. package/dist/plugin.js +964 -964
  42. package/dist/plugin.js.map +1 -1
  43. package/ios/Sources/BluetoothLe/Conversion.swift +83 -83
  44. package/ios/Sources/BluetoothLe/Device.swift +423 -423
  45. package/ios/Sources/BluetoothLe/DeviceListView.swift +121 -121
  46. package/ios/Sources/BluetoothLe/DeviceManager.swift +415 -503
  47. package/ios/Sources/BluetoothLe/Logging.swift +8 -8
  48. package/ios/Sources/BluetoothLe/Plugin.swift +763 -775
  49. package/ios/Sources/BluetoothLe/ScanFilters.swift +114 -0
  50. package/ios/Sources/BluetoothLe/ThreadSafeDictionary.swift +15 -15
  51. package/ios/Tests/BluetoothLeTests/ConversionTests.swift +55 -55
  52. package/ios/Tests/BluetoothLeTests/PluginTests.swift +27 -27
  53. package/ios/Tests/BluetoothLeTests/ScanFiltersTests.swift +153 -0
  54. package/package.json +114 -115
@@ -1,135 +1,135 @@
1
- /**
2
- * Convert an array of numbers into a DataView.
3
- */
4
- export function numbersToDataView(value) {
5
- return new DataView(Uint8Array.from(value).buffer);
6
- }
7
- /**
8
- * Convert a DataView into an array of numbers.
9
- */
10
- export function dataViewToNumbers(value) {
11
- return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
12
- }
13
- /**
14
- * Convert a string into a DataView.
15
- */
16
- export function textToDataView(value) {
17
- return numbersToDataView(value.split('').map((s) => s.charCodeAt(0)));
18
- }
19
- /**
20
- * Convert a DataView into a string.
21
- */
22
- export function dataViewToText(value) {
23
- return String.fromCharCode(...dataViewToNumbers(value));
24
- }
25
- /**
26
- * Convert a 16 bit UUID into a 128 bit UUID string
27
- * @param value number, e.g. 0x180d
28
- * @return string, e.g. '0000180d-0000-1000-8000-00805f9b34fb'
29
- */
30
- export function numberToUUID(value) {
31
- return `0000${value.toString(16).padStart(4, '0')}-0000-1000-8000-00805f9b34fb`;
32
- }
33
- /**
34
- * Convert a string of hex into a DataView of raw bytes.
35
- * Note: characters other than [0-9a-fA-F] are ignored
36
- * @param hex string of values, e.g. "00 01 02" or "000102"
37
- * @return DataView of raw bytes
38
- */
39
- export function hexStringToDataView(hex) {
40
- const bin = [];
41
- let i, c, isEmpty = 1, buffer = 0;
42
- for (i = 0; i < hex.length; i++) {
43
- c = hex.charCodeAt(i);
44
- if ((c > 47 && c < 58) || (c > 64 && c < 71) || (c > 96 && c < 103)) {
45
- buffer = (buffer << 4) ^ ((c > 64 ? c + 9 : c) & 15);
46
- if ((isEmpty ^= 1)) {
47
- bin.push(buffer & 0xff);
48
- }
49
- }
50
- }
51
- return numbersToDataView(bin);
52
- }
53
- export function dataViewToHexString(value) {
54
- return dataViewToNumbers(value)
55
- .map((n) => {
56
- let s = n.toString(16);
57
- if (s.length == 1) {
58
- s = '0' + s;
59
- }
60
- return s;
61
- })
62
- .join('');
63
- }
64
- export function webUUIDToString(uuid) {
65
- if (typeof uuid === 'string') {
66
- return uuid;
67
- }
68
- else if (typeof uuid === 'number') {
69
- return numberToUUID(uuid);
70
- }
71
- else {
72
- throw new Error('Invalid UUID');
73
- }
74
- }
75
- export function mapToObject(map) {
76
- const obj = {};
77
- if (!map) {
78
- return undefined;
79
- }
80
- map.forEach((value, key) => {
81
- obj[key.toString()] = value;
82
- });
83
- return obj;
84
- }
85
- /**
86
- * Convert Data or Uint8Array to Uint8Array.
87
- * @param value DataView, Uint8Array, or undefined
88
- * @return Uint8Array or undefined
89
- */
90
- export function toUint8Array(value) {
91
- if (value === undefined) {
92
- return undefined;
93
- }
94
- if (typeof value === 'string') {
95
- const dataView = hexStringToDataView(value);
96
- return new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength);
97
- }
98
- if (value instanceof DataView) {
99
- return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
100
- }
101
- return value; // Already Uint8Array
102
- }
103
- /**
104
- * Convert Data, Uint8Array, or string to hex string.
105
- * @param value DataView, Uint8Array, or undefined
106
- * @return hex string or undefined
107
- */
108
- export function toHexString(value) {
109
- if (value === undefined) {
110
- return undefined;
111
- }
112
- if (value instanceof DataView) {
113
- return dataViewToHexString(value);
114
- }
115
- // Uint8Array
116
- return dataViewToHexString(new DataView(value.buffer, value.byteOffset, value.byteLength));
117
- }
118
- /**
119
- * Convert a DataView to a DataView backed by an ArrayBuffer.
120
- * If the DataView is backed by a SharedArrayBuffer, this creates a copy.
121
- * Otherwise, returns the original DataView.
122
- * @param value DataView to convert
123
- * @return DataView backed by ArrayBuffer
124
- */
125
- export function toArrayBufferDataView(value) {
126
- if (value.buffer instanceof SharedArrayBuffer) {
127
- // Need to copy to a regular ArrayBuffer
128
- const uint8Array = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
129
- const buffer = uint8Array.slice().buffer;
130
- return new DataView(buffer);
131
- }
132
- // Already an ArrayBuffer, use directly
133
- return value;
134
- }
1
+ /**
2
+ * Convert an array of numbers into a DataView.
3
+ */
4
+ export function numbersToDataView(value) {
5
+ return new DataView(Uint8Array.from(value).buffer);
6
+ }
7
+ /**
8
+ * Convert a DataView into an array of numbers.
9
+ */
10
+ export function dataViewToNumbers(value) {
11
+ return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
12
+ }
13
+ /**
14
+ * Convert a string into a DataView.
15
+ */
16
+ export function textToDataView(value) {
17
+ return numbersToDataView(value.split('').map((s) => s.charCodeAt(0)));
18
+ }
19
+ /**
20
+ * Convert a DataView into a string.
21
+ */
22
+ export function dataViewToText(value) {
23
+ return String.fromCharCode(...dataViewToNumbers(value));
24
+ }
25
+ /**
26
+ * Convert a 16 bit UUID into a 128 bit UUID string
27
+ * @param value number, e.g. 0x180d
28
+ * @return string, e.g. '0000180d-0000-1000-8000-00805f9b34fb'
29
+ */
30
+ export function numberToUUID(value) {
31
+ return `0000${value.toString(16).padStart(4, '0')}-0000-1000-8000-00805f9b34fb`;
32
+ }
33
+ /**
34
+ * Convert a string of hex into a DataView of raw bytes.
35
+ * Note: characters other than [0-9a-fA-F] are ignored
36
+ * @param hex string of values, e.g. "00 01 02" or "000102"
37
+ * @return DataView of raw bytes
38
+ */
39
+ export function hexStringToDataView(hex) {
40
+ const bin = [];
41
+ let i, c, isEmpty = 1, buffer = 0;
42
+ for (i = 0; i < hex.length; i++) {
43
+ c = hex.charCodeAt(i);
44
+ if ((c > 47 && c < 58) || (c > 64 && c < 71) || (c > 96 && c < 103)) {
45
+ buffer = (buffer << 4) ^ ((c > 64 ? c + 9 : c) & 15);
46
+ if ((isEmpty ^= 1)) {
47
+ bin.push(buffer & 0xff);
48
+ }
49
+ }
50
+ }
51
+ return numbersToDataView(bin);
52
+ }
53
+ export function dataViewToHexString(value) {
54
+ return dataViewToNumbers(value)
55
+ .map((n) => {
56
+ let s = n.toString(16);
57
+ if (s.length == 1) {
58
+ s = '0' + s;
59
+ }
60
+ return s;
61
+ })
62
+ .join('');
63
+ }
64
+ export function webUUIDToString(uuid) {
65
+ if (typeof uuid === 'string') {
66
+ return uuid;
67
+ }
68
+ else if (typeof uuid === 'number') {
69
+ return numberToUUID(uuid);
70
+ }
71
+ else {
72
+ throw new Error('Invalid UUID');
73
+ }
74
+ }
75
+ export function mapToObject(map) {
76
+ const obj = {};
77
+ if (!map) {
78
+ return undefined;
79
+ }
80
+ map.forEach((value, key) => {
81
+ obj[key.toString()] = value;
82
+ });
83
+ return obj;
84
+ }
85
+ /**
86
+ * Convert Data or Uint8Array to Uint8Array.
87
+ * @param value DataView, Uint8Array, or undefined
88
+ * @return Uint8Array or undefined
89
+ */
90
+ export function toUint8Array(value) {
91
+ if (value === undefined) {
92
+ return undefined;
93
+ }
94
+ if (typeof value === 'string') {
95
+ const dataView = hexStringToDataView(value);
96
+ return new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength);
97
+ }
98
+ if (value instanceof DataView) {
99
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
100
+ }
101
+ return value; // Already Uint8Array
102
+ }
103
+ /**
104
+ * Convert Data, Uint8Array, or string to hex string.
105
+ * @param value DataView, Uint8Array, or undefined
106
+ * @return hex string or undefined
107
+ */
108
+ export function toHexString(value) {
109
+ if (value === undefined) {
110
+ return undefined;
111
+ }
112
+ if (value instanceof DataView) {
113
+ return dataViewToHexString(value);
114
+ }
115
+ // Uint8Array
116
+ return dataViewToHexString(new DataView(value.buffer, value.byteOffset, value.byteLength));
117
+ }
118
+ /**
119
+ * Convert a DataView to a DataView backed by an ArrayBuffer.
120
+ * If the DataView is backed by a SharedArrayBuffer, this creates a copy.
121
+ * Otherwise, returns the original DataView.
122
+ * @param value DataView to convert
123
+ * @return DataView backed by ArrayBuffer
124
+ */
125
+ export function toArrayBufferDataView(value) {
126
+ if (value.buffer instanceof SharedArrayBuffer) {
127
+ // Need to copy to a regular ArrayBuffer
128
+ const uint8Array = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
129
+ const buffer = uint8Array.slice().buffer;
130
+ return new DataView(buffer);
131
+ }
132
+ // Already an ArrayBuffer, use directly
133
+ return value;
134
+ }
135
135
  //# sourceMappingURL=conversion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/conversion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Convert an array of numbers into a DataView.\n */\nexport function numbersToDataView(value: number[]): DataView {\n return new DataView(Uint8Array.from(value).buffer);\n}\n\n/**\n * Convert a DataView into an array of numbers.\n */\nexport function dataViewToNumbers(value: DataView): number[] {\n return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\n}\n\n/**\n * Convert a string into a DataView.\n */\nexport function textToDataView(value: string): DataView {\n return numbersToDataView(value.split('').map((s) => s.charCodeAt(0)));\n}\n\n/**\n * Convert a DataView into a string.\n */\nexport function dataViewToText(value: DataView): string {\n return String.fromCharCode(...dataViewToNumbers(value));\n}\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: number): string {\n return `0000${value.toString(16).padStart(4, '0')}-0000-1000-8000-00805f9b34fb`;\n}\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: string): DataView {\n const bin = [];\n let i,\n c,\n isEmpty = 1,\n 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}\n\nexport function dataViewToHexString(value: DataView): string {\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}\n\nexport function webUUIDToString(uuid: string | number): string {\n if (typeof uuid === 'string') {\n return uuid;\n } else if (typeof uuid === 'number') {\n return numberToUUID(uuid);\n } else {\n throw new Error('Invalid UUID');\n }\n}\n\nexport function mapToObject<V>(map?: Map<string | number, V>): { [key: string]: V } | undefined {\n const obj: { [key: string]: V } = {};\n if (!map) {\n return undefined;\n }\n map.forEach((value, key) => {\n obj[key.toString()] = value;\n });\n return obj;\n}\n\n/**\n * Convert Data or Uint8Array to Uint8Array.\n * @param value DataView, Uint8Array, or undefined\n * @return Uint8Array or undefined\n */\nexport function toUint8Array(value: DataView | Uint8Array | undefined): Uint8Array | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === 'string') {\n const dataView = hexStringToDataView(value);\n return new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength);\n }\n if (value instanceof DataView) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n return value; // Already Uint8Array\n}\n\n/**\n * Convert Data, Uint8Array, or string to hex string.\n * @param value DataView, Uint8Array, or undefined\n * @return hex string or undefined\n */\nexport function toHexString(value: DataView | Uint8Array | undefined): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value instanceof DataView) {\n return dataViewToHexString(value);\n }\n // Uint8Array\n return dataViewToHexString(new DataView(value.buffer, value.byteOffset, value.byteLength));\n}\n\n/**\n * Convert a DataView to a DataView backed by an ArrayBuffer.\n * If the DataView is backed by a SharedArrayBuffer, this creates a copy.\n * Otherwise, returns the original DataView.\n * @param value DataView to convert\n * @return DataView backed by ArrayBuffer\n */\nexport function toArrayBufferDataView(value: DataView): DataView & { buffer: ArrayBuffer } {\n if (value.buffer instanceof SharedArrayBuffer) {\n // Need to copy to a regular ArrayBuffer\n const uint8Array = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n const buffer = uint8Array.slice().buffer;\n return new DataView(buffer) as DataView & { buffer: ArrayBuffer };\n }\n // Already an ArrayBuffer, use directly\n return value as DataView & { buffer: ArrayBuffer };\n}\n"]}
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/conversion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Convert an array of numbers into a DataView.\r\n */\r\nexport function numbersToDataView(value: number[]): DataView {\r\n return new DataView(Uint8Array.from(value).buffer);\r\n}\r\n\r\n/**\r\n * Convert a DataView into an array of numbers.\r\n */\r\nexport function dataViewToNumbers(value: DataView): number[] {\r\n return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\r\n}\r\n\r\n/**\r\n * Convert a string into a DataView.\r\n */\r\nexport function textToDataView(value: string): DataView {\r\n return numbersToDataView(value.split('').map((s) => s.charCodeAt(0)));\r\n}\r\n\r\n/**\r\n * Convert a DataView into a string.\r\n */\r\nexport function dataViewToText(value: DataView): string {\r\n return String.fromCharCode(...dataViewToNumbers(value));\r\n}\r\n\r\n/**\r\n * Convert a 16 bit UUID into a 128 bit UUID string\r\n * @param value number, e.g. 0x180d\r\n * @return string, e.g. '0000180d-0000-1000-8000-00805f9b34fb'\r\n */\r\nexport function numberToUUID(value: number): string {\r\n return `0000${value.toString(16).padStart(4, '0')}-0000-1000-8000-00805f9b34fb`;\r\n}\r\n\r\n/**\r\n * Convert a string of hex into a DataView of raw bytes.\r\n * Note: characters other than [0-9a-fA-F] are ignored\r\n * @param hex string of values, e.g. \"00 01 02\" or \"000102\"\r\n * @return DataView of raw bytes\r\n */\r\nexport function hexStringToDataView(hex: string): DataView {\r\n const bin = [];\r\n let i,\r\n c,\r\n isEmpty = 1,\r\n buffer = 0;\r\n for (i = 0; i < hex.length; i++) {\r\n c = hex.charCodeAt(i);\r\n if ((c > 47 && c < 58) || (c > 64 && c < 71) || (c > 96 && c < 103)) {\r\n buffer = (buffer << 4) ^ ((c > 64 ? c + 9 : c) & 15);\r\n if ((isEmpty ^= 1)) {\r\n bin.push(buffer & 0xff);\r\n }\r\n }\r\n }\r\n return numbersToDataView(bin);\r\n}\r\n\r\nexport function dataViewToHexString(value: DataView): string {\r\n return dataViewToNumbers(value)\r\n .map((n) => {\r\n let s = n.toString(16);\r\n if (s.length == 1) {\r\n s = '0' + s;\r\n }\r\n return s;\r\n })\r\n .join('');\r\n}\r\n\r\nexport function webUUIDToString(uuid: string | number): string {\r\n if (typeof uuid === 'string') {\r\n return uuid;\r\n } else if (typeof uuid === 'number') {\r\n return numberToUUID(uuid);\r\n } else {\r\n throw new Error('Invalid UUID');\r\n }\r\n}\r\n\r\nexport function mapToObject<V>(map?: Map<string | number, V>): { [key: string]: V } | undefined {\r\n const obj: { [key: string]: V } = {};\r\n if (!map) {\r\n return undefined;\r\n }\r\n map.forEach((value, key) => {\r\n obj[key.toString()] = value;\r\n });\r\n return obj;\r\n}\r\n\r\n/**\r\n * Convert Data or Uint8Array to Uint8Array.\r\n * @param value DataView, Uint8Array, or undefined\r\n * @return Uint8Array or undefined\r\n */\r\nexport function toUint8Array(value: DataView | Uint8Array | undefined): Uint8Array | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n if (typeof value === 'string') {\r\n const dataView = hexStringToDataView(value);\r\n return new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength);\r\n }\r\n if (value instanceof DataView) {\r\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\r\n }\r\n return value; // Already Uint8Array\r\n}\r\n\r\n/**\r\n * Convert Data, Uint8Array, or string to hex string.\r\n * @param value DataView, Uint8Array, or undefined\r\n * @return hex string or undefined\r\n */\r\nexport function toHexString(value: DataView | Uint8Array | undefined): string | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n if (value instanceof DataView) {\r\n return dataViewToHexString(value);\r\n }\r\n // Uint8Array\r\n return dataViewToHexString(new DataView(value.buffer, value.byteOffset, value.byteLength));\r\n}\r\n\r\n/**\r\n * Convert a DataView to a DataView backed by an ArrayBuffer.\r\n * If the DataView is backed by a SharedArrayBuffer, this creates a copy.\r\n * Otherwise, returns the original DataView.\r\n * @param value DataView to convert\r\n * @return DataView backed by ArrayBuffer\r\n */\r\nexport function toArrayBufferDataView(value: DataView): DataView & { buffer: ArrayBuffer } {\r\n if (value.buffer instanceof SharedArrayBuffer) {\r\n // Need to copy to a regular ArrayBuffer\r\n const uint8Array = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\r\n const buffer = uint8Array.slice().buffer;\r\n return new DataView(buffer) as DataView & { buffer: ArrayBuffer };\r\n }\r\n // Already an ArrayBuffer, use directly\r\n return value as DataView & { buffer: ArrayBuffer };\r\n}\r\n"]}