@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.
@@ -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: TlvSchema<T>, values: TypeFromSchema<typeof TlvAttributeData>[], currentValue?: T): T | undefined;
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,EAIH,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,SAAS,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EACjD,YAAY,CAAC,EAAE,CAAC,GACjB,CAAC,GAAG,SAAS,CASf;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,CAYf;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"}
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 an list but multiple values were returned.`);
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
- return decodeListAttributeValueWithSchema(schema, values, defaultValue);
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": "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",
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: TlvSchema<T>, values: TypeFromSchema<typeof TlvAttributeData>[], currentValue?: T): T | undefined;
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,EAIH,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,SAAS,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,EAAE,EACjD,YAAY,CAAC,EAAE,CAAC,GACjB,CAAC,GAAG,SAAS,CASf;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,CAYf;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"}
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 an list but multiple values were returned.`);
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
- return decodeListAttributeValueWithSchema(schema, values, defaultValue);
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.7",
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.7",
44
- "@matter/model": "0.11.7",
45
- "@matter/types": "0.11.7",
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.7",
50
- "@matter/testing": "0.11.7"
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: TlvSchema<T>,
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 an list but multiple values were returned.`);
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 as any,
207
- ) as T;
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
- return decodeListAttributeValueWithSchema(schema, values, defaultValue);
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(