@matter/model 0.17.7-alpha.0-20260723-6f672ac9d → 0.17.7

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.
@@ -32,6 +32,14 @@ export declare class MatterModel extends ScopeModel<MatterElement, MatterModel.C
32
32
  * Clusters.
33
33
  */
34
34
  get clusters(): ModelIndex<ClusterModel>;
35
+ /**
36
+ * Create a copy of this model with clusters added or replaced.
37
+ *
38
+ * A supplied cluster replaces the standard cluster with the same ID (a plain addition loses to the standard entry
39
+ * during lookup) and clusters with new IDs are appended. Use this to teach a {@link ClientNode} about custom or
40
+ * extended clusters so a controller resolves their elements to real names instead of synthetic `attr$…`/`command$…`.
41
+ */
42
+ withClusters(...clusters: ClusterModel[]): MatterModel;
35
43
  /**
36
44
  * Device types.
37
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MatterModel.d.ts","sourceRoot":"","sources":["../../../src/models/MatterModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAE,YAAW,aAAa;;IACzF,GAAG,EAAE,aAAa,CAAC,GAAG,CAAqB;IACpD,QAAQ,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC;IAIlC;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAGzB;IAEH;;OAEG;IACH,IAAI,QAAQ,IAC6D,UAAU,CAAC,YAAY,CAAC,CAChG;IAED;;OAEG;IACH,IAAI,WAAW,IAC6D,UAAU,CAAC,eAAe,CAAC,CACtG;IAED;;OAEG;IACH,IAAI,kBAAkB,6BAErB;IAED;;OAEG;IACH,IAAI,SAAS,IAC6D,UAAU,CAAC,aAAa,CAAC,CAClG;IAED;;OAEG;IACH,IAAI,MAAM,IAC6D,UAAU,CAAC,UAAU,CAAC,CAC5F;IAED;;OAEG;IACH,IAAI,UAAU,IAC6D,UAAU,CAAC,cAAc,CAAC,CACpG;IAED;;OAEG;IACH,IAAI,OAAO,kBAEV;IAED;;;;;;OAMG;IACH,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE,CAErC;IAED;;OAEG;IACH,IAAa,IAAI,SAEhB;IAED;;;;;OAKG;IACH,IAAI,kBAAkB,0IAoBrB;IAED;;OAEG;IACH,IAAI,SAAS,IAIY,cAAc,GAAG,SAAS,CAFlD;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,EAElD;IAED,YAAY,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,EAkBjG;IAEQ,SAAS,CAAC,aAAa,UAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAKxE;IAED,MAAM,CAAC,GAAG,aAAqB;CAClC;AAID,yBAAiB,WAAW,CAAC,CAAC;IAC1B,KAAY,KAAK,GACX,YAAY,GACZ,eAAe,GACf,UAAU,GACV,aAAa,GACb,cAAc,GACd,WAAW,GACX,sBAAsB,CAAC;IAE7B,KAAY,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG;QAChF,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;KACnD,CAAC;CACL"}
1
+ {"version":3,"file":"MatterModel.d.ts","sourceRoot":"","sources":["../../../src/models/MatterModel.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,27 @@ class MatterModel extends import_ScopeModel.ScopeModel {
53
53
  get clusters() {
54
54
  return this.scope.membersOf(this, { tags: [import_ElementTag.ElementTag.Cluster] });
55
55
  }
56
+ /**
57
+ * Create a copy of this model with clusters added or replaced.
58
+ *
59
+ * A supplied cluster replaces the standard cluster with the same ID (a plain addition loses to the standard entry
60
+ * during lookup) and clusters with new IDs are appended. Use this to teach a {@link ClientNode} about custom or
61
+ * extended clusters so a controller resolves their elements to real names instead of synthetic `attr$…`/`command$…`.
62
+ */
63
+ withClusters(...clusters) {
64
+ const model = this.clone();
65
+ for (const cluster of clusters) {
66
+ const child = cluster.clone();
67
+ const existing = model.clusters(cluster.id);
68
+ const index = existing ? model.children.indexOf(existing) : -1;
69
+ if (index >= 0) {
70
+ model.children.splice(index, 1, child);
71
+ } else {
72
+ model.children.push(child);
73
+ }
74
+ }
75
+ return model;
76
+ }
56
77
  /**
57
78
  * Device types.
58
79
  */
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/models/MatterModel.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -32,6 +32,14 @@ export declare class MatterModel extends ScopeModel<MatterElement, MatterModel.C
32
32
  * Clusters.
33
33
  */
34
34
  get clusters(): ModelIndex<ClusterModel>;
35
+ /**
36
+ * Create a copy of this model with clusters added or replaced.
37
+ *
38
+ * A supplied cluster replaces the standard cluster with the same ID (a plain addition loses to the standard entry
39
+ * during lookup) and clusters with new IDs are appended. Use this to teach a {@link ClientNode} about custom or
40
+ * extended clusters so a controller resolves their elements to real names instead of synthetic `attr$…`/`command$…`.
41
+ */
42
+ withClusters(...clusters: ClusterModel[]): MatterModel;
35
43
  /**
36
44
  * Device types.
37
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MatterModel.d.ts","sourceRoot":"","sources":["../../../src/models/MatterModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAE,YAAW,aAAa;;IACzF,GAAG,EAAE,aAAa,CAAC,GAAG,CAAqB;IACpD,QAAQ,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC;IAIlC;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAGzB;IAEH;;OAEG;IACH,IAAI,QAAQ,IAC6D,UAAU,CAAC,YAAY,CAAC,CAChG;IAED;;OAEG;IACH,IAAI,WAAW,IAC6D,UAAU,CAAC,eAAe,CAAC,CACtG;IAED;;OAEG;IACH,IAAI,kBAAkB,6BAErB;IAED;;OAEG;IACH,IAAI,SAAS,IAC6D,UAAU,CAAC,aAAa,CAAC,CAClG;IAED;;OAEG;IACH,IAAI,MAAM,IAC6D,UAAU,CAAC,UAAU,CAAC,CAC5F;IAED;;OAEG;IACH,IAAI,UAAU,IAC6D,UAAU,CAAC,cAAc,CAAC,CACpG;IAED;;OAEG;IACH,IAAI,OAAO,kBAEV;IAED;;;;;;OAMG;IACH,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE,CAErC;IAED;;OAEG;IACH,IAAa,IAAI,SAEhB;IAED;;;;;OAKG;IACH,IAAI,kBAAkB,0IAoBrB;IAED;;OAEG;IACH,IAAI,SAAS,IAIY,cAAc,GAAG,SAAS,CAFlD;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,EAElD;IAED,YAAY,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,EAkBjG;IAEQ,SAAS,CAAC,aAAa,UAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAKxE;IAED,MAAM,CAAC,GAAG,aAAqB;CAClC;AAID,yBAAiB,WAAW,CAAC,CAAC;IAC1B,KAAY,KAAK,GACX,YAAY,GACZ,eAAe,GACf,UAAU,GACV,aAAa,GACb,cAAc,GACd,WAAW,GACX,sBAAsB,CAAC;IAE7B,KAAY,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG;QAChF,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;KACnD,CAAC;CACL"}
1
+ {"version":3,"file":"MatterModel.d.ts","sourceRoot":"","sources":["../../../src/models/MatterModel.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,27 @@ class MatterModel extends ScopeModel {
30
30
  get clusters() {
31
31
  return this.scope.membersOf(this, { tags: [ElementTag.Cluster] });
32
32
  }
33
+ /**
34
+ * Create a copy of this model with clusters added or replaced.
35
+ *
36
+ * A supplied cluster replaces the standard cluster with the same ID (a plain addition loses to the standard entry
37
+ * during lookup) and clusters with new IDs are appended. Use this to teach a {@link ClientNode} about custom or
38
+ * extended clusters so a controller resolves their elements to real names instead of synthetic `attr$…`/`command$…`.
39
+ */
40
+ withClusters(...clusters) {
41
+ const model = this.clone();
42
+ for (const cluster of clusters) {
43
+ const child = cluster.clone();
44
+ const existing = model.clusters(cluster.id);
45
+ const index = existing ? model.children.indexOf(existing) : -1;
46
+ if (index >= 0) {
47
+ model.children.splice(index, 1, child);
48
+ } else {
49
+ model.children.push(child);
50
+ }
51
+ }
52
+ return model;
53
+ }
33
54
  /**
34
55
  * Device types.
35
56
  */
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/models/MatterModel.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/model",
3
- "version": "0.17.7-alpha.0-20260723-6f672ac9d",
3
+ "version": "0.17.7",
4
4
  "description": "Matter data model",
5
5
  "keywords": [
6
6
  "iot",
@@ -30,10 +30,10 @@
30
30
  "coverage": "c8 matter-test esm"
31
31
  },
32
32
  "dependencies": {
33
- "@matter/general": "0.17.7-alpha.0-20260723-6f672ac9d"
33
+ "@matter/general": "0.17.7"
34
34
  },
35
35
  "devDependencies": {
36
- "@matter/testing": "0.17.7-alpha.0-20260723-6f672ac9d"
36
+ "@matter/testing": "0.17.7"
37
37
  },
38
38
  "files": [
39
39
  "dist/**/*",
@@ -46,6 +46,28 @@ export class MatterModel extends ScopeModel<MatterElement, MatterModel.Child> im
46
46
  return this.scope.membersOf(this, { tags: [ElementTag.Cluster] }) as ModelIndex<ClusterModel>;
47
47
  }
48
48
 
49
+ /**
50
+ * Create a copy of this model with clusters added or replaced.
51
+ *
52
+ * A supplied cluster replaces the standard cluster with the same ID (a plain addition loses to the standard entry
53
+ * during lookup) and clusters with new IDs are appended. Use this to teach a {@link ClientNode} about custom or
54
+ * extended clusters so a controller resolves their elements to real names instead of synthetic `attr$…`/`command$…`.
55
+ */
56
+ withClusters(...clusters: ClusterModel[]): MatterModel {
57
+ const model = this.clone();
58
+ for (const cluster of clusters) {
59
+ const child = cluster.clone();
60
+ const existing = model.clusters(cluster.id);
61
+ const index = existing ? model.children.indexOf(existing) : -1;
62
+ if (index >= 0) {
63
+ model.children.splice(index, 1, child);
64
+ } else {
65
+ model.children.push(child);
66
+ }
67
+ }
68
+ return model;
69
+ }
70
+
49
71
  /**
50
72
  * Device types.
51
73
  */