@matter/model 0.11.9-alpha.0-20241203-06077d82e → 0.11.9-alpha.0-20241206-22f233334

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/dist/cjs/elements/MatterElement.d.ts +5 -1
  2. package/dist/cjs/elements/MatterElement.d.ts.map +1 -1
  3. package/dist/cjs/elements/MatterElement.js +1 -1
  4. package/dist/cjs/elements/MatterElement.js.map +1 -1
  5. package/dist/cjs/logic/DefaultValue.d.ts +3 -1
  6. package/dist/cjs/logic/DefaultValue.d.ts.map +1 -1
  7. package/dist/cjs/logic/DefaultValue.js +11 -11
  8. package/dist/cjs/logic/DefaultValue.js.map +1 -1
  9. package/dist/cjs/logic/ModelTraversal.d.ts +6 -35
  10. package/dist/cjs/logic/ModelTraversal.d.ts.map +1 -1
  11. package/dist/cjs/logic/ModelTraversal.js +15 -109
  12. package/dist/cjs/logic/ModelTraversal.js.map +1 -1
  13. package/dist/cjs/logic/ModelVariantTraversal.d.ts.map +1 -1
  14. package/dist/cjs/logic/ModelVariantTraversal.js.map +1 -1
  15. package/dist/cjs/logic/Scope.d.ts +102 -0
  16. package/dist/cjs/logic/Scope.d.ts.map +1 -0
  17. package/dist/cjs/logic/Scope.js +220 -0
  18. package/dist/cjs/logic/Scope.js.map +6 -0
  19. package/dist/cjs/logic/definition-validation/ModelValidator.d.ts.map +1 -1
  20. package/dist/cjs/logic/index.d.ts +1 -0
  21. package/dist/cjs/logic/index.d.ts.map +1 -1
  22. package/dist/cjs/logic/index.js +1 -0
  23. package/dist/cjs/logic/index.js.map +1 -1
  24. package/dist/cjs/models/AttributeModel.d.ts +20 -0
  25. package/dist/cjs/models/AttributeModel.d.ts.map +1 -1
  26. package/dist/cjs/models/AttributeModel.js +3 -0
  27. package/dist/cjs/models/AttributeModel.js.map +1 -1
  28. package/dist/cjs/models/Children.d.ts +4 -0
  29. package/dist/cjs/models/Children.d.ts.map +1 -1
  30. package/dist/cjs/models/Children.js +13 -0
  31. package/dist/cjs/models/Children.js.map +1 -1
  32. package/dist/cjs/models/ClusterModel.d.ts +6 -7
  33. package/dist/cjs/models/ClusterModel.d.ts.map +1 -1
  34. package/dist/cjs/models/ClusterModel.js +5 -38
  35. package/dist/cjs/models/ClusterModel.js.map +1 -1
  36. package/dist/cjs/models/CommandModel.d.ts +22 -0
  37. package/dist/cjs/models/CommandModel.d.ts.map +1 -1
  38. package/dist/cjs/models/CommandModel.js +3 -0
  39. package/dist/cjs/models/CommandModel.js.map +1 -1
  40. package/dist/cjs/models/DatatypeModel.js +0 -2
  41. package/dist/cjs/models/DatatypeModel.js.map +1 -1
  42. package/dist/cjs/models/EventModel.d.ts +21 -0
  43. package/dist/cjs/models/EventModel.d.ts.map +1 -1
  44. package/dist/cjs/models/EventModel.js +3 -0
  45. package/dist/cjs/models/EventModel.js.map +1 -1
  46. package/dist/cjs/models/MatterModel.d.ts +3 -3
  47. package/dist/cjs/models/MatterModel.d.ts.map +1 -1
  48. package/dist/cjs/models/MatterModel.js +6 -5
  49. package/dist/cjs/models/MatterModel.js.map +1 -1
  50. package/dist/cjs/models/Model.d.ts +10 -6
  51. package/dist/cjs/models/Model.d.ts.map +1 -1
  52. package/dist/cjs/models/Model.js +28 -9
  53. package/dist/cjs/models/Model.js.map +1 -1
  54. package/dist/cjs/models/ScopeModel.d.ts +22 -0
  55. package/dist/cjs/models/ScopeModel.d.ts.map +1 -0
  56. package/dist/cjs/models/ScopeModel.js +63 -0
  57. package/dist/cjs/models/ScopeModel.js.map +6 -0
  58. package/dist/cjs/models/ValueModel.d.ts +7 -21
  59. package/dist/cjs/models/ValueModel.d.ts.map +1 -1
  60. package/dist/cjs/models/ValueModel.js +15 -34
  61. package/dist/cjs/models/ValueModel.js.map +1 -1
  62. package/dist/cjs/models/index.d.ts +1 -0
  63. package/dist/cjs/models/index.d.ts.map +1 -1
  64. package/dist/cjs/models/index.js +1 -0
  65. package/dist/cjs/models/index.js.map +1 -1
  66. package/dist/cjs/standard/elements/ColorControl.js +3 -4
  67. package/dist/cjs/standard/elements/ColorControl.js.map +1 -1
  68. package/dist/cjs/standard/elements/ModeBase.js +1 -1
  69. package/dist/cjs/standard/elements/ModeBase.js.map +1 -1
  70. package/dist/cjs/standard/elements/PumpConfigurationAndControl.d.ts.map +1 -1
  71. package/dist/cjs/standard/elements/PumpConfigurationAndControl.js +3 -20
  72. package/dist/cjs/standard/elements/PumpConfigurationAndControl.js.map +1 -1
  73. package/dist/cjs/standard/elements/UserLabel.d.ts.map +1 -1
  74. package/dist/cjs/standard/elements/UserLabel.js +13 -16
  75. package/dist/cjs/standard/elements/UserLabel.js.map +1 -1
  76. package/dist/cjs/standard/elements/WildcardPathFlagsBitmap.d.ts.map +1 -1
  77. package/dist/cjs/standard/elements/WildcardPathFlagsBitmap.js +1 -5
  78. package/dist/cjs/standard/elements/WildcardPathFlagsBitmap.js.map +1 -1
  79. package/dist/cjs/standard/elements/WindowCovering.js +2 -2
  80. package/dist/esm/elements/MatterElement.d.ts +5 -1
  81. package/dist/esm/elements/MatterElement.d.ts.map +1 -1
  82. package/dist/esm/elements/MatterElement.js +1 -1
  83. package/dist/esm/elements/MatterElement.js.map +1 -1
  84. package/dist/esm/logic/DefaultValue.d.ts +3 -1
  85. package/dist/esm/logic/DefaultValue.d.ts.map +1 -1
  86. package/dist/esm/logic/DefaultValue.js +11 -11
  87. package/dist/esm/logic/DefaultValue.js.map +1 -1
  88. package/dist/esm/logic/ModelTraversal.d.ts +6 -35
  89. package/dist/esm/logic/ModelTraversal.d.ts.map +1 -1
  90. package/dist/esm/logic/ModelTraversal.js +16 -110
  91. package/dist/esm/logic/ModelTraversal.js.map +1 -1
  92. package/dist/esm/logic/ModelVariantTraversal.d.ts.map +1 -1
  93. package/dist/esm/logic/ModelVariantTraversal.js.map +1 -1
  94. package/dist/esm/logic/Scope.d.ts +102 -0
  95. package/dist/esm/logic/Scope.d.ts.map +1 -0
  96. package/dist/esm/logic/Scope.js +200 -0
  97. package/dist/esm/logic/Scope.js.map +6 -0
  98. package/dist/esm/logic/definition-validation/ModelValidator.d.ts.map +1 -1
  99. package/dist/esm/logic/index.d.ts +1 -0
  100. package/dist/esm/logic/index.d.ts.map +1 -1
  101. package/dist/esm/logic/index.js +1 -0
  102. package/dist/esm/logic/index.js.map +1 -1
  103. package/dist/esm/models/AttributeModel.d.ts +20 -0
  104. package/dist/esm/models/AttributeModel.d.ts.map +1 -1
  105. package/dist/esm/models/AttributeModel.js +3 -0
  106. package/dist/esm/models/AttributeModel.js.map +1 -1
  107. package/dist/esm/models/Children.d.ts +4 -0
  108. package/dist/esm/models/Children.d.ts.map +1 -1
  109. package/dist/esm/models/Children.js +13 -0
  110. package/dist/esm/models/Children.js.map +1 -1
  111. package/dist/esm/models/ClusterModel.d.ts +6 -7
  112. package/dist/esm/models/ClusterModel.d.ts.map +1 -1
  113. package/dist/esm/models/ClusterModel.js +5 -38
  114. package/dist/esm/models/ClusterModel.js.map +1 -1
  115. package/dist/esm/models/CommandModel.d.ts +22 -0
  116. package/dist/esm/models/CommandModel.d.ts.map +1 -1
  117. package/dist/esm/models/CommandModel.js +3 -0
  118. package/dist/esm/models/CommandModel.js.map +1 -1
  119. package/dist/esm/models/DatatypeModel.js +0 -2
  120. package/dist/esm/models/DatatypeModel.js.map +1 -1
  121. package/dist/esm/models/EventModel.d.ts +21 -0
  122. package/dist/esm/models/EventModel.d.ts.map +1 -1
  123. package/dist/esm/models/EventModel.js +3 -0
  124. package/dist/esm/models/EventModel.js.map +1 -1
  125. package/dist/esm/models/MatterModel.d.ts +3 -3
  126. package/dist/esm/models/MatterModel.d.ts.map +1 -1
  127. package/dist/esm/models/MatterModel.js +6 -5
  128. package/dist/esm/models/MatterModel.js.map +1 -1
  129. package/dist/esm/models/Model.d.ts +10 -6
  130. package/dist/esm/models/Model.d.ts.map +1 -1
  131. package/dist/esm/models/Model.js +28 -9
  132. package/dist/esm/models/Model.js.map +1 -1
  133. package/dist/esm/models/ScopeModel.d.ts +22 -0
  134. package/dist/esm/models/ScopeModel.d.ts.map +1 -0
  135. package/dist/esm/models/ScopeModel.js +43 -0
  136. package/dist/esm/models/ScopeModel.js.map +6 -0
  137. package/dist/esm/models/ValueModel.d.ts +7 -21
  138. package/dist/esm/models/ValueModel.d.ts.map +1 -1
  139. package/dist/esm/models/ValueModel.js +15 -34
  140. package/dist/esm/models/ValueModel.js.map +1 -1
  141. package/dist/esm/models/index.d.ts +1 -0
  142. package/dist/esm/models/index.d.ts.map +1 -1
  143. package/dist/esm/models/index.js +1 -0
  144. package/dist/esm/models/index.js.map +1 -1
  145. package/dist/esm/standard/elements/ColorControl.js +3 -4
  146. package/dist/esm/standard/elements/ColorControl.js.map +1 -1
  147. package/dist/esm/standard/elements/ModeBase.js +1 -1
  148. package/dist/esm/standard/elements/ModeBase.js.map +1 -1
  149. package/dist/esm/standard/elements/PumpConfigurationAndControl.d.ts.map +1 -1
  150. package/dist/esm/standard/elements/PumpConfigurationAndControl.js +3 -20
  151. package/dist/esm/standard/elements/PumpConfigurationAndControl.js.map +1 -1
  152. package/dist/esm/standard/elements/UserLabel.d.ts.map +1 -1
  153. package/dist/esm/standard/elements/UserLabel.js +13 -16
  154. package/dist/esm/standard/elements/UserLabel.js.map +1 -1
  155. package/dist/esm/standard/elements/WildcardPathFlagsBitmap.d.ts.map +1 -1
  156. package/dist/esm/standard/elements/WildcardPathFlagsBitmap.js +1 -5
  157. package/dist/esm/standard/elements/WildcardPathFlagsBitmap.js.map +1 -1
  158. package/dist/esm/standard/elements/WindowCovering.js +2 -2
  159. package/package.json +4 -4
  160. package/src/elements/MatterElement.ts +7 -2
  161. package/src/logic/DefaultValue.ts +13 -11
  162. package/src/logic/ModelTraversal.ts +28 -147
  163. package/src/logic/ModelVariantTraversal.ts +0 -1
  164. package/src/logic/Scope.ts +400 -0
  165. package/src/logic/index.ts +1 -0
  166. package/src/models/AttributeModel.ts +4 -0
  167. package/src/models/Children.ts +24 -1
  168. package/src/models/ClusterModel.ts +12 -51
  169. package/src/models/CommandModel.ts +4 -0
  170. package/src/models/DatatypeModel.ts +0 -2
  171. package/src/models/EventModel.ts +4 -0
  172. package/src/models/MatterModel.ts +6 -5
  173. package/src/models/Model.ts +38 -12
  174. package/src/models/ScopeModel.ts +55 -0
  175. package/src/models/ValueModel.ts +17 -39
  176. package/src/models/index.ts +1 -0
  177. package/src/standard/elements/ColorControl.ts +4 -4
  178. package/src/standard/elements/ModeBase.ts +1 -1
  179. package/src/standard/elements/PumpConfigurationAndControl.ts +2 -18
  180. package/src/standard/elements/UserLabel.ts +8 -12
  181. package/src/standard/elements/WildcardPathFlagsBitmap.ts +1 -4
  182. package/src/standard/elements/WindowCovering.ts +2 -2
@@ -34,11 +34,6 @@ export abstract class Model<T extends BaseElement = BaseElement> {
34
34
  #name: string;
35
35
  #frozen?: boolean;
36
36
 
37
- /**
38
- * Indicates that an element may have type definitions as children.
39
- */
40
- isTypeScope?: boolean;
41
-
42
37
  /**
43
38
  * Indicates that an element defines a datatype.
44
39
  */
@@ -59,7 +54,7 @@ export abstract class Model<T extends BaseElement = BaseElement> {
59
54
  */
60
55
  operationalShadow?: Model | null;
61
56
 
62
- #children?: Children<Model>;
57
+ #children?: Children;
63
58
  #parent?: Model;
64
59
 
65
60
  /**
@@ -269,6 +264,15 @@ export abstract class Model<T extends BaseElement = BaseElement> {
269
264
  return [this.tag];
270
265
  }
271
266
 
267
+ /**
268
+ * Update a subset of fields.
269
+ */
270
+ patch(values: Partial<T>) {
271
+ for (const [k, v] of Object.entries(values.valueOf())) {
272
+ this[k as keyof this] = v;
273
+ }
274
+ }
275
+
272
276
  /**
273
277
  * Determine whether this element applies to a specific revision.
274
278
  */
@@ -357,9 +361,10 @@ export abstract class Model<T extends BaseElement = BaseElement> {
357
361
  switch (key) {
358
362
  case "parent":
359
363
  case "errors":
360
- case "isTypeScope":
364
+ case "scope":
361
365
  case "isType":
362
366
  case "operationalBase":
367
+ case "isScope":
363
368
  continue;
364
369
 
365
370
  default:
@@ -379,6 +384,13 @@ export abstract class Model<T extends BaseElement = BaseElement> {
379
384
  return new ModelTraversal().visit(this, visitor);
380
385
  }
381
386
 
387
+ /**
388
+ * Visit this model and each of its ancestors.
389
+ */
390
+ forEachAncestor(fn: (model: Model) => boolean | void) {
391
+ new ModelTraversal().visitInheritance(this, fn);
392
+ }
393
+
382
394
  /**
383
395
  * Find all children that reference a specific type.
384
396
  */
@@ -412,10 +424,14 @@ export abstract class Model<T extends BaseElement = BaseElement> {
412
424
  * Create an operational extension of the model. This creates a new model that inherits from this model for
413
425
  * operational purposes.
414
426
  */
415
- extend<This extends Model>(this: This, properties?: Partial<BaseElement.Properties<T>>): This {
427
+ extend<This extends Model>(
428
+ this: This,
429
+ properties?: Partial<BaseElement.Properties<T>>,
430
+ ...children: Model.Definition<Model>[]
431
+ ): This {
416
432
  const constructor = this.constructor as new (properties: unknown) => This;
417
433
 
418
- const extension = new constructor({
434
+ const definition = {
419
435
  id: this.id,
420
436
  name: this.name,
421
437
 
@@ -423,14 +439,24 @@ export abstract class Model<T extends BaseElement = BaseElement> {
423
439
 
424
440
  tag: this.tag,
425
441
  operationalBase: this,
426
- });
442
+ };
443
+
444
+ if (children.length) {
445
+ if (definition.children) {
446
+ definition.children = [...definition.children, ...children];
447
+ } else {
448
+ definition.children = children;
449
+ }
450
+ }
451
+
452
+ const extension = new constructor(definition);
427
453
 
428
454
  return extension;
429
455
  }
430
456
 
431
457
  constructor(definition: Model<T> | BaseElement.Properties<T>, ...children: Model.Definition<Model>[]) {
432
458
  if (typeof definition !== "object") {
433
- throw new ImplementationError(`Model definition must be an object, not "${typeof definition}"`);
459
+ throw new ImplementationError(`Model definition must be an object, not ${typeof definition}`);
434
460
  }
435
461
 
436
462
  const isClone = definition instanceof Model;
@@ -556,7 +582,7 @@ export namespace Model {
556
582
  /**
557
583
  * Obtain the element type of a model type.
558
584
  */
559
- export type ElementOf<T> = T extends Model<infer E extends AnyElement> ? E : never;
585
+ export type ElementOf<T> = T extends Model<infer E extends AnyElement> ? E : AnyElement;
560
586
 
561
587
  /**
562
588
  * Obtain the child type of a model type.
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { SchemaImplementationError } from "#common/errors.js";
8
+ import { BaseElement } from "#elements/BaseElement.js";
9
+ import { ModelTraversal } from "#logic/ModelTraversal.js";
10
+ import { Scope } from "#logic/Scope.js";
11
+ import { Model } from "./Model.js";
12
+
13
+ /**
14
+ * A "scope" is a model provides name resolution for other models.
15
+ *
16
+ * {@link Model#type} must reference a model named in a parent scope.
17
+ */
18
+ export abstract class ScopeModel<T extends BaseElement = BaseElement> extends Model<T> {
19
+ #operationalScope: undefined | Scope;
20
+
21
+ readonly isScope = true;
22
+
23
+ get scope() {
24
+ if (this.#operationalScope !== undefined) {
25
+ return this.#operationalScope;
26
+ }
27
+ return Scope(this);
28
+ }
29
+
30
+ override freeze() {
31
+ if (!this.#operationalScope) {
32
+ this.#operationalScope = Scope(this);
33
+ }
34
+ super.freeze();
35
+ return this;
36
+ }
37
+
38
+ static is(model: Model): model is ScopeModel {
39
+ return !!(model as ScopeModel).isScope;
40
+ }
41
+
42
+ static of(model: Model) {
43
+ if ((model as ScopeModel).isScope) {
44
+ return model as ScopeModel;
45
+ }
46
+
47
+ const scope = new ModelTraversal().findScope(model);
48
+
49
+ if (scope === undefined) {
50
+ throw new SchemaImplementationError(model, `No parent scope`);
51
+ }
52
+
53
+ return scope;
54
+ }
55
+ }
@@ -14,10 +14,8 @@ import { PropertyModel } from "./PropertyModel.js";
14
14
 
15
15
  // These are circular dependencies so just to be safe we only import the types. We also need the class, though, at
16
16
  // runtime. So we use the references in the Model.constructors factory pool.
17
- import { camelize } from "@matter/general";
18
- import { DefaultValue } from "../logic/DefaultValue.js";
17
+ import { Scope } from "#logic/Scope.js";
19
18
  import { Children } from "./Children.js";
20
- import { type ClusterModel } from "./ClusterModel.js";
21
19
  import { type FieldModel } from "./FieldModel.js";
22
20
 
23
21
  const CONSTRAINT: unique symbol = Symbol("constraint");
@@ -135,14 +133,6 @@ export abstract class ValueModel<T extends ValueElement = ValueElement> extends
135
133
  }
136
134
  }
137
135
 
138
- /**
139
- * The value to use as a default. The "default" field has a manually supplied value but this property decodes the
140
- * default and/or generates a default from subfields.
141
- */
142
- get effectiveDefault() {
143
- return DefaultValue(this);
144
- }
145
-
146
136
  /**
147
137
  * Get the first derived ancestor with children, if any.
148
138
  */
@@ -176,34 +166,10 @@ export abstract class ValueModel<T extends ValueElement = ValueElement> extends
176
166
  }
177
167
 
178
168
  /**
179
- * All {@link FieldModel} children}.
169
+ * All {@link FieldModel} children in the context of the model's containing scope.
180
170
  */
181
171
  get members(): PropertyModel[] {
182
- return new ModelTraversal().findChildren(this, [ElementTag.Field]) as PropertyModel[];
183
- }
184
-
185
- /**
186
- * A subset of {@link members} with conflicts resolved by conformance.
187
- */
188
- get activeMembers() {
189
- const cluster = this.owner(Model.types[ElementTag.Cluster]) as ClusterModel | undefined;
190
- return new ModelTraversal().findActiveMembers(this, false, cluster);
191
- }
192
-
193
- /**
194
- * The subset of {@link members} that are conformant.
195
- */
196
- get conformantMembers() {
197
- const cluster = this.owner(Model.types[ElementTag.Cluster]) as ClusterModel | undefined;
198
- return new ModelTraversal().findActiveMembers(this, true, cluster);
199
- }
200
-
201
- /**
202
- * Active members keyed by property name.
203
- */
204
- get fields() {
205
- const members = this.activeMembers;
206
- return Object.fromEntries(members.map(member => [camelize(member.name), member]));
172
+ return Scope(this).membersOf(this) as PropertyModel[];
207
173
  }
208
174
 
209
175
  /**
@@ -290,6 +256,18 @@ export abstract class ValueModel<T extends ValueElement = ValueElement> extends
290
256
  return new ModelTraversal().findBitDefinition(this, bit);
291
257
  }
292
258
 
259
+ /**
260
+ * Clone the model with minimum metadata required to ensure model is valid.
261
+ */
262
+ cloneAsReference<This extends ValueModel>(this: This): This {
263
+ const Type = this.constructor as new (definition: T) => This;
264
+ return new Type(this.requiredFields as T);
265
+ }
266
+
267
+ get requiredFields() {
268
+ return { name: this.name } as T;
269
+ }
270
+
293
271
  override valueOf() {
294
272
  const result = super.valueOf() as any;
295
273
  for (const k of ["conformance", "access", "quality", "constraint"]) {
@@ -304,8 +282,8 @@ export abstract class ValueModel<T extends ValueElement = ValueElement> extends
304
282
  return result as T;
305
283
  }
306
284
 
307
- constructor(definition: BaseElement.Properties<T>) {
308
- super(definition);
285
+ constructor(definition: BaseElement.Properties<T>, ...children: Model.Definition<FieldModel>[]) {
286
+ super(definition, ...children);
309
287
 
310
288
  const match = this.type?.match(/^list\[(.*)\]$/);
311
289
  if (match) {
@@ -19,6 +19,7 @@ export * from "./Model.js";
19
19
  export * from "./NodeModel.js";
20
20
  export * from "./PropertyModel.js";
21
21
  export * from "./RequirementModel.js";
22
+ export * from "./ScopeModel.js";
22
23
  export * from "./SemanticNamespaceModel.js";
23
24
  export * from "./SemanticTagModel.js";
24
25
  export * from "./ValueModel.js";
@@ -166,7 +166,7 @@ export const ColorControl = Cluster({
166
166
 
167
167
  Attribute({
168
168
  name: "ColorMode", id: 0x8, type: "enum8", access: "R V", conformance: "M", constraint: "0 to 2",
169
- default: 1, quality: "N",
169
+ quality: "N",
170
170
 
171
171
  details: "The ColorMode attribute indicates which attributes are currently determining the color of the " +
172
172
  "device." +
@@ -178,9 +178,9 @@ export const ColorControl = Cluster({
178
178
 
179
179
  xref: { document: "cluster", section: "3.2.7.10" },
180
180
  children: [
181
- Field({ name: "CurrentHueAndCurrentSaturation", id: 0x0 }),
182
- Field({ name: "CurrentXAndCurrentY", id: 0x1 }),
183
- Field({ name: "ColorTemperatureMireds", id: 0x2 })
181
+ Field({ name: "CurrentHueAndCurrentSaturation", id: 0x0, conformance: "HS" }),
182
+ Field({ name: "CurrentXAndCurrentY", id: 0x1, conformance: "XY" }),
183
+ Field({ name: "ColorTemperatureMireds", id: 0x2, conformance: "CT" })
184
184
  ]
185
185
  }),
186
186
 
@@ -204,7 +204,7 @@ export const ModeBase = Cluster({
204
204
  }),
205
205
 
206
206
  Field({
207
- name: "Value", id: 0x1, type: "enum16", conformance: "M",
207
+ name: "Value", id: 0x1, type: "ModeTag", conformance: "M",
208
208
  details: "This field shall indicate the mode tag within a mode tag namespace which is either manufacturer " +
209
209
  "specific or standard.",
210
210
  xref: { document: "cluster", section: "1.10.5.1.2" }
@@ -388,26 +388,10 @@ export const PumpConfigurationAndControl = Cluster({
388
388
  }),
389
389
 
390
390
  Attribute({
391
- name: "AlarmMask", id: 0x1d, type: "map16", access: "R V", conformance: "D", constraint: "desc",
391
+ name: "AlarmMask", id: 0x22, type: "uint16", access: "R V", conformance: "D", constraint: "desc",
392
392
  default: 0, quality: "N",
393
- xref: { document: "cluster", section: "4.2.7" },
394
-
395
- children: [
396
- Field({
397
- name: "InitializationFailure", constraint: "0",
398
- details: "The device failed to complete initialization at powerup"
399
- }),
400
- Field({
401
- name: "HardwareFailure", constraint: "1",
402
- details: "The device has detected a hardware fault"
403
- }),
404
- Field({
405
- name: "SelfCalibrationFailure", constraint: "2",
406
- details: "The device was unable to complete self calibration"
407
- })
408
- ]
393
+ xref: { document: "cluster", section: "4.2.7" }
409
394
  }),
410
-
411
395
  Event({
412
396
  name: "SupplyVoltageLow", id: 0x0, access: "V", conformance: "O", priority: "info",
413
397
  xref: { document: "cluster", section: "4.2.8" }
@@ -18,18 +18,14 @@ export const UserLabel = Cluster({
18
18
  details: "This cluster provides a feature to tag an endpoint with zero or more labels.",
19
19
  xref: { document: "core", section: "9.9" },
20
20
 
21
- children: [
22
- Attribute({ name: "ClusterRevision", id: 0xfffd, type: "ClusterRevision", default: 1 }),
23
-
24
- Attribute({
25
- name: "LabelList", id: 0x0, type: "list", access: "RW VM", conformance: "M", constraint: "min 0",
26
- default: [], quality: "N",
27
- details: "An implementation shall support at least 4 list entries per node for all User Label cluster " +
28
- "instances on the node.",
29
- xref: { document: "core", section: "9.9.4.1" },
30
- children: [Field({ name: "entry", type: "LabelStruct" })]
31
- })
32
- ]
21
+ children: [Attribute({
22
+ name: "LabelList", id: 0x0, type: "list", access: "RW VM", conformance: "M", constraint: "min 0",
23
+ default: [], quality: "N",
24
+ details: "An implementation shall support at least 4 list entries per node for all User Label cluster " +
25
+ "instances on the node.",
26
+ xref: { document: "core", section: "9.9.4.1" },
27
+ children: [Field({ name: "entry", type: "LabelStruct" })]
28
+ })]
33
29
  });
34
30
 
35
31
  MatterDefinition.children.push(UserLabel);
@@ -28,10 +28,7 @@ export const WildcardPathFlagsBitmap = Datatype({
28
28
  name: "WildcardSkipAttributeList", constraint: "2",
29
29
  description: "Skip the AttributeList global attribute during wildcard expansion."
30
30
  }),
31
- Field({
32
- name: "WildcardSkipEventList", constraint: "3",
33
- description: "Skip the EventList global attribute during wildcard expansion."
34
- }),
31
+ Field({ name: "Reserved", constraint: "3", description: "Reserved" }),
35
32
  Field({
36
33
  name: "WildcardSkipCommandLists", constraint: "4",
37
34
  description: "Skip the AcceptedCommandList and GeneratedCommandList global attributes during wildcard expansion."
@@ -403,7 +403,7 @@ export const WindowCovering = Cluster({
403
403
  name: "LiftPercent100thsValue", id: 0x0, type: "percent100ths", conformance: "M",
404
404
  constraint: "desc"
405
405
  }),
406
- Field({ name: "Ignored", id: 0x1, type: "percent100ths", conformance: "D", constraint: "desc" })
406
+ Field({ name: "Ignored", id: 0x1, type: "percent100ths", conformance: "X", constraint: "desc" })
407
407
  ]
408
408
  }),
409
409
 
@@ -447,7 +447,7 @@ export const WindowCovering = Cluster({
447
447
  name: "TiltPercent100thsValue", id: 0x0, type: "percent100ths", conformance: "M",
448
448
  constraint: "desc"
449
449
  }),
450
- Field({ name: "Ignored", id: 0x1, type: "percent100ths", conformance: "D", constraint: "desc" })
450
+ Field({ name: "Ignored", id: 0x1, type: "percent100ths", conformance: "X", constraint: "desc" })
451
451
  ]
452
452
  }),
453
453