@matter/types 0.15.1 → 0.15.2-alpha.0-20250703-2e16aba2b
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/cluster/ClusterRegistry.d.ts +1 -2
- package/dist/cjs/cluster/ClusterRegistry.d.ts.map +1 -1
- package/dist/cjs/cluster/ClusterRegistry.js.map +1 -1
- package/dist/cjs/cluster/mutation/ClusterComposer.d.ts +2 -11
- package/dist/cjs/cluster/mutation/ClusterComposer.d.ts.map +1 -1
- package/dist/cjs/cluster/mutation/ClusterComposer.js +10 -5
- package/dist/cjs/cluster/mutation/ClusterComposer.js.map +1 -1
- package/dist/cjs/cluster/mutation/MutableCluster.d.ts +3 -3
- package/dist/cjs/cluster/mutation/MutableCluster.d.ts.map +1 -1
- package/dist/cjs/cluster/mutation/MutableCluster.js.map +1 -1
- package/dist/cjs/common/StatusResponseError.d.ts +10 -0
- package/dist/cjs/common/StatusResponseError.d.ts.map +1 -1
- package/dist/cjs/common/StatusResponseError.js +39 -1
- package/dist/cjs/common/StatusResponseError.js.map +1 -1
- package/dist/cjs/protocol/messages/TlvSubscribeResponse.d.ts.map +1 -1
- package/dist/cjs/protocol/messages/TlvSubscribeResponse.js.map +1 -1
- package/dist/esm/cluster/ClusterRegistry.d.ts +1 -2
- package/dist/esm/cluster/ClusterRegistry.d.ts.map +1 -1
- package/dist/esm/cluster/ClusterRegistry.js.map +1 -1
- package/dist/esm/cluster/mutation/ClusterComposer.d.ts +2 -11
- package/dist/esm/cluster/mutation/ClusterComposer.d.ts.map +1 -1
- package/dist/esm/cluster/mutation/ClusterComposer.js +10 -5
- package/dist/esm/cluster/mutation/ClusterComposer.js.map +1 -1
- package/dist/esm/cluster/mutation/MutableCluster.d.ts +3 -3
- package/dist/esm/cluster/mutation/MutableCluster.d.ts.map +1 -1
- package/dist/esm/cluster/mutation/MutableCluster.js.map +1 -1
- package/dist/esm/common/StatusResponseError.d.ts +10 -0
- package/dist/esm/common/StatusResponseError.d.ts.map +1 -1
- package/dist/esm/common/StatusResponseError.js +40 -2
- package/dist/esm/common/StatusResponseError.js.map +1 -1
- package/dist/esm/protocol/messages/TlvSubscribeResponse.d.ts.map +1 -1
- package/dist/esm/protocol/messages/TlvSubscribeResponse.js.map +1 -1
- package/package.json +5 -5
- package/src/cluster/ClusterRegistry.ts +1 -2
- package/src/cluster/mutation/ClusterComposer.ts +18 -5
- package/src/cluster/mutation/MutableCluster.ts +3 -3
- package/src/common/StatusResponseError.ts +53 -1
- package/src/protocol/messages/TlvSubscribeResponse.ts +1 -0
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ClusterType } from "./ClusterType.js";
|
|
7
7
|
/**
|
|
8
|
-
* The formal definitions of clusters in Matter.js are generated
|
|
9
|
-
* programmatically.
|
|
8
|
+
* The formal definitions of clusters in Matter.js are generated programmatically.
|
|
10
9
|
*
|
|
11
10
|
* This singleton acts as a registry for generated {@link ClusterType}s.
|
|
12
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterRegistry.d.ts","sourceRoot":"","sources":["../../../src/cluster/ClusterRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C
|
|
1
|
+
{"version":3,"file":"ClusterRegistry.d.ts","sourceRoot":"","sources":["../../../src/cluster/ClusterRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C;;;;GAIG;AACH,yBAAiB,eAAe,CAAC;IAC7B;;OAEG;IACH,SAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEvD;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,QAU5C;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cluster/ClusterRegistry.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,aAAa,CAAC;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,aAAa,CAAC;AAOb,IAAU;AAAA,CAAV,CAAUA,qBAAV;AAII,WAAS,IAAI,IAAqC;AACrD,WAAO,WAAW,EAAE;AAAA,EACxB;AAFO,EAAAA,iBAAS;AAOT,WAAS,SAAS,SAAsB;AAC3C,QAAI,CAAC,SAAS;AACV;AAAA,IACJ;AAEA,QAAI,QAAQ,OAAO,QAAW;AAC1B;AAAA,IACJ;AAEA,eAAW,QAAQ,EAAE,IAAI;AAAA,EAC7B;AAVO,EAAAA,iBAAS;AAAA,GAXH;",
|
|
5
5
|
"names": ["ClusterRegistry"]
|
|
6
6
|
}
|
|
@@ -11,8 +11,9 @@ export declare class IllegalClusterError extends MatterError {
|
|
|
11
11
|
* A "cluster composer" manages cluster configuration based on feature selection.
|
|
12
12
|
*/
|
|
13
13
|
export declare class ClusterComposer<const T extends ClusterType> {
|
|
14
|
+
#private;
|
|
14
15
|
cluster: T;
|
|
15
|
-
constructor(cluster: T);
|
|
16
|
+
constructor(cluster: T, allowInvalidFeatures?: boolean);
|
|
16
17
|
/**
|
|
17
18
|
* Build a cluster using selected feature flags.
|
|
18
19
|
*
|
|
@@ -20,16 +21,6 @@ export declare class ClusterComposer<const T extends ClusterType> {
|
|
|
20
21
|
* @throws {IllegalClusterError} if the feature combination is disallowed by the Matter specification
|
|
21
22
|
*/
|
|
22
23
|
compose<const SelectionT extends ClusterComposer.FeatureSelection<T>>(selection: SelectionT): ClusterComposer.Of<T, SelectionT>;
|
|
23
|
-
/**
|
|
24
|
-
* Validates a set of feature flags against the features supported by a cluster.
|
|
25
|
-
*/
|
|
26
|
-
private validateFeatureSelection;
|
|
27
|
-
/**
|
|
28
|
-
* Injects a component into a cluster if the cluster supports the specified features. Uses matching element from
|
|
29
|
-
* "original" if present. This allows for component insertion without overwrite of other changes to the named
|
|
30
|
-
* element.
|
|
31
|
-
*/
|
|
32
|
-
private accept;
|
|
33
24
|
static injectElements(definition: Partial<ClusterType.Options>, component: Partial<ClusterType.Options>, original?: Partial<ClusterType>): void;
|
|
34
25
|
/**
|
|
35
26
|
* Throws an error if a feature combination is illegal per the Matter specification.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterComposer.d.ts","sourceRoot":"","sources":["../../../../src/cluster/mutation/ClusterComposer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,WAAW,EAAa,MAAM,UAAU,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,mBAAoB,SAAQ,WAAW;CAAG;AAQvD;;GAEG;AACH,qBAAa,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW
|
|
1
|
+
{"version":3,"file":"ClusterComposer.d.ts","sourceRoot":"","sources":["../../../../src/cluster/mutation/ClusterComposer.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,9 +35,11 @@ class IllegalClusterError extends import_general.MatterError {
|
|
|
35
35
|
}
|
|
36
36
|
const featureSelectionCache = /* @__PURE__ */ new WeakMap();
|
|
37
37
|
class ClusterComposer {
|
|
38
|
-
constructor(cluster) {
|
|
38
|
+
constructor(cluster, allowInvalidFeatures = false) {
|
|
39
39
|
this.cluster = cluster;
|
|
40
|
+
this.#allowInvalidFeatureCombinations = allowInvalidFeatures;
|
|
40
41
|
}
|
|
42
|
+
#allowInvalidFeatureCombinations;
|
|
41
43
|
/**
|
|
42
44
|
* Build a cluster using selected feature flags.
|
|
43
45
|
*
|
|
@@ -45,7 +47,7 @@ class ClusterComposer {
|
|
|
45
47
|
* @throws {IllegalClusterError} if the feature combination is disallowed by the Matter specification
|
|
46
48
|
*/
|
|
47
49
|
compose(selection) {
|
|
48
|
-
this
|
|
50
|
+
this.#validateFeatureSelection(selection);
|
|
49
51
|
const extensions = this.cluster.extensions;
|
|
50
52
|
let cluster;
|
|
51
53
|
const cacheKey = [...selection].sort().join("\u241C");
|
|
@@ -79,7 +81,7 @@ class ClusterComposer {
|
|
|
79
81
|
});
|
|
80
82
|
for (const selector of extensions) {
|
|
81
83
|
if (selector.component) {
|
|
82
|
-
this
|
|
84
|
+
this.#accept(cluster, selector.component, this.cluster, selector.flags);
|
|
83
85
|
} else {
|
|
84
86
|
this.reject(cluster, selector.flags);
|
|
85
87
|
}
|
|
@@ -103,7 +105,7 @@ class ClusterComposer {
|
|
|
103
105
|
/**
|
|
104
106
|
* Validates a set of feature flags against the features supported by a cluster.
|
|
105
107
|
*/
|
|
106
|
-
validateFeatureSelection(features) {
|
|
108
|
+
#validateFeatureSelection(features) {
|
|
107
109
|
for (const f of features) {
|
|
108
110
|
if (!this.cluster.features[(0, import_general.camelize)(f)]) {
|
|
109
111
|
throw new IllegalClusterError(`"${f}" is not a valid feature identifier`);
|
|
@@ -115,7 +117,7 @@ class ClusterComposer {
|
|
|
115
117
|
* "original" if present. This allows for component insertion without overwrite of other changes to the named
|
|
116
118
|
* element.
|
|
117
119
|
*/
|
|
118
|
-
accept(definition, component, original, flags) {
|
|
120
|
+
#accept(definition, component, original, flags) {
|
|
119
121
|
for (const k in flags) {
|
|
120
122
|
if (!!definition.supportedFeatures[k] !== !!flags[k]) {
|
|
121
123
|
return;
|
|
@@ -153,6 +155,9 @@ class ClusterComposer {
|
|
|
153
155
|
* Throws an error if a feature combination is illegal per the Matter specification.
|
|
154
156
|
*/
|
|
155
157
|
reject(definition, flags) {
|
|
158
|
+
if (this.#allowInvalidFeatureCombinations) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
156
161
|
for (const k in flags) {
|
|
157
162
|
if (!!definition.supportedFeatures[k] !== !!flags[k]) {
|
|
158
163
|
return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/cluster/mutation/ClusterComposer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAiD;AACjD,mBAA2B;AAC3B,0BAAyB;AACzB,yBAA4B;AAT5B;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,4BAA4B,2BAAY;AAAC;AAMtD,MAAM,wBAAwB,oBAAI,QAA2D;AAKtF,MAAM,gBAA6C;AAAA,
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,cAAc,CACtB,CAAC,SAAS,WAAW,CAAC,OAAO,
|
|
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,yBAA4B;AAC5B,6BAAgC;AAChC,6BAAgC;AAVhC;AAAA;AAAA;AAAA;AAAA;AAwBO,SAAS,eACZ,YACG,YACL;AACE,QAAM,cAAU,gCAAY,OAAO;AAEnC,aAAW,aAAa,YAAY;AAChC,2CAAgB,eAAe,SAAS,SAAS;AAAA,EACrD;AAEA,SAAO,OAAO,SAAS;AAAA,IACnB,QAAQ,UAA4D;AAChE,aAAO,IAAI,uCAAgB,OAAO,EAAE,QAAQ,QAAQ;AAAA,IACxD;AAAA,IAEA,MAAM,aAA0D;AAC5D,aAAO,IAAI,uCAAgB,OAAO,EAAE,MAAM,WAAW;AAAA,IACzD;AAAA,IAEA,IAAI,QAA0D;AAC1D,aAAO,IAAI,uCAAgB,OAAO,EAAE,IAAI,MAAM;AAAA,IAClD;AAAA,IAEA,OAAO,OAAqD;AACxD,aAAO,IAAI,uCAAgB,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,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,yBAA4B;AAC5B,6BAAgC;AAChC,6BAAgC;AAVhC;AAAA;AAAA;AAAA;AAAA;AAwBO,SAAS,eACZ,YACG,YACL;AACE,QAAM,cAAU,gCAAY,OAAO;AAEnC,aAAW,aAAa,YAAY;AAChC,2CAAgB,eAAe,SAAS,SAAS;AAAA,EACrD;AAEA,SAAO,OAAO,SAAS;AAAA,IACnB,QAAQ,UAA4D;AAChE,aAAO,IAAI,uCAAgB,OAAO,EAAE,QAAQ,QAAQ;AAAA,IACxD;AAAA,IAEA,MAAM,aAA0D;AAC5D,aAAO,IAAI,uCAAgB,OAAO,EAAE,MAAM,WAAW;AAAA,IACzD;AAAA,IAEA,IAAI,QAA0D;AAC1D,aAAO,IAAI,uCAAgB,OAAO,EAAE,IAAI,MAAM;AAAA,IAClD;AAAA,IAEA,OAAO,OAAqD;AACxD,aAAO,IAAI,uCAAgB,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,2CAAgB,gCAAY,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,
|
|
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"}
|
|
@@ -19,7 +19,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var StatusResponseError_exports = {};
|
|
20
20
|
__export(StatusResponseError_exports, {
|
|
21
21
|
ReceivedStatusResponseError: () => ReceivedStatusResponseError,
|
|
22
|
-
|
|
22
|
+
StatusResponse: () => StatusResponse,
|
|
23
|
+
StatusResponseError: () => StatusResponseError,
|
|
24
|
+
UnknownStatusResponseError: () => UnknownStatusResponseError
|
|
23
25
|
});
|
|
24
26
|
module.exports = __toCommonJS(StatusResponseError_exports);
|
|
25
27
|
var import_Status = require("#globals/Status.js");
|
|
@@ -29,6 +31,7 @@ var import_general = require("@matter/general");
|
|
|
29
31
|
* Copyright 2022-2025 Matter.js Authors
|
|
30
32
|
* SPDX-License-Identifier: Apache-2.0
|
|
31
33
|
*/
|
|
34
|
+
const specializationIndex = {};
|
|
32
35
|
class StatusResponseError extends import_general.MatterError {
|
|
33
36
|
constructor(message, code, clusterCode) {
|
|
34
37
|
super(message);
|
|
@@ -48,7 +51,42 @@ class StatusResponseError extends import_general.MatterError {
|
|
|
48
51
|
}
|
|
49
52
|
return id;
|
|
50
53
|
}
|
|
54
|
+
static create(code, message, clusterCode) {
|
|
55
|
+
const type = specializationIndex[code];
|
|
56
|
+
if (type) {
|
|
57
|
+
return new type(message, clusterCode);
|
|
58
|
+
}
|
|
59
|
+
throw new UnknownStatusResponseError(message ?? "Unknown status response", code, clusterCode);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
class UnknownStatusResponseError extends StatusResponseError {
|
|
51
63
|
}
|
|
64
|
+
const StatusResponse = Object.fromEntries(
|
|
65
|
+
Object.entries(import_Status.Status).map(([name, code]) => {
|
|
66
|
+
if (typeof code !== "number") {
|
|
67
|
+
return void 0;
|
|
68
|
+
}
|
|
69
|
+
const ct = {
|
|
70
|
+
[name]: class extends StatusResponseError {
|
|
71
|
+
constructor(message, clusterCode) {
|
|
72
|
+
if (message === void 0) {
|
|
73
|
+
message = (0, import_general.capitalize)((0, import_general.decamelize)(name));
|
|
74
|
+
}
|
|
75
|
+
super(message, code, clusterCode);
|
|
76
|
+
let codeStr = `code ${code}`;
|
|
77
|
+
if (clusterCode !== void 0) {
|
|
78
|
+
codeStr = `${codeStr}; cluster code ${clusterCode}`;
|
|
79
|
+
}
|
|
80
|
+
this.message = `message (${codeStr})`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const constructor = ct[name];
|
|
85
|
+
Object.defineProperty(constructor, "name", { value: name });
|
|
86
|
+
specializationIndex[code] = constructor;
|
|
87
|
+
return [`${name}Error`, constructor];
|
|
88
|
+
}).filter((e) => e)
|
|
89
|
+
);
|
|
52
90
|
class ReceivedStatusResponseError extends StatusResponseError {
|
|
53
91
|
}
|
|
54
92
|
//# 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;AAAA;AAMA,oBAAuB;AACvB,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAuB;AACvB,qBAAoD;AAPpD;AAAA;AAAA;AAAA;AAAA;AASA,MAAM,sBAAsB,CAAC;AAKtB,MAAM,4BAA4B,2BAAY;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,qBAAO,KAAK,IAAI;AAC7B,UAAI,MAAM;AACN,mBAAO,2BAAW,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,oBAAM,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,0BAAU,+BAAW,2BAAW,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
|
}
|
|
@@ -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;;;
|
|
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,uBAA+C;AAC/C,uBAAoC;AARpC;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,2BAAuB,4BAAU;AAAA;AAAA,EAE1C,oBAAgB,2BAAS,GAAG,0BAAS;AAAA;AAAA,EAGrC,iBAAa,2BAAS,GAAG,0BAAS;AAAA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,uBAA+C;AAC/C,uBAAoC;AARpC;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,2BAAuB,4BAAU;AAAA;AAAA,EAE1C,oBAAgB,2BAAS,GAAG,0BAAS;AAAA;AAAA,EAGrC,iBAAa,2BAAS,GAAG,0BAAS;AAAA,EAElC,8BAA0B,2BAAS,KAAM,yBAAQ;AACrD,CAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ClusterType } from "./ClusterType.js";
|
|
7
7
|
/**
|
|
8
|
-
* The formal definitions of clusters in Matter.js are generated
|
|
9
|
-
* programmatically.
|
|
8
|
+
* The formal definitions of clusters in Matter.js are generated programmatically.
|
|
10
9
|
*
|
|
11
10
|
* This singleton acts as a registry for generated {@link ClusterType}s.
|
|
12
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterRegistry.d.ts","sourceRoot":"","sources":["../../../src/cluster/ClusterRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C
|
|
1
|
+
{"version":3,"file":"ClusterRegistry.d.ts","sourceRoot":"","sources":["../../../src/cluster/ClusterRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C;;;;GAIG;AACH,yBAAiB,eAAe,CAAC;IAC7B;;OAEG;IACH,SAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEvD;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,QAU5C;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cluster/ClusterRegistry.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,aAAa,CAAC;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,aAAa,CAAC;AAOb,IAAU;AAAA,CAAV,CAAUA,qBAAV;AAII,WAAS,IAAI,IAAqC;AACrD,WAAO,WAAW,EAAE;AAAA,EACxB;AAFO,EAAAA,iBAAS;AAOT,WAAS,SAAS,SAAsB;AAC3C,QAAI,CAAC,SAAS;AACV;AAAA,IACJ;AAEA,QAAI,QAAQ,OAAO,QAAW;AAC1B;AAAA,IACJ;AAEA,eAAW,QAAQ,EAAE,IAAI;AAAA,EAC7B;AAVO,EAAAA,iBAAS;AAAA,GAXH;",
|
|
5
5
|
"names": ["ClusterRegistry"]
|
|
6
6
|
}
|
|
@@ -11,8 +11,9 @@ export declare class IllegalClusterError extends MatterError {
|
|
|
11
11
|
* A "cluster composer" manages cluster configuration based on feature selection.
|
|
12
12
|
*/
|
|
13
13
|
export declare class ClusterComposer<const T extends ClusterType> {
|
|
14
|
+
#private;
|
|
14
15
|
cluster: T;
|
|
15
|
-
constructor(cluster: T);
|
|
16
|
+
constructor(cluster: T, allowInvalidFeatures?: boolean);
|
|
16
17
|
/**
|
|
17
18
|
* Build a cluster using selected feature flags.
|
|
18
19
|
*
|
|
@@ -20,16 +21,6 @@ export declare class ClusterComposer<const T extends ClusterType> {
|
|
|
20
21
|
* @throws {IllegalClusterError} if the feature combination is disallowed by the Matter specification
|
|
21
22
|
*/
|
|
22
23
|
compose<const SelectionT extends ClusterComposer.FeatureSelection<T>>(selection: SelectionT): ClusterComposer.Of<T, SelectionT>;
|
|
23
|
-
/**
|
|
24
|
-
* Validates a set of feature flags against the features supported by a cluster.
|
|
25
|
-
*/
|
|
26
|
-
private validateFeatureSelection;
|
|
27
|
-
/**
|
|
28
|
-
* Injects a component into a cluster if the cluster supports the specified features. Uses matching element from
|
|
29
|
-
* "original" if present. This allows for component insertion without overwrite of other changes to the named
|
|
30
|
-
* element.
|
|
31
|
-
*/
|
|
32
|
-
private accept;
|
|
33
24
|
static injectElements(definition: Partial<ClusterType.Options>, component: Partial<ClusterType.Options>, original?: Partial<ClusterType>): void;
|
|
34
25
|
/**
|
|
35
26
|
* Throws an error if a feature combination is illegal per the Matter specification.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterComposer.d.ts","sourceRoot":"","sources":["../../../../src/cluster/mutation/ClusterComposer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,WAAW,EAAa,MAAM,UAAU,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,mBAAoB,SAAQ,WAAW;CAAG;AAQvD;;GAEG;AACH,qBAAa,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW
|
|
1
|
+
{"version":3,"file":"ClusterComposer.d.ts","sourceRoot":"","sources":["../../../../src/cluster/mutation/ClusterComposer.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,11 @@ class IllegalClusterError extends MatterError {
|
|
|
11
11
|
}
|
|
12
12
|
const featureSelectionCache = /* @__PURE__ */ new WeakMap();
|
|
13
13
|
class ClusterComposer {
|
|
14
|
-
constructor(cluster) {
|
|
14
|
+
constructor(cluster, allowInvalidFeatures = false) {
|
|
15
15
|
this.cluster = cluster;
|
|
16
|
+
this.#allowInvalidFeatureCombinations = allowInvalidFeatures;
|
|
16
17
|
}
|
|
18
|
+
#allowInvalidFeatureCombinations;
|
|
17
19
|
/**
|
|
18
20
|
* Build a cluster using selected feature flags.
|
|
19
21
|
*
|
|
@@ -21,7 +23,7 @@ class ClusterComposer {
|
|
|
21
23
|
* @throws {IllegalClusterError} if the feature combination is disallowed by the Matter specification
|
|
22
24
|
*/
|
|
23
25
|
compose(selection) {
|
|
24
|
-
this
|
|
26
|
+
this.#validateFeatureSelection(selection);
|
|
25
27
|
const extensions = this.cluster.extensions;
|
|
26
28
|
let cluster;
|
|
27
29
|
const cacheKey = [...selection].sort().join("\u241C");
|
|
@@ -55,7 +57,7 @@ class ClusterComposer {
|
|
|
55
57
|
});
|
|
56
58
|
for (const selector of extensions) {
|
|
57
59
|
if (selector.component) {
|
|
58
|
-
this
|
|
60
|
+
this.#accept(cluster, selector.component, this.cluster, selector.flags);
|
|
59
61
|
} else {
|
|
60
62
|
this.reject(cluster, selector.flags);
|
|
61
63
|
}
|
|
@@ -79,7 +81,7 @@ class ClusterComposer {
|
|
|
79
81
|
/**
|
|
80
82
|
* Validates a set of feature flags against the features supported by a cluster.
|
|
81
83
|
*/
|
|
82
|
-
validateFeatureSelection(features) {
|
|
84
|
+
#validateFeatureSelection(features) {
|
|
83
85
|
for (const f of features) {
|
|
84
86
|
if (!this.cluster.features[camelize(f)]) {
|
|
85
87
|
throw new IllegalClusterError(`"${f}" is not a valid feature identifier`);
|
|
@@ -91,7 +93,7 @@ class ClusterComposer {
|
|
|
91
93
|
* "original" if present. This allows for component insertion without overwrite of other changes to the named
|
|
92
94
|
* element.
|
|
93
95
|
*/
|
|
94
|
-
accept(definition, component, original, flags) {
|
|
96
|
+
#accept(definition, component, original, flags) {
|
|
95
97
|
for (const k in flags) {
|
|
96
98
|
if (!!definition.supportedFeatures[k] !== !!flags[k]) {
|
|
97
99
|
return;
|
|
@@ -129,6 +131,9 @@ class ClusterComposer {
|
|
|
129
131
|
* Throws an error if a feature combination is illegal per the Matter specification.
|
|
130
132
|
*/
|
|
131
133
|
reject(definition, flags) {
|
|
134
|
+
if (this.#allowInvalidFeatureCombinations) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
132
137
|
for (const k in flags) {
|
|
133
138
|
if (!!definition.supportedFeatures[k] !== !!flags[k]) {
|
|
134
139
|
return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/cluster/mutation/ClusterComposer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,UAAU,aAAa,iBAAiB;AACjD,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAErB,MAAM,4BAA4B,YAAY;AAAC;AAMtD,MAAM,wBAAwB,oBAAI,QAA2D;AAKtF,MAAM,gBAA6C;AAAA,
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,cAAc,CACtB,CAAC,SAAS,WAAW,CAAC,OAAO,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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;
|
|
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
|
}
|
|
@@ -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;;;
|
|
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,
|
|
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.
|
|
3
|
+
"version": "0.15.2-alpha.0-20250703-2e16aba2b",
|
|
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.
|
|
37
|
-
"@matter/model": "0.15.
|
|
36
|
+
"@matter/general": "0.15.2-alpha.0-20250703-2e16aba2b",
|
|
37
|
+
"@matter/model": "0.15.2-alpha.0-20250703-2e16aba2b"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@matter/tools": "0.15.
|
|
41
|
-
"@matter/testing": "0.15.
|
|
40
|
+
"@matter/tools": "0.15.2-alpha.0-20250703-2e16aba2b",
|
|
41
|
+
"@matter/testing": "0.15.2-alpha.0-20250703-2e16aba2b"
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 {}
|