@matter/model 0.16.0-alpha.0-20251004-92135c7df → 0.16.0-alpha.0-20251006-3fe1e7c57

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 (53) hide show
  1. package/dist/cjs/elements/DatatypeElement.d.ts +6 -9
  2. package/dist/cjs/elements/DatatypeElement.d.ts.map +1 -1
  3. package/dist/cjs/elements/DatatypeElement.js.map +1 -1
  4. package/dist/cjs/logic/ModelIndex.d.ts +39 -0
  5. package/dist/cjs/logic/ModelIndex.d.ts.map +1 -0
  6. package/dist/cjs/logic/ModelIndex.js +100 -0
  7. package/dist/cjs/logic/ModelIndex.js.map +6 -0
  8. package/dist/cjs/logic/Scope.d.ts +2 -1
  9. package/dist/cjs/logic/Scope.d.ts.map +1 -1
  10. package/dist/cjs/logic/Scope.js +7 -3
  11. package/dist/cjs/logic/Scope.js.map +1 -1
  12. package/dist/cjs/logic/index.d.ts +1 -0
  13. package/dist/cjs/logic/index.d.ts.map +1 -1
  14. package/dist/cjs/logic/index.js +1 -0
  15. package/dist/cjs/logic/index.js.map +1 -1
  16. package/dist/cjs/models/ClusterModel.d.ts +43 -5
  17. package/dist/cjs/models/ClusterModel.d.ts.map +1 -1
  18. package/dist/cjs/models/ClusterModel.js +69 -1
  19. package/dist/cjs/models/ClusterModel.js.map +2 -2
  20. package/dist/cjs/models/ValueModel.d.ts +18 -2
  21. package/dist/cjs/models/ValueModel.d.ts.map +1 -1
  22. package/dist/cjs/models/ValueModel.js +27 -0
  23. package/dist/cjs/models/ValueModel.js.map +2 -2
  24. package/dist/esm/elements/DatatypeElement.d.ts +6 -9
  25. package/dist/esm/elements/DatatypeElement.d.ts.map +1 -1
  26. package/dist/esm/elements/DatatypeElement.js.map +1 -1
  27. package/dist/esm/logic/ModelIndex.d.ts +39 -0
  28. package/dist/esm/logic/ModelIndex.d.ts.map +1 -0
  29. package/dist/esm/logic/ModelIndex.js +80 -0
  30. package/dist/esm/logic/ModelIndex.js.map +6 -0
  31. package/dist/esm/logic/Scope.d.ts +2 -1
  32. package/dist/esm/logic/Scope.d.ts.map +1 -1
  33. package/dist/esm/logic/Scope.js +7 -3
  34. package/dist/esm/logic/Scope.js.map +1 -1
  35. package/dist/esm/logic/index.d.ts +1 -0
  36. package/dist/esm/logic/index.d.ts.map +1 -1
  37. package/dist/esm/logic/index.js +1 -0
  38. package/dist/esm/logic/index.js.map +1 -1
  39. package/dist/esm/models/ClusterModel.d.ts +43 -5
  40. package/dist/esm/models/ClusterModel.d.ts.map +1 -1
  41. package/dist/esm/models/ClusterModel.js +69 -1
  42. package/dist/esm/models/ClusterModel.js.map +2 -2
  43. package/dist/esm/models/ValueModel.d.ts +18 -2
  44. package/dist/esm/models/ValueModel.d.ts.map +1 -1
  45. package/dist/esm/models/ValueModel.js +27 -0
  46. package/dist/esm/models/ValueModel.js.map +2 -2
  47. package/package.json +4 -4
  48. package/src/elements/DatatypeElement.ts +6 -9
  49. package/src/logic/ModelIndex.ts +125 -0
  50. package/src/logic/Scope.ts +16 -12
  51. package/src/logic/index.ts +1 -0
  52. package/src/models/ClusterModel.ts +82 -9
  53. package/src/models/ValueModel.ts +35 -3
@@ -33,21 +33,18 @@ export declare namespace DatatypeElement {
33
33
  /**
34
34
  * Convert a TypeScript enum to Matter enum values.
35
35
  *
36
- * Matter enums include conformance and other metadata. They may also have
37
- * multiple definitions of the same value selectable by conformance. So
38
- * we can't use a TypeScript enum directly.
36
+ * Matter enums include conformance and other metadata. They may also have multiple definitions of the same value
37
+ * selectable by conformance. So we can't use a TypeScript enum directly.
39
38
  */
40
39
  function ListValues(values: ValueMap): ListValues;
41
40
  /**
42
- * We express enum values as IntElements as this gives us conformance
43
- * and other metadata.
41
+ * We express enum values as IntElements as this gives us conformance and other metadata.
44
42
  */
45
43
  type ListValues = FieldElement[];
46
44
  /**
47
- * Per the Matter specification, enums are named integers. The following
48
- * allows TypeScript enums to be supplied for translation into Matter
49
- * enums. To do so, we must accept both numeric and string values. For
50
- * generating the Matter enum we ignore the string keys.
45
+ * Per the Matter specification, enums are named integers. The following allows TypeScript enums to be supplied for
46
+ * translation into Matter enums. To do so, we must accept both numeric and string values. For generating the
47
+ * Matter enum we ignore the string keys.
51
48
  */
52
49
  type ValueMap = {
53
50
  [name: string]: number | string;
@@ -1 +1 @@
1
- {"version":3,"file":"DatatypeElement.d.ts","sourceRoot":"","sources":["../../../src/elements/DatatypeElement.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACjD,GAAG,EAAE,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEzB;;OAEG;IACH,EAAE,CAAC,EAAE,SAAS,CAAC;IAEf,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,GAC7B,eAAe,CACpF;AAED,yBAAiB,eAAe,CAAC;IACtB,MAAM,GAAG,sBAAsB,CAAC;IACvC,KAAY,GAAG,GAAG,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7C,KAAY,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,SAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAiBvD;IAED;;;OAGG;IACH,KAAY,UAAU,GAAG,YAAY,EAAE,CAAC;IAExC;;;;;OAKG;IACH,KAAY,QAAQ,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC9D"}
1
+ {"version":3,"file":"DatatypeElement.d.ts","sourceRoot":"","sources":["../../../src/elements/DatatypeElement.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACjD,GAAG,EAAE,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEzB;;OAEG;IACH,EAAE,CAAC,EAAE,SAAS,CAAC;IAEf,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,GAC7B,eAAe,CACpF;AAED,yBAAiB,eAAe,CAAC;IACtB,MAAM,GAAG,sBAAsB,CAAC;IACvC,KAAY,GAAG,GAAG,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7C,KAAY,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAEjE;;;;;OAKG;IACH,SAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAiBvD;IAED;;OAEG;IACH,KAAY,UAAU,GAAG,YAAY,EAAE,CAAC;IAExC;;;;OAIG;IACH,KAAY,QAAQ,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC9D"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/elements/DatatypeElement.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAqC;AAErC,0BAA6B;AAC7B,0BAA6B;AAT7B;AAAA;AAAA;AAAA;AAAA;AAiCO,SAAS,gBAAgB,eAA2C,UAA0B;AACjG,aAAO,kCAAa,gBAAgB,KAAK,YAAY,QAAQ;AACjE;AAAA,CAEO,CAAUA,qBAAV;AACI,EAAMA,iBAAA,MAAM,yBAAW;AAWvB,WAAS,WAAW,QAA8B;AACrD,UAAM,SAAS,MAAoB;AAEnC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,MAAM,GAAG;AACzC,UAAI,OAAO,MAAM,UAAU;AACvB,eAAO;AAAA,cACH,kCAAa;AAAA,YACT,IAAI;AAAA,YACJ,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAjBO,EAAAA,iBAAS;AAAA,GAZH;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAqC;AAErC,0BAA6B;AAC7B,0BAA6B;AAT7B;AAAA;AAAA;AAAA;AAAA;AAiCO,SAAS,gBAAgB,eAA2C,UAA0B;AACjG,aAAO,kCAAa,gBAAgB,KAAK,YAAY,QAAQ;AACjE;AAAA,CAEO,CAAUA,qBAAV;AACI,EAAMA,iBAAA,MAAM,yBAAW;AAUvB,WAAS,WAAW,QAA8B;AACrD,UAAM,SAAS,MAAoB;AAEnC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,MAAM,GAAG;AACzC,UAAI,OAAO,MAAM,UAAU;AACvB,eAAO;AAAA,cACH,kCAAa;AAAA,YACT,IAAI;AAAA,YACJ,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAjBO,EAAAA,iBAAS;AAAA,GAXH;",
5
5
  "names": ["DatatypeElement"]
6
6
  }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Model } from "../models/Model.js";
7
+ /**
8
+ * An read-only array of models with support for efficient lookup by name and ID.
9
+ *
10
+ * Name search uses canonical camel case, so "FooBar", "fooBar" and "foo-bar" are considered equivalent.
11
+ */
12
+ export interface ModelIndex<T extends Model = Model> extends ReadonlyArray<T> {
13
+ /**
14
+ * Retrieve a model for the given ID or name.
15
+ *
16
+ * Use the two-parameter version for indices that contain multiple model types.
17
+ */
18
+ for(key: number | string): T | undefined;
19
+ /**
20
+ * Retrieve a model of the specific type for the given ID or name.
21
+ *
22
+ * Name search uses canonical camel case.
23
+ */
24
+ for<M extends T>(key: number | string, type: Model.Type<M>): M | undefined;
25
+ /**
26
+ * Filter to a specific model subtype.
27
+ */
28
+ ofType<M extends T>(type: Model.Type<M>): M[];
29
+ }
30
+ /**
31
+ * Implementation of {@link ModelIndex} used for initial creation.
32
+ */
33
+ export declare class MutableModelIndex<T extends Model = Model> extends Array<T> implements ModelIndex {
34
+ #private;
35
+ for(key: number | string): T;
36
+ for<M extends T>(key: number | string, type: Model.Type<M>): M;
37
+ ofType<T extends Model.Type>(type: T): InstanceType<T>[];
38
+ }
39
+ //# sourceMappingURL=ModelIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelIndex.d.ts","sourceRoot":"","sources":["../../../src/logic/ModelIndex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACzE;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEzC;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE3E;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CACjD;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAE,YAAW,UAAU;;IAI1F,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC;IAC5B,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IA6B9D,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE;CAoD3D"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ModelIndex_exports = {};
20
+ __export(ModelIndex_exports, {
21
+ MutableModelIndex: () => MutableModelIndex
22
+ });
23
+ module.exports = __toCommonJS(ModelIndex_exports);
24
+ var import_general = require("#general");
25
+ /**
26
+ * @license
27
+ * Copyright 2022-2025 Matter.js Authors
28
+ * SPDX-License-Identifier: Apache-2.0
29
+ */
30
+ class MutableModelIndex extends Array {
31
+ #nameIndex;
32
+ #idIndex;
33
+ for(key, type) {
34
+ let untyped;
35
+ if (typeof key === "number") {
36
+ untyped = this.#ids.get(key);
37
+ } else {
38
+ untyped = this.#names.get((0, import_general.camelize)(key));
39
+ }
40
+ if (untyped === void 0) {
41
+ return void 0;
42
+ }
43
+ if (Array.isArray(untyped)) {
44
+ if (type) {
45
+ return untyped.find((m) => m instanceof type);
46
+ }
47
+ return untyped[0];
48
+ }
49
+ if (type && !(untyped instanceof type)) {
50
+ return void 0;
51
+ }
52
+ return untyped;
53
+ }
54
+ ofType(type) {
55
+ return this.filter((m) => m instanceof type);
56
+ }
57
+ get #ids() {
58
+ if (this.#idIndex) {
59
+ return this.#idIndex;
60
+ }
61
+ const index = this.#idIndex = /* @__PURE__ */ new Map();
62
+ for (const model of this) {
63
+ if (model.id === void 0) {
64
+ continue;
65
+ }
66
+ const already = index.get(model.id);
67
+ if (already) {
68
+ if (Array.isArray(already)) {
69
+ already.push(model);
70
+ } else {
71
+ index.set(model.id, [already, model]);
72
+ }
73
+ } else {
74
+ index.set(model.id, model);
75
+ }
76
+ }
77
+ return this.#idIndex;
78
+ }
79
+ get #names() {
80
+ if (this.#nameIndex) {
81
+ return this.#nameIndex;
82
+ }
83
+ const index = this.#nameIndex = /* @__PURE__ */ new Map();
84
+ for (const model of this) {
85
+ const name = (0, import_general.camelize)(model.name);
86
+ const already = index.get(name);
87
+ if (already) {
88
+ if (Array.isArray(already)) {
89
+ already.push(model);
90
+ } else {
91
+ index.set(name, [already, model]);
92
+ }
93
+ } else {
94
+ index.set(name, model);
95
+ }
96
+ }
97
+ return this.#nameIndex;
98
+ }
99
+ }
100
+ //# sourceMappingURL=ModelIndex.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/logic/ModelIndex.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAyB;AANzB;AAAA;AAAA;AAAA;AAAA;AAsCO,MAAM,0BAAmD,MAA+B;AAAA,EAC3F;AAAA,EACA;AAAA,EAKA,IAAI,KAAsB,MAAsC;AAC5D,QAAI;AAEJ,QAAI,OAAO,QAAQ,UAAU;AACzB,gBAAU,KAAK,KAAK,IAAI,GAAG;AAAA,IAC/B,OAAO;AACH,gBAAU,KAAK,OAAO,QAAI,yBAAS,GAAG,CAAC;AAAA,IAC3C;AAEA,QAAI,YAAY,QAAW;AACvB,aAAO;AAAA,IACX;AAEA,QAAI,MAAM,QAAQ,OAAO,GAAG;AACxB,UAAI,MAAM;AACN,eAAO,QAAQ,KAAK,OAAK,aAAa,IAAI;AAAA,MAC9C;AACA,aAAO,QAAQ,CAAC;AAAA,IACpB;AAEA,QAAI,QAAQ,EAAE,mBAAmB,OAAO;AACpC,aAAO;AAAA,IACX;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,OAA6B,MAA4B;AACrD,WAAO,KAAK,OAAO,OAAK,aAAa,IAAI;AAAA,EAC7C;AAAA,EAEA,IAAI,OAAO;AACP,QAAI,KAAK,UAAU;AACf,aAAO,KAAK;AAAA,IAChB;AAEA,UAAM,QAAS,KAAK,WAAW,oBAAI,IAAqB;AACxD,eAAW,SAAS,MAAM;AACtB,UAAI,MAAM,OAAO,QAAW;AACxB;AAAA,MACJ;AAEA,YAAM,UAAU,MAAM,IAAI,MAAM,EAAE;AAClC,UAAI,SAAS;AACT,YAAI,MAAM,QAAQ,OAAO,GAAG;AACxB,kBAAQ,KAAK,KAAK;AAAA,QACtB,OAAO;AACH,gBAAM,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,CAAC;AAAA,QACxC;AAAA,MACJ,OAAO;AACH,cAAM,IAAI,MAAM,IAAI,KAAK;AAAA,MAC7B;AAAA,IACJ;AAEA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,SAAS;AACT,QAAI,KAAK,YAAY;AACjB,aAAO,KAAK;AAAA,IAChB;AAEA,UAAM,QAAS,KAAK,aAAa,oBAAI,IAAqB;AAC1D,eAAW,SAAS,MAAM;AACtB,YAAM,WAAO,yBAAS,MAAM,IAAI;AAChC,YAAM,UAAU,MAAM,IAAI,IAAI;AAC9B,UAAI,SAAS;AACT,YAAI,MAAM,QAAQ,OAAO,GAAG;AACxB,kBAAQ,KAAK,KAAK;AAAA,QACtB,OAAO;AACH,gBAAM,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC;AAAA,QACpC;AAAA,MACJ,OAAO;AACH,cAAM,IAAI,MAAM,KAAK;AAAA,MACzB;AAAA,IACJ;AAEA,WAAO,KAAK;AAAA,EAChB;AACJ;",
5
+ "names": []
6
+ }
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { ElementTag } from "#common/ElementTag.js";
7
7
  import type { Model } from "#models/index.js";
8
+ import { ModelIndex } from "./ModelIndex.js";
8
9
  /**
9
10
  * Tracks extensions for a scope to models in parent scopes.
10
11
  *
@@ -44,7 +45,7 @@ export interface Scope {
44
45
  /**
45
46
  * Identify members (child properties) of the designated model in this scope.
46
47
  */
47
- membersOf<T extends Model>(parent: T, options?: Scope.MemberOptions): Model.ChildOf<T>[];
48
+ membersOf<T extends Model>(parent: T, options?: Scope.MemberOptions): ModelIndex<Model.ChildOf<T>>;
48
49
  }
49
50
  /**
50
51
  * Obtain the scope for a model.
@@ -1 +1 @@
1
- {"version":3,"file":"Scope.d.ts","sourceRoot":"","sources":["../../../src/logic/Scope.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOnD,OAAO,KAAK,EAAgB,KAAK,EAA0B,MAAM,kBAAkB,CAAC;AAOpF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,KAAK;IAClB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvC;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;CAC5F;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAE,KAAK,CAAC,YAAiB,SAmHrE;AAED,yBAAiB,KAAK,CAAC;IACnB;;OAEG;IACH,UAAiB,YAAY;QACzB;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB;;WAEG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;QAEvB;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;KACxB;IAED;;OAEG;IACI,MAAM,iBAAiB,WAAW,CAAC;IAE1C;;;OAGG;IACI,MAAM,uBAAuB,iBAAiB,CAAC;IAEtD;;OAEG;IACI,MAAM,qBAAqB,eAAe,CAAC;IAElD;;OAEG;IACH,KAAY,eAAe,GACrB,OAAO,iBAAiB,GACxB,OAAO,uBAAuB,GAC9B,OAAO,qBAAqB,CAAC;IAEnC,UAAiB,aAAa;QAC1B;;WAEG;QACH,WAAW,CAAC,EAAE,eAAe,CAAC;QAE9B;;WAEG;QACH,IAAI,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC;KACzC;CACJ"}
1
+ {"version":3,"file":"Scope.d.ts","sourceRoot":"","sources":["../../../src/logic/Scope.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOnD,OAAO,KAAK,EAAgB,KAAK,EAA0B,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAqB,MAAM,iBAAiB,CAAC;AAOhE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,KAAK;IAClB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvC;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CACtG;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAE,KAAK,CAAC,YAAiB,SAsHrE;AAED,yBAAiB,KAAK,CAAC;IACnB;;OAEG;IACH,UAAiB,YAAY;QACzB;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB;;WAEG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;QAEvB;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;KACxB;IAED;;OAEG;IACI,MAAM,iBAAiB,WAAW,CAAC;IAE1C;;;OAGG;IACI,MAAM,uBAAuB,iBAAiB,CAAC;IAEtD;;OAEG;IACI,MAAM,qBAAqB,eAAe,CAAC;IAElD;;OAEG;IACH,KAAY,eAAe,GACrB,OAAO,iBAAiB,GACxB,OAAO,uBAAuB,GAC9B,OAAO,qBAAqB,CAAC;IAEnC,UAAiB,aAAa;QAC1B;;WAEG;QACH,WAAW,CAAC,EAAE,eAAe,CAAC;QAE9B;;WAEG;QACH,IAAI,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC;KACzC;CACJ"}
@@ -26,6 +26,7 @@ var import_errors = require("#common/errors.js");
26
26
  var import_FeatureSet = require("#common/FeatureSet.js");
27
27
  var import_general = require("#general");
28
28
  var import_ModelTraversal = require("./ModelTraversal.js");
29
+ var import_ModelIndex = require("./ModelIndex.js");
29
30
  /**
30
31
  * @license
31
32
  * Copyright 2022-2025 Matter.js Authors
@@ -102,7 +103,10 @@ function Scope(subject, options = {}) {
102
103
  }
103
104
  const allMembers = findAllMembers(parent, tags, result);
104
105
  if (parent.tag === import_ElementTag.ElementTag.Cluster && tags.has(import_ElementTag.ElementTag.Attribute)) {
105
- injectGlobalAttributes(owner, allMembers);
106
+ injectGlobalAttributes(
107
+ owner,
108
+ allMembers
109
+ );
106
110
  }
107
111
  if (!conformanceMode || conformanceMode === "ignore") {
108
112
  return allMembers;
@@ -132,7 +136,7 @@ function Scope(subject, options = {}) {
132
136
  Scope2.ConformantConformance = "conformant";
133
137
  })(Scope || (Scope = {}));
134
138
  function findAllMembers(parent, tags, scope) {
135
- const members = Array();
139
+ const members = new import_ModelIndex.MutableModelIndex();
136
140
  const defined = {};
137
141
  const visited = /* @__PURE__ */ new Set();
138
142
  const traversal = new import_ModelTraversal.ModelTraversal();
@@ -182,7 +186,7 @@ function injectGlobalAttributes(scope, members) {
182
186
  }
183
187
  function filterWithConformance(parent, tags, members, features, supportedFeatures, conformantOnly, cache2) {
184
188
  const tagsToCollect = new Set(tags);
185
- const result = Array();
189
+ const result = new import_ModelIndex.MutableModelIndex();
186
190
  const cached = cache2 ? cache2.get(parent) ?? /* @__PURE__ */ new Map() : void 0;
187
191
  if (cache2 && cached) {
188
192
  for (const tag of tagsToCollect) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/logic/Scope.ts"],
4
- "mappings": "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",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,wBAA2B;AAC3B,oBAA0C;AAC1C,wBAA2B;AAC3B,qBAAoC;AACpC,4BAA+B;AAI/B,wBAA8C;AAd9C;AAAA;AAAA;AAAA;AAAA;AAgBA,MAAM,eAAe,oBAAI,IAAI,CAAC,6BAAW,OAAO,6BAAW,SAAS,CAAC;AACrE,MAAM,aAAa,oBAAI,IAAI,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,CAAC;AAE3E,MAAM,QAAQ,oBAAI,QAAsB;AAsDjC,SAAS,MAAM,SAAgB,UAA8B,CAAC,GAAG;AACpE,MAAI;AAEJ,MAAK,QAAuB,WAAW,QAAQ,YAAY;AACvD,YAAQ;AAAA,EACZ,OAAO;AACH,UAAM,QAAQ,IAAI,qCAAe,EAAE,UAAU,OAAO;AAEpD,QAAI,UAAU,QAAW;AACrB,YAAM,IAAI,wCAA0B,SAAS,iBAAiB;AAAA,IAClE;AAEA,YAAQ;AAAA,EACZ;AAEA,QAAM,WAAW,QAAQ,cAAc,OAAO,SAAS,KAAK;AAE5D,MAAI;AACJ,MAAI;AAEJ,MAAI,EAAE,cAAc,kBAAkB,IAAI;AAC1C,MAAI,CAAC,cAAc;AACf,mBAAe,IAAI,6BAAW;AAAA,EAClC;AACA,MAAI,CAAC,mBAAmB;AACpB,wBAAoB,IAAI,6BAAW;AAAA,EACvC;AAEA,MAAI,YAAY,CAAC,QAAQ,cAAc;AACnC,UAAM,SAAS,MAAM,IAAI,KAAK;AAC9B,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AACA,8BAA0B,oBAAI,IAAI;AAClC,4BAAwB,oBAAI,IAAI;AAAA,EACpC;AAEA,MAAI;AACJ,QAAM,0BAA0B,CAAC;AACjC,MAAI,QAAQ;AAEZ,MAAI,qCAAe,EAAE,iBAAiB,OAAO,WAAS;AAClD;AAEA,eAAW,SAAS,MAAM,UAAU;AAChC,iBAAW,YAAY,CAAC,IAAI,MAAM,GAAG,SAAI,MAAM,IAAI,SAAI,MAAM,iBAAiB,EAAE,EAAE,GAAG;AACjF,cAAM,YAAY,wBAAwB,QAAQ;AAClD,YAAI,cAAc,QAAW;AACzB,kCAAwB,QAAQ,IAAI;AAAA,YAChC;AAAA,YACA,QAAQ,CAAC,KAAK;AAAA,UAClB;AAAA,QACJ,WAAW,UAAU,UAAU,OAAO;AAClC,oBAAU,OAAO,KAAK,KAAK;AAAA,QAC/B,OAAO;AACH,cAAI,CAAC,SAAS;AACV,sBAAU,oBAAI,QAAQ;AAAA,UAC1B;AACA,kBAAQ,IAAI,OAAO,UAAU,MAAM;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,SAAgB;AAAA,IAClB;AAAA,IACA,UAAU,UAAU,WAAS,QAAS,IAAI,KAAmB,IAAI,MAAM;AAAA,IACvE,aAAa,UACP,CAAkB,UAAc,QAAS,IAAI,KAA8B,IAAI,CAAC,IAChF,CAAkB,UAAc;AAAA,IACtC,UAAU,UACJ,CAAkB,UACb,QAAS,IAAI,KAA8B,IAAI,CAAC,KAAuB,QAC5E,CAAkB,UAAa;AAAA,IACrC;AAAA,EACJ;AAEA,WAAS,UAA2B,QAAWA,WAA+B,CAAC,GAAG;AAC9E,UAAM,EAAE,aAAa,gBAAgB,IAAIA;AACzC,QAAI,EAAE,OAAO,aAAa,IAAIA;AAC9B,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,aAAO,IAAI,IAAI,IAAI;AAAA,IACvB;AACA,UAAM,aAAa,eAAe,QAAQ,MAAM,MAAM;AAEtD,QAAI,OAAO,QAAQ,6BAAW,WAAW,KAAK,IAAI,6BAAW,SAAS,GAAG;AACrE;AAAA,QACI;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,CAAC,mBAAmB,oBAAoB,UAAU;AAClD,aAAO;AAAA,IACX;AAEA,UAAM,iBAAiB,oBAAoB;AAE3C,QAAI,CAAC,kBAAkB,oBAAoB,gBAAgB;AACvD,YAAM,IAAI,mCAAoB,mCAAmC,eAAe,EAAE;AAAA,IACtF;AAEA,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB,0BAA0B;AAAA,IAC/C;AAAA,EACJ;AAEA,MAAI,UAAU;AACV,UAAM,IAAI,OAAO,MAAM;AAAA,EAC3B;AAEA,SAAO;AACX;AAAA,CAEO,CAAUC,WAAV;AAwBI,EAAMA,OAAA,oBAAoB;AAM1B,EAAMA,OAAA,0BAA0B;AAKhC,EAAMA,OAAA,wBAAwB;AAAA,GAnCxB;AA6DjB,SAAS,eAAgC,QAAW,MAAuB,OAAc;AACrF,QAAM,UAAU,IAAI,oCAAoC;AAGxD,QAAM,UAAU,CAAC;AAEjB,QAAM,UAAU,oBAAI,IAAW;AAE/B,QAAM,YAAY,IAAI,qCAAe;AAErC,MAAI,QAAQ;AACZ,QAAM,qBAAqB,CAAC,UAAiB;AAIzC,UAAM,YAAY,MAAM,SAAS,KAAK;AACtC,QAAI,cAAc,SAAS,CAAC,QAAQ,IAAI,SAAS,GAAG;AAChD,gBAAU,iBAAiB,WAAW,kBAAkB;AACxD,aAAO;AAAA,IACX;AAEA,YAAQ,IAAI,KAAK;AAEjB;AACA,eAAW,SAAS,MAAM,UAAU;AAChC,UAAI,CAAC,KAAK,IAAI,MAAM,GAAG,GAAG;AACtB;AAAA,MACJ;AAGA,YAAM,eAAe,UAAK,MAAM,GAAG,SAAI,MAAM,IAAI,SAAI,MAAM,iBAAiB,EAAE;AAC9E,YAAM,YAAY,QAAQ,YAAY;AACtC,UAAI,cAAc,UAAa,YAAY,OAAO;AAC9C;AAAA,MACJ;AAGA,cAAQ,YAAY,IAAI;AAGxB,cAAQ,KAAK,KAAyB;AAAA,IAC1C;AAAA,EACJ;AACA,YAAU,iBAAiB,QAAQ,kBAAkB;AAErD,SAAO;AACX;AAMA,SAAS,uBAAuB,OAAqB,SAA+B;AAChF,QAAM,mBAAmB,IAAI,IAAI,UAAU;AAC3C,aAAW,KAAK,SAAS;AACrB,QAAI,EAAE,QAAQ,6BAAW,aAAa,EAAE,IAAI;AACxC,uBAAiB,OAAO,EAAE,EAAE;AAAA,IAChC;AAAA,EACJ;AAEA,MAAI,iBAAiB,MAAM;AACvB,UAAM,OAAO,IAAI,qCAAe,EAAE,SAAS,KAAK;AAChD,QAAI,MAAM;AACN,iBAAW,MAAM,kBAAkB;AAC/B,cAAM,SAAS,KAAK,SAAS,OAAO,IAAI,CAAC,6BAAW,SAAS,CAAC;AAC9D,YAAI,QAAQ;AACR,kBAAQ,KAAK,MAAM;AAAA,QACvB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AAuBA,SAAS,sBACL,QACA,MACA,SACA,UACA,mBACA,gBACAC,QACF;AACE,QAAM,gBAAgB,IAAI,IAAgB,IAAI;AAC9C,QAAM,SAAS,IAAI,oCAAoC;AACvD,QAAM,SAASA,SAASA,OAAM,IAAI,MAAM,KAAK,oBAAI,IAAI,IAAK;AAE1D,MAAIA,UAAS,QAAQ;AACjB,eAAW,OAAO,eAAe;AAC7B,YAAM,gBAAgB,OAAO,IAAI,GAAG;AACpC,UAAI,eAAe;AACf,eAAO,KAAK,GAAG,aAAa;AAC5B,sBAAc,OAAO,GAAG;AAAA,MAC5B;AAAA,IACJ;AACA,QAAI,cAAc,SAAS,GAAG;AAC1B,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,kBAAkB,CAAC;AACzB,aAAW,OAAO,eAAe;AAC7B,oBAAgB,GAAG,IAAI,CAAC;AAAA,EAC5B;AACA,aAAW,UAAU,SAAS;AAC1B,UAAM,EAAE,aAAa,IAAI,IAAI;AAC7B,QAAI,CAAC,cAAc,IAAI,GAAG,GAAG;AACzB;AAAA,IACJ;AAEA,QAAI,CAAC,aAAa;AACd,YAAM,IAAI;AAAA,QACN,oCAAoC,MAAM;AAAA,MAC9C;AAAA,IACJ;AAEA,QAAI,kBAAkB,CAAC,YAAY,gBAAgB,UAAU,iBAAiB,GAAG;AAC7E;AAAA,IACJ;AAEA,UAAM,QAAQ,gBAAgB,GAAG,EAAE,OAAO,IAAI;AAC9C,QAAI,UAAU,QAAW;AACrB,UAAI,CAAC,kBAAkB,CAAC,YAAY,gBAAgB,UAAU,iBAAiB,GAAG;AAC9E;AAAA,MACJ;AAEA,YAAM,EAAE,aAAa,iBAAiB,IAAI;AAC1C,UAAI,CAAC,kBAAkB;AACnB,cAAM,IAAI;AAAA,UACN,oCAAoC,KAAK;AAAA,QAC7C;AAAA,MACJ;AAEA,UAAI,iBAAiB,gBAAgB,UAAU,iBAAiB,GAAG;AAC/D,cAAM,IAAI;AAAA,UACN;AAAA,UACA,sCAAsC,OAAO,IAAI;AAAA,QACrD;AAAA,MACJ;AAAA,IAGJ;AAEA,oBAAgB,GAAG,EAAE,OAAO,IAAI,IAAI;AAAA,EACxC;AAEA,aAAW,OAAO,iBAAiB;AAC/B,UAAM,YAAY,OAAO,OAAO,gBAAgB,GAAG,CAAC;AACpD,QAAI,UAAU,QAAQ;AAClB,aAAO,KAAK,GAAG,SAAS;AACxB,UAAI,QAAQ;AACR,eAAO,IAAI,KAAmB,IAAI,IAAI,SAAS,CAAC;AAAA,MACpD;AAAA,IACJ;AAAA,EACJ;AACA,MAAIA,UAAS,QAAQ;AACjB,IAAAA,OAAM,IAAI,QAAQ,MAAM;AAAA,EAC5B;AAEA,SAAO;AACX;",
5
5
  "names": ["options", "Scope", "cache"]
6
6
  }
@@ -12,6 +12,7 @@ export * from "./ClusterVariance.js";
12
12
  export * from "./DefaultValue.js";
13
13
  export * from "./MergedModel.js";
14
14
  export * from "./ModelDiff.js";
15
+ export * from "./ModelIndex.js";
15
16
  export * from "./ModelVariantTraversal.js";
16
17
  export * from "./Scope.js";
17
18
  export * from "./ValidateModel.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logic/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qCAAqC,CAAC;AACpD,cAAc,kDAAkD,CAAC;AACjE,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logic/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qCAAqC,CAAC;AACpD,cAAc,kDAAkD,CAAC;AACjE,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,kCAAkC,CAAC"}
@@ -24,6 +24,7 @@ __reExport(logic_exports, require("./ClusterVariance.js"), module.exports);
24
24
  __reExport(logic_exports, require("./DefaultValue.js"), module.exports);
25
25
  __reExport(logic_exports, require("./MergedModel.js"), module.exports);
26
26
  __reExport(logic_exports, require("./ModelDiff.js"), module.exports);
27
+ __reExport(logic_exports, require("./ModelIndex.js"), module.exports);
27
28
  __reExport(logic_exports, require("./ModelVariantTraversal.js"), module.exports);
28
29
  __reExport(logic_exports, require("./Scope.js"), module.exports);
29
30
  __reExport(logic_exports, require("./ValidateModel.js"), module.exports);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/logic/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,0BAAc,gDANd;AAOA,0BAAc,6DAPd;AAQA,0BAAc,qDARd;AASA,0BAAc,kDATd;AAUA,0BAAc,oDAVd;AAWA,0BAAc,iCAXd;AAYA,0BAAc,8BAZd;AAaA,0BAAc,6BAbd;AAcA,0BAAc,2BAdd;AAeA,0BAAc,uCAfd;AAgBA,0BAAc,uBAhBd;AAiBA,0BAAc,+BAjBd;AAkBA,mCAAO;AAlBP;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,0BAAc,gDANd;AAOA,0BAAc,6DAPd;AAQA,0BAAc,qDARd;AASA,0BAAc,kDATd;AAUA,0BAAc,oDAVd;AAWA,0BAAc,iCAXd;AAYA,0BAAc,8BAZd;AAaA,0BAAc,6BAbd;AAcA,0BAAc,2BAdd;AAeA,0BAAc,4BAfd;AAgBA,0BAAc,uCAhBd;AAiBA,0BAAc,uBAjBd;AAkBA,0BAAc,+BAlBd;AAmBA,mCAAO;AAnBP;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -3,6 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { ModelIndex } from "#logic/ModelIndex.js";
6
7
  import { Access } from "../aspects/Access.js";
7
8
  import { Quality } from "../aspects/Quality.js";
8
9
  import { ElementTag, FeatureSet, Metatype } from "../common/index.js";
@@ -21,10 +22,11 @@ export declare class ClusterModel extends ScopeModel<ClusterElement, ClusterMode
21
22
  get quality(): Quality;
22
23
  set quality(definition: Quality | Quality.Definition);
23
24
  get effectiveQuality(): Quality;
24
- get attributes(): AttributeModel[];
25
- get commands(): CommandModel[];
26
- get events(): EventModel[];
27
- get datatypes(): DatatypeModel[];
25
+ get attributes(): ModelIndex<AttributeModel>;
26
+ get commands(): ModelIndex<CommandModel>;
27
+ get events(): ModelIndex<EventModel>;
28
+ get datatypes(): ModelIndex<DatatypeModel>;
29
+ get conformant(): ClusterModel.Conformant;
28
30
  get classification(): ClusterElement.Classification | undefined;
29
31
  set classification(classification: `${ClusterElement.Classification}` | undefined);
30
32
  get pics(): string | undefined;
@@ -32,7 +34,7 @@ export declare class ClusterModel extends ScopeModel<ClusterElement, ClusterMode
32
34
  /**
33
35
  * Get attributes, commands and events whether inherited or defined directly in this model.
34
36
  */
35
- get allAces(): (AttributeModel | CommandModel | EventModel)[];
37
+ get allAces(): ModelIndex<AttributeModel | CommandModel | EventModel>;
36
38
  get revision(): number;
37
39
  get features(): import("./Children.js").Children<FieldModel>;
38
40
  get featureMap(): AttributeModel;
@@ -50,5 +52,41 @@ export declare namespace ClusterModel {
50
52
  supportedFeatures?: FeatureSet.Definition;
51
53
  };
52
54
  type Child = DatatypeModel | AttributeModel | CommandModel | EventModel | FieldModel;
55
+ /**
56
+ * A conformant view of {@link ClusterModel} child indices properties.
57
+ */
58
+ class Conformant {
59
+ #private;
60
+ constructor(model: ClusterModel);
61
+ /**
62
+ * The cluster's conformant attributes.
63
+ */
64
+ get attributes(): ModelIndex<AttributeModel>;
65
+ /**
66
+ * The cluster's conformant properties (includes fields and attributes).
67
+ *
68
+ * This offers compatibility with the equivalent field for ValueModel. It is useful when treating a cluster as
69
+ * a struct.
70
+ */
71
+ get properties(): ModelIndex<AttributeModel | FieldModel>;
72
+ /**
73
+ * The cluster's conformant fields.
74
+ *
75
+ * Fields are not formally allowed on clusters but we allow for extensions that should not be served via the
76
+ * Matter protocol.
77
+ *
78
+ * This is primarily here to allow simplified access to fields in contexts where a variable is typed as a
79
+ * ClusterModel or ValueModel.
80
+ */
81
+ get fields(): ModelIndex<FieldModel>;
82
+ /**
83
+ * The cluster's conformant commands.
84
+ */
85
+ get commands(): ModelIndex<CommandModel>;
86
+ /**
87
+ * The cluster's conformant events.
88
+ */
89
+ get events(): ModelIndex<EventModel>;
90
+ }
53
91
  }
54
92
  //# sourceMappingURL=ClusterModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterModel.d.ts","sourceRoot":"","sources":["../../../src/models/ClusterModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,YAAa,SAAQ,UAAU,CAAC,cAAc,EAAE,YAAY,CAAC,KAAK,CAAE,YAAW,cAAc;;IAC7F,GAAG,EAAE,cAAc,CAAC,GAAG,CAAsB;IAItD,IAAI,WAAW,wBAEd;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAEnD;IACD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,UAAU,IAC6D,cAAc,EAAE,CAC1F;IAED,IAAI,QAAQ,IAC6D,YAAY,EAAE,CACtF;IAED,IAAI,MAAM,IAC6D,UAAU,EAAE,CAClF;IAED,IAAI,SAAS,IAC6D,aAAa,EAAE,CACxF;IAED,IAAI,cAAc,IAAI,cAAc,CAAC,cAAc,GAAG,SAAS,CAE9D;IAED,IAAI,cAAc,CAAC,cAAc,EAAE,GAAG,cAAc,CAAC,cAAc,EAAE,GAAG,SAAS,EAIhF;IAED,IAAI,IAAI,IAIO,MAAM,GAAG,SAAS,CAFhC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAIhC;IAED;;OAEG;IACH,IAAI,OAAO,IACsG,CACvG,cAAc,GACd,YAAY,GACZ,UAAU,CACf,EAAE,CACN;IAED,IAAI,QAAQ,WAOX;IAED,IAAI,QAAQ,iDAEX;IAED,IAAI,UAAU,mBAEb;IAED,IAAI,YAAY,IAAI,UAAU,CAE7B;IAED,IAAI,iBAAiB,IAAI,UAAU,CAQlC;IAED,IAAI,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,GAAG,SAAS,EAiChE;IAED,IAAI,iBAAiB,aAEpB;IAED,IAAI,eAAe,WAElB;gBAEW,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;IAU1F,SAAS,CAAC,aAAa,UAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOzE,MAAM,CAAC,GAAG,aAAsB;CACnC;AAID,yBAAiB,YAAY,CAAC;IAC1B,KAAY,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG;QAAE,iBAAiB,CAAC,EAAE,UAAU,CAAC,UAAU,CAAA;KAAE,CAAC;IAExG,KAAY,KAAK,GACX,aAAa,GACb,cAAc,GACd,YAAY,GACZ,UAAU,GAGV,UAAU,CAAC;CACpB"}
1
+ {"version":3,"file":"ClusterModel.d.ts","sourceRoot":"","sources":["../../../src/models/ClusterModel.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,9 @@ class ClusterModel extends import_ScopeModel.ScopeModel {
64
64
  get datatypes() {
65
65
  return this.scope.membersOf(this, { tags: [import_common.ElementTag.Datatype] });
66
66
  }
67
+ get conformant() {
68
+ return new ClusterModel.Conformant(this);
69
+ }
67
70
  get classification() {
68
71
  return this.resource?.classification;
69
72
  }
@@ -84,7 +87,9 @@ class ClusterModel extends import_ScopeModel.ScopeModel {
84
87
  * Get attributes, commands and events whether inherited or defined directly in this model.
85
88
  */
86
89
  get allAces() {
87
- return this.scope.membersOf(this, { tags: [import_common.ElementTag.Attribute, import_common.ElementTag.Command, import_common.ElementTag.Event] });
90
+ return this.scope.membersOf(this, {
91
+ tags: [import_common.ElementTag.Attribute, import_common.ElementTag.Command, import_common.ElementTag.Event]
92
+ });
88
93
  }
89
94
  get revision() {
90
95
  let revision = 1;
@@ -163,4 +168,67 @@ class ClusterModel extends import_ScopeModel.ScopeModel {
163
168
  static Tag = import_elements.ClusterElement.Tag;
164
169
  }
165
170
  ClusterModel.register();
171
+ ((ClusterModel2) => {
172
+ class Conformant {
173
+ #model;
174
+ constructor(model) {
175
+ this.#model = model;
176
+ }
177
+ /**
178
+ * The cluster's conformant attributes.
179
+ */
180
+ get attributes() {
181
+ return this.#model.scope.membersOf(this.#model, {
182
+ tags: [import_common.ElementTag.Attribute],
183
+ conformance: "conformant"
184
+ });
185
+ }
186
+ /**
187
+ * The cluster's conformant properties (includes fields and attributes).
188
+ *
189
+ * This offers compatibility with the equivalent field for ValueModel. It is useful when treating a cluster as
190
+ * a struct.
191
+ */
192
+ get properties() {
193
+ return this.#model.scope.membersOf(this.#model, {
194
+ tags: [import_common.ElementTag.Attribute, import_common.ElementTag.Field],
195
+ conformance: "conformant"
196
+ });
197
+ }
198
+ /**
199
+ * The cluster's conformant fields.
200
+ *
201
+ * Fields are not formally allowed on clusters but we allow for extensions that should not be served via the
202
+ * Matter protocol.
203
+ *
204
+ * This is primarily here to allow simplified access to fields in contexts where a variable is typed as a
205
+ * ClusterModel or ValueModel.
206
+ */
207
+ get fields() {
208
+ return this.#model.scope.membersOf(this.#model, {
209
+ tags: [import_common.ElementTag.Field],
210
+ conformance: "conformant"
211
+ });
212
+ }
213
+ /**
214
+ * The cluster's conformant commands.
215
+ */
216
+ get commands() {
217
+ return this.#model.scope.membersOf(this.#model, {
218
+ tags: [import_common.ElementTag.Command],
219
+ conformance: "conformant"
220
+ });
221
+ }
222
+ /**
223
+ * The cluster's conformant events.
224
+ */
225
+ get events() {
226
+ return this.#model.scope.membersOf(this.#model, {
227
+ tags: [import_common.ElementTag.Event],
228
+ conformance: "conformant"
229
+ });
230
+ }
231
+ }
232
+ ClusterModel2.Conformant = Conformant;
233
+ })(ClusterModel || (ClusterModel = {}));
166
234
  //# sourceMappingURL=ClusterModel.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/models/ClusterModel.ts"],
4
- "mappings": "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",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["ClusterModel"]
6
6
  }
@@ -8,6 +8,7 @@ import { ElementTag, FieldValue, Metatype } from "../common/index.js";
8
8
  import { ValueElement } from "../elements/index.js";
9
9
  import { Model } from "./Model.js";
10
10
  import type { PropertyModel } from "./PropertyModel.js";
11
+ import { ModelIndex } from "#logic/ModelIndex.js";
11
12
  import type { FieldModel } from "./FieldModel.js";
12
13
  /**
13
14
  * Each {@link ValueElement} type has a corresponding implementation that derives from this class.
@@ -30,7 +31,8 @@ export declare abstract class ValueModel<T extends ValueElement = ValueElement>
30
31
  get quality(): Quality;
31
32
  set quality(definition: Quality | Quality.Definition);
32
33
  get effectiveQuality(): Quality;
33
- get fields(): FieldModel[];
34
+ get fields(): ModelIndex<FieldModel>;
35
+ get conformant(): ValueModel.Conformant;
34
36
  /**
35
37
  * Metatype is only present on global types with specific semantic meaning. This model is significant because it
36
38
  * gives us information about how to manipulate the data. This accessor retrieves this model.
@@ -68,7 +70,7 @@ export declare abstract class ValueModel<T extends ValueElement = ValueElement>
68
70
  /**
69
71
  * All {@link FieldModel} children in the context of the model's containing scope.
70
72
  */
71
- get members(): PropertyModel[];
73
+ get members(): ModelIndex<PropertyModel>;
72
74
  /**
73
75
  * Collect constraints and conformance for this type and all base types.
74
76
  */
@@ -105,4 +107,18 @@ export declare abstract class ValueModel<T extends ValueElement = ValueElement>
105
107
  constructor(definition: Model.Definition<ValueModel<T>>, ...children: Model.ChildDefinition<FieldModel>[]);
106
108
  toElement(omitResources?: boolean, extra?: Record<string, unknown>): T;
107
109
  }
110
+ export declare namespace ValueModel {
111
+ class Conformant {
112
+ #private;
113
+ constructor(model: Model);
114
+ /**
115
+ * The model's conformant fields.
116
+ */
117
+ get fields(): ModelIndex<FieldModel>;
118
+ /**
119
+ * An alias for {@link fields} that offers compatibility with the same field for clusters.
120
+ */
121
+ get properties(): ModelIndex<FieldModel>;
122
+ }
123
+ }
108
124
  //# sourceMappingURL=ValueModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ValueModel.d.ts","sourceRoot":"","sources":["../../../src/models/ValueModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValueModel.d.ts","sourceRoot":"","sources":["../../../src/models/ValueModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,8BAAsB,UAAU,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,CAClE,SAAQ,KAAK,CAAC,CAAC,EAAE,UAAU,CAC3B,YAAW,YAAY;;IAEvB,QAAQ,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC;IACjC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACX,MAAM,CAAC,sBAAQ;IAOxB,IAAI,UAAU,IAAI,UAAU,CAE3B;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,UAAU,EAE5D;IACD,IAAI,mBAAmB,IAAI,UAAU,CAEpC;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IACD,IAAI,WAAW,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC,UAAU,EAE/D;IACD,IAAI,oBAAoB,IAAI,WAAW,CAEtC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,EAEhD;IACD,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAEnD;IACD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,MAAM,IAC8D,UAAU,CAAC,UAAU,CAAC,CAC7F;IAED,IAAI,UAAU,0BAEb;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,UAAU,GAAG,SAAS,CAErC;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,UAAU,GAAG,SAAS,CAkB1C;IAED;;OAEG;IACH,IAAa,aAAa,IAAI,MAAM,GAAG,SAAS,CAM/C;IAED;;OAEG;IACH,IAAI,iBAAiB,yBAKpB;IAED;;OAEG;IACH,IAAI,aAAa,yCAEhB;IAED;;OAEG;IACH,IAAI,SAAS,IAC0C,UAAU,GAAG,SAAS,CAC5E;IAED;;OAEG;IACH,IAAa,IAAI,IACQ,UAAU,GAAG,SAAS,CAC9C;IAED;;OAEG;IACH,IAAa,eAAe,iBAM3B;IAED;;OAEG;IACH,IAAI,OAAO,IAC+B,UAAU,CAAC,aAAa,CAAC,CAClE;IAED;;OAEG;IACH,IAAI,iBAAiB,kBAkBpB;IAED;;OAEG;IACH,IAAI,YAAY,YAEf;IAED;;OAEG;IACH,IAAI,YAAY,YAEf;IAED;;OAEG;IACH,IAAI,QAAQ,YAEX;IAED;;OAEG;IACH,IAAI,SAAS,YAEZ;IAED;;OAEG;IACH,IAAI,eAAe,qBAqBlB;IAED;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM;IAIzB;;OAEG;IACH,gBAAgB,CAAC,IAAI,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAK3D,IAAI,cAAc,IACgB,CAAC,CAClC;gBAEW,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;IAiBhG,SAAS,CAAC,aAAa,UAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAW5E;AAED,yBAAiB,UAAU,CAAC;IACxB,MAAa,UAAU;;oBAGP,KAAK,EAAE,KAAK;QAIxB;;WAEG;QACH,IAAI,MAAM,IAIA,UAAU,CAAC,UAAU,CAAC,CAC/B;QAED;;WAEG;QACH,IAAI,UAAU,2BAEb;KACJ;CACJ"}
@@ -79,6 +79,9 @@ class ValueModel extends import_Model.Model {
79
79
  get fields() {
80
80
  return (0, import_Scope.Scope)(this).membersOf(this, { tags: [import_common.ElementTag.Field] });
81
81
  }
82
+ get conformant() {
83
+ return new ValueModel.Conformant(this);
84
+ }
82
85
  /**
83
86
  * Metatype is only present on global types with specific semantic meaning. This model is significant because it
84
87
  * gives us information about how to manipulate the data. This accessor retrieves this model.
@@ -266,4 +269,28 @@ class ValueModel extends import_Model.Model {
266
269
  });
267
270
  }
268
271
  }
272
+ ((ValueModel2) => {
273
+ class Conformant {
274
+ #model;
275
+ constructor(model) {
276
+ this.#model = model;
277
+ }
278
+ /**
279
+ * The model's conformant fields.
280
+ */
281
+ get fields() {
282
+ return (0, import_Scope.Scope)(this.#model).membersOf(this.#model, {
283
+ tags: [import_common.ElementTag.Field],
284
+ conformance: "conformant"
285
+ });
286
+ }
287
+ /**
288
+ * An alias for {@link fields} that offers compatibility with the same field for clusters.
289
+ */
290
+ get properties() {
291
+ return this.fields;
292
+ }
293
+ }
294
+ ValueModel2.Conformant = Conformant;
295
+ })(ValueModel || (ValueModel = {}));
269
296
  //# sourceMappingURL=ValueModel.js.map