@matter/nodejs-ble 0.16.0-alpha.0-20250912-0d12bf718 → 0.16.0-alpha.0-20250916-d577beb1d
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/README.md +20 -15
- package/dist/cjs/NodeJsBle.d.ts.map +1 -1
- package/dist/cjs/NodeJsBle.js +9 -0
- package/dist/cjs/NodeJsBle.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/install.d.ts +7 -0
- package/dist/cjs/install.d.ts.map +1 -0
- package/dist/cjs/install.js +29 -0
- package/dist/cjs/install.js.map +6 -0
- package/dist/esm/NodeJsBle.d.ts.map +1 -1
- package/dist/esm/NodeJsBle.js +9 -0
- package/dist/esm/NodeJsBle.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/install.d.ts +7 -0
- package/dist/esm/install.d.ts.map +1 -0
- package/dist/esm/install.js +28 -0
- package/dist/esm/install.js.map +6 -0
- package/package.json +6 -6
- package/src/NodeJsBle.ts +9 -0
- package/src/index.ts +2 -0
- package/src/install.ts +33 -0
package/README.md
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
Matter BLE support using bleno for Peripheral/Device side and noble (not implemented yet) for Central/Controller side.
|
|
6
6
|
|
|
7
|
-
> This package supports all Node.js LTS versions starting with
|
|
7
|
+
> This package supports all Node.js LTS versions starting with 20.x
|
|
8
8
|
|
|
9
|
-
This package contains the specific Platform implementations for Bluetooth LE with Node.js. It is designed to be used in addition to the
|
|
9
|
+
This package contains the specific Platform implementations for Bluetooth LE with Node.js. It is designed to be used in addition to the `@matter/nodejs` package to enable BLE specific functionality.
|
|
10
10
|
|
|
11
11
|
## Prerequisites and Limitations
|
|
12
12
|
|
|
@@ -25,28 +25,33 @@ The used packages have some limitations and prerequisites. Please check the Read
|
|
|
25
25
|
> [TIP] For Linux: The :`make` and `g++` packages must be installed.
|
|
26
26
|
|
|
27
27
|
## How to use this package
|
|
28
|
-
This package
|
|
28
|
+
This package adds BLE support to matter.js on Node.js. It is not intended to be used standalone.
|
|
29
29
|
|
|
30
30
|
Add this package to your package dependencies and make sure it is exactly the same version as matter.js and matter-node.js.
|
|
31
31
|
|
|
32
|
-
In your code you register the BLE instance by
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
import
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
In your code you register the BLE instance by importing the package:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import "@matter/nodejs-ble";
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
In addition to importing the module, you also need to explicitly enable BLE:
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
Environment.default.vars.set("ble.enable", true);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
If you need to modify the HCI ID you can do so using a configuration variable:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
Environment.default.vars.set("ble.hci.id", 1);
|
|
43
48
|
```
|
|
44
49
|
|
|
45
50
|
The relevant classes in matter.js will detect the registration and use the BLE instance for BLE operations if needed.
|
|
46
51
|
|
|
47
52
|
## How to choose the HCI device (Linux)
|
|
48
53
|
|
|
49
|
-
You can optionally set an options object when instantiating
|
|
54
|
+
You can optionally set an options object when instantiating NodejsBle. This object can have the following properties:
|
|
50
55
|
* hciId: HCI ID (number) of the HCI device to use. If not set, ID 0 is used
|
|
51
56
|
|
|
52
57
|
## Building
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKzE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;gBAQlB,OAAO,CAAC,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKzE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;gBAQlB,OAAO,CAAC,EAAE,UAAU;IA4BhC,IAAI,mBAAmB,IAAI,wBAAwB,CAKlD;IAED,IAAI,gBAAgB,IAAI,YAAY,CAKnC;IAED,IAAI,OAAO,IAAI,OAAO,CAKrB;CACJ"}
|
package/dist/cjs/NodeJsBle.js
CHANGED
|
@@ -42,6 +42,15 @@ class NodeJsBle extends import_protocol.Ble {
|
|
|
42
42
|
constructor(options) {
|
|
43
43
|
super();
|
|
44
44
|
this.#options = options;
|
|
45
|
+
if (options?.environment && options.hciId === void 0) {
|
|
46
|
+
const hciId = options.environment.vars.number("ble.hci.id");
|
|
47
|
+
if (hciId !== void 0) {
|
|
48
|
+
this.#options = {
|
|
49
|
+
...options,
|
|
50
|
+
hciId
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
45
54
|
}
|
|
46
55
|
get #blePeripheralServer() {
|
|
47
56
|
if (this.#blePeripheralInstance === void 0) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/NodeJsBle.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,sBAA6B;AAC7B,4BAA+B;AAC/B,sCAAyC;AACzC,wBAA2B;AAC3B,6BAAyC;AACzC,4BAA+B;AAZ/B;AAAA;AAAA;AAAA;AAAA;AAmBO,MAAM,kBAAkB,oBAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,SAAsB;AAC9B,UAAM;AACN,SAAK,WAAW;AAAA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,sBAA6B;AAC7B,4BAA+B;AAC/B,sCAAyC;AACzC,wBAA2B;AAC3B,6BAAyC;AACzC,4BAA+B;AAZ/B;AAAA;AAAA;AAAA;AAAA;AAmBO,MAAM,kBAAkB,oBAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,SAAsB;AAC9B,UAAM;AACN,SAAK,WAAW;AAChB,QAAI,SAAS,eAAe,QAAQ,UAAU,QAAW;AACrD,YAAM,QAAQ,QAAQ,YAAY,KAAK,OAAO,YAAY;AAC1D,UAAI,UAAU,QAAW;AACrB,aAAK,WAAW;AAAA,UACZ,GAAG;AAAA,UACH;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,uBAAuB;AACvB,QAAI,KAAK,2BAA2B,QAAW;AAC3C,WAAK,yBAAyB,IAAI,qCAAe,KAAK,QAAQ;AAAA,IAClE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,oBAAoB;AACpB,QAAI,KAAK,wBAAwB,QAAW;AACxC,WAAK,sBAAsB,IAAI,qCAAe,KAAK,QAAQ;AAAA,IAC/D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,sBAAgD;AAChD,QAAI,KAAK,4BAA4B,QAAW;AAC5C,WAAK,0BAA0B,IAAI,yDAAyB,KAAK,oBAAoB;AAAA,IACzF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,mBAAiC;AACjC,QAAI,KAAK,yBAAyB,QAAW;AACzC,WAAK,uBAAuB,IAAI,gDAAyB,KAAK,OAAqB;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAmB;AACnB,QAAI,KAAK,gBAAgB,QAAW;AAChC,WAAK,cAAc,IAAI,6BAAW,KAAK,iBAAiB;AAAA,IAC5D;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,cAAc,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -17,6 +17,7 @@ var src_exports = {};
|
|
|
17
17
|
module.exports = __toCommonJS(src_exports);
|
|
18
18
|
__reExport(src_exports, require("./BleScanner.js"), module.exports);
|
|
19
19
|
__reExport(src_exports, require("./NodeJsBle.js"), module.exports);
|
|
20
|
+
var import_install = require("./install.js");
|
|
20
21
|
/**
|
|
21
22
|
* @license
|
|
22
23
|
* Copyright 2022-2025 Matter.js Authors
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,4BANd;AAOA,wBAAc,2BAPd;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,4BANd;AAOA,wBAAc,2BAPd;AASA,qBAAO;AATP;AAAA;AAAA;AAAA;AAAA;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_general = require("#general");
|
|
3
|
+
var import_protocol = require("#protocol");
|
|
4
|
+
var import_NodeJsBle = require("./NodeJsBle.js");
|
|
5
|
+
/**
|
|
6
|
+
* @license
|
|
7
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
8
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
*/
|
|
10
|
+
function nodejsBle(env) {
|
|
11
|
+
let installed = false;
|
|
12
|
+
let instance = void 0;
|
|
13
|
+
env.vars.use(() => {
|
|
14
|
+
const shouldInstall = env.vars.boolean("ble.enable");
|
|
15
|
+
if (shouldInstall === installed) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (shouldInstall) {
|
|
19
|
+
instance = new import_NodeJsBle.NodeJsBle({ environment: env });
|
|
20
|
+
env.set(import_protocol.Ble, instance);
|
|
21
|
+
} else {
|
|
22
|
+
env.delete(import_protocol.Ble, instance);
|
|
23
|
+
instance = void 0;
|
|
24
|
+
}
|
|
25
|
+
installed = shouldInstall;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
import_general.ServiceBundle.default.add(nodejsBle);
|
|
29
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/install.ts"],
|
|
4
|
+
"mappings": ";AAMA,qBAA2C;AAC3C,sBAAoB;AACpB,uBAA0B;AAR1B;AAAA;AAAA;AAAA;AAAA;AAUA,SAAS,UAAU,KAAkB;AACjC,MAAI,YAAY;AAChB,MAAI,WAAW;AAEf,MAAI,KAAK,IAAI,MAAM;AACf,UAAM,gBAAgB,IAAI,KAAK,QAAQ,YAAY;AACnD,QAAI,kBAAkB,WAAW;AAC7B;AAAA,IACJ;AAEA,QAAI,eAAe;AACf,iBAAW,IAAI,2BAAU,EAAE,aAAa,IAAI,CAAC;AAC7C,UAAI,IAAI,qBAAK,QAAQ;AAAA,IACzB,OAAO;AACH,UAAI,OAAO,qBAAK,QAAQ;AACxB,iBAAW;AAAA,IACf;AAEA,gBAAY;AAAA,EAChB,CAAC;AACL;AAEA,6BAAc,QAAQ,IAAI,SAAS;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKzE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;gBAQlB,OAAO,CAAC,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKzE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;gBAQlB,OAAO,CAAC,EAAE,UAAU;IA4BhC,IAAI,mBAAmB,IAAI,wBAAwB,CAKlD;IAED,IAAI,gBAAgB,IAAI,YAAY,CAKnC;IAED,IAAI,OAAO,IAAI,OAAO,CAKrB;CACJ"}
|
package/dist/esm/NodeJsBle.js
CHANGED
|
@@ -19,6 +19,15 @@ class NodeJsBle extends Ble {
|
|
|
19
19
|
constructor(options) {
|
|
20
20
|
super();
|
|
21
21
|
this.#options = options;
|
|
22
|
+
if (options?.environment && options.hciId === void 0) {
|
|
23
|
+
const hciId = options.environment.vars.number("ble.hci.id");
|
|
24
|
+
if (hciId !== void 0) {
|
|
25
|
+
this.#options = {
|
|
26
|
+
...options,
|
|
27
|
+
hciId
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
22
31
|
}
|
|
23
32
|
get #blePeripheralServer() {
|
|
24
33
|
if (this.#blePeripheralInstance === void 0) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/NodeJsBle.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,WAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,gCAAgC;AACzC,SAAS,kBAAkB;AAC3B,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAOxB,MAAM,kBAAkB,IAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,SAAsB;AAC9B,UAAM;AACN,SAAK,WAAW;AAAA,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,WAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,gCAAgC;AACzC,SAAS,kBAAkB;AAC3B,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAOxB,MAAM,kBAAkB,IAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,SAAsB;AAC9B,UAAM;AACN,SAAK,WAAW;AAChB,QAAI,SAAS,eAAe,QAAQ,UAAU,QAAW;AACrD,YAAM,QAAQ,QAAQ,YAAY,KAAK,OAAO,YAAY;AAC1D,UAAI,UAAU,QAAW;AACrB,aAAK,WAAW;AAAA,UACZ,GAAG;AAAA,UACH;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,uBAAuB;AACvB,QAAI,KAAK,2BAA2B,QAAW;AAC3C,WAAK,yBAAyB,IAAI,eAAe,KAAK,QAAQ;AAAA,IAClE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,oBAAoB;AACpB,QAAI,KAAK,wBAAwB,QAAW;AACxC,WAAK,sBAAsB,IAAI,eAAe,KAAK,QAAQ;AAAA,IAC/D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,sBAAgD;AAChD,QAAI,KAAK,4BAA4B,QAAW;AAC5C,WAAK,0BAA0B,IAAI,yBAAyB,KAAK,oBAAoB;AAAA,IACzF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,mBAAiC;AACjC,QAAI,KAAK,yBAAyB,QAAW;AACzC,WAAK,uBAAuB,IAAI,yBAAyB,KAAK,OAAqB;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAmB;AACnB,QAAI,KAAK,gBAAgB,QAAW;AAChC,WAAK,cAAc,IAAI,WAAW,KAAK,iBAAiB;AAAA,IAC5D;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,cAAc,CAAC"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ServiceBundle } from "#general";
|
|
7
|
+
import { Ble } from "#protocol";
|
|
8
|
+
import { NodeJsBle } from "./NodeJsBle.js";
|
|
9
|
+
function nodejsBle(env) {
|
|
10
|
+
let installed = false;
|
|
11
|
+
let instance = void 0;
|
|
12
|
+
env.vars.use(() => {
|
|
13
|
+
const shouldInstall = env.vars.boolean("ble.enable");
|
|
14
|
+
if (shouldInstall === installed) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (shouldInstall) {
|
|
18
|
+
instance = new NodeJsBle({ environment: env });
|
|
19
|
+
env.set(Ble, instance);
|
|
20
|
+
} else {
|
|
21
|
+
env.delete(Ble, instance);
|
|
22
|
+
instance = void 0;
|
|
23
|
+
}
|
|
24
|
+
installed = shouldInstall;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
ServiceBundle.default.add(nodejsBle);
|
|
28
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/install.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAsB,qBAAqB;AAC3C,SAAS,WAAW;AACpB,SAAS,iBAAiB;AAE1B,SAAS,UAAU,KAAkB;AACjC,MAAI,YAAY;AAChB,MAAI,WAAW;AAEf,MAAI,KAAK,IAAI,MAAM;AACf,UAAM,gBAAgB,IAAI,KAAK,QAAQ,YAAY;AACnD,QAAI,kBAAkB,WAAW;AAC7B;AAAA,IACJ;AAEA,QAAI,eAAe;AACf,iBAAW,IAAI,UAAU,EAAE,aAAa,IAAI,CAAC;AAC7C,UAAI,IAAI,KAAK,QAAQ;AAAA,IACzB,OAAO;AACH,UAAI,OAAO,KAAK,QAAQ;AACxB,iBAAW;AAAA,IACf;AAEA,gBAAY;AAAA,EAChB,CAAC;AACL;AAEA,cAAc,QAAQ,IAAI,SAAS;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/nodejs-ble",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20250916-d577beb1d",
|
|
4
4
|
"description": "Matter BLE support for node.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -28,16 +28,16 @@
|
|
|
28
28
|
"build-clean": "matter-build --clean"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
32
|
-
"@matter/protocol": "0.16.0-alpha.0-
|
|
33
|
-
"@matter/types": "0.16.0-alpha.0-
|
|
31
|
+
"@matter/general": "0.16.0-alpha.0-20250916-d577beb1d",
|
|
32
|
+
"@matter/protocol": "0.16.0-alpha.0-20250916-d577beb1d",
|
|
33
|
+
"@matter/types": "0.16.0-alpha.0-20250916-d577beb1d"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
36
|
+
"@matter/tools": "0.16.0-alpha.0-20250916-d577beb1d"
|
|
37
37
|
},
|
|
38
38
|
"optionalDependencies": {
|
|
39
39
|
"@stoprocent/bleno": "^0.11.4",
|
|
40
|
-
"@stoprocent/noble": "^2.3.
|
|
40
|
+
"@stoprocent/noble": "^2.3.6"
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": ">=20.19.0 <22.0.0 || >=22.13.0"
|
package/src/NodeJsBle.ts
CHANGED
|
@@ -28,6 +28,15 @@ export class NodeJsBle extends Ble {
|
|
|
28
28
|
constructor(options?: BleOptions) {
|
|
29
29
|
super();
|
|
30
30
|
this.#options = options;
|
|
31
|
+
if (options?.environment && options.hciId === undefined) {
|
|
32
|
+
const hciId = options.environment.vars.number("ble.hci.id");
|
|
33
|
+
if (hciId !== undefined) {
|
|
34
|
+
this.#options = {
|
|
35
|
+
...options,
|
|
36
|
+
hciId,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
31
40
|
}
|
|
32
41
|
|
|
33
42
|
get #blePeripheralServer() {
|
package/src/index.ts
CHANGED
package/src/install.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Environment, ServiceBundle } from "#general";
|
|
8
|
+
import { Ble } from "#protocol";
|
|
9
|
+
import { NodeJsBle } from "./NodeJsBle.js";
|
|
10
|
+
|
|
11
|
+
function nodejsBle(env: Environment) {
|
|
12
|
+
let installed = false;
|
|
13
|
+
let instance = undefined as undefined | Ble;
|
|
14
|
+
|
|
15
|
+
env.vars.use(() => {
|
|
16
|
+
const shouldInstall = env.vars.boolean("ble.enable");
|
|
17
|
+
if (shouldInstall === installed) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (shouldInstall) {
|
|
22
|
+
instance = new NodeJsBle({ environment: env });
|
|
23
|
+
env.set(Ble, instance);
|
|
24
|
+
} else {
|
|
25
|
+
env.delete(Ble, instance);
|
|
26
|
+
instance = undefined;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
installed = shouldInstall;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
ServiceBundle.default.add(nodejsBle);
|