@matter/types 0.14.0 → 0.14.1-alpha.0-20250606-a9bcd03f9
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/cjs/datatype/FabricId.d.ts +3 -0
- package/dist/cjs/datatype/FabricId.d.ts.map +1 -1
- package/dist/cjs/datatype/FabricId.js +3 -0
- package/dist/cjs/datatype/FabricId.js.map +2 -2
- package/dist/cjs/datatype/GroupId.d.ts +14 -3
- package/dist/cjs/datatype/GroupId.d.ts.map +1 -1
- package/dist/cjs/datatype/GroupId.js +23 -1
- package/dist/cjs/datatype/GroupId.js.map +1 -1
- package/dist/cjs/datatype/NodeId.d.ts +3 -1
- package/dist/cjs/datatype/NodeId.d.ts.map +1 -1
- package/dist/cjs/datatype/NodeId.js +8 -6
- package/dist/cjs/datatype/NodeId.js.map +1 -1
- package/dist/cjs/datatype/SubjectId.d.ts +3 -1
- package/dist/cjs/datatype/SubjectId.d.ts.map +1 -1
- package/dist/cjs/datatype/SubjectId.js +5 -0
- package/dist/cjs/datatype/SubjectId.js.map +1 -1
- package/dist/esm/datatype/FabricId.d.ts +3 -0
- package/dist/esm/datatype/FabricId.d.ts.map +1 -1
- package/dist/esm/datatype/FabricId.js +3 -0
- package/dist/esm/datatype/FabricId.js.map +2 -2
- package/dist/esm/datatype/GroupId.d.ts +14 -3
- package/dist/esm/datatype/GroupId.d.ts.map +1 -1
- package/dist/esm/datatype/GroupId.js +23 -1
- package/dist/esm/datatype/GroupId.js.map +1 -1
- package/dist/esm/datatype/NodeId.d.ts +3 -1
- package/dist/esm/datatype/NodeId.d.ts.map +1 -1
- package/dist/esm/datatype/NodeId.js +9 -7
- package/dist/esm/datatype/NodeId.js.map +1 -1
- package/dist/esm/datatype/SubjectId.d.ts +3 -1
- package/dist/esm/datatype/SubjectId.d.ts.map +1 -1
- package/dist/esm/datatype/SubjectId.js +5 -0
- package/dist/esm/datatype/SubjectId.js.map +1 -1
- package/package.json +5 -5
- package/src/datatype/FabricId.ts +4 -0
- package/src/datatype/GroupId.ts +35 -3
- package/src/datatype/NodeId.ts +11 -7
- package/src/datatype/SubjectId.ts +7 -1
|
@@ -13,6 +13,9 @@ import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
|
13
13
|
*/
|
|
14
14
|
export type FabricId = Branded<bigint, "FabricId">;
|
|
15
15
|
export declare function FabricId(value: bigint | number): FabricId;
|
|
16
|
+
export declare namespace FabricId {
|
|
17
|
+
const NO_FABRIC: FabricId;
|
|
18
|
+
}
|
|
16
19
|
/** Tlv schema for a Node Identifier. */
|
|
17
20
|
export declare const TlvFabricId: TlvWrapper<FabricId, number | bigint>;
|
|
18
21
|
//# sourceMappingURL=FabricId.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricId.d.ts","sourceRoot":"","sources":["../../../src/datatype/FabricId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAY,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEnD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAEzD;AAED,wCAAwC;AACxC,eAAO,MAAM,WAAW,uCAIvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"FabricId.d.ts","sourceRoot":"","sources":["../../../src/datatype/FabricId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAY,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEnD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAEzD;AAED,yBAAiB,QAAQ,CAAC;IACf,MAAM,SAAS,UAAc,CAAC;CACxC;AAED,wCAAwC;AACxC,eAAO,MAAM,WAAW,uCAIvB,CAAC"}
|
|
@@ -33,6 +33,9 @@ var import_TlvWrapper = require("../tlv/TlvWrapper.js");
|
|
|
33
33
|
function FabricId(value) {
|
|
34
34
|
return (0, import_general.toBigInt)(value);
|
|
35
35
|
}
|
|
36
|
+
((FabricId2) => {
|
|
37
|
+
FabricId2.NO_FABRIC = FabricId2(0);
|
|
38
|
+
})(FabricId || (FabricId = {}));
|
|
36
39
|
const TlvFabricId = new import_TlvWrapper.TlvWrapper(
|
|
37
40
|
import_TlvNumber.TlvUInt64,
|
|
38
41
|
(fabricId) => fabricId,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/datatype/FabricId.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAkC;AAClC,uBAA0B;AAC1B,wBAA2B;AAR3B;AAAA;AAAA;AAAA;AAAA;AAkBO,SAAS,SAAS,OAAkC;AACvD,aAAO,yBAAS,KAAK;AACzB;
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAkC;AAClC,uBAA0B;AAC1B,wBAA2B;AAR3B;AAAA;AAAA;AAAA;AAAA;AAkBO,SAAS,SAAS,OAAkC;AACvD,aAAO,yBAAS,KAAK;AACzB;AAAA,CAEO,CAAUA,cAAV;AACI,EAAMA,UAAA,YAAYA,UAAS,CAAC;AAAA,GADtB;AAKV,MAAM,cAAc,IAAI;AAAA,EAC3B;AAAA,EACA,cAAY;AAAA,EACZ,WAAS,SAAS,KAAK;AAC3B;",
|
|
5
|
+
"names": ["FabricId"]
|
|
6
6
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Branded } from "#general";
|
|
7
7
|
import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
8
|
+
import { NodeId } from "./NodeId.js";
|
|
8
9
|
/**
|
|
9
10
|
* A Group Identifier (Group ID or GID) is a 16-bit number that identifies a set of Nodes across a
|
|
10
11
|
* Fabric at the message layer (see Section 4.15, “Group Key Management”). A Group ID can further
|
|
@@ -18,10 +19,20 @@ import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
|
18
19
|
* @see {@link MatterSpecification.v10.Core} § 2.5.4
|
|
19
20
|
*/
|
|
20
21
|
export type GroupId = Branded<number, "GroupId">;
|
|
21
|
-
export declare function GroupId(groupId: number
|
|
22
|
+
export declare function GroupId(groupId: number, validate?: boolean): GroupId;
|
|
22
23
|
export declare namespace GroupId {
|
|
23
|
-
const
|
|
24
|
-
|
|
24
|
+
const NO_GROUP_ID: GroupId;
|
|
25
|
+
/** This group is used to message all Nodes in a Fabric. */
|
|
26
|
+
const ALL_NODES: GroupId;
|
|
27
|
+
/**
|
|
28
|
+
* This group is used to message all power-capable Nodes in a Fabric. ICD Nodes SHALL NOT subscribe to this group.
|
|
29
|
+
*/
|
|
30
|
+
const ALL_NON_ICD_NODES: GroupId;
|
|
31
|
+
const isValid: (groupId: number, validate?: boolean | undefined) => boolean;
|
|
32
|
+
/** Application Group ID, assigned by fabric Administrator */
|
|
33
|
+
function isApplicationGroupId(groupId: GroupId): boolean;
|
|
34
|
+
function assertGroupId(groupId: GroupId): void;
|
|
35
|
+
function fromNodeId(nodeId: NodeId): GroupId;
|
|
25
36
|
}
|
|
26
37
|
/** Tlv Schema for a Group Id. */
|
|
27
38
|
export declare const TlvGroupId: TlvWrapper<GroupId, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupId.d.ts","sourceRoot":"","sources":["../../../src/datatype/GroupId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"GroupId.d.ts","sourceRoot":"","sources":["../../../src/datatype/GroupId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAsC,MAAM,UAAU,CAAC;AAGvE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEjD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,OAAO,CAKjE;AAED,yBAAiB,OAAO,CAAC;IACd,MAAM,WAAW,SAAa,CAAC;IAEtC,2DAA2D;IACpD,MAAM,SAAS,EAAa,OAAO,CAAC;IAE3C;;OAEG;IACI,MAAM,iBAAiB,EAAa,OAAO,CAAC;IAI5C,MAAM,OAAO,8DAAuB,CAAC;IAE5C,6DAA6D;IAC7D,SAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE9D;IAED,SAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QAI7C;IAED,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQlD;CACJ;AAED,iCAAiC;AACjC,eAAO,MAAM,UAAU,6BAItB,CAAC"}
|
|
@@ -22,9 +22,11 @@ __export(GroupId_exports, {
|
|
|
22
22
|
TlvGroupId: () => TlvGroupId
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(GroupId_exports);
|
|
25
|
+
var import_general = require("#general");
|
|
25
26
|
var import_ValidationError = require("../common/ValidationError.js");
|
|
26
27
|
var import_TlvNumber = require("../tlv/TlvNumber.js");
|
|
27
28
|
var import_TlvWrapper = require("../tlv/TlvWrapper.js");
|
|
29
|
+
var import_NodeId = require("./NodeId.js");
|
|
28
30
|
/**
|
|
29
31
|
* @license
|
|
30
32
|
* Copyright 2022-2025 Matter.js Authors
|
|
@@ -37,8 +39,28 @@ function GroupId(groupId, validate = true) {
|
|
|
37
39
|
throw new import_ValidationError.ValidationOutOfBoundsError(`Invalid group ID: ${groupId}`);
|
|
38
40
|
}
|
|
39
41
|
((GroupId2) => {
|
|
40
|
-
GroupId2.
|
|
42
|
+
GroupId2.NO_GROUP_ID = GroupId2(0);
|
|
43
|
+
GroupId2.ALL_NODES = 65535;
|
|
44
|
+
GroupId2.ALL_NON_ICD_NODES = 65534;
|
|
41
45
|
GroupId2.isValid = (0, import_ValidationError.validatorOf)(GroupId2);
|
|
46
|
+
function isApplicationGroupId(groupId) {
|
|
47
|
+
return groupId >= 1 && groupId <= 65279;
|
|
48
|
+
}
|
|
49
|
+
GroupId2.isApplicationGroupId = isApplicationGroupId;
|
|
50
|
+
function assertGroupId(groupId) {
|
|
51
|
+
if (groupId === GroupId2.NO_GROUP_ID) {
|
|
52
|
+
throw new import_general.UnexpectedDataError(`A Group ID need to be specified and can not be 0`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
GroupId2.assertGroupId = assertGroupId;
|
|
56
|
+
function fromNodeId(nodeId) {
|
|
57
|
+
if (!import_NodeId.NodeId.isGroupNodeId(nodeId)) {
|
|
58
|
+
throw new import_general.InternalError(`NodeId ${nodeId} is not a Group NodeId`);
|
|
59
|
+
}
|
|
60
|
+
const groupId = Number(nodeId & BigInt(65535));
|
|
61
|
+
return GroupId2(groupId);
|
|
62
|
+
}
|
|
63
|
+
GroupId2.fromNodeId = fromNodeId;
|
|
42
64
|
})(GroupId || (GroupId = {}));
|
|
43
65
|
const TlvGroupId = new import_TlvWrapper.TlvWrapper(
|
|
44
66
|
import_TlvNumber.TlvUInt16,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/datatype/GroupId.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA4D;AAC5D,6BAAwD;AACxD,uBAA0B;AAC1B,wBAA2B;AAC3B,oBAAuB;AAVvB;AAAA;AAAA;AAAA;AAAA;AA0BO,SAAS,QAAQ,SAAiB,WAAW,MAAe;AAC/D,MAAI,CAAC,YAAa,WAAW,KAAU,WAAW,OAAS;AACvD,WAAO,OAAO,OAAO;AAAA,EACzB;AACA,QAAM,IAAI,kDAA2B,qBAAqB,OAAO,EAAE;AACvE;AAAA,CAEO,CAAUA,aAAV;AACI,EAAMA,SAAA,cAAcA,SAAQ,CAAC;AAG7B,EAAMA,SAAA,YAAY;AAKlB,EAAMA,SAAA,oBAAoB;AAI1B,EAAMA,SAAA,cAAU,oCAAYA,QAAO;AAGnC,WAAS,qBAAqB,SAA2B;AAC5D,WAAO,WAAW,KAAU,WAAW;AAAA,EAC3C;AAFO,EAAAA,SAAS;AAIT,WAAS,cAAc,SAAkB;AAC5C,QAAI,YAAYA,SAAQ,aAAa;AACjC,YAAM,IAAI,mCAAoB,kDAAkD;AAAA,IACpF;AAAA,EACJ;AAJO,EAAAA,SAAS;AAMT,WAAS,WAAW,QAAyB;AAChD,QAAI,CAAC,qBAAO,cAAc,MAAM,GAAG;AAC/B,YAAM,IAAI,6BAAc,UAAU,MAAM,wBAAwB;AAAA,IACpE;AAEA,UAAM,UAAU,OAAO,SAAS,OAAO,KAAM,CAAC;AAE9C,WAAOA,SAAQ,OAAO;AAAA,EAC1B;AARO,EAAAA,SAAS;AAAA,GA1BH;AAsCV,MAAM,aAAa,IAAI;AAAA,EAC1B;AAAA,EACA,aAAW;AAAA,EACX,WAAS,QAAQ,OAAO,KAAK;AAAA;AACjC;",
|
|
5
5
|
"names": ["GroupId"]
|
|
6
6
|
}
|
|
@@ -32,7 +32,9 @@ export declare namespace NodeId {
|
|
|
32
32
|
*/
|
|
33
33
|
const isOperationalNodeId: (nodeId: NodeId) => boolean;
|
|
34
34
|
/** A Group Node ID is a 64-bit Node ID that contains a particular Group ID in the lower half of the Node ID. */
|
|
35
|
-
const
|
|
35
|
+
const isGroupNodeId: (nodeId: NodeId) => boolean;
|
|
36
|
+
/** A Group Node ID is a 64-bit Node ID that contains a particular Group ID in the lower half of the Node ID. */
|
|
37
|
+
const fromGroupId: (groupId: number) => NodeId;
|
|
36
38
|
/**
|
|
37
39
|
* A Temporary Local Node ID is a 64-bit Node ID that contains an implementation-dependent value in its lower
|
|
38
40
|
* 32 bits. This allows implementations to keep track of connections or transport-layer links and similar
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeId.d.ts","sourceRoot":"","sources":["../../../src/datatype/NodeId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"NodeId.d.ts","sourceRoot":"","sources":["../../../src/datatype/NodeId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAA4D,MAAM,UAAU,CAAC;AAE7F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE/C,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEjD;AAED,yBAAiB,MAAM,CAAC;IAIpB;;;OAGG;IACI,MAAM,mBAAmB,QAAY,CAAC;IAEtC,MAAM,WAAW,GAAI,QAAQ,MAAM,WAIzC,CAAC;IAEF;;;;OAIG;IACI,MAAM,uBAAuB,QAAO,MAO1C,CAAC;IAEF;;OAEG;IACI,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,OAEpD,CAAC;IAEF,gHAAgH;IACzG,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAG9C,CAAC;IAEF,gHAAgH;IACzG,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,MAE7C,CAAC;IAEF;;;;OAIG;IACI,MAAM,wBAAwB,GAAI,IAAI,MAAM,KAAG,MAKrD,CAAC;IAEF;;;OAGG;IACI,MAAM,wBAAwB,GAAI,IAAI,oBAAoB,KAAG,MAKnE,CAAC;IAEK,MAAM,sBAAsB,GAAI,QAAQ,MAAM,KAAG,OAGvD,CAAC;IAEK,MAAM,6BAA6B,GAAI,QAAQ,MAAM,KAAG,oBAK9D,CAAC;IAEF;;;;OAIG;IACI,MAAM,wBAAwB,GAAI,IAAI,MAAM,KAAG,MAKrD,CAAC;CACL;AAED,wCAAwC;AACxC,eAAO,MAAM,SAAS,qCAIrB,CAAC"}
|
|
@@ -22,6 +22,7 @@ __export(NodeId_exports, {
|
|
|
22
22
|
TlvNodeId: () => TlvNodeId
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(NodeId_exports);
|
|
25
|
+
var import_GroupId = require("#datatype/GroupId.js");
|
|
25
26
|
var import_general = require("#general");
|
|
26
27
|
var import_TlvNumber = require("../tlv/TlvNumber.js");
|
|
27
28
|
var import_TlvWrapper = require("../tlv/TlvWrapper.js");
|
|
@@ -39,7 +40,7 @@ function NodeId(v) {
|
|
|
39
40
|
const OPERATIONAL_NODE_MAX = BigInt("0xFFFFFFEFFFFFFFFF");
|
|
40
41
|
NodeId2.UNSPECIFIED_NODE_ID = NodeId2(0);
|
|
41
42
|
NodeId2.toHexString = (nodeId) => {
|
|
42
|
-
const writer = new import_general.DataWriter(
|
|
43
|
+
const writer = new import_general.DataWriter();
|
|
43
44
|
writer.writeUInt64(nodeId);
|
|
44
45
|
return import_general.Bytes.toHex(writer.toByteArray()).toUpperCase();
|
|
45
46
|
};
|
|
@@ -54,11 +55,12 @@ function NodeId(v) {
|
|
|
54
55
|
NodeId2.isOperationalNodeId = (nodeId) => {
|
|
55
56
|
return nodeId >= OPERATIONAL_NODE_MIN && nodeId <= OPERATIONAL_NODE_MAX;
|
|
56
57
|
};
|
|
57
|
-
NodeId2.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
NodeId2.isGroupNodeId = (nodeId) => {
|
|
59
|
+
const nodeIdHex = nodeId.toString(16);
|
|
60
|
+
return nodeIdHex.startsWith("ffffffffffff") && nodeIdHex.length === 16;
|
|
61
|
+
};
|
|
62
|
+
NodeId2.fromGroupId = (groupId) => {
|
|
63
|
+
return NodeId2(BigInt("0xFFFFFFFFFFFF" + (0, import_GroupId.GroupId)(groupId).toString(16).padStart(4, "0")));
|
|
62
64
|
};
|
|
63
65
|
NodeId2.fromTemporaryLocalNodeId = (id) => {
|
|
64
66
|
if (id < 0 || id > 4294967295) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/datatype/NodeId.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAwB;AACxB,qBAAkF;AAClF,uBAA0B;AAC1B,wBAA2B;AAC3B,kCAAqC;AAVrC;AAAA;AAAA;AAAA;AAAA;AAoBO,SAAS,OAAO,GAA4B;AAC/C,aAAO,yBAAS,CAAC;AACrB;AAAA,CAEO,CAAUA,YAAV;AACH,QAAM,uBAAuB,OAAO,oBAAoB;AACxD,QAAM,uBAAuB,OAAO,oBAAoB;AAMjD,EAAMA,QAAA,sBAAsBA,QAAO,CAAC;AAEpC,EAAMA,QAAA,cAAc,CAAC,WAAmB;AAC3C,UAAM,SAAS,IAAI,0BAAW;AAC9B,WAAO,YAAY,MAAM;AACzB,WAAO,qBAAM,MAAM,OAAO,YAAY,CAAC,EAAE,YAAY;AAAA,EACzD;AAOO,EAAMA,QAAA,0BAA0B,MAAc;AACjD,WAAO,MAAM;AACT,YAAM,eAAe,sBAAO,gBAAgB,CAAC;AAC7C,UAAI,gBAAgB,wBAAwB,gBAAgB,sBAAsB;AAC9E,eAAOA,QAAO,YAAY;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAKO,EAAMA,QAAA,sBAAsB,CAAC,WAA4B;AAC5D,WAAO,UAAU,wBAAwB,UAAU;AAAA,EACvD;AAGO,EAAMA,QAAA,gBAAgB,CAAC,WAA4B;AACtD,UAAM,YAAY,OAAO,SAAS,EAAE;AACpC,WAAO,UAAU,WAAW,cAAc,KAAK,UAAU,WAAW;AAAA,EACxE;AAGO,EAAMA,QAAA,cAAc,CAAC,YAA4B;AACpD,WAAOA,QAAO,OAAO,uBAAmB,wBAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AAAA,EAC3F;AAOO,EAAMA,QAAA,2BAA2B,CAAC,OAAuB;AAC5D,QAAI,KAAK,KAAK,KAAK,YAAY;AAC3B,YAAM,IAAI,mCAAoB,eAAe,EAAE,EAAE;AAAA,IACrD;AACA,WAAOA,QAAO,OAAO,eAAe,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AAAA,EACzE;AAMO,EAAMA,QAAA,2BAA2B,CAAC,OAAqC;AAC1E,QAAI,KAAK,KAAK,KAAK,YAAY;AAC3B,YAAM,IAAI,mCAAoB,mCAAmC,EAAE,EAAE;AAAA,IACzE;AACA,WAAOA,QAAO,OAAO,eAAe,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AAAA,EACzE;AAEO,EAAMA,QAAA,yBAAyB,CAAC,WAA4B;AAC/D,UAAM,YAAY,OAAO,SAAS,EAAE;AACpC,WAAO,UAAU,WAAW,UAAU,KAAK,UAAU,WAAW;AAAA,EACpE;AAEO,EAAMA,QAAA,gCAAgC,CAAC,WAAyC;AACnF,QAAI,KAACA,QAAA,wBAAuB,MAAM,GAAG;AACjC,YAAM,IAAI,mCAAoB,mCAAmC,MAAM,EAAE;AAAA,IAC7E;AACA,eAAO,kDAAqB,SAAS,OAAO,SAAS,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AAAA,EAC1E;AAOO,EAAMA,QAAA,2BAA2B,CAAC,OAAuB;AAC5D,QAAI,KAAK,KAAK,KAAK,YAAY;AAC3B,YAAM,IAAI,mCAAoB,eAAe,EAAE,EAAE;AAAA,IACrD;AACA,WAAOA,QAAO,OAAO,eAAe,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AAAA,EACzE;AAAA,GA7Fa;AAiGV,MAAM,YAAY,IAAI;AAAA,EACzB;AAAA,EACA,YAAU;AAAA,EACV,WAAS,OAAO,OAAO,KAAK,CAAC;AACjC;",
|
|
5
5
|
"names": ["NodeId"]
|
|
6
6
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { GroupId } from "./GroupId.js";
|
|
6
7
|
import { NodeId } from "./NodeId.js";
|
|
7
8
|
/**
|
|
8
9
|
* The meaning of a "Subject" is primarily that of describing the source for an action, using a given
|
|
@@ -10,7 +11,8 @@ import { NodeId } from "./NodeId.js";
|
|
|
10
11
|
*
|
|
11
12
|
* @see {@link MatterSpecification.v10.Core} § 6.6.2.1
|
|
12
13
|
*/
|
|
13
|
-
export type SubjectId = NodeId;
|
|
14
|
+
export type SubjectId = NodeId | GroupId;
|
|
15
|
+
export declare function SubjectId(v: bigint | number): SubjectId;
|
|
14
16
|
/** Tlv schema for a Subject Id */
|
|
15
17
|
export declare const TlvSubjectId: import("../index.js").TlvWrapper<NodeId, number | bigint>;
|
|
16
18
|
//# sourceMappingURL=SubjectId.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubjectId.d.ts","sourceRoot":"","sources":["../../../src/datatype/SubjectId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"SubjectId.d.ts","sourceRoot":"","sources":["../../../src/datatype/SubjectId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAa,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvD;AAED,kCAAkC;AAClC,eAAO,MAAM,YAAY,2DAAY,CAAC"}
|
|
@@ -18,14 +18,19 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var SubjectId_exports = {};
|
|
20
20
|
__export(SubjectId_exports, {
|
|
21
|
+
SubjectId: () => SubjectId,
|
|
21
22
|
TlvSubjectId: () => TlvSubjectId
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(SubjectId_exports);
|
|
25
|
+
var import_general = require("#general");
|
|
24
26
|
var import_NodeId = require("./NodeId.js");
|
|
25
27
|
/**
|
|
26
28
|
* @license
|
|
27
29
|
* Copyright 2022-2025 Matter.js Authors
|
|
28
30
|
* SPDX-License-Identifier: Apache-2.0
|
|
29
31
|
*/
|
|
32
|
+
function SubjectId(v) {
|
|
33
|
+
return (0, import_general.toBigInt)(v);
|
|
34
|
+
}
|
|
30
35
|
const TlvSubjectId = import_NodeId.TlvNodeId;
|
|
31
36
|
//# sourceMappingURL=SubjectId.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/datatype/SubjectId.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAkC;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAyB;AAEzB,oBAAkC;AARlC;AAAA;AAAA;AAAA;AAAA;AAkBO,SAAS,UAAU,GAA+B;AACrD,aAAO,yBAAS,CAAC;AACrB;AAGO,MAAM,eAAe;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -13,6 +13,9 @@ import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
|
13
13
|
*/
|
|
14
14
|
export type FabricId = Branded<bigint, "FabricId">;
|
|
15
15
|
export declare function FabricId(value: bigint | number): FabricId;
|
|
16
|
+
export declare namespace FabricId {
|
|
17
|
+
const NO_FABRIC: FabricId;
|
|
18
|
+
}
|
|
16
19
|
/** Tlv schema for a Node Identifier. */
|
|
17
20
|
export declare const TlvFabricId: TlvWrapper<FabricId, number | bigint>;
|
|
18
21
|
//# sourceMappingURL=FabricId.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricId.d.ts","sourceRoot":"","sources":["../../../src/datatype/FabricId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAY,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEnD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAEzD;AAED,wCAAwC;AACxC,eAAO,MAAM,WAAW,uCAIvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"FabricId.d.ts","sourceRoot":"","sources":["../../../src/datatype/FabricId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAY,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEnD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAEzD;AAED,yBAAiB,QAAQ,CAAC;IACf,MAAM,SAAS,UAAc,CAAC;CACxC;AAED,wCAAwC;AACxC,eAAO,MAAM,WAAW,uCAIvB,CAAC"}
|
|
@@ -9,6 +9,9 @@ import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
|
9
9
|
function FabricId(value) {
|
|
10
10
|
return toBigInt(value);
|
|
11
11
|
}
|
|
12
|
+
((FabricId2) => {
|
|
13
|
+
FabricId2.NO_FABRIC = FabricId2(0);
|
|
14
|
+
})(FabricId || (FabricId = {}));
|
|
12
15
|
const TlvFabricId = new TlvWrapper(
|
|
13
16
|
TlvUInt64,
|
|
14
17
|
(fabricId) => fabricId,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/datatype/FabricId.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAkB,gBAAgB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAUpB,SAAS,SAAS,OAAkC;AACvD,SAAO,SAAS,KAAK;AACzB;
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAkB,gBAAgB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAUpB,SAAS,SAAS,OAAkC;AACvD,SAAO,SAAS,KAAK;AACzB;AAAA,CAEO,CAAUA,cAAV;AACI,EAAMA,UAAA,YAAYA,UAAS,CAAC;AAAA,GADtB;AAKV,MAAM,cAAc,IAAI;AAAA,EAC3B;AAAA,EACA,cAAY;AAAA,EACZ,WAAS,SAAS,KAAK;AAC3B;",
|
|
5
|
+
"names": ["FabricId"]
|
|
6
6
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Branded } from "#general";
|
|
7
7
|
import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
8
|
+
import { NodeId } from "./NodeId.js";
|
|
8
9
|
/**
|
|
9
10
|
* A Group Identifier (Group ID or GID) is a 16-bit number that identifies a set of Nodes across a
|
|
10
11
|
* Fabric at the message layer (see Section 4.15, “Group Key Management”). A Group ID can further
|
|
@@ -18,10 +19,20 @@ import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
|
18
19
|
* @see {@link MatterSpecification.v10.Core} § 2.5.4
|
|
19
20
|
*/
|
|
20
21
|
export type GroupId = Branded<number, "GroupId">;
|
|
21
|
-
export declare function GroupId(groupId: number
|
|
22
|
+
export declare function GroupId(groupId: number, validate?: boolean): GroupId;
|
|
22
23
|
export declare namespace GroupId {
|
|
23
|
-
const
|
|
24
|
-
|
|
24
|
+
const NO_GROUP_ID: GroupId;
|
|
25
|
+
/** This group is used to message all Nodes in a Fabric. */
|
|
26
|
+
const ALL_NODES: GroupId;
|
|
27
|
+
/**
|
|
28
|
+
* This group is used to message all power-capable Nodes in a Fabric. ICD Nodes SHALL NOT subscribe to this group.
|
|
29
|
+
*/
|
|
30
|
+
const ALL_NON_ICD_NODES: GroupId;
|
|
31
|
+
const isValid: (groupId: number, validate?: boolean | undefined) => boolean;
|
|
32
|
+
/** Application Group ID, assigned by fabric Administrator */
|
|
33
|
+
function isApplicationGroupId(groupId: GroupId): boolean;
|
|
34
|
+
function assertGroupId(groupId: GroupId): void;
|
|
35
|
+
function fromNodeId(nodeId: NodeId): GroupId;
|
|
25
36
|
}
|
|
26
37
|
/** Tlv Schema for a Group Id. */
|
|
27
38
|
export declare const TlvGroupId: TlvWrapper<GroupId, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupId.d.ts","sourceRoot":"","sources":["../../../src/datatype/GroupId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"GroupId.d.ts","sourceRoot":"","sources":["../../../src/datatype/GroupId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAsC,MAAM,UAAU,CAAC;AAGvE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEjD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,OAAO,CAKjE;AAED,yBAAiB,OAAO,CAAC;IACd,MAAM,WAAW,SAAa,CAAC;IAEtC,2DAA2D;IACpD,MAAM,SAAS,EAAa,OAAO,CAAC;IAE3C;;OAEG;IACI,MAAM,iBAAiB,EAAa,OAAO,CAAC;IAI5C,MAAM,OAAO,8DAAuB,CAAC;IAE5C,6DAA6D;IAC7D,SAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE9D;IAED,SAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QAI7C;IAED,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQlD;CACJ;AAED,iCAAiC;AACjC,eAAO,MAAM,UAAU,6BAItB,CAAC"}
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { InternalError, UnexpectedDataError } from "#general";
|
|
6
7
|
import { ValidationOutOfBoundsError, validatorOf } from "../common/ValidationError.js";
|
|
7
8
|
import { TlvUInt16 } from "../tlv/TlvNumber.js";
|
|
8
9
|
import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
10
|
+
import { NodeId } from "./NodeId.js";
|
|
9
11
|
function GroupId(groupId, validate = true) {
|
|
10
12
|
if (!validate || groupId >= 0 && groupId <= 65535) {
|
|
11
13
|
return Number(groupId);
|
|
@@ -13,8 +15,28 @@ function GroupId(groupId, validate = true) {
|
|
|
13
15
|
throw new ValidationOutOfBoundsError(`Invalid group ID: ${groupId}`);
|
|
14
16
|
}
|
|
15
17
|
((GroupId2) => {
|
|
16
|
-
GroupId2.
|
|
18
|
+
GroupId2.NO_GROUP_ID = GroupId2(0);
|
|
19
|
+
GroupId2.ALL_NODES = 65535;
|
|
20
|
+
GroupId2.ALL_NON_ICD_NODES = 65534;
|
|
17
21
|
GroupId2.isValid = validatorOf(GroupId2);
|
|
22
|
+
function isApplicationGroupId(groupId) {
|
|
23
|
+
return groupId >= 1 && groupId <= 65279;
|
|
24
|
+
}
|
|
25
|
+
GroupId2.isApplicationGroupId = isApplicationGroupId;
|
|
26
|
+
function assertGroupId(groupId) {
|
|
27
|
+
if (groupId === GroupId2.NO_GROUP_ID) {
|
|
28
|
+
throw new UnexpectedDataError(`A Group ID need to be specified and can not be 0`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
GroupId2.assertGroupId = assertGroupId;
|
|
32
|
+
function fromNodeId(nodeId) {
|
|
33
|
+
if (!NodeId.isGroupNodeId(nodeId)) {
|
|
34
|
+
throw new InternalError(`NodeId ${nodeId} is not a Group NodeId`);
|
|
35
|
+
}
|
|
36
|
+
const groupId = Number(nodeId & BigInt(65535));
|
|
37
|
+
return GroupId2(groupId);
|
|
38
|
+
}
|
|
39
|
+
GroupId2.fromNodeId = fromNodeId;
|
|
18
40
|
})(GroupId || (GroupId = {}));
|
|
19
41
|
const TlvGroupId = new TlvWrapper(
|
|
20
42
|
TlvUInt16,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/datatype/GroupId.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAkB,eAAe,2BAA2B;AAC5D,SAAS,4BAA4B,mBAAmB;AACxD,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AAgBhB,SAAS,QAAQ,SAAiB,WAAW,MAAe;AAC/D,MAAI,CAAC,YAAa,WAAW,KAAU,WAAW,OAAS;AACvD,WAAO,OAAO,OAAO;AAAA,EACzB;AACA,QAAM,IAAI,2BAA2B,qBAAqB,OAAO,EAAE;AACvE;AAAA,CAEO,CAAUA,aAAV;AACI,EAAMA,SAAA,cAAcA,SAAQ,CAAC;AAG7B,EAAMA,SAAA,YAAY;AAKlB,EAAMA,SAAA,oBAAoB;AAI1B,EAAMA,SAAA,UAAU,YAAYA,QAAO;AAGnC,WAAS,qBAAqB,SAA2B;AAC5D,WAAO,WAAW,KAAU,WAAW;AAAA,EAC3C;AAFO,EAAAA,SAAS;AAIT,WAAS,cAAc,SAAkB;AAC5C,QAAI,YAAYA,SAAQ,aAAa;AACjC,YAAM,IAAI,oBAAoB,kDAAkD;AAAA,IACpF;AAAA,EACJ;AAJO,EAAAA,SAAS;AAMT,WAAS,WAAW,QAAyB;AAChD,QAAI,CAAC,OAAO,cAAc,MAAM,GAAG;AAC/B,YAAM,IAAI,cAAc,UAAU,MAAM,wBAAwB;AAAA,IACpE;AAEA,UAAM,UAAU,OAAO,SAAS,OAAO,KAAM,CAAC;AAE9C,WAAOA,SAAQ,OAAO;AAAA,EAC1B;AARO,EAAAA,SAAS;AAAA,GA1BH;AAsCV,MAAM,aAAa,IAAI;AAAA,EAC1B;AAAA,EACA,aAAW;AAAA,EACX,WAAS,QAAQ,OAAO,KAAK;AAAA;AACjC;",
|
|
5
5
|
"names": ["GroupId"]
|
|
6
6
|
}
|
|
@@ -32,7 +32,9 @@ export declare namespace NodeId {
|
|
|
32
32
|
*/
|
|
33
33
|
const isOperationalNodeId: (nodeId: NodeId) => boolean;
|
|
34
34
|
/** A Group Node ID is a 64-bit Node ID that contains a particular Group ID in the lower half of the Node ID. */
|
|
35
|
-
const
|
|
35
|
+
const isGroupNodeId: (nodeId: NodeId) => boolean;
|
|
36
|
+
/** A Group Node ID is a 64-bit Node ID that contains a particular Group ID in the lower half of the Node ID. */
|
|
37
|
+
const fromGroupId: (groupId: number) => NodeId;
|
|
36
38
|
/**
|
|
37
39
|
* A Temporary Local Node ID is a 64-bit Node ID that contains an implementation-dependent value in its lower
|
|
38
40
|
* 32 bits. This allows implementations to keep track of connections or transport-layer links and similar
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeId.d.ts","sourceRoot":"","sources":["../../../src/datatype/NodeId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"NodeId.d.ts","sourceRoot":"","sources":["../../../src/datatype/NodeId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAA4D,MAAM,UAAU,CAAC;AAE7F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE/C,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEjD;AAED,yBAAiB,MAAM,CAAC;IAIpB;;;OAGG;IACI,MAAM,mBAAmB,QAAY,CAAC;IAEtC,MAAM,WAAW,GAAI,QAAQ,MAAM,WAIzC,CAAC;IAEF;;;;OAIG;IACI,MAAM,uBAAuB,QAAO,MAO1C,CAAC;IAEF;;OAEG;IACI,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,OAEpD,CAAC;IAEF,gHAAgH;IACzG,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAG9C,CAAC;IAEF,gHAAgH;IACzG,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,MAE7C,CAAC;IAEF;;;;OAIG;IACI,MAAM,wBAAwB,GAAI,IAAI,MAAM,KAAG,MAKrD,CAAC;IAEF;;;OAGG;IACI,MAAM,wBAAwB,GAAI,IAAI,oBAAoB,KAAG,MAKnE,CAAC;IAEK,MAAM,sBAAsB,GAAI,QAAQ,MAAM,KAAG,OAGvD,CAAC;IAEK,MAAM,6BAA6B,GAAI,QAAQ,MAAM,KAAG,oBAK9D,CAAC;IAEF;;;;OAIG;IACI,MAAM,wBAAwB,GAAI,IAAI,MAAM,KAAG,MAKrD,CAAC;CACL;AAED,wCAAwC;AACxC,eAAO,MAAM,SAAS,qCAIrB,CAAC"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { GroupId } from "#datatype/GroupId.js";
|
|
7
|
+
import { Bytes, Crypto, DataWriter, toBigInt, UnexpectedDataError } from "#general";
|
|
7
8
|
import { TlvUInt64 } from "../tlv/TlvNumber.js";
|
|
8
9
|
import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
9
10
|
import { CaseAuthenticatedTag } from "./CaseAuthenticatedTag.js";
|
|
@@ -15,7 +16,7 @@ function NodeId(v) {
|
|
|
15
16
|
const OPERATIONAL_NODE_MAX = BigInt("0xFFFFFFEFFFFFFFFF");
|
|
16
17
|
NodeId2.UNSPECIFIED_NODE_ID = NodeId2(0);
|
|
17
18
|
NodeId2.toHexString = (nodeId) => {
|
|
18
|
-
const writer = new DataWriter(
|
|
19
|
+
const writer = new DataWriter();
|
|
19
20
|
writer.writeUInt64(nodeId);
|
|
20
21
|
return Bytes.toHex(writer.toByteArray()).toUpperCase();
|
|
21
22
|
};
|
|
@@ -30,11 +31,12 @@ function NodeId(v) {
|
|
|
30
31
|
NodeId2.isOperationalNodeId = (nodeId) => {
|
|
31
32
|
return nodeId >= OPERATIONAL_NODE_MIN && nodeId <= OPERATIONAL_NODE_MAX;
|
|
32
33
|
};
|
|
33
|
-
NodeId2.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
NodeId2.isGroupNodeId = (nodeId) => {
|
|
35
|
+
const nodeIdHex = nodeId.toString(16);
|
|
36
|
+
return nodeIdHex.startsWith("ffffffffffff") && nodeIdHex.length === 16;
|
|
37
|
+
};
|
|
38
|
+
NodeId2.fromGroupId = (groupId) => {
|
|
39
|
+
return NodeId2(BigInt("0xFFFFFFFFFFFF" + GroupId(groupId).toString(16).padStart(4, "0")));
|
|
38
40
|
};
|
|
39
41
|
NodeId2.fromTemporaryLocalNodeId = (id) => {
|
|
40
42
|
if (id < 0 || id > 4294967295) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/datatype/NodeId.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAkB,OAAO,QAAQ,YAAY,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,eAAe;AACxB,SAAkB,OAAO,QAAQ,YAAY,UAAU,2BAA2B;AAClF,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,4BAA4B;AAU9B,SAAS,OAAO,GAA4B;AAC/C,SAAO,SAAS,CAAC;AACrB;AAAA,CAEO,CAAUA,YAAV;AACH,QAAM,uBAAuB,OAAO,oBAAoB;AACxD,QAAM,uBAAuB,OAAO,oBAAoB;AAMjD,EAAMA,QAAA,sBAAsBA,QAAO,CAAC;AAEpC,EAAMA,QAAA,cAAc,CAAC,WAAmB;AAC3C,UAAM,SAAS,IAAI,WAAW;AAC9B,WAAO,YAAY,MAAM;AACzB,WAAO,MAAM,MAAM,OAAO,YAAY,CAAC,EAAE,YAAY;AAAA,EACzD;AAOO,EAAMA,QAAA,0BAA0B,MAAc;AACjD,WAAO,MAAM;AACT,YAAM,eAAe,OAAO,gBAAgB,CAAC;AAC7C,UAAI,gBAAgB,wBAAwB,gBAAgB,sBAAsB;AAC9E,eAAOA,QAAO,YAAY;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAKO,EAAMA,QAAA,sBAAsB,CAAC,WAA4B;AAC5D,WAAO,UAAU,wBAAwB,UAAU;AAAA,EACvD;AAGO,EAAMA,QAAA,gBAAgB,CAAC,WAA4B;AACtD,UAAM,YAAY,OAAO,SAAS,EAAE;AACpC,WAAO,UAAU,WAAW,cAAc,KAAK,UAAU,WAAW;AAAA,EACxE;AAGO,EAAMA,QAAA,cAAc,CAAC,YAA4B;AACpD,WAAOA,QAAO,OAAO,mBAAmB,QAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AAAA,EAC3F;AAOO,EAAMA,QAAA,2BAA2B,CAAC,OAAuB;AAC5D,QAAI,KAAK,KAAK,KAAK,YAAY;AAC3B,YAAM,IAAI,oBAAoB,eAAe,EAAE,EAAE;AAAA,IACrD;AACA,WAAOA,QAAO,OAAO,eAAe,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AAAA,EACzE;AAMO,EAAMA,QAAA,2BAA2B,CAAC,OAAqC;AAC1E,QAAI,KAAK,KAAK,KAAK,YAAY;AAC3B,YAAM,IAAI,oBAAoB,mCAAmC,EAAE,EAAE;AAAA,IACzE;AACA,WAAOA,QAAO,OAAO,eAAe,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AAAA,EACzE;AAEO,EAAMA,QAAA,yBAAyB,CAAC,WAA4B;AAC/D,UAAM,YAAY,OAAO,SAAS,EAAE;AACpC,WAAO,UAAU,WAAW,UAAU,KAAK,UAAU,WAAW;AAAA,EACpE;AAEO,EAAMA,QAAA,gCAAgC,CAAC,WAAyC;AACnF,QAAI,KAACA,QAAA,wBAAuB,MAAM,GAAG;AACjC,YAAM,IAAI,oBAAoB,mCAAmC,MAAM,EAAE;AAAA,IAC7E;AACA,WAAO,qBAAqB,SAAS,OAAO,SAAS,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AAAA,EAC1E;AAOO,EAAMA,QAAA,2BAA2B,CAAC,OAAuB;AAC5D,QAAI,KAAK,KAAK,KAAK,YAAY;AAC3B,YAAM,IAAI,oBAAoB,eAAe,EAAE,EAAE;AAAA,IACrD;AACA,WAAOA,QAAO,OAAO,eAAe,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AAAA,EACzE;AAAA,GA7Fa;AAiGV,MAAM,YAAY,IAAI;AAAA,EACzB;AAAA,EACA,YAAU;AAAA,EACV,WAAS,OAAO,OAAO,KAAK,CAAC;AACjC;",
|
|
5
5
|
"names": ["NodeId"]
|
|
6
6
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { GroupId } from "./GroupId.js";
|
|
6
7
|
import { NodeId } from "./NodeId.js";
|
|
7
8
|
/**
|
|
8
9
|
* The meaning of a "Subject" is primarily that of describing the source for an action, using a given
|
|
@@ -10,7 +11,8 @@ import { NodeId } from "./NodeId.js";
|
|
|
10
11
|
*
|
|
11
12
|
* @see {@link MatterSpecification.v10.Core} § 6.6.2.1
|
|
12
13
|
*/
|
|
13
|
-
export type SubjectId = NodeId;
|
|
14
|
+
export type SubjectId = NodeId | GroupId;
|
|
15
|
+
export declare function SubjectId(v: bigint | number): SubjectId;
|
|
14
16
|
/** Tlv schema for a Subject Id */
|
|
15
17
|
export declare const TlvSubjectId: import("../index.js").TlvWrapper<NodeId, number | bigint>;
|
|
16
18
|
//# sourceMappingURL=SubjectId.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubjectId.d.ts","sourceRoot":"","sources":["../../../src/datatype/SubjectId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"SubjectId.d.ts","sourceRoot":"","sources":["../../../src/datatype/SubjectId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAa,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvD;AAED,kCAAkC;AAClC,eAAO,MAAM,YAAY,2DAAY,CAAC"}
|
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { toBigInt } from "#general";
|
|
6
7
|
import { TlvNodeId } from "./NodeId.js";
|
|
8
|
+
function SubjectId(v) {
|
|
9
|
+
return toBigInt(v);
|
|
10
|
+
}
|
|
7
11
|
const TlvSubjectId = TlvNodeId;
|
|
8
12
|
export {
|
|
13
|
+
SubjectId,
|
|
9
14
|
TlvSubjectId
|
|
10
15
|
};
|
|
11
16
|
//# sourceMappingURL=SubjectId.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/datatype/SubjectId.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAiB,iBAAiB;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AAEzB,SAAiB,iBAAiB;AAU3B,SAAS,UAAU,GAA+B;AACrD,SAAO,SAAS,CAAC;AACrB;AAGO,MAAM,eAAe;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/types",
|
|
3
|
-
"version": "0.14.0",
|
|
3
|
+
"version": "0.14.1-alpha.0-20250606-a9bcd03f9",
|
|
4
4
|
"description": "Definitions for Matter application",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
"embed-examples": "embedme **/README.md"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@matter/general": "0.14.0",
|
|
37
|
-
"@matter/model": "0.14.0"
|
|
36
|
+
"@matter/general": "0.14.1-alpha.0-20250606-a9bcd03f9",
|
|
37
|
+
"@matter/model": "0.14.1-alpha.0-20250606-a9bcd03f9"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@matter/tools": "0.14.0",
|
|
41
|
-
"@matter/testing": "0.14.0"
|
|
40
|
+
"@matter/tools": "0.14.1-alpha.0-20250606-a9bcd03f9",
|
|
41
|
+
"@matter/testing": "0.14.1-alpha.0-20250606-a9bcd03f9"
|
|
42
42
|
},
|
|
43
43
|
"files": [
|
|
44
44
|
"dist/**/*",
|
package/src/datatype/FabricId.ts
CHANGED
|
@@ -20,6 +20,10 @@ export function FabricId(value: bigint | number): FabricId {
|
|
|
20
20
|
return toBigInt(value) as FabricId;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
export namespace FabricId {
|
|
24
|
+
export const NO_FABRIC = FabricId(0);
|
|
25
|
+
}
|
|
26
|
+
|
|
23
27
|
/** Tlv schema for a Node Identifier. */
|
|
24
28
|
export const TlvFabricId = new TlvWrapper<FabricId, number | bigint>(
|
|
25
29
|
TlvUInt64,
|
package/src/datatype/GroupId.ts
CHANGED
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Branded } from "#general";
|
|
7
|
+
import { Branded, InternalError, UnexpectedDataError } from "#general";
|
|
8
8
|
import { ValidationOutOfBoundsError, validatorOf } from "../common/ValidationError.js";
|
|
9
9
|
import { TlvUInt16 } from "../tlv/TlvNumber.js";
|
|
10
10
|
import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
11
|
+
import { NodeId } from "./NodeId.js";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* A Group Identifier (Group ID or GID) is a 16-bit number that identifies a set of Nodes across a
|
|
@@ -23,7 +24,7 @@ import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
|
23
24
|
*/
|
|
24
25
|
export type GroupId = Branded<number, "GroupId">;
|
|
25
26
|
|
|
26
|
-
export function GroupId(groupId: number
|
|
27
|
+
export function GroupId(groupId: number, validate = true): GroupId {
|
|
27
28
|
if (!validate || (groupId >= 0x0000 && groupId <= 0xffff)) {
|
|
28
29
|
return Number(groupId) as GroupId;
|
|
29
30
|
}
|
|
@@ -31,9 +32,40 @@ export function GroupId(groupId: number | bigint, validate = true): GroupId {
|
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
export namespace GroupId {
|
|
34
|
-
export const
|
|
35
|
+
export const NO_GROUP_ID = GroupId(0);
|
|
36
|
+
|
|
37
|
+
/** This group is used to message all Nodes in a Fabric. */
|
|
38
|
+
export const ALL_NODES = 0xffff as GroupId;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* This group is used to message all power-capable Nodes in a Fabric. ICD Nodes SHALL NOT subscribe to this group.
|
|
42
|
+
*/
|
|
43
|
+
export const ALL_NON_ICD_NODES = 0xfffe as GroupId;
|
|
44
|
+
|
|
45
|
+
//export const ALL_PROXIES = 0xfffd as GroupId; // Provisional and will be removed in Matter 1.4.2
|
|
35
46
|
|
|
36
47
|
export const isValid = validatorOf(GroupId);
|
|
48
|
+
|
|
49
|
+
/** Application Group ID, assigned by fabric Administrator */
|
|
50
|
+
export function isApplicationGroupId(groupId: GroupId): boolean {
|
|
51
|
+
return groupId >= 0x0001 && groupId <= 0xfeff;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function assertGroupId(groupId: GroupId) {
|
|
55
|
+
if (groupId === GroupId.NO_GROUP_ID) {
|
|
56
|
+
throw new UnexpectedDataError(`A Group ID need to be specified and can not be 0`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function fromNodeId(nodeId: NodeId): GroupId {
|
|
61
|
+
if (!NodeId.isGroupNodeId(nodeId)) {
|
|
62
|
+
throw new InternalError(`NodeId ${nodeId} is not a Group NodeId`);
|
|
63
|
+
}
|
|
64
|
+
// NodeId is a 64-bit value, where the lower 16 bits represent the GroupId
|
|
65
|
+
const groupId = Number(nodeId & BigInt(0xffff));
|
|
66
|
+
// TODO Check if 0 is allowed??
|
|
67
|
+
return GroupId(groupId);
|
|
68
|
+
}
|
|
37
69
|
}
|
|
38
70
|
|
|
39
71
|
/** Tlv Schema for a Group Id. */
|
package/src/datatype/NodeId.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { GroupId } from "#datatype/GroupId.js";
|
|
8
|
+
import { Branded, Bytes, Crypto, DataWriter, toBigInt, UnexpectedDataError } from "#general";
|
|
8
9
|
import { TlvUInt64 } from "../tlv/TlvNumber.js";
|
|
9
10
|
import { TlvWrapper } from "../tlv/TlvWrapper.js";
|
|
10
11
|
import { CaseAuthenticatedTag } from "./CaseAuthenticatedTag.js";
|
|
@@ -32,7 +33,7 @@ export namespace NodeId {
|
|
|
32
33
|
export const UNSPECIFIED_NODE_ID = NodeId(0);
|
|
33
34
|
|
|
34
35
|
export const toHexString = (nodeId: NodeId) => {
|
|
35
|
-
const writer = new DataWriter(
|
|
36
|
+
const writer = new DataWriter();
|
|
36
37
|
writer.writeUInt64(nodeId);
|
|
37
38
|
return Bytes.toHex(writer.toByteArray()).toUpperCase();
|
|
38
39
|
};
|
|
@@ -59,11 +60,14 @@ export namespace NodeId {
|
|
|
59
60
|
};
|
|
60
61
|
|
|
61
62
|
/** A Group Node ID is a 64-bit Node ID that contains a particular Group ID in the lower half of the Node ID. */
|
|
62
|
-
export const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
export const isGroupNodeId = (nodeId: NodeId): boolean => {
|
|
64
|
+
const nodeIdHex = nodeId.toString(16);
|
|
65
|
+
return nodeIdHex.startsWith("ffffffffffff") && nodeIdHex.length === 16;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/** A Group Node ID is a 64-bit Node ID that contains a particular Group ID in the lower half of the Node ID. */
|
|
69
|
+
export const fromGroupId = (groupId: number): NodeId => {
|
|
70
|
+
return NodeId(BigInt("0xFFFFFFFFFFFF" + GroupId(groupId).toString(16).padStart(4, "0")));
|
|
67
71
|
};
|
|
68
72
|
|
|
69
73
|
/**
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { toBigInt } from "#general";
|
|
8
|
+
import { GroupId } from "./GroupId.js";
|
|
7
9
|
import { NodeId, TlvNodeId } from "./NodeId.js";
|
|
8
10
|
|
|
9
11
|
/**
|
|
@@ -12,7 +14,11 @@ import { NodeId, TlvNodeId } from "./NodeId.js";
|
|
|
12
14
|
*
|
|
13
15
|
* @see {@link MatterSpecification.v10.Core} § 6.6.2.1
|
|
14
16
|
*/
|
|
15
|
-
export type SubjectId = NodeId
|
|
17
|
+
export type SubjectId = NodeId | GroupId;
|
|
18
|
+
|
|
19
|
+
export function SubjectId(v: bigint | number): SubjectId {
|
|
20
|
+
return toBigInt(v) as SubjectId;
|
|
21
|
+
}
|
|
16
22
|
|
|
17
23
|
/** Tlv schema for a Subject Id */
|
|
18
24
|
export const TlvSubjectId = TlvNodeId;
|