@matter/protocol 0.11.7 → 0.11.8
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/interaction/AttributeDataDecoder.d.ts +2 -2
- package/dist/cjs/interaction/AttributeDataDecoder.d.ts.map +1 -1
- package/dist/cjs/interaction/AttributeDataDecoder.js +9 -2
- package/dist/cjs/interaction/AttributeDataDecoder.js.map +1 -1
- package/dist/esm/interaction/AttributeDataDecoder.d.ts +2 -2
- package/dist/esm/interaction/AttributeDataDecoder.d.ts.map +1 -1
- package/dist/esm/interaction/AttributeDataDecoder.js +9 -2
- package/dist/esm/interaction/AttributeDataDecoder.js.map +1 -1
- package/package.json +6 -6
- package/src/interaction/AttributeDataDecoder.ts +18 -7
- package/src/interaction/InteractionServer.ts +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2024 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { AttributeId, ClusterId, EndpointNumber, NodeId, TlvAttributeData, TlvAttributeReport, TlvSchema, TypeFromSchema } from "#types";
|
|
6
|
+
import { ArraySchema, AttributeId, ClusterId, EndpointNumber, NodeId, TlvAttributeData, TlvAttributeReport, TlvSchema, TypeFromSchema } from "#types";
|
|
7
7
|
/** Represents a fully qualified and decoded attribute value from a received DataReport */
|
|
8
8
|
export type DecodedAttributeReportValue<T> = {
|
|
9
9
|
path: {
|
|
@@ -36,7 +36,7 @@ export declare function normalizeAttributeData(data: TypeFromSchema<typeof TlvAt
|
|
|
36
36
|
* DataReport.
|
|
37
37
|
*/
|
|
38
38
|
export declare function normalizeAndDecodeAttributeData(data: TypeFromSchema<typeof TlvAttributeData>[]): DecodedAttributeValue<any>[];
|
|
39
|
-
export declare function decodeListAttributeValueWithSchema<T>(schema:
|
|
39
|
+
export declare function decodeListAttributeValueWithSchema<T>(schema: ArraySchema<T>, values: TypeFromSchema<typeof TlvAttributeData>[], currentValue?: T[]): T[] | undefined;
|
|
40
40
|
/** Decodes the data for one attribute via a schema including array un-chunking. */
|
|
41
41
|
export declare function decodeAttributeValueWithSchema<T>(schema: TlvSchema<T>, values: TypeFromSchema<typeof TlvAttributeData>[], defaultValue?: T): T | undefined;
|
|
42
42
|
/** Decodes the data for one unknown attribute via the AnySchema including array un-chunking. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeDataDecoder.d.ts","sourceRoot":"","sources":["../../../src/interaction/AttributeDataDecoder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"AttributeDataDecoder.d.ts","sourceRoot":"","sources":["../../../src/interaction/AttributeDataDecoder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACH,WAAW,EAGX,WAAW,EAEX,SAAS,EACT,cAAc,EAGd,MAAM,EAEN,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACjB,MAAM,QAAQ,CAAC;AAIhB,0FAA0F;AAC1F,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI;IACzC,IAAI,EAAE;QACF,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,cAAc,CAAC;QAC3B,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC;CACZ,CAAC;AAEF,4GAA4G;AAC5G,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qCAAqC,CACjD,IAAI,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,EAAE,GAClD,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAKpC;AAED,wBAAgB,0BAA0B,CACtC,IAAI,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EAC/C,mBAAmB,UAAQ,GAC5B,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,CAmC3C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EAC/C,mBAAmB,UAAQ,GAC5B,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAgB7C;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC3C,IAAI,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,GAChD,qBAAqB,CAAC,GAAG,CAAC,EAAE,CA8C9B;AAmBD,wBAAgB,kCAAkC,CAAC,CAAC,EAChD,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EACjD,YAAY,CAAC,EAAE,CAAC,EAAE,GACnB,CAAC,EAAE,GAAG,SAAS,CASjB;AAED,mFAAmF;AACnF,wBAAgB,8BAA8B,CAAC,CAAC,EAC5C,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EACjD,YAAY,CAAC,EAAE,CAAC,GACjB,CAAC,GAAG,SAAS,CAuBf;AAED,gGAAgG;AAChG,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,GAAG,GAAG,CAkBlG;AAED,+GAA+G;AAC/G,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,2BAA2B,CAAC,GAAG,CAAC,EAAE;;;;;;EAejG"}
|
|
@@ -135,7 +135,7 @@ function decodeValueForAttribute(attribute, values) {
|
|
|
135
135
|
}
|
|
136
136
|
function decodeListAttributeValueWithSchema(schema, values, currentValue) {
|
|
137
137
|
if (!(schema instanceof import_types.ArraySchema)) {
|
|
138
|
-
throw new import_general.UnexpectedDataError(`Attribute is not
|
|
138
|
+
throw new import_general.UnexpectedDataError(`Attribute is not a list but multiple values were returned.`);
|
|
139
139
|
}
|
|
140
140
|
return schema.decodeFromChunkedArray(
|
|
141
141
|
values.map(({ data, path: { listIndex } }) => ({ listIndex, element: data })),
|
|
@@ -146,10 +146,17 @@ function decodeAttributeValueWithSchema(schema, values, defaultValue) {
|
|
|
146
146
|
if (!values.length) {
|
|
147
147
|
return defaultValue;
|
|
148
148
|
}
|
|
149
|
+
if (schema instanceof import_types.ArraySchema) {
|
|
150
|
+
return decodeListAttributeValueWithSchema(schema, values, defaultValue);
|
|
151
|
+
}
|
|
149
152
|
if (values.length === 1 && values[0].path.listIndex === void 0) {
|
|
150
153
|
return schema.decodeTlv(values[0].data);
|
|
151
154
|
}
|
|
152
|
-
|
|
155
|
+
if (values.some(({ path: { listIndex } }) => listIndex !== void 0)) {
|
|
156
|
+
throw new import_general.UnexpectedDataError(`Attribute is not a list but we got actions with list entries`);
|
|
157
|
+
}
|
|
158
|
+
const bestDataVersionValue = values.sort(({ dataVersion: a }, { dataVersion: b }) => (b ?? 0) - (a ?? 0));
|
|
159
|
+
return schema.decodeTlv(bestDataVersionValue[0].data);
|
|
153
160
|
}
|
|
154
161
|
function decodeUnknownAttributeValue(values) {
|
|
155
162
|
const schema = import_types.TlvAny;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/interaction/AttributeDataDecoder.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAwD;AACxD,mBAgBO;AAvBP;AAAA;AAAA;AAAA;AAAA;AAyBA,MAAM,SAAS,sBAAO,IAAI,sBAAsB;AAwBzC,SAAS,sCACZ,MACkC;AAElC,QAAM,aAAa,KAAK,QAAQ,CAAC,EAAE,cAAc,MAAO,kBAAkB,SAAY,gBAAgB,CAAC,CAAE;AAEzG,SAAO,gCAAgC,UAAU;AACrD;AAEO,SAAS,2BACZ,MACA,sBAAsB,OACmB;AAEzC,MAAI;AASJ,OAAK,QAAQ,WAAS;AAClB,QAAI,UAAU,OAAW;AACzB,UAAM,EAAE,KAAK,IAAI;AACjB,QAAI,KAAK,sBAAsB;AAC3B,UAAI,aAAa,OAAW,OAAM,IAAI,mCAAoB,+CAA+C;AACzG,UAAI,KAAK,WAAW,UAAa,SAAS,WAAW,OAAW,MAAK,SAAS,SAAS;AACvF,UAAI,KAAK,eAAe,OAAW,MAAK,aAAa,SAAS;AAC9D,UAAI,KAAK,cAAc,OAAW,MAAK,YAAY,SAAS;AAC5D,UAAI,KAAK,gBAAgB,OAAW,MAAK,cAAc,SAAS;AAChE,UAAI,MAAM,gBAAgB,UAAa,SAAS,gBAAgB;AAC5D,cAAM,cAAc,SAAS;AAAA,IACrC,WAAW,KAAK,eAAe,UAAa,KAAK,cAAc,UAAa,KAAK,gBAAgB,QAAW;AACxG,iBAAW;AAAA,QACP,QAAQ,KAAK;AAAA,QACb,YAAY,KAAK;AAAA,QACjB,WAAW,KAAK;AAAA,QAChB,aAAa,KAAK;AAAA,QAClB,aAAa,MAAM;AAAA,MACvB;AAAA,IACJ,WAAW,CAAC,qBAAqB;AAC7B,YAAM,IAAI,mCAAoB,uDAAuD,sBAAO,OAAO,IAAI,CAAC;AAAA,IAC5G;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AAMO,SAAS,uBACZ,MACA,sBAAsB,OACqB;AAC3C,QAAM,eAAe,2BAA2B,MAAM,mBAAmB;AAEzE,QAAM,eAAe,oBAAI,IAAuD;AAChF,eAAa,QAAQ,WAAS;AAC1B,QAAI,CAAC,MAAO;AACZ,UAAM;AAAA,MACF,MAAM,EAAE,QAAQ,YAAY,WAAW,YAAY;AAAA,IACvD,IAAI;AACJ,UAAM,QAAQ,GAAG,MAAM,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW;AACjE,UAAM,OAAO,aAAa,IAAI,KAAK,KAAK,CAAC;AACzC,SAAK,KAAK,KAAK;AACf,iBAAa,IAAI,OAAO,IAAI;AAAA,EAChC,CAAC;AAED,SAAO,MAAM,KAAK,aAAa,OAAO,CAAC;AAC3C;AAMO,SAAS,gCACZ,MAC4B;AAC5B,QAAM,eAAe,uBAAuB,IAAI;AAChD,QAAM,SAAS,IAAI,MAAkC;AACrD,eAAa,QAAQ,YAAU;AAC3B,UAAM;AAAA,MACF,MAAM,EAAE,QAAQ,YAAY,WAAW,YAAY;AAAA,MACnD;AAAA,IACJ,IAAI,OAAO,CAAC;AAEZ,QAAI,eAAe,UAAa,cAAc,UAAa,gBAAgB,QAAW;AAClF,YAAM,IAAI,mCAAoB,0BAA0B,UAAU,IAAI,SAAS,IAAI,WAAW,EAAE;AAAA,IACpG;AACA,QAAI;AACA,YAAM,cAAU,6BAAe,SAAS;AACxC,YAAM,sBAAkB,sCAAwB,SAAS,WAAW;AACpE,UAAI,oBAAoB,QAAW;AAC/B,eAAO;AAAA,UACH,4BAA4B,0BAAW,IAAI,SAAS,CAAC,IAAI,0BAAW,IAAI,WAAW,CAAC;AAAA,QACxF;AAEA,cAAM,gBAAgB,YAAY,0BAAW,IAAI,WAAW,CAAC;AAC7D,cAAMA,SAAQ,4BAA4B,MAAM;AAChD,eAAO,KAAK;AAAA,UACR,MAAM,EAAE,QAAQ,YAAY,WAAW,aAAa,cAAc;AAAA,UAClE,SAAS;AAAA,UACT,OAAAA;AAAA,QACJ,CAAC;AAED;AAAA,MACJ;AACA,YAAM,EAAE,WAAW,KAAK,IAAI;AAC5B,YAAM,QAAQ,wBAAwB,WAAW,MAAM;AACvD,aAAO,KAAK;AAAA,QACR,MAAM,EAAE,QAAQ,YAAY,WAAW,aAAa,eAAe,KAAK;AAAA,QACxE,SAAS;AAAA,QACT;AAAA,MACJ,CAAC;AAAA,IACL,SAAS,OAAY;AACjB,aAAO;AAAA,QACH,4BAA4B,UAAU,IAAI,0BAAW,IAAI,SAAS,CAAC,IAAI,0BAAW,IAAI,WAAW,CAAC,KAC9F,MAAM,OACV;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AAGA,SAAS,wBACL,WACA,QAC8B;AAC9B,QAAM,EAAE,QAAQ,UAAU,SAAS,iBAAiB,IAAI;AAGxD,MAAI,CAAC,OAAO,QAAQ;AAChB,QAAI,SAAU,QAAO;AACrB,QAAI,qBAAqB,OAAW,OAAM,IAAI,4BAAe,sBAAsB;AACnF,WAAO;AAAA,EACX;AAEA,SAAO,+BAA+B,QAAQ,MAAM;AACxD;AAEO,SAAS,mCACZ,QACA,QACA,cACe;AAEf,MAAI,EAAE,kBAAkB,2BAAc;AAClC,UAAM,IAAI,mCAAoB,4DAA4D;AAAA,EAC9F;AACA,SAAO,OAAO;AAAA,IACV,OAAO,IAAI,CAAC,EAAE,MAAM,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,SAAS,KAAK,EAAE;AAAA,IAC5E;AAAA,EACJ;AACJ;AAGO,SAAS,+BACZ,QACA,QACA,cACa;AAEb,MAAI,CAAC,OAAO,QAAQ;AAChB,WAAO;AAAA,EACX;AAGA,MAAI,kBAAkB,0BAAa;AAC/B,WAAO,mCAAsC,QAAQ,QAAQ,YAAmB;AAAA,EACpF;AAGA,MAAI,OAAO,WAAW,KAAK,OAAO,CAAC,EAAE,KAAK,cAAc,QAAW;AAC/D,WAAO,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI;AAAA,EAC1C;AAGA,MAAI,OAAO,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,MAAS,GAAG;AACnE,UAAM,IAAI,mCAAoB,8DAA8D;AAAA,EAChG;AAEA,QAAM,uBAAuB,OAAO,KAAK,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,KAAK,MAAM,KAAK,EAAE;AACxG,SAAO,OAAO,UAAU,qBAAqB,CAAC,EAAE,IAAI;AACxD;AAGO,SAAS,4BAA4B,QAAwD;AAChG,QAAM,SAAS;AAEf,MAAI,CAAC,OAAO,QAAQ;AAChB,WAAO;AAAA,EACX;AAGA,MAAI,OAAO,WAAW,KAAK,OAAO,CAAC,EAAE,KAAK,cAAc,QAAW;AAC/D,UAAM,aAAa,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI;AAClD,WAAO,OAAO,mBAAmB,UAAU;AAAA,EAC/C,OAAO;AAEH,UAAM,aAAa,IAAI,yBAAY,MAAM,EAAE;AAAA,MACvC,OAAO,IAAI,CAAC,EAAE,MAAM,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,SAAS,KAAK,EAAE;AAAA,IAChF;AACA,WAAO,WAAW,IAAI,aAAW,OAAO,mBAAmB,OAAO,CAAC;AAAA,EACvE;AACJ;AAGO,SAAS,0CAA0C,MAA0C;AAChG,QAAM,YAA0E,CAAC;AACjF,aAAW;AAAA,IACP,MAAM,EAAE,YAAY,WAAW,cAAc;AAAA,IAC7C;AAAA,EACJ,KAAK,MAAM;AACP,QAAI,UAAU,UAAU,MAAM,QAAW;AACrC,gBAAU,UAAU,IAAI,CAAC;AAAA,IAC7B;AACA,QAAI,UAAU,UAAU,EAAE,SAAS,MAAM,QAAW;AAChD,gBAAU,UAAU,EAAE,SAAS,IAAI,CAAC;AAAA,IACxC;AACA,cAAU,UAAU,EAAE,SAAS,EAAE,aAAa,IAAI;AAAA,EACtD;AACA,SAAO;AACX;",
|
|
5
5
|
"names": ["value"]
|
|
6
6
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2024 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { AttributeId, ClusterId, EndpointNumber, NodeId, TlvAttributeData, TlvAttributeReport, TlvSchema, TypeFromSchema } from "#types";
|
|
6
|
+
import { ArraySchema, AttributeId, ClusterId, EndpointNumber, NodeId, TlvAttributeData, TlvAttributeReport, TlvSchema, TypeFromSchema } from "#types";
|
|
7
7
|
/** Represents a fully qualified and decoded attribute value from a received DataReport */
|
|
8
8
|
export type DecodedAttributeReportValue<T> = {
|
|
9
9
|
path: {
|
|
@@ -36,7 +36,7 @@ export declare function normalizeAttributeData(data: TypeFromSchema<typeof TlvAt
|
|
|
36
36
|
* DataReport.
|
|
37
37
|
*/
|
|
38
38
|
export declare function normalizeAndDecodeAttributeData(data: TypeFromSchema<typeof TlvAttributeData>[]): DecodedAttributeValue<any>[];
|
|
39
|
-
export declare function decodeListAttributeValueWithSchema<T>(schema:
|
|
39
|
+
export declare function decodeListAttributeValueWithSchema<T>(schema: ArraySchema<T>, values: TypeFromSchema<typeof TlvAttributeData>[], currentValue?: T[]): T[] | undefined;
|
|
40
40
|
/** Decodes the data for one attribute via a schema including array un-chunking. */
|
|
41
41
|
export declare function decodeAttributeValueWithSchema<T>(schema: TlvSchema<T>, values: TypeFromSchema<typeof TlvAttributeData>[], defaultValue?: T): T | undefined;
|
|
42
42
|
/** Decodes the data for one unknown attribute via the AnySchema including array un-chunking. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeDataDecoder.d.ts","sourceRoot":"","sources":["../../../src/interaction/AttributeDataDecoder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"AttributeDataDecoder.d.ts","sourceRoot":"","sources":["../../../src/interaction/AttributeDataDecoder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACH,WAAW,EAGX,WAAW,EAEX,SAAS,EACT,cAAc,EAGd,MAAM,EAEN,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACjB,MAAM,QAAQ,CAAC;AAIhB,0FAA0F;AAC1F,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI;IACzC,IAAI,EAAE;QACF,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,cAAc,CAAC;QAC3B,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC;CACZ,CAAC;AAEF,4GAA4G;AAC5G,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qCAAqC,CACjD,IAAI,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,EAAE,GAClD,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAKpC;AAED,wBAAgB,0BAA0B,CACtC,IAAI,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EAC/C,mBAAmB,UAAQ,GAC5B,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,CAmC3C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EAC/C,mBAAmB,UAAQ,GAC5B,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAgB7C;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC3C,IAAI,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,GAChD,qBAAqB,CAAC,GAAG,CAAC,EAAE,CA8C9B;AAmBD,wBAAgB,kCAAkC,CAAC,CAAC,EAChD,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EACjD,YAAY,CAAC,EAAE,CAAC,EAAE,GACnB,CAAC,EAAE,GAAG,SAAS,CASjB;AAED,mFAAmF;AACnF,wBAAgB,8BAA8B,CAAC,CAAC,EAC5C,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EACjD,YAAY,CAAC,EAAE,CAAC,GACjB,CAAC,GAAG,SAAS,CAuBf;AAED,gGAAgG;AAChG,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,GAAG,GAAG,CAkBlG;AAED,+GAA+G;AAC/G,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,2BAA2B,CAAC,GAAG,CAAC,EAAE;;;;;;EAejG"}
|
|
@@ -111,7 +111,7 @@ function decodeValueForAttribute(attribute, values) {
|
|
|
111
111
|
}
|
|
112
112
|
function decodeListAttributeValueWithSchema(schema, values, currentValue) {
|
|
113
113
|
if (!(schema instanceof ArraySchema)) {
|
|
114
|
-
throw new UnexpectedDataError(`Attribute is not
|
|
114
|
+
throw new UnexpectedDataError(`Attribute is not a list but multiple values were returned.`);
|
|
115
115
|
}
|
|
116
116
|
return schema.decodeFromChunkedArray(
|
|
117
117
|
values.map(({ data, path: { listIndex } }) => ({ listIndex, element: data })),
|
|
@@ -122,10 +122,17 @@ function decodeAttributeValueWithSchema(schema, values, defaultValue) {
|
|
|
122
122
|
if (!values.length) {
|
|
123
123
|
return defaultValue;
|
|
124
124
|
}
|
|
125
|
+
if (schema instanceof ArraySchema) {
|
|
126
|
+
return decodeListAttributeValueWithSchema(schema, values, defaultValue);
|
|
127
|
+
}
|
|
125
128
|
if (values.length === 1 && values[0].path.listIndex === void 0) {
|
|
126
129
|
return schema.decodeTlv(values[0].data);
|
|
127
130
|
}
|
|
128
|
-
|
|
131
|
+
if (values.some(({ path: { listIndex } }) => listIndex !== void 0)) {
|
|
132
|
+
throw new UnexpectedDataError(`Attribute is not a list but we got actions with list entries`);
|
|
133
|
+
}
|
|
134
|
+
const bestDataVersionValue = values.sort(({ dataVersion: a }, { dataVersion: b }) => (b ?? 0) - (a ?? 0));
|
|
135
|
+
return schema.decodeTlv(bestDataVersionValue[0].data);
|
|
129
136
|
}
|
|
130
137
|
function decodeUnknownAttributeValue(values) {
|
|
131
138
|
const schema = TlvAny;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/interaction/AttributeDataDecoder.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["value"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/protocol",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.8",
|
|
4
4
|
"description": "Low-level APIs for Matter interaction",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -40,14 +40,14 @@
|
|
|
40
40
|
"#*": "./src/*"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@matter/general": "0.11.
|
|
44
|
-
"@matter/model": "0.11.
|
|
45
|
-
"@matter/types": "0.11.
|
|
43
|
+
"@matter/general": "0.11.8",
|
|
44
|
+
"@matter/model": "0.11.8",
|
|
45
|
+
"@matter/types": "0.11.8",
|
|
46
46
|
"@noble/curves": "^1.7.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@matter/tools": "0.11.
|
|
50
|
-
"@matter/testing": "0.11.
|
|
49
|
+
"@matter/tools": "0.11.8",
|
|
50
|
+
"@matter/testing": "0.11.8"
|
|
51
51
|
},
|
|
52
52
|
"files": [
|
|
53
53
|
"dist/**/*",
|
|
@@ -193,18 +193,18 @@ function decodeValueForAttribute<A extends Attribute<any, any>>(
|
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
export function decodeListAttributeValueWithSchema<T>(
|
|
196
|
-
schema:
|
|
196
|
+
schema: ArraySchema<T>,
|
|
197
197
|
values: TypeFromSchema<typeof TlvAttributeData>[],
|
|
198
|
-
currentValue?: T,
|
|
199
|
-
): T | undefined {
|
|
198
|
+
currentValue?: T[],
|
|
199
|
+
): T[] | undefined {
|
|
200
200
|
// Return contained multiple tlv values as an array
|
|
201
201
|
if (!(schema instanceof ArraySchema)) {
|
|
202
|
-
throw new UnexpectedDataError(`Attribute is not
|
|
202
|
+
throw new UnexpectedDataError(`Attribute is not a list but multiple values were returned.`);
|
|
203
203
|
}
|
|
204
204
|
return schema.decodeFromChunkedArray(
|
|
205
205
|
values.map(({ data, path: { listIndex } }) => ({ listIndex, element: data })),
|
|
206
|
-
currentValue
|
|
207
|
-
)
|
|
206
|
+
currentValue,
|
|
207
|
+
);
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
/** Decodes the data for one attribute via a schema including array un-chunking. */
|
|
@@ -218,12 +218,23 @@ export function decodeAttributeValueWithSchema<T>(
|
|
|
218
218
|
return defaultValue;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
+
// We got multiple values, so assume duplicates of the same attribute
|
|
222
|
+
if (schema instanceof ArraySchema) {
|
|
223
|
+
return decodeListAttributeValueWithSchema<T>(schema, values, defaultValue as T[]) as T;
|
|
224
|
+
}
|
|
225
|
+
|
|
221
226
|
// The value was returned as one Tlv value, so decode it normally
|
|
222
227
|
if (values.length === 1 && values[0].path.listIndex === undefined) {
|
|
223
228
|
return schema.decodeTlv(values[0].data);
|
|
224
229
|
}
|
|
225
230
|
|
|
226
|
-
|
|
231
|
+
// We got multiple entries but it is no array, so validate that no array action entries are there, this would be invalid
|
|
232
|
+
if (values.some(({ path: { listIndex } }) => listIndex !== undefined)) {
|
|
233
|
+
throw new UnexpectedDataError(`Attribute is not a list but we got actions with list entries`);
|
|
234
|
+
}
|
|
235
|
+
// Sort values by highest dataVersion first
|
|
236
|
+
const bestDataVersionValue = values.sort(({ dataVersion: a }, { dataVersion: b }) => (b ?? 0) - (a ?? 0));
|
|
237
|
+
return schema.decodeTlv(bestDataVersionValue[0].data);
|
|
227
238
|
}
|
|
228
239
|
|
|
229
240
|
/** Decodes the data for one unknown attribute via the AnySchema including array un-chunking. */
|
|
@@ -771,7 +771,7 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
|
|
|
771
771
|
listIndex === undefined
|
|
772
772
|
? decodeAttributeValueWithSchema(schema, [writeRequest], defaultValue)
|
|
773
773
|
: decodeListAttributeValueWithSchema(
|
|
774
|
-
schema
|
|
774
|
+
schema as ArraySchema<any>,
|
|
775
775
|
[writeRequest],
|
|
776
776
|
(
|
|
777
777
|
await this.readAttribute(
|