@matter/types 0.15.1 → 0.15.2-alpha.0-20250704-2715344f0

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 (65) hide show
  1. package/dist/cjs/cluster/ClusterRegistry.d.ts +1 -2
  2. package/dist/cjs/cluster/ClusterRegistry.d.ts.map +1 -1
  3. package/dist/cjs/cluster/ClusterRegistry.js.map +1 -1
  4. package/dist/cjs/cluster/mutation/ClusterComposer.d.ts +2 -11
  5. package/dist/cjs/cluster/mutation/ClusterComposer.d.ts.map +1 -1
  6. package/dist/cjs/cluster/mutation/ClusterComposer.js +10 -5
  7. package/dist/cjs/cluster/mutation/ClusterComposer.js.map +1 -1
  8. package/dist/cjs/cluster/mutation/MutableCluster.d.ts +3 -3
  9. package/dist/cjs/cluster/mutation/MutableCluster.d.ts.map +1 -1
  10. package/dist/cjs/cluster/mutation/MutableCluster.js.map +1 -1
  11. package/dist/cjs/common/StatusResponseError.d.ts +10 -0
  12. package/dist/cjs/common/StatusResponseError.d.ts.map +1 -1
  13. package/dist/cjs/common/StatusResponseError.js +39 -1
  14. package/dist/cjs/common/StatusResponseError.js.map +1 -1
  15. package/dist/cjs/datatype/GroupId.d.ts +3 -1
  16. package/dist/cjs/datatype/GroupId.d.ts.map +1 -1
  17. package/dist/cjs/datatype/GroupId.js +5 -2
  18. package/dist/cjs/datatype/GroupId.js.map +1 -1
  19. package/dist/cjs/datatype/NodeId.d.ts +0 -2
  20. package/dist/cjs/datatype/NodeId.d.ts.map +1 -1
  21. package/dist/cjs/datatype/NodeId.js +0 -4
  22. package/dist/cjs/datatype/NodeId.js.map +1 -1
  23. package/dist/cjs/protocol/definitions/secure-channel.d.ts +3 -0
  24. package/dist/cjs/protocol/definitions/secure-channel.d.ts.map +1 -1
  25. package/dist/cjs/protocol/definitions/secure-channel.js +6 -0
  26. package/dist/cjs/protocol/definitions/secure-channel.js.map +1 -1
  27. package/dist/cjs/protocol/messages/TlvSubscribeResponse.d.ts.map +1 -1
  28. package/dist/cjs/protocol/messages/TlvSubscribeResponse.js.map +1 -1
  29. package/dist/esm/cluster/ClusterRegistry.d.ts +1 -2
  30. package/dist/esm/cluster/ClusterRegistry.d.ts.map +1 -1
  31. package/dist/esm/cluster/ClusterRegistry.js.map +1 -1
  32. package/dist/esm/cluster/mutation/ClusterComposer.d.ts +2 -11
  33. package/dist/esm/cluster/mutation/ClusterComposer.d.ts.map +1 -1
  34. package/dist/esm/cluster/mutation/ClusterComposer.js +10 -5
  35. package/dist/esm/cluster/mutation/ClusterComposer.js.map +1 -1
  36. package/dist/esm/cluster/mutation/MutableCluster.d.ts +3 -3
  37. package/dist/esm/cluster/mutation/MutableCluster.d.ts.map +1 -1
  38. package/dist/esm/cluster/mutation/MutableCluster.js.map +1 -1
  39. package/dist/esm/common/StatusResponseError.d.ts +10 -0
  40. package/dist/esm/common/StatusResponseError.d.ts.map +1 -1
  41. package/dist/esm/common/StatusResponseError.js +40 -2
  42. package/dist/esm/common/StatusResponseError.js.map +1 -1
  43. package/dist/esm/datatype/GroupId.d.ts +3 -1
  44. package/dist/esm/datatype/GroupId.d.ts.map +1 -1
  45. package/dist/esm/datatype/GroupId.js +5 -2
  46. package/dist/esm/datatype/GroupId.js.map +1 -1
  47. package/dist/esm/datatype/NodeId.d.ts +0 -2
  48. package/dist/esm/datatype/NodeId.d.ts.map +1 -1
  49. package/dist/esm/datatype/NodeId.js +0 -4
  50. package/dist/esm/datatype/NodeId.js.map +1 -1
  51. package/dist/esm/protocol/definitions/secure-channel.d.ts +3 -0
  52. package/dist/esm/protocol/definitions/secure-channel.d.ts.map +1 -1
  53. package/dist/esm/protocol/definitions/secure-channel.js +6 -0
  54. package/dist/esm/protocol/definitions/secure-channel.js.map +1 -1
  55. package/dist/esm/protocol/messages/TlvSubscribeResponse.d.ts.map +1 -1
  56. package/dist/esm/protocol/messages/TlvSubscribeResponse.js.map +1 -1
  57. package/package.json +5 -5
  58. package/src/cluster/ClusterRegistry.ts +1 -2
  59. package/src/cluster/mutation/ClusterComposer.ts +18 -5
  60. package/src/cluster/mutation/MutableCluster.ts +3 -3
  61. package/src/common/StatusResponseError.ts +53 -1
  62. package/src/datatype/GroupId.ts +8 -2
  63. package/src/datatype/NodeId.ts +0 -6
  64. package/src/protocol/definitions/secure-channel.ts +6 -0
  65. package/src/protocol/messages/TlvSubscribeResponse.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cluster/mutation/ClusterComposer.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -12,7 +12,7 @@ import { ElementModifier } from "./ElementModifier.js";
12
12
  * A "mutable cluster" is a {@link ClusterType} with builder methods that support a limited number of modifications as
13
13
  * defined by the Matter specification.
14
14
  */
15
- export type MutableCluster<T extends ClusterType.Options, C extends ClusterComposer.Component[] = []> = ClusterComposer.WithComponents<ClusterType.Of<T>, C> & MutableCluster.Methods<ClusterType.Of<T>>;
15
+ export type MutableCluster<T extends ClusterType.Options = ClusterType.Options, C extends ClusterComposer.Component[] = []> = ClusterComposer.WithComponents<ClusterType.Of<T>, C> & MutableCluster.Methods<ClusterType.Of<T>>;
16
16
  /**
17
17
  * Define a new {@link MutableCluster}.
18
18
  */
@@ -50,7 +50,7 @@ export declare namespace MutableCluster {
50
50
  * We define clusters this way if the Matter specification defines a cluster with a set of features, one of which is
51
51
  * required, but none of which is required if others are enabled.
52
52
  */
53
- interface ExtensibleOnly<T extends ClusterType.Options> {
53
+ interface ExtensibleOnly<T extends ClusterType.Options = ClusterType.Options> {
54
54
  id: ClusterId;
55
55
  name: string;
56
56
  with: Methods<ClusterType.Of<T>>["with"];
@@ -58,7 +58,7 @@ export declare namespace MutableCluster {
58
58
  /**
59
59
  * Create a factory for clusters that require extension.
60
60
  */
61
- function ExtensibleOnly<const T extends ClusterType.Options>(options: T): ExtensibleOnly<T>;
61
+ function ExtensibleOnly<const T extends ClusterType.Options = ClusterType.Options>(options: T): ExtensibleOnly<T>;
62
62
  /**
63
63
  * Create a conditional version of an unconditional element definition.
64
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MutableCluster.d.ts","sourceRoot":"","sources":["../../../../src/cluster/mutation/MutableCluster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MutableCluster.d.ts","sourceRoot":"","sources":["../../../../src/cluster/mutation/MutableCluster.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cluster/mutation/MutableCluster.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAczB,SAAS,eACZ,YACG,YACL;AACE,QAAM,UAAU,YAAY,OAAO;AAEnC,aAAW,aAAa,YAAY;AAChC,oBAAgB,eAAe,SAAS,SAAS;AAAA,EACrD;AAEA,SAAO,OAAO,SAAS;AAAA,IACnB,QAAQ,UAA4D;AAChE,aAAO,IAAI,gBAAgB,OAAO,EAAE,QAAQ,QAAQ;AAAA,IACxD;AAAA,IAEA,MAAM,aAA0D;AAC5D,aAAO,IAAI,gBAAgB,OAAO,EAAE,MAAM,WAAW;AAAA,IACzD;AAAA,IAEA,IAAI,QAA0D;AAC1D,aAAO,IAAI,gBAAgB,OAAO,EAAE,IAAI,MAAM;AAAA,IAClD;AAAA,IAEA,OAAO,OAAqD;AACxD,aAAO,IAAI,gBAAgB,OAAO,EAAE,OAAO,KAAK;AAAA,IACpD;AAAA,EACJ,CAAC;AAED,SAAO;AACX;AAAA,CAEO,CAAUA,oBAAV;AAII,WAAS,UAAwD,UAAa;AACjF,WAAO;AAAA,EACX;AAFO,EAAAA,gBAAS;AAOT,WAAS,cAAgE,YAAe;AAC3F,WAAO;AAAA,EACX;AAFO,EAAAA,gBAAS;AAkDT,WAAS,eAAoD,SAAY;AAC5E,WAAO;AAAA,MACH,IAAI,QAAQ;AAAA,MACZ,MAAM,QAAQ;AAAA,MAEd,QAAQ,UAA+D;AACnE,eAAO,IAAI,gBAAgB,YAAY,OAAO,CAAC,EAAE,QAAQ,QAAQ;AAAA,MACrE;AAAA,IACJ;AAAA,EACJ;AATO,EAAAA,gBAAS;AAcT,WAAS,cAKd,SAAY,EAAE,YAAY,YAAY,GAA0C;AAC9E,WAAO;AAAA,MACH,GAAG;AAAA,MACH,UAAU;AAAA,MACV,eAAe;AAAA,MACf,YAAY,cAAc,CAAC;AAAA,MAC3B,aAAa,eAAe,CAAC;AAAA,IACjC;AAAA,EACJ;AAbO,EAAAA,gBAAS;AAAA,GA3EH;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAczB,SAAS,eACZ,YACG,YACL;AACE,QAAM,UAAU,YAAY,OAAO;AAEnC,aAAW,aAAa,YAAY;AAChC,oBAAgB,eAAe,SAAS,SAAS;AAAA,EACrD;AAEA,SAAO,OAAO,SAAS;AAAA,IACnB,QAAQ,UAA4D;AAChE,aAAO,IAAI,gBAAgB,OAAO,EAAE,QAAQ,QAAQ;AAAA,IACxD;AAAA,IAEA,MAAM,aAA0D;AAC5D,aAAO,IAAI,gBAAgB,OAAO,EAAE,MAAM,WAAW;AAAA,IACzD;AAAA,IAEA,IAAI,QAA0D;AAC1D,aAAO,IAAI,gBAAgB,OAAO,EAAE,IAAI,MAAM;AAAA,IAClD;AAAA,IAEA,OAAO,OAAqD;AACxD,aAAO,IAAI,gBAAgB,OAAO,EAAE,OAAO,KAAK;AAAA,IACpD;AAAA,EACJ,CAAC;AAED,SAAO;AACX;AAAA,CAEO,CAAUA,oBAAV;AAII,WAAS,UAAwD,UAAa;AACjF,WAAO;AAAA,EACX;AAFO,EAAAA,gBAAS;AAOT,WAAS,cAAgE,YAAe;AAC3F,WAAO;AAAA,EACX;AAFO,EAAAA,gBAAS;AAkDT,WAAS,eAA0E,SAAY;AAClG,WAAO;AAAA,MACH,IAAI,QAAQ;AAAA,MACZ,MAAM,QAAQ;AAAA,MAEd,QAAQ,UAA+D;AACnE,eAAO,IAAI,gBAAgB,YAAY,OAAO,CAAC,EAAE,QAAQ,QAAQ;AAAA,MACrE;AAAA,IACJ;AAAA,EACJ;AATO,EAAAA,gBAAS;AAcT,WAAS,cAKd,SAAY,EAAE,YAAY,YAAY,GAA0C;AAC9E,WAAO;AAAA,MACH,GAAG;AAAA,MACH,UAAU;AAAA,MACV,eAAe;AAAA,MACf,YAAY,cAAc,CAAC;AAAA,MAC3B,aAAa,eAAe,CAAC;AAAA,IACjC;AAAA,EACJ;AAbO,EAAAA,gBAAS;AAAA,GA3EH;",
5
5
  "names": ["MutableCluster"]
6
6
  }
@@ -14,7 +14,17 @@ export declare class StatusResponseError extends MatterError {
14
14
  constructor(message: string, code: Status, clusterCode?: number | undefined);
15
15
  static is(error: unknown, ...codes: Status[]): error is StatusResponseError;
16
16
  get id(): string;
17
+ static create(code: Status, message?: string, clusterCode?: number): StatusResponseError;
17
18
  }
19
+ /**
20
+ * Thrown for errors that have an unknown {@link Status} code.
21
+ */
22
+ export declare class UnknownStatusResponseError extends StatusResponseError {
23
+ }
24
+ /**
25
+ * A specialized {@link StatusResponseError} class for each standard {@link Status} code.
26
+ */
27
+ export declare const StatusResponse: Record<`${keyof typeof Status}Error`, new (message?: string, clusterCode?: number) => StatusResponseError>;
18
28
  /** Error class for Status response errors that were received from the other node. */
19
29
  export declare class ReceivedStatusResponseError extends StatusResponseError {
20
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StatusResponseError.d.ts","sourceRoot":"","sources":["../../../src/common/StatusResponseError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAc,MAAM,iBAAiB,CAAC;AAE1D;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;aAG5B,IAAI,EAAE,MAAM;aACZ,WAAW,CAAC,EAAE,MAAM;gBAFpC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,YAAA;IAKxC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,mBAAmB;IAI3E,IAAa,EAAE,WAWd;CACJ;AAED,qFAAqF;AACrF,qBAAa,2BAA4B,SAAQ,mBAAmB;CAAG"}
1
+ {"version":3,"file":"StatusResponseError.d.ts","sourceRoot":"","sources":["../../../src/common/StatusResponseError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAA0B,MAAM,iBAAiB,CAAC;AAItE;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;aAG5B,IAAI,EAAE,MAAM;aACZ,WAAW,CAAC,EAAE,MAAM;gBAFpC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,YAAA;IAKxC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,mBAAmB;IAI3E,IAAa,EAAE,WAWd;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;CASrE;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,mBAAmB;CAAG;AAEtE;;GAEG;AACH,eAAO,MAAM,cAAc,EA8BtB,MAAM,CAAC,GAAG,MAAM,OAAO,MAAM,OAAO,EAAE,KAAK,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,mBAAmB,CAAC,CAAC;AAEhH,qFAAqF;AACrF,qBAAa,2BAA4B,SAAQ,mBAAmB;CAAG"}
@@ -4,7 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Status } from "#globals/Status.js";
7
- import { MatterError, decamelize } from "@matter/general";
7
+ import { MatterError, capitalize, decamelize } from "@matter/general";
8
+ const specializationIndex = {};
8
9
  class StatusResponseError extends MatterError {
9
10
  constructor(message, code, clusterCode) {
10
11
  super(message);
@@ -24,11 +25,48 @@ class StatusResponseError extends MatterError {
24
25
  }
25
26
  return id;
26
27
  }
28
+ static create(code, message, clusterCode) {
29
+ const type = specializationIndex[code];
30
+ if (type) {
31
+ return new type(message, clusterCode);
32
+ }
33
+ throw new UnknownStatusResponseError(message ?? "Unknown status response", code, clusterCode);
34
+ }
35
+ }
36
+ class UnknownStatusResponseError extends StatusResponseError {
27
37
  }
38
+ const StatusResponse = Object.fromEntries(
39
+ Object.entries(Status).map(([name, code]) => {
40
+ if (typeof code !== "number") {
41
+ return void 0;
42
+ }
43
+ const ct = {
44
+ [name]: class extends StatusResponseError {
45
+ constructor(message, clusterCode) {
46
+ if (message === void 0) {
47
+ message = capitalize(decamelize(name));
48
+ }
49
+ super(message, code, clusterCode);
50
+ let codeStr = `code ${code}`;
51
+ if (clusterCode !== void 0) {
52
+ codeStr = `${codeStr}; cluster code ${clusterCode}`;
53
+ }
54
+ this.message = `message (${codeStr})`;
55
+ }
56
+ }
57
+ };
58
+ const constructor = ct[name];
59
+ Object.defineProperty(constructor, "name", { value: name });
60
+ specializationIndex[code] = constructor;
61
+ return [`${name}Error`, constructor];
62
+ }).filter((e) => e)
63
+ );
28
64
  class ReceivedStatusResponseError extends StatusResponseError {
29
65
  }
30
66
  export {
31
67
  ReceivedStatusResponseError,
32
- StatusResponseError
68
+ StatusResponse,
69
+ StatusResponseError,
70
+ UnknownStatusResponseError
33
71
  };
34
72
  //# sourceMappingURL=StatusResponseError.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/common/StatusResponseError.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAS,aAAa,kBAAkB;AAKjC,MAAM,4BAA4B,YAAY;AAAA,EAC1C,YACH,SACgB,MACA,aAClB;AACE,UAAM,OAAO;AAHG;AACA;AAAA,EAGpB;AAAA,EAEA,OAAO,GAAG,UAAmB,OAA+C;AACxE,WAAO,iBAAiB,wBAAwB,CAAC,MAAM,UAAU,MAAM,SAAS,MAAM,IAAI;AAAA,EAC9F;AAAA,EAEA,IAAa,KAAK;AACd,UAAM,KAAK,MAAM;AAEjB,QAAI,OAAO,mBAAmB;AAC1B,YAAM,OAAO,OAAO,KAAK,IAAI;AAC7B,UAAI,MAAM;AACN,eAAO,WAAW,IAAI;AAAA,MAC1B;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;AAGO,MAAM,oCAAoC,oBAAoB;AAAC;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAS,aAAa,YAAY,kBAAkB;AAEpD,MAAM,sBAAsB,CAAC;AAKtB,MAAM,4BAA4B,YAAY;AAAA,EAC1C,YACH,SACgB,MACA,aAClB;AACE,UAAM,OAAO;AAHG;AACA;AAAA,EAGpB;AAAA,EAEA,OAAO,GAAG,UAAmB,OAA+C;AACxE,WAAO,iBAAiB,wBAAwB,CAAC,MAAM,UAAU,MAAM,SAAS,MAAM,IAAI;AAAA,EAC9F;AAAA,EAEA,IAAa,KAAK;AACd,UAAM,KAAK,MAAM;AAEjB,QAAI,OAAO,mBAAmB;AAC1B,YAAM,OAAO,OAAO,KAAK,IAAI;AAC7B,UAAI,MAAM;AACN,eAAO,WAAW,IAAI;AAAA,MAC1B;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,OAAO,OAAO,MAAc,SAAkB,aAAsB;AAChE,UAAM,OAAO,oBAAoB,IAAI;AAErC,QAAI,MAAM;AACN,aAAO,IAAI,KAAK,SAAS,WAAW;AAAA,IACxC;AAEA,UAAM,IAAI,2BAA2B,WAAW,2BAA2B,MAAM,WAAW;AAAA,EAChG;AACJ;AAKO,MAAM,mCAAmC,oBAAoB;AAAC;AAK9D,MAAM,iBAAiB,OAAO;AAAA,EACjC,OAAO,QAAQ,MAAM,EAChB,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM;AACnB,QAAI,OAAO,SAAS,UAAU;AAC1B,aAAO;AAAA,IACX;AACA,UAAM,KAAK;AAAA,MACP,CAAC,IAAI,GAAG,cAAc,oBAAoB;AAAA,QACtC,YAAY,SAAkB,aAAsB;AAChD,cAAI,YAAY,QAAW;AACvB,sBAAU,WAAW,WAAW,IAAI,CAAC;AAAA,UACzC;AAEA,gBAAM,SAAS,MAAgB,WAAW;AAE1C,cAAI,UAAU,QAAQ,IAAI;AAC1B,cAAI,gBAAgB,QAAW;AAC3B,sBAAU,GAAG,OAAO,kBAAkB,WAAW;AAAA,UACrD;AAEA,eAAK,UAAU,YAAY,OAAO;AAAA,QACtC;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,cAAc,GAAG,IAAI;AAC3B,WAAO,eAAe,aAAa,QAAQ,EAAE,OAAO,KAAK,CAAC;AAC1D,wBAAoB,IAAI,IAAI;AAC5B,WAAO,CAAC,GAAG,IAAI,SAAS,WAAW;AAAA,EACvC,CAAC,EACA,OAAO,OAAK,CAAC;AACtB;AAGO,MAAM,oCAAoC,oBAAoB;AAAC;",
5
5
  "names": []
6
6
  }
@@ -5,7 +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
+ import type { NodeId } from "./NodeId.js";
9
9
  /**
10
10
  * A Group Identifier (Group ID or GID) is a 16-bit number that identifies a set of Nodes across a
11
11
  * Fabric at the message layer (see Section 4.15, “Group Key Management”). A Group ID can further
@@ -33,6 +33,8 @@ export declare namespace GroupId {
33
33
  function isApplicationGroupId(groupId: GroupId): boolean;
34
34
  function assertGroupId(groupId: GroupId): void;
35
35
  function fromNodeId(nodeId: NodeId): GroupId;
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 isGroupNodeId: (nodeId: NodeId) => boolean;
36
38
  }
37
39
  /** Tlv Schema for a Group Id. */
38
40
  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,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"}
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,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;;;;;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;IAED,gHAAgH;IACzG,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAG9C,CAAC;CACL;AAED,iCAAiC;AACjC,eAAO,MAAM,UAAU,6BAItB,CAAC"}
@@ -7,7 +7,6 @@ import { InternalError, UnexpectedDataError } from "#general";
7
7
  import { ValidationOutOfBoundsError, validatorOf } from "../common/ValidationError.js";
8
8
  import { TlvUInt16 } from "../tlv/TlvNumber.js";
9
9
  import { TlvWrapper } from "../tlv/TlvWrapper.js";
10
- import { NodeId } from "./NodeId.js";
11
10
  function GroupId(groupId, validate = true) {
12
11
  if (!validate || groupId >= 0 && groupId <= 65535) {
13
12
  return Number(groupId);
@@ -30,13 +29,17 @@ function GroupId(groupId, validate = true) {
30
29
  }
31
30
  GroupId2.assertGroupId = assertGroupId;
32
31
  function fromNodeId(nodeId) {
33
- if (!NodeId.isGroupNodeId(nodeId)) {
32
+ if (!(0, GroupId2.isGroupNodeId)(nodeId)) {
34
33
  throw new InternalError(`NodeId ${nodeId} is not a Group NodeId`);
35
34
  }
36
35
  const groupId = Number(nodeId & BigInt(65535));
37
36
  return GroupId2(groupId);
38
37
  }
39
38
  GroupId2.fromNodeId = fromNodeId;
39
+ GroupId2.isGroupNodeId = (nodeId) => {
40
+ const nodeIdHex = nodeId.toString(16);
41
+ return nodeIdHex.startsWith("ffffffffffff") && nodeIdHex.length === 16;
42
+ };
40
43
  })(GroupId || (GroupId = {}));
41
44
  const TlvGroupId = new TlvWrapper(
42
45
  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;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;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAkB,eAAe,2BAA2B;AAC5D,SAAS,4BAA4B,mBAAmB;AACxD,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAiBpB,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,KAACA,SAAA,eAAc,MAAM,GAAG;AACxB,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;AAWT,EAAMA,SAAA,gBAAgB,CAAC,WAA4B;AACtD,UAAM,YAAY,OAAO,SAAS,EAAE;AACpC,WAAO,UAAU,WAAW,cAAc,KAAK,UAAU,WAAW;AAAA,EACxE;AAAA,GAxCa;AA4CV,MAAM,aAAa,IAAI;AAAA,EAC1B;AAAA,EACA,aAAW;AAAA,EACX,WAAS,QAAQ,OAAO,KAAK;AAAA;AACjC;",
5
5
  "names": ["GroupId"]
6
6
  }
@@ -32,8 +32,6 @@ 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 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
35
  const fromGroupId: (groupId: number) => NodeId;
38
36
  /**
39
37
  * A Temporary Local Node ID is a 64-bit Node ID that contains an implementation-dependent value in its lower
@@ -1 +1 @@
1
- {"version":3,"file":"NodeId.d.ts","sourceRoot":"","sources":["../../../src/datatype/NodeId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAS,MAAM,EAAmC,MAAM,UAAU,CAAC;AAEnF,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,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAE9D;AAED,yBAAiB,MAAM,CAAC;IAIpB;;;OAGG;IACI,MAAM,mBAAmB,QAAY,CAAC;IAEtC,MAAM,WAAW,GAAI,QAAQ,MAAM,WAIzC,CAAC;IAEF;;;;OAIG;IACI,MAAM,uBAAuB,GAAI,QAAQ,MAAM,KAAG,MAOxD,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"}
1
+ {"version":3,"file":"NodeId.d.ts","sourceRoot":"","sources":["../../../src/datatype/NodeId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAS,MAAM,EAAmC,MAAM,UAAU,CAAC;AAEnF,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,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAE9D;AAED,yBAAiB,MAAM,CAAC;IAIpB;;;OAGG;IACI,MAAM,mBAAmB,QAAY,CAAC;IAEtC,MAAM,WAAW,GAAI,QAAQ,MAAM,WAIzC,CAAC;IAEF;;;;OAIG;IACI,MAAM,uBAAuB,GAAI,QAAQ,MAAM,KAAG,MAOxD,CAAC;IAEF;;OAEG;IACI,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,OAEpD,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"}
@@ -31,10 +31,6 @@ function NodeId(v) {
31
31
  NodeId2.isOperationalNodeId = (nodeId) => {
32
32
  return nodeId >= OPERATIONAL_NODE_MIN && nodeId <= OPERATIONAL_NODE_MAX;
33
33
  };
34
- NodeId2.isGroupNodeId = (nodeId) => {
35
- const nodeIdHex = nodeId.toString(16);
36
- return nodeIdHex.startsWith("ffffffffffff") && nodeIdHex.length === 16;
37
- };
38
34
  NodeId2.fromGroupId = (groupId) => {
39
35
  return NodeId2(BigInt("0xFFFFFFFFFFFF" + GroupId(groupId).toString(16).padStart(4, "0")));
40
36
  };
@@ -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,SAAS,eAAe;AACxB,SAAkB,OAAe,YAAY,2BAA2B;AACxE,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,4BAA4B;AAU9B,SAAS,OAAO,GAAyC;AAC5D,SAAO,OAAO,CAAC;AACnB;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,CAAC,WAA2B;AAC/D,WAAO,MAAM;AACT,YAAM,eAAe,OAAO,aAAa,CAAC;AAC1C,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;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,eAAe;AACxB,SAAkB,OAAe,YAAY,2BAA2B;AACxE,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,4BAA4B;AAU9B,SAAS,OAAO,GAAyC;AAC5D,SAAO,OAAO,CAAC;AACnB;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,CAAC,WAA2B;AAC/D,WAAO,MAAM;AACT,YAAM,eAAe,OAAO,aAAa,CAAC;AAC1C,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,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,GAvFa;AA2FV,MAAM,YAAY,IAAI;AAAA,EACzB;AAAA,EACA,YAAU;AAAA,EACV,WAAS,OAAO,OAAO,KAAK,CAAC;AACjC;",
5
5
  "names": ["NodeId"]
6
6
  }
@@ -62,4 +62,7 @@ export declare enum SecureChannelStatusCode {
62
62
  */
63
63
  GeneralError = 65535
64
64
  }
65
+ export declare namespace SecureMessageType {
66
+ function isStandaloneAck(protocolId: number, messageType: number): boolean;
67
+ }
65
68
  //# sourceMappingURL=secure-channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"secure-channel.d.ts","sourceRoot":"","sources":["../../../../src/protocol/definitions/secure-channel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,0BAA0B,IAAS,CAAC;AAEjD,oBAAY,iBAAiB;IACzB;;;OAGG;IACH,iBAAiB,IAAO;IAExB;;;OAGG;IACH,iBAAiB,IAAO;IAExB;;;OAGG;IACH,aAAa,KAAO;IAEpB,gFAAgF;IAChF,iBAAiB,KAAO;IAExB,2FAA2F;IAC3F,kBAAkB,KAAO;IAEzB,mDAAmD;IACnD,SAAS,KAAO;IAEhB,oDAAoD;IACpD,SAAS,KAAO;IAEhB,mDAAmD;IACnD,SAAS,KAAO;IAEhB,8CAA8C;IAC9C,MAAM,KAAO;IAEb,+CAA+C;IAC/C,MAAM,KAAO;IAEb,8CAA8C;IAC9C,MAAM,KAAO;IAEb,0DAA0D;IAC1D,YAAY,KAAO;IAEnB,qHAAqH;IACrH,YAAY,KAAO;IAEnB,0FAA0F;IAC1F,iBAAiB,KAAO;CAC3B;AAED,oBAAY,uBAAuB;IAC/B,yFAAyF;IACzF,OAAO,IAAS;IAEhB,oDAAoD;IACpD,kBAAkB,IAAS;IAE3B,oDAAoD;IACpD,YAAY,IAAS;IAErB,8GAA8G;IAC9G,YAAY,IAAS;IAErB,4GAA4G;IAC5G,IAAI,IAAS;IAEb;;OAEG;IACH,YAAY,QAAS;CACxB"}
1
+ {"version":3,"file":"secure-channel.d.ts","sourceRoot":"","sources":["../../../../src/protocol/definitions/secure-channel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,0BAA0B,IAAS,CAAC;AAEjD,oBAAY,iBAAiB;IACzB;;;OAGG;IACH,iBAAiB,IAAO;IAExB;;;OAGG;IACH,iBAAiB,IAAO;IAExB;;;OAGG;IACH,aAAa,KAAO;IAEpB,gFAAgF;IAChF,iBAAiB,KAAO;IAExB,2FAA2F;IAC3F,kBAAkB,KAAO;IAEzB,mDAAmD;IACnD,SAAS,KAAO;IAEhB,oDAAoD;IACpD,SAAS,KAAO;IAEhB,mDAAmD;IACnD,SAAS,KAAO;IAEhB,8CAA8C;IAC9C,MAAM,KAAO;IAEb,+CAA+C;IAC/C,MAAM,KAAO;IAEb,8CAA8C;IAC9C,MAAM,KAAO;IAEb,0DAA0D;IAC1D,YAAY,KAAO;IAEnB,qHAAqH;IACrH,YAAY,KAAO;IAEnB,0FAA0F;IAC1F,iBAAiB,KAAO;CAC3B;AAED,oBAAY,uBAAuB;IAC/B,yFAAyF;IACzF,OAAO,IAAS;IAEhB,oDAAoD;IACpD,kBAAkB,IAAS;IAE3B,oDAAoD;IACpD,YAAY,IAAS;IAErB,8GAA8G;IAC9G,YAAY,IAAS;IAErB,4GAA4G;IAC5G,IAAI,IAAS;IAEb;;OAEG;IACH,YAAY,QAAS;CACxB;AAED,yBAAiB,iBAAiB,CAAC;IAC/B,SAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAEtE;CACJ"}
@@ -30,6 +30,12 @@ var SecureChannelStatusCode = /* @__PURE__ */ ((SecureChannelStatusCode2) => {
30
30
  SecureChannelStatusCode2[SecureChannelStatusCode2["GeneralError"] = 65535] = "GeneralError";
31
31
  return SecureChannelStatusCode2;
32
32
  })(SecureChannelStatusCode || {});
33
+ ((SecureMessageType2) => {
34
+ function isStandaloneAck(protocolId, messageType) {
35
+ return protocolId === SECURE_CHANNEL_PROTOCOL_ID && messageType === 16 /* StandaloneAck */;
36
+ }
37
+ SecureMessageType2.isStandaloneAck = isStandaloneAck;
38
+ })(SecureMessageType || (SecureMessageType = {}));
33
39
  export {
34
40
  SECURE_CHANNEL_PROTOCOL_ID,
35
41
  SecureChannelStatusCode,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/protocol/definitions/secure-channel.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AASO,MAAM,6BAA6B;AAEnC,IAAK,oBAAL,kBAAKA,uBAAL;AAKH,EAAAA,sCAAA,uBAAoB,KAApB;AAMA,EAAAA,sCAAA,uBAAoB,KAApB;AAMA,EAAAA,sCAAA,mBAAgB,MAAhB;AAGA,EAAAA,sCAAA,uBAAoB,MAApB;AAGA,EAAAA,sCAAA,wBAAqB,MAArB;AAGA,EAAAA,sCAAA,eAAY,MAAZ;AAGA,EAAAA,sCAAA,eAAY,MAAZ;AAGA,EAAAA,sCAAA,eAAY,MAAZ;AAGA,EAAAA,sCAAA,YAAS,MAAT;AAGA,EAAAA,sCAAA,YAAS,MAAT;AAGA,EAAAA,sCAAA,YAAS,MAAT;AAGA,EAAAA,sCAAA,kBAAe,MAAf;AAGA,EAAAA,sCAAA,kBAAe,MAAf;AAGA,EAAAA,sCAAA,uBAAoB,MAApB;AAlDQ,SAAAA;AAAA,GAAA;AAqDL,IAAK,0BAAL,kBAAKC,6BAAL;AAEH,EAAAA,kDAAA,aAAU,KAAV;AAGA,EAAAA,kDAAA,wBAAqB,KAArB;AAGA,EAAAA,kDAAA,kBAAe,KAAf;AAGA,EAAAA,kDAAA,kBAAe,KAAf;AAGA,EAAAA,kDAAA,UAAO,KAAP;AAKA,EAAAA,kDAAA,kBAAe,SAAf;AAnBQ,SAAAA;AAAA,GAAA;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AASO,MAAM,6BAA6B;AAEnC,IAAK,oBAAL,kBAAKA,uBAAL;AAKH,EAAAA,sCAAA,uBAAoB,KAApB;AAMA,EAAAA,sCAAA,uBAAoB,KAApB;AAMA,EAAAA,sCAAA,mBAAgB,MAAhB;AAGA,EAAAA,sCAAA,uBAAoB,MAApB;AAGA,EAAAA,sCAAA,wBAAqB,MAArB;AAGA,EAAAA,sCAAA,eAAY,MAAZ;AAGA,EAAAA,sCAAA,eAAY,MAAZ;AAGA,EAAAA,sCAAA,eAAY,MAAZ;AAGA,EAAAA,sCAAA,YAAS,MAAT;AAGA,EAAAA,sCAAA,YAAS,MAAT;AAGA,EAAAA,sCAAA,YAAS,MAAT;AAGA,EAAAA,sCAAA,kBAAe,MAAf;AAGA,EAAAA,sCAAA,kBAAe,MAAf;AAGA,EAAAA,sCAAA,uBAAoB,MAApB;AAlDQ,SAAAA;AAAA,GAAA;AAqDL,IAAK,0BAAL,kBAAKC,6BAAL;AAEH,EAAAA,kDAAA,aAAU,KAAV;AAGA,EAAAA,kDAAA,wBAAqB,KAArB;AAGA,EAAAA,kDAAA,kBAAe,KAAf;AAGA,EAAAA,kDAAA,kBAAe,KAAf;AAGA,EAAAA,kDAAA,UAAO,KAAP;AAKA,EAAAA,kDAAA,kBAAe,SAAf;AAnBQ,SAAAA;AAAA,GAAA;AAAA,CAsBL,CAAUD,uBAAV;AACI,WAAS,gBAAgB,YAAoB,aAAqB;AACrE,WAAO,eAAe,8BAA8B,gBAAgB;AAAA,EACxE;AAFO,EAAAA,mBAAS;AAAA,GADH;",
5
5
  "names": ["SecureMessageType", "SecureChannelStatusCode"]
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TlvSubscribeResponse.d.ts","sourceRoot":"","sources":["../../../../src/protocol/messages/TlvSubscribeResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,gEAAgE;AAEhE,eAAO,MAAM,oBAAoB;IAC7B,mCAAmC;;IAGnC,kEAAkE;;;EAGpE,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"TlvSubscribeResponse.d.ts","sourceRoot":"","sources":["../../../../src/protocol/messages/TlvSubscribeResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,gEAAgE;AAEhE,eAAO,MAAM,oBAAoB;IAC7B,mCAAmC;;IAGnC,kEAAkE;;;EAIpE,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/protocol/messages/TlvSubscribeResponse.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,WAAW,WAAW,gBAAgB;AAC/C,SAAS,UAAU,iBAAiB;AAI7B,MAAM,uBAAuB,UAAU;AAAA;AAAA,EAE1C,gBAAgB,SAAS,GAAG,SAAS;AAAA;AAAA,EAGrC,aAAa,SAAS,GAAG,SAAS;AAAA,EAClC,0BAA0B,SAAS,KAAM,QAAQ;AACrD,CAAC;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,WAAW,WAAW,gBAAgB;AAC/C,SAAS,UAAU,iBAAiB;AAI7B,MAAM,uBAAuB,UAAU;AAAA;AAAA,EAE1C,gBAAgB,SAAS,GAAG,SAAS;AAAA;AAAA,EAGrC,aAAa,SAAS,GAAG,SAAS;AAAA,EAElC,0BAA0B,SAAS,KAAM,QAAQ;AACrD,CAAC;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/types",
3
- "version": "0.15.1",
3
+ "version": "0.15.2-alpha.0-20250704-2715344f0",
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.15.1",
37
- "@matter/model": "0.15.1"
36
+ "@matter/general": "0.15.2-alpha.0-20250704-2715344f0",
37
+ "@matter/model": "0.15.2-alpha.0-20250704-2715344f0"
38
38
  },
39
39
  "devDependencies": {
40
- "@matter/tools": "0.15.1",
41
- "@matter/testing": "0.15.1"
40
+ "@matter/tools": "0.15.2-alpha.0-20250704-2715344f0",
41
+ "@matter/testing": "0.15.2-alpha.0-20250704-2715344f0"
42
42
  },
43
43
  "files": [
44
44
  "dist/**/*",
@@ -9,8 +9,7 @@ import { ClusterType } from "./ClusterType.js";
9
9
  const registered = {} as { [id: number]: ClusterType };
10
10
 
11
11
  /**
12
- * The formal definitions of clusters in Matter.js are generated
13
- * programmatically.
12
+ * The formal definitions of clusters in Matter.js are generated programmatically.
14
13
  *
15
14
  * This singleton acts as a registry for generated {@link ClusterType}s.
16
15
  */
@@ -21,7 +21,14 @@ const featureSelectionCache = new WeakMap<ClusterType, Record<string, WeakRef<Cl
21
21
  * A "cluster composer" manages cluster configuration based on feature selection.
22
22
  */
23
23
  export class ClusterComposer<const T extends ClusterType> {
24
- constructor(public cluster: T) {}
24
+ #allowInvalidFeatureCombinations: boolean;
25
+
26
+ constructor(
27
+ public cluster: T,
28
+ allowInvalidFeatures = false,
29
+ ) {
30
+ this.#allowInvalidFeatureCombinations = allowInvalidFeatures;
31
+ }
25
32
 
26
33
  /**
27
34
  * Build a cluster using selected feature flags.
@@ -30,7 +37,7 @@ export class ClusterComposer<const T extends ClusterType> {
30
37
  * @throws {IllegalClusterError} if the feature combination is disallowed by the Matter specification
31
38
  */
32
39
  compose<const SelectionT extends ClusterComposer.FeatureSelection<T>>(selection: SelectionT) {
33
- this.validateFeatureSelection(selection);
40
+ this.#validateFeatureSelection(selection);
34
41
 
35
42
  const extensions = this.cluster.extensions;
36
43
  let cluster: ClusterType | undefined;
@@ -77,7 +84,7 @@ export class ClusterComposer<const T extends ClusterType> {
77
84
 
78
85
  for (const selector of extensions) {
79
86
  if (selector.component) {
80
- this.accept(cluster, selector.component, this.cluster, selector.flags);
87
+ this.#accept(cluster, selector.component, this.cluster, selector.flags);
81
88
  } else {
82
89
  this.reject(cluster, selector.flags);
83
90
  }
@@ -106,7 +113,9 @@ export class ClusterComposer<const T extends ClusterType> {
106
113
  /**
107
114
  * Validates a set of feature flags against the features supported by a cluster.
108
115
  */
109
- private validateFeatureSelection(features: ClusterComposer.FeatureSelection<any>) {
116
+ #validateFeatureSelection(features: ClusterComposer.FeatureSelection<any>) {
117
+ // Note that if features are defined they must exist; #ignoreInvalidFeatureCombinations does NOT apply here
118
+
110
119
  for (const f of features) {
111
120
  if (!this.cluster.features[camelize(f)]) {
112
121
  throw new IllegalClusterError(`"${f}" is not a valid feature identifier`);
@@ -119,7 +128,7 @@ export class ClusterComposer<const T extends ClusterType> {
119
128
  * "original" if present. This allows for component insertion without overwrite of other changes to the named
120
129
  * element.
121
130
  */
122
- private accept(
131
+ #accept(
123
132
  definition: ClusterComposer.WritableDefinition,
124
133
  component: Partial<ClusterType.Elements>,
125
134
  original: Partial<ClusterType> | undefined,
@@ -172,6 +181,10 @@ export class ClusterComposer<const T extends ClusterType> {
172
181
  * Throws an error if a feature combination is illegal per the Matter specification.
173
182
  */
174
183
  private reject(definition: ClusterType, flags: ClusterComposer.FeatureFlags) {
184
+ if (this.#allowInvalidFeatureCombinations) {
185
+ return;
186
+ }
187
+
175
188
  for (const k in flags) {
176
189
  if (!!definition.supportedFeatures[k] !== !!flags[k]) {
177
190
  return;
@@ -15,7 +15,7 @@ import { ElementModifier } from "./ElementModifier.js";
15
15
  * defined by the Matter specification.
16
16
  */
17
17
  export type MutableCluster<
18
- T extends ClusterType.Options,
18
+ T extends ClusterType.Options = ClusterType.Options,
19
19
  C extends ClusterComposer.Component[] = [],
20
20
  > = ClusterComposer.WithComponents<ClusterType.Of<T>, C> & MutableCluster.Methods<ClusterType.Of<T>>;
21
21
 
@@ -104,7 +104,7 @@ export namespace MutableCluster {
104
104
  * We define clusters this way if the Matter specification defines a cluster with a set of features, one of which is
105
105
  * required, but none of which is required if others are enabled.
106
106
  */
107
- export interface ExtensibleOnly<T extends ClusterType.Options> {
107
+ export interface ExtensibleOnly<T extends ClusterType.Options = ClusterType.Options> {
108
108
  id: ClusterId;
109
109
  name: string;
110
110
 
@@ -114,7 +114,7 @@ export namespace MutableCluster {
114
114
  /**
115
115
  * Create a factory for clusters that require extension.
116
116
  */
117
- export function ExtensibleOnly<const T extends ClusterType.Options>(options: T) {
117
+ export function ExtensibleOnly<const T extends ClusterType.Options = ClusterType.Options>(options: T) {
118
118
  return {
119
119
  id: options.id,
120
120
  name: options.name,
@@ -5,7 +5,9 @@
5
5
  */
6
6
 
7
7
  import { Status } from "#globals/Status.js";
8
- import { MatterError, decamelize } from "@matter/general";
8
+ import { MatterError, capitalize, decamelize } from "@matter/general";
9
+
10
+ const specializationIndex = {} as Record<Status, new (message?: string, statusCode?: number) => StatusResponseError>;
9
11
 
10
12
  /**
11
13
  * Base class for errors that should produce protocol-facing status codes.
@@ -35,7 +37,57 @@ export class StatusResponseError extends MatterError {
35
37
 
36
38
  return id;
37
39
  }
40
+
41
+ static create(code: Status, message?: string, clusterCode?: number) {
42
+ const type = specializationIndex[code];
43
+
44
+ if (type) {
45
+ return new type(message, clusterCode);
46
+ }
47
+
48
+ throw new UnknownStatusResponseError(message ?? "Unknown status response", code, clusterCode);
49
+ }
38
50
  }
39
51
 
52
+ /**
53
+ * Thrown for errors that have an unknown {@link Status} code.
54
+ */
55
+ export class UnknownStatusResponseError extends StatusResponseError {}
56
+
57
+ /**
58
+ * A specialized {@link StatusResponseError} class for each standard {@link Status} code.
59
+ */
60
+ export const StatusResponse = Object.fromEntries(
61
+ Object.entries(Status)
62
+ .map(([name, code]) => {
63
+ if (typeof code !== "number") {
64
+ return undefined;
65
+ }
66
+ const ct = {
67
+ [name]: class extends StatusResponseError {
68
+ constructor(message?: string, clusterCode?: number) {
69
+ if (message === undefined) {
70
+ message = capitalize(decamelize(name));
71
+ }
72
+
73
+ super(message, code as Status, clusterCode);
74
+
75
+ let codeStr = `code ${code}`;
76
+ if (clusterCode !== undefined) {
77
+ codeStr = `${codeStr}; cluster code ${clusterCode}`;
78
+ }
79
+
80
+ this.message = `message (${codeStr})`;
81
+ }
82
+ },
83
+ } as const;
84
+ const constructor = ct[name];
85
+ Object.defineProperty(constructor, "name", { value: name });
86
+ specializationIndex[code] = constructor;
87
+ return [`${name}Error`, constructor];
88
+ })
89
+ .filter(e => e) as [string, new (message?: string, clusterCode?: number) => StatusResponseError][],
90
+ ) as Record<`${keyof typeof Status}Error`, new (message?: string, clusterCode?: number) => StatusResponseError>;
91
+
40
92
  /** Error class for Status response errors that were received from the other node. */
41
93
  export class ReceivedStatusResponseError extends StatusResponseError {}
@@ -8,7 +8,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
+ import type { NodeId } from "./NodeId.js";
12
12
 
13
13
  /**
14
14
  * A Group Identifier (Group ID or GID) is a 16-bit number that identifies a set of Nodes across a
@@ -58,7 +58,7 @@ export namespace GroupId {
58
58
  }
59
59
 
60
60
  export function fromNodeId(nodeId: NodeId): GroupId {
61
- if (!NodeId.isGroupNodeId(nodeId)) {
61
+ if (!isGroupNodeId(nodeId)) {
62
62
  throw new InternalError(`NodeId ${nodeId} is not a Group NodeId`);
63
63
  }
64
64
  // NodeId is a 64-bit value, where the lower 16 bits represent the GroupId
@@ -66,6 +66,12 @@ export namespace GroupId {
66
66
  // TODO Check if 0 is allowed??
67
67
  return GroupId(groupId);
68
68
  }
69
+
70
+ /** A Group Node ID is a 64-bit Node ID that contains a particular Group ID in the lower half of the Node ID. */
71
+ export const isGroupNodeId = (nodeId: NodeId): boolean => {
72
+ const nodeIdHex = nodeId.toString(16);
73
+ return nodeIdHex.startsWith("ffffffffffff") && nodeIdHex.length === 16;
74
+ };
69
75
  }
70
76
 
71
77
  /** Tlv Schema for a Group Id. */
@@ -59,12 +59,6 @@ export namespace NodeId {
59
59
  return nodeId >= OPERATIONAL_NODE_MIN && nodeId <= OPERATIONAL_NODE_MAX;
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. */
63
- export const isGroupNodeId = (nodeId: NodeId): boolean => {
64
- const nodeIdHex = nodeId.toString(16);
65
- return nodeIdHex.startsWith("ffffffffffff") && nodeIdHex.length === 16;
66
- };
67
-
68
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. */
69
63
  export const fromGroupId = (groupId: number): NodeId => {
70
64
  return NodeId(BigInt("0xFFFFFFFFFFFF" + GroupId(groupId).toString(16).padStart(4, "0")));
@@ -83,3 +83,9 @@ export enum SecureChannelStatusCode {
83
83
  */
84
84
  GeneralError = 0xffff,
85
85
  }
86
+
87
+ export namespace SecureMessageType {
88
+ export function isStandaloneAck(protocolId: number, messageType: number) {
89
+ return protocolId === SECURE_CHANNEL_PROTOCOL_ID && messageType === SecureMessageType.StandaloneAck;
90
+ }
91
+ }
@@ -16,6 +16,7 @@ export const TlvSubscribeResponse = TlvObject({
16
16
 
17
17
  /** The final maximum interval for the subscription in seconds. */
18
18
  maxInterval: TlvField(2, TlvUInt16),
19
+
19
20
  interactionModelRevision: TlvField(0xff, TlvUInt8),
20
21
  });
21
22