@matter/nodejs-ble 0.16.0-alpha.0-20250809-ee8375bcb → 0.16.0-alpha.0-20250812-285b75d83

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 (58) hide show
  1. package/dist/cjs/BlenoBleServer.d.ts +1 -1
  2. package/dist/cjs/BlenoBleServer.d.ts.map +1 -1
  3. package/dist/cjs/BlenoBleServer.js +3 -2
  4. package/dist/cjs/BlenoBleServer.js.map +1 -1
  5. package/dist/cjs/{BlePeripheralInterface.d.ts → BlenoPeripheralInterface.d.ts} +5 -2
  6. package/dist/cjs/BlenoPeripheralInterface.d.ts.map +1 -0
  7. package/dist/cjs/{BlePeripheralInterface.js → BlenoPeripheralInterface.js} +12 -6
  8. package/dist/cjs/{BlePeripheralInterface.js.map → BlenoPeripheralInterface.js.map} +2 -2
  9. package/dist/cjs/NobleBleChannel.js +2 -2
  10. package/dist/cjs/NobleBleChannel.js.map +1 -1
  11. package/dist/cjs/NobleBleClient.js +3 -3
  12. package/dist/cjs/NobleBleClient.js.map +1 -1
  13. package/dist/cjs/NodeJsBle.d.ts +6 -6
  14. package/dist/cjs/NodeJsBle.d.ts.map +1 -1
  15. package/dist/cjs/NodeJsBle.js +7 -15
  16. package/dist/cjs/NodeJsBle.js.map +1 -1
  17. package/dist/cjs/index.d.ts +0 -1
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +0 -1
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/esm/BlenoBleServer.d.ts +1 -1
  22. package/dist/esm/BlenoBleServer.d.ts.map +1 -1
  23. package/dist/esm/BlenoBleServer.js +4 -3
  24. package/dist/esm/BlenoBleServer.js.map +1 -1
  25. package/dist/esm/{BlePeripheralInterface.d.ts → BlenoPeripheralInterface.d.ts} +5 -2
  26. package/dist/esm/BlenoPeripheralInterface.d.ts.map +1 -0
  27. package/dist/esm/{BlePeripheralInterface.js → BlenoPeripheralInterface.js} +9 -3
  28. package/dist/esm/{BlePeripheralInterface.js.map → BlenoPeripheralInterface.js.map} +2 -2
  29. package/dist/esm/NobleBleChannel.js +3 -3
  30. package/dist/esm/NobleBleChannel.js.map +1 -1
  31. package/dist/esm/NobleBleClient.js +4 -4
  32. package/dist/esm/NobleBleClient.js.map +1 -1
  33. package/dist/esm/NodeJsBle.d.ts +6 -6
  34. package/dist/esm/NodeJsBle.d.ts.map +1 -1
  35. package/dist/esm/NodeJsBle.js +7 -15
  36. package/dist/esm/NodeJsBle.js.map +1 -1
  37. package/dist/esm/index.d.ts +0 -1
  38. package/dist/esm/index.d.ts.map +1 -1
  39. package/dist/esm/index.js +0 -1
  40. package/dist/esm/index.js.map +1 -1
  41. package/package.json +5 -5
  42. package/src/BlenoBleServer.ts +5 -3
  43. package/src/{BlePeripheralInterface.ts → BlenoPeripheralInterface.ts} +10 -1
  44. package/src/NobleBleChannel.ts +3 -3
  45. package/src/NobleBleClient.ts +4 -4
  46. package/src/NodeJsBle.ts +10 -19
  47. package/src/index.ts +0 -1
  48. package/dist/cjs/BleBroadcaster.d.ts +0 -20
  49. package/dist/cjs/BleBroadcaster.d.ts.map +0 -1
  50. package/dist/cjs/BleBroadcaster.js +0 -121
  51. package/dist/cjs/BleBroadcaster.js.map +0 -6
  52. package/dist/cjs/BlePeripheralInterface.d.ts.map +0 -1
  53. package/dist/esm/BleBroadcaster.d.ts +0 -20
  54. package/dist/esm/BleBroadcaster.d.ts.map +0 -1
  55. package/dist/esm/BleBroadcaster.js +0 -104
  56. package/dist/esm/BleBroadcaster.js.map +0 -6
  57. package/dist/esm/BlePeripheralInterface.d.ts.map +0 -1
  58. package/src/BleBroadcaster.ts +0 -127
@@ -1,104 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { ImplementationError, Logger } from "#general";
7
- import {
8
- BtpCodec,
9
- CommissioningMode
10
- } from "#protocol";
11
- const logger = Logger.get("BleBroadcaster");
12
- class BleBroadcaster {
13
- #blenoServer;
14
- #additionalAdvertisementData;
15
- #vendorId;
16
- #productId;
17
- #discriminator;
18
- #advertise = false;
19
- #isClosed = false;
20
- constructor(blenoServer, additionalAdvertisementData) {
21
- this.#blenoServer = blenoServer;
22
- this.#additionalAdvertisementData = additionalAdvertisementData;
23
- }
24
- async setCommissionMode(mode, { name: deviceName, deviceType, vendorId, productId, discriminator }) {
25
- this.#assertOpen();
26
- if (mode !== CommissioningMode.Basic) {
27
- this.#advertise = false;
28
- logger.info(
29
- `skip BLE announce because of commissioning mode ${mode} ${deviceName} ${deviceType} ${vendorId} ${productId} ${discriminator}`
30
- );
31
- await this.#blenoServer.stopAdvertising();
32
- return;
33
- }
34
- logger.debug(
35
- `set data for commissioning mode ${mode} ${deviceName} ${deviceType} ${vendorId} ${productId} ${discriminator}`
36
- );
37
- this.#productId = productId;
38
- this.#vendorId = vendorId;
39
- this.#discriminator = discriminator;
40
- process.env["BLENO_DEVICE_NAME"] = deviceName;
41
- this.#advertise = true;
42
- }
43
- async setFabrics() {
44
- this.#assertOpen();
45
- this.#advertise = false;
46
- logger.debug(`skip BLE announce because announcing an operational device is not supported`);
47
- await this.#blenoServer.stopAdvertising();
48
- return;
49
- }
50
- async setCommissionerInfo(_commissionerData) {
51
- this.#assertOpen();
52
- this.#advertise = false;
53
- logger.error(`skip BLE announce because announcing a commissioner is not supported`);
54
- }
55
- async announce() {
56
- this.#assertOpen();
57
- if (this.#vendorId === void 0 || this.#productId === void 0 || this.#discriminator === void 0) {
58
- logger.debug(
59
- `skip BLE announce because of missing commissioning data vendorId, productId or discriminator`
60
- );
61
- return;
62
- }
63
- if (!this.#advertise) {
64
- logger.debug(`skip BLE announce because nothing to advertise`);
65
- return;
66
- }
67
- const advertisementData = BtpCodec.encodeBleAdvertisementData(
68
- this.#discriminator,
69
- this.#vendorId,
70
- this.#productId,
71
- this.#additionalAdvertisementData !== void 0 && this.#additionalAdvertisementData.length > 0
72
- );
73
- process.env["BLENO_ADVERTISING_INTERVAL"] = "100";
74
- await this.#blenoServer.advertise(advertisementData, this.#additionalAdvertisementData);
75
- }
76
- async expireCommissioningAnnouncement() {
77
- this.#assertOpen();
78
- this.#advertise = false;
79
- await this.#blenoServer.stopAdvertising();
80
- }
81
- async expireFabricAnnouncement() {
82
- }
83
- async expireAllAnnouncements() {
84
- this.#assertOpen();
85
- this.#advertise = false;
86
- await this.#blenoServer.stopAdvertising();
87
- }
88
- async close() {
89
- if (this.#isClosed) {
90
- return;
91
- }
92
- this.#isClosed = true;
93
- await this.#blenoServer.stopAdvertising();
94
- }
95
- #assertOpen() {
96
- if (this.#isClosed) {
97
- throw new ImplementationError("Illegal operation on closed BleBroadcaster");
98
- }
99
- }
100
- }
101
- export {
102
- BleBroadcaster
103
- };
104
- //# sourceMappingURL=BleBroadcaster.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/BleBroadcaster.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB,cAAc;AAC5C;AAAA,EACI;AAAA,EAEA;AAAA,OAGG;AAIP,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAEnC,MAAM,eAA8C;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,YAAY,aAA6B,6BAA0C;AAC/E,SAAK,eAAe;AACpB,SAAK,+BAA+B;AAAA,EACxC;AAAA,EAEA,MAAM,kBACF,MACA,EAAE,MAAM,YAAY,YAAY,UAAU,WAAW,cAAc,GACrE;AACE,SAAK,YAAY;AACjB,QAAI,SAAS,kBAAkB,OAAO;AAClC,WAAK,aAAa;AAClB,aAAO;AAAA,QACH,mDAAmD,IAAI,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa;AAAA,MACjI;AACA,YAAM,KAAK,aAAa,gBAAgB;AACxC;AAAA,IACJ;AACA,WAAO;AAAA,MACH,mCAAmC,IAAI,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa;AAAA,IACjH;AACA,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,iBAAiB;AACtB,YAAQ,IAAI,mBAAmB,IAAI;AACnC,SAAK,aAAa;AAAA,EACtB;AAAA,EAEA,MAAM,aAAa;AACf,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,WAAO,MAAM,6EAA6E;AAC1F,UAAM,KAAK,aAAa,gBAAgB;AACxC;AAAA,EACJ;AAAA,EAEA,MAAM,oBAAoB,mBAA6C;AACnE,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,WAAO,MAAM,sEAAsE;AAAA,EACvF;AAAA,EAEA,MAAM,WAAW;AACb,SAAK,YAAY;AACjB,QAAI,KAAK,cAAc,UAAa,KAAK,eAAe,UAAa,KAAK,mBAAmB,QAAW;AACpG,aAAO;AAAA,QACH;AAAA,MACJ;AACA;AAAA,IACJ;AACA,QAAI,CAAC,KAAK,YAAY;AAClB,aAAO,MAAM,gDAAgD;AAC7D;AAAA,IACJ;AAEA,UAAM,oBAAoB,SAAS;AAAA,MAC/B,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,iCAAiC,UAAa,KAAK,6BAA6B,SAAS;AAAA,IAClG;AAGA,YAAQ,IAAI,4BAA4B,IAAI;AAE5C,UAAM,KAAK,aAAa,UAAU,mBAAmB,KAAK,4BAA4B;AAAA,EAC1F;AAAA,EAEA,MAAM,kCAAkC;AACpC,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,UAAM,KAAK,aAAa,gBAAgB;AAAA,EAC5C;AAAA,EAEA,MAAM,2BAA2B;AAAA,EAEjC;AAAA,EAEA,MAAM,yBAAyB;AAC3B,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,UAAM,KAAK,aAAa,gBAAgB;AAAA,EAC5C;AAAA,EAEA,MAAM,QAAQ;AACV,QAAI,KAAK,WAAW;AAChB;AAAA,IACJ;AACA,SAAK,YAAY;AAEjB,UAAM,KAAK,aAAa,gBAAgB;AAAA,EAC5C;AAAA,EAEA,cAAc;AACV,QAAI,KAAK,WAAW;AAChB,YAAM,IAAI,oBAAoB,4CAA4C;AAAA,IAC9E;AAAA,EACJ;AACJ;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlePeripheralInterface.d.ts","sourceRoot":"","sources":["../../src/BlePeripheralInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qBAAa,sBAAuB,YAAW,kBAAkB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,cAAc;IAGxD,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,kBAAkB,CAAC,QAAQ;IAOhG,KAAK;IAIX,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;CAW/C"}
@@ -1,127 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- import { ImplementationError, Logger } from "#general";
8
- import {
9
- BtpCodec,
10
- CommissionerInstanceData,
11
- CommissioningMode,
12
- CommissioningModeInstanceData,
13
- InstanceBroadcaster,
14
- } from "#protocol";
15
- import { VendorId } from "#types";
16
- import { BlenoBleServer } from "./BlenoBleServer.js";
17
-
18
- const logger = Logger.get("BleBroadcaster");
19
-
20
- export class BleBroadcaster implements InstanceBroadcaster {
21
- #blenoServer: BlenoBleServer;
22
- #additionalAdvertisementData?: Uint8Array;
23
- #vendorId: VendorId | undefined;
24
- #productId: number | undefined;
25
- #discriminator: number | undefined;
26
- #advertise = false;
27
- #isClosed = false;
28
-
29
- constructor(blenoServer: BlenoBleServer, additionalAdvertisementData?: Uint8Array) {
30
- this.#blenoServer = blenoServer;
31
- this.#additionalAdvertisementData = additionalAdvertisementData;
32
- }
33
-
34
- async setCommissionMode(
35
- mode: number,
36
- { name: deviceName, deviceType, vendorId, productId, discriminator }: CommissioningModeInstanceData,
37
- ) {
38
- this.#assertOpen();
39
- if (mode !== CommissioningMode.Basic) {
40
- this.#advertise = false;
41
- logger.info(
42
- `skip BLE announce because of commissioning mode ${mode} ${deviceName} ${deviceType} ${vendorId} ${productId} ${discriminator}`,
43
- );
44
- await this.#blenoServer.stopAdvertising();
45
- return;
46
- }
47
- logger.debug(
48
- `set data for commissioning mode ${mode} ${deviceName} ${deviceType} ${vendorId} ${productId} ${discriminator}`,
49
- );
50
- this.#productId = productId;
51
- this.#vendorId = vendorId;
52
- this.#discriminator = discriminator;
53
- process.env["BLENO_DEVICE_NAME"] = deviceName;
54
- this.#advertise = true;
55
- }
56
-
57
- async setFabrics() {
58
- this.#assertOpen();
59
- this.#advertise = false;
60
- logger.debug(`skip BLE announce because announcing an operational device is not supported`);
61
- await this.#blenoServer.stopAdvertising();
62
- return; // Not needed because we only advertise un-commissioned devices
63
- }
64
-
65
- async setCommissionerInfo(_commissionerData: CommissionerInstanceData) {
66
- this.#assertOpen();
67
- this.#advertise = false;
68
- logger.error(`skip BLE announce because announcing a commissioner is not supported`);
69
- }
70
-
71
- async announce() {
72
- this.#assertOpen();
73
- if (this.#vendorId === undefined || this.#productId === undefined || this.#discriminator === undefined) {
74
- logger.debug(
75
- `skip BLE announce because of missing commissioning data vendorId, productId or discriminator`,
76
- );
77
- return;
78
- }
79
- if (!this.#advertise) {
80
- logger.debug(`skip BLE announce because nothing to advertise`);
81
- return;
82
- }
83
-
84
- const advertisementData = BtpCodec.encodeBleAdvertisementData(
85
- this.#discriminator,
86
- this.#vendorId,
87
- this.#productId,
88
- this.#additionalAdvertisementData !== undefined && this.#additionalAdvertisementData.length > 0,
89
- );
90
-
91
- // TODO if needed implement this according to the spec 5.4.2.5.3. (first 30s 20-60ms, 150-1285ms after)
92
- process.env["BLENO_ADVERTISING_INTERVAL"] = "100"; // use statically 100ms for now
93
-
94
- await this.#blenoServer.advertise(advertisementData, this.#additionalAdvertisementData);
95
- }
96
-
97
- async expireCommissioningAnnouncement() {
98
- this.#assertOpen();
99
- this.#advertise = false;
100
- await this.#blenoServer.stopAdvertising();
101
- }
102
-
103
- async expireFabricAnnouncement() {
104
- // nothing to do
105
- }
106
-
107
- async expireAllAnnouncements() {
108
- this.#assertOpen();
109
- this.#advertise = false;
110
- await this.#blenoServer.stopAdvertising();
111
- }
112
-
113
- async close() {
114
- if (this.#isClosed) {
115
- return;
116
- }
117
- this.#isClosed = true;
118
-
119
- await this.#blenoServer.stopAdvertising();
120
- }
121
-
122
- #assertOpen() {
123
- if (this.#isClosed) {
124
- throw new ImplementationError("Illegal operation on closed BleBroadcaster");
125
- }
126
- }
127
- }