@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
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ElementTag } from "#common/ElementTag.js";
7
+ import type { Model } from "#models/index.js";
8
+ /**
9
+ * Tracks extensions for a scope to models in parent scopes.
10
+ *
11
+ * A child model with the same {tag, name, type} tuple in a derived scope is a semantic extension of the model in the
12
+ * parent scope even if it does not explicitly inherit from the parent via {@link Model#type}. We refer to the implicit
13
+ * base class as a *shadow* and the implicit child class as an *extension*.
14
+ *
15
+ * Note that "type" in above tuple includes either undefined, the model's own name, or extension of the exact same type
16
+ * in both the shadow and the extension. In the former case the shadow is implicit; in the latter case it is explicit.
17
+ *
18
+ * This utility provideds optimized lookup of extensions present in a particular scope.
19
+ *
20
+ * If the scope is frozen the analysis is cached.
21
+ *
22
+ * TODO - there is remaining ambiguity in shadow selection, fine for now but could be eliminated with conformance
23
+ *
24
+ * TODO - currently we only consider shadows at scope root but shadows of nested children is possible with this approach
25
+ */
26
+ export interface Scope {
27
+ /**
28
+ * The model analyzed.
29
+ */
30
+ owner: Model;
31
+ /**
32
+ * Determine if the model is a shadow.
33
+ */
34
+ isShadow(model?: Model): boolean;
35
+ /**
36
+ * Retrieve the extension for an element if it is a shadow.
37
+ */
38
+ extensionOf<T extends Model>(model?: T): undefined | T;
39
+ /**
40
+ * Obtain canonical definition for model. If the input model is a shadow returns the extension, otherwise returns
41
+ * the input model.
42
+ */
43
+ modelFor<T extends Model>(model: T): T;
44
+ /**
45
+ * Identify members (child properties) of the designated model in this scope.
46
+ */
47
+ membersOf<T extends Model>(parent: T, options?: Scope.MemberOptions): Model.ChildOf<T>[];
48
+ }
49
+ /**
50
+ * Obtain the scope for a model.
51
+ *
52
+ * By default, if {@link subject} is not a {@link ScopeModel} the scope returned is for the nearest owning
53
+ * {@link ScopeModel}.
54
+ */
55
+ export declare function Scope(subject: Model, options?: Scope.ScopeOptions): Scope;
56
+ export declare namespace Scope {
57
+ /**
58
+ * Configuration for scope creation.
59
+ */
60
+ interface ScopeOptions {
61
+ /**
62
+ * Force the result to cache regardless of whether model is frozen.
63
+ */
64
+ forceCache?: boolean;
65
+ /**
66
+ * Disable loading of model from cache. Will still write to cache if {@link forceCache} is true.
67
+ */
68
+ disableCache?: boolean;
69
+ /**
70
+ * Force the input model as an owner even if it is not a {@link ScopeOwner}.
71
+ */
72
+ forceOwner?: boolean;
73
+ }
74
+ /**
75
+ * Return all members regardless of conformance.
76
+ */
77
+ const IgnoreConformance = "ignore";
78
+ /**
79
+ * Use conformance to resolve conflicts but otherwise return all members. Useful to detect errors in input
80
+ * that may contain non-conformant values.
81
+ */
82
+ const DeconflictedConformance = "deconflicted";
83
+ /**
84
+ * Only return conformant members.
85
+ */
86
+ const ConformantConformance = "conformant";
87
+ /**
88
+ * Determines how to apply conformance when selecting members.
89
+ */
90
+ type ConformanceMode = typeof IgnoreConformance | typeof DeconflictedConformance | typeof ConformantConformance;
91
+ interface MemberOptions {
92
+ /**
93
+ * Conformance filtering mode.
94
+ */
95
+ conformance?: ConformanceMode;
96
+ /**
97
+ * Applicable tags. Defaults to "field" and "attribute".
98
+ */
99
+ tags?: Set<ElementTag> | ElementTag[];
100
+ }
101
+ }
102
+ //# sourceMappingURL=Scope.d.ts.map
@@ -0,0 +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,SA8GrE;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"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ElementTag } from "#common/ElementTag.js";
7
+ import { SchemaImplementationError } from "#common/errors.js";
8
+ import { FeatureSet } from "#common/FeatureSet.js";
9
+ import { ImplementationError } from "@matter/general";
10
+ import { ModelTraversal } from "./ModelTraversal.js";
11
+ const DEFAULT_TAGS = /* @__PURE__ */ new Set([ElementTag.Field, ElementTag.Attribute]);
12
+ const GLOBAL_IDS = /* @__PURE__ */ new Set([65533, 65532, 65531, 65530, 65529, 65528]);
13
+ const cache = /* @__PURE__ */ new WeakMap();
14
+ function Scope(subject, options = {}) {
15
+ let owner;
16
+ if (subject.isScope || options.forceOwner) {
17
+ owner = subject;
18
+ } else {
19
+ const scope = new ModelTraversal().findScope(subject);
20
+ if (scope === void 0) {
21
+ throw new SchemaImplementationError(subject, `No parent scope`);
22
+ }
23
+ owner = scope;
24
+ }
25
+ const useCache = options.forceCache || Object.isFrozen(owner);
26
+ let deconflictedMemberCache;
27
+ let conformantMemberCache;
28
+ let { featureNames, supportedFeatures } = owner;
29
+ if (!featureNames) {
30
+ featureNames = new FeatureSet();
31
+ }
32
+ if (!supportedFeatures) {
33
+ supportedFeatures = new FeatureSet();
34
+ }
35
+ if (useCache && !options.disableCache) {
36
+ const cached = cache.get(owner);
37
+ if (cached) {
38
+ return cached;
39
+ }
40
+ deconflictedMemberCache = /* @__PURE__ */ new Map();
41
+ conformantMemberCache = /* @__PURE__ */ new Map();
42
+ }
43
+ let shadows;
44
+ const canonicalIdentityLevels = {};
45
+ let level = 0;
46
+ new ModelTraversal().visitInheritance(owner, (scope) => {
47
+ level++;
48
+ for (const model of scope.children) {
49
+ for (const identity of [`n${model.tag}\u241C${model.name}\u241C${model.discriminator ?? ""}`]) {
50
+ const canonical = canonicalIdentityLevels[identity];
51
+ if (canonical === void 0) {
52
+ canonicalIdentityLevels[identity] = {
53
+ level,
54
+ models: [model]
55
+ };
56
+ } else if (canonical.level === level) {
57
+ canonical.models.push(model);
58
+ } else {
59
+ if (!shadows) {
60
+ shadows = /* @__PURE__ */ new WeakMap();
61
+ }
62
+ shadows.set(model, canonical.models);
63
+ }
64
+ }
65
+ }
66
+ });
67
+ const result = {
68
+ owner,
69
+ isShadow: shadows ? (model) => shadows.has(model) : () => false,
70
+ extensionOf: shadows ? (model) => shadows.get(model)?.[0] : (model) => model,
71
+ modelFor: shadows ? (model) => shadows.get(model)?.[0] ?? model : (model) => model,
72
+ membersOf
73
+ };
74
+ function membersOf(parent, options2 = {}) {
75
+ const { conformance: conformanceMode, tags } = options2;
76
+ const allMembers = findAllMembers(parent, Array.isArray(tags) ? new Set(tags) : tags ?? DEFAULT_TAGS, result);
77
+ if (parent.tag === ElementTag.Cluster) {
78
+ injectGlobalAttributes(owner, allMembers);
79
+ }
80
+ if (!conformanceMode || conformanceMode === "ignore") {
81
+ return allMembers;
82
+ }
83
+ const conformantOnly = conformanceMode === "conformant";
84
+ if (!conformantOnly && conformanceMode !== "deconflicted") {
85
+ throw new ImplementationError(`Invalid member conformance mode ${conformanceMode}`);
86
+ }
87
+ return filterWithConformance(
88
+ parent,
89
+ allMembers,
90
+ featureNames,
91
+ supportedFeatures,
92
+ conformantOnly,
93
+ conformantOnly ? deconflictedMemberCache : conformantMemberCache
94
+ );
95
+ }
96
+ if (useCache) {
97
+ cache.set(owner, result);
98
+ }
99
+ return result;
100
+ }
101
+ ((Scope2) => {
102
+ Scope2.IgnoreConformance = "ignore";
103
+ Scope2.DeconflictedConformance = "deconflicted";
104
+ Scope2.ConformantConformance = "conformant";
105
+ })(Scope || (Scope = {}));
106
+ function findAllMembers(parent, tags, scope) {
107
+ const members = Array();
108
+ const defined = {};
109
+ const visited = /* @__PURE__ */ new Set();
110
+ const traversal = new ModelTraversal();
111
+ let level = 0;
112
+ const childSearchVisitor = (model) => {
113
+ const extension = scope.modelFor(model);
114
+ if (extension !== model && !visited.has(extension)) {
115
+ traversal.visitInheritance(extension, childSearchVisitor);
116
+ return false;
117
+ }
118
+ visited.add(model);
119
+ level++;
120
+ for (const child of model.children) {
121
+ if (!tags.has(child.tag)) {
122
+ continue;
123
+ }
124
+ const nameIdentity = `s\u241C${child.tag}\u241C${child.name}\u241C${child.discriminator ?? ""}`;
125
+ const nameLevel = defined[nameIdentity];
126
+ if (nameLevel !== void 0 && nameLevel < level) {
127
+ continue;
128
+ }
129
+ defined[nameIdentity] = level;
130
+ members.push(child);
131
+ }
132
+ };
133
+ traversal.visitInheritance(parent, childSearchVisitor);
134
+ return members;
135
+ }
136
+ function injectGlobalAttributes(scope, members) {
137
+ const missingGlobalIds = new Set(GLOBAL_IDS);
138
+ for (const m of members) {
139
+ if (m.tag === ElementTag.Attribute && m.id) {
140
+ missingGlobalIds.delete(m.id);
141
+ }
142
+ }
143
+ if (missingGlobalIds.size) {
144
+ const root = new ModelTraversal().findRoot(scope);
145
+ if (root) {
146
+ for (const id of missingGlobalIds) {
147
+ const global = root.children.select(id, [ElementTag.Attribute]);
148
+ if (global) {
149
+ members.push(global);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ function filterWithConformance(parent, members, features, supportedFeatures, conformantOnly, cache2) {
156
+ const cached = cache2?.get(parent);
157
+ if (cached) {
158
+ return cached;
159
+ }
160
+ const selectedMembers = {};
161
+ for (const member of members) {
162
+ const { conformance } = member;
163
+ if (!conformance) {
164
+ throw new ImplementationError(
165
+ `Conformance filtering invoked on ${member} which does not support conformance`
166
+ );
167
+ }
168
+ if (conformantOnly && !conformance.isApplicable(features, supportedFeatures)) {
169
+ continue;
170
+ }
171
+ const other = selectedMembers[member.name];
172
+ if (other !== void 0) {
173
+ if (!conformantOnly && !conformance.isApplicable(features, supportedFeatures)) {
174
+ continue;
175
+ }
176
+ const { conformance: otherConformance } = other;
177
+ if (!otherConformance) {
178
+ throw new ImplementationError(
179
+ `Conformance filtering invoked on ${other} which does not support conformance`
180
+ );
181
+ }
182
+ if (otherConformance.isApplicable(features, supportedFeatures)) {
183
+ throw new SchemaImplementationError(
184
+ parent,
185
+ `There are multiple definitions of "${member.name}" that cannot be differentiated by conformance`
186
+ );
187
+ }
188
+ }
189
+ selectedMembers[member.name] = member;
190
+ }
191
+ const result = Object.values(selectedMembers);
192
+ if (cache2) {
193
+ cache2.set(parent, result);
194
+ }
195
+ return result;
196
+ }
197
+ export {
198
+ Scope
199
+ };
200
+ //# sourceMappingURL=Scope.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/logic/Scope.ts"],
4
+ "mappings": "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",
5
+ "names": ["options", "Scope", "cache"]
6
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ModelValidator.d.ts","sourceRoot":"","sources":["../../../../src/logic/definition-validation/ModelValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAgB,KAAK,EAAgC,MAAM,uBAAuB,CAAC;AAE1F;;GAEG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,KAAK;IAC3B,SAAS,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAE9B,QAAQ;IAyBR,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAInC,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC,EAAE;IAoB9F,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,kBAAkB;IAuCvF,OAAO,CAAC,uBAAuB;CAgClC;AAED,yBAAiB,cAAc,CAAC;IACrB,MAAM,UAAU,EAAS,GAC3B,GAAiB,IAAV,UAAU,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,GAC/D,CAAC;CACL"}
1
+ {"version":3,"file":"ModelValidator.d.ts","sourceRoot":"","sources":["../../../../src/logic/definition-validation/ModelValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAgB,KAAK,EAAgC,MAAM,uBAAuB,CAAC;AAE1F;;GAEG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,KAAK;IAC3B,SAAS,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAE9B,QAAQ;IAyBR,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAInC,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC,EAAE;IAoB9F,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,kBAAkB;IAuCvF,OAAO,CAAC,uBAAuB;CAgClC;AAED,yBAAiB,cAAc,CAAC;IACrB,MAAM,UAAU,EAAS,GAC3B,GAAG,IAAI,UAAU,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,GAC/D,CAAC;CACL"}
@@ -12,6 +12,7 @@ export * from "./ClusterVariance.js";
12
12
  export * from "./DefaultValue.js";
13
13
  export * from "./MergedModel.js";
14
14
  export * from "./ModelVariantTraversal.js";
15
+ export * from "./Scope.js";
15
16
  export * from "./ValidateModel.js";
16
17
  import "./definition-validation/index.js";
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -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,4BAA4B,CAAC;AAC3C,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,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,kCAAkC,CAAC"}
@@ -12,6 +12,7 @@ export * from "./ClusterVariance.js";
12
12
  export * from "./DefaultValue.js";
13
13
  export * from "./MergedModel.js";
14
14
  export * from "./ModelVariantTraversal.js";
15
+ export * from "./Scope.js";
15
16
  export * from "./ValidateModel.js";
16
17
  import "./definition-validation/index.js";
17
18
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/logic/index.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,OAAO;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,OAAO;",
5
5
  "names": []
6
6
  }
@@ -16,6 +16,26 @@ export declare class AttributeModel extends PropertyModel<AttributeElement> impl
16
16
  get fabricScoped(): boolean;
17
17
  get fixed(): boolean;
18
18
  get changesOmitted(): boolean | undefined;
19
+ get requiredFields(): {
20
+ id: number;
21
+ tag: `${AttributeElement.Tag}`;
22
+ name: string;
23
+ type?: string;
24
+ description?: string;
25
+ details?: string;
26
+ xref?: import("../index.js").Specification.CrossReference;
27
+ children?: (import("../elements/BaseElement.js").BaseElement[] & import("../elements/ValueElement.js").ValueElement[]) | undefined;
28
+ isGlobal?: boolean;
29
+ isSeed?: boolean;
30
+ asOf?: import("../index.js").Specification.Revision;
31
+ until?: import("../index.js").Specification.Revision;
32
+ constraint?: import("../index.js").Constraint.Definition;
33
+ conformance?: import("../index.js").Conformance.Definition;
34
+ access?: import("../index.js").Access.Definition;
35
+ quality?: import("../index.js").Quality.Definition;
36
+ byteSize?: import("../elements/ValueElement.js").ValueElement.ByteSize;
37
+ default?: import("../index.js").FieldValue;
38
+ };
19
39
  constructor(definition: AttributeElement.Properties);
20
40
  static isGlobal(model: Model): boolean;
21
41
  static get globalIds(): Set<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeModel.d.ts","sourceRoot":"","sources":["../../../src/models/AttributeModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,eAAO,MAAM,UAAU,aAA4D,CAAC;AAEpF,qBAAa,cAAe,SAAQ,aAAa,CAAC,gBAAgB,CAAE,YAAW,gBAAgB;IAClF,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAwB;IAClD,EAAE,EAAE,GAAG,CAAC;IAEhB,IAAI,QAAQ,YAEX;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,YAAY,YAEf;IAED,IAAI,KAAK,YAER;IAED,IAAI,cAAc,wBAEjB;gBAEW,UAAU,EAAE,gBAAgB,CAAC,UAAU;IAQnD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK;IAI5B,MAAM,KAAK,SAAS,gBAEnB;IAED,MAAM,CAAC,GAAG,mCAAwB;CACrC"}
1
+ {"version":3,"file":"AttributeModel.d.ts","sourceRoot":"","sources":["../../../src/models/AttributeModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,eAAO,MAAM,UAAU,aAA4D,CAAC;AAEpF,qBAAa,cAAe,SAAQ,aAAa,CAAC,gBAAgB,CAAE,YAAW,gBAAgB;IAClF,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAwB;IAClD,EAAE,EAAE,GAAG,CAAC;IAEhB,IAAI,QAAQ,YAEX;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,YAAY,YAEf;IAED,IAAI,KAAK,YAER;IAED,IAAI,cAAc,wBAEjB;IAED,IAAa,cAAc;;gBA1BuC,iBAErE,GAAG;;;;;;;;;;;;;;;;;MA0BC;gBAEW,UAAU,EAAE,gBAAgB,CAAC,UAAU;IAQnD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK;IAI5B,MAAM,KAAK,SAAS,gBAEnB;IAED,MAAM,CAAC,GAAG,mCAAwB;CACrC"}
@@ -24,6 +24,9 @@ class AttributeModel extends PropertyModel {
24
24
  get changesOmitted() {
25
25
  return this.effectiveQuality.changesOmitted;
26
26
  }
27
+ get requiredFields() {
28
+ return { ...super.requiredFields, id: this.id };
29
+ }
27
30
  constructor(definition) {
28
31
  super(definition);
29
32
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/models/AttributeModel.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,wBAAwB;AACjC,SAAS,aAAa;AACtB,SAAS,qBAAqB;AAGvB,MAAM,aAAa,oBAAI,IAAI,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,CAAC;AAE3E,MAAM,uBAAuB,cAA4D;AAAA,EACnF,MAA4B,iBAAiB;AAAA,EAGtD,IAAI,WAAW;AACX,WAAO,KAAK,gBAAgB;AAAA,EAChC;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,CAAC,KAAK,SAAS,KAAK,gBAAgB;AAAA,EAC/C;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,CAAC,CAAC,KAAK,gBAAgB;AAAA,EAClC;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,CAAC,CAAC,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,KAAK,iBAAiB;AAAA,EACjC;AAAA,EAEA,YAAY,YAAyC;AACjD,UAAM,UAAU;AAAA,EACpB;AAAA,EAEA,OAAO;AACH,UAAM,MAAM,iBAAiB,GAAG,IAAI;AAAA,EACxC;AAAA,EAEA,OAAO,SAAS,OAAc;AAC1B,WAAO,iBAAiB,kBAAkB,WAAW,IAAI,MAAM,EAAE;AAAA,EACrE;AAAA,EAEA,WAAW,YAAY;AACnB,WAAO;AAAA,EACX;AAAA,EAEA,OAAO,MAAM,iBAAiB;AAClC;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,wBAAwB;AACjC,SAAS,aAAa;AACtB,SAAS,qBAAqB;AAGvB,MAAM,aAAa,oBAAI,IAAI,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,CAAC;AAE3E,MAAM,uBAAuB,cAA4D;AAAA,EACnF,MAA4B,iBAAiB;AAAA,EAGtD,IAAI,WAAW;AACX,WAAO,KAAK,gBAAgB;AAAA,EAChC;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,CAAC,KAAK,SAAS,KAAK,gBAAgB;AAAA,EAC/C;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,CAAC,CAAC,KAAK,gBAAgB;AAAA,EAClC;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,CAAC,CAAC,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,KAAK,iBAAiB;AAAA,EACjC;AAAA,EAEA,IAAa,iBAAiB;AAC1B,WAAO,EAAE,GAAG,MAAM,gBAAgB,IAAI,KAAK,GAAG;AAAA,EAClD;AAAA,EAEA,YAAY,YAAyC;AACjD,UAAM,UAAU;AAAA,EACpB;AAAA,EAEA,OAAO;AACH,UAAM,MAAM,iBAAiB,GAAG,IAAI;AAAA,EACxC;AAAA,EAEA,OAAO,SAAS,OAAc;AAC1B,WAAO,iBAAiB,kBAAkB,WAAW,IAAI,MAAM,EAAE;AAAA,EACrE;AAAA,EAEA,WAAW,YAAY;AACnB,WAAO;AAAA,EACX;AAAA,EAEA,OAAO,MAAM,iBAAiB;AAClC;",
5
5
  "names": []
6
6
  }
@@ -41,6 +41,10 @@ export interface Children<T extends Model = Model> extends Array<T> {
41
41
  * Like {@link select} but retrieves all models for which selection applies.
42
42
  */
43
43
  selectAll(selector: Children.Selector, allowedTags?: Children.TagSelector, except?: Set<Model>): Model.ChildOf<T>[];
44
+ /**
45
+ * Create a new child or patch existing children.
46
+ */
47
+ patchOrPush<C extends Model.Definition<T>>(child: C): void;
44
48
  /**
45
49
  * Models invoke this when their ID changes so we can update internal bookkeeping.
46
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Children.d.ts","sourceRoot":"","sources":["../../../src/models/Children.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA2B,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;GAIG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAC/D;;;;OAIG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC;IAEjD;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAElF;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE/F;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;IAEtF;;;OAGG;IACH,MAAM,CACF,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,EAClC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GACpB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpH;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAExD;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhD;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC;CAClB;AAID;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAC5C,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GA2iBlB,QAAQ,CAAC,CAAC,CAAC,CAC7B;AAED,yBAAiB,QAAQ,CAAC;IACtB;;OAEG;IACH,KAAY,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC;IAErE;;;OAGG;IACH,KAAY,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,EAAE,CAAC;IAEtE;;OAEG;IACH,KAAY,aAAa,CAAC,CAAC,SAAS,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9E"}
1
+ {"version":3,"file":"Children.d.ts","sourceRoot":"","sources":["../../../src/models/Children.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA2B,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;GAIG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAC/D;;;;OAIG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC;IAEjD;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAElF;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE/F;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;IAEtF;;;OAGG;IACH,MAAM,CACF,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,EAClC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GACpB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpH;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAExD;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhD;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC;CAClB;AAID;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAC5C,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GA6jBlB,QAAQ,CAAC,CAAC,CAAC,CAC7B;AAED,yBAAiB,QAAQ,CAAC;IACtB;;OAEG;IACH,KAAY,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC;IAErE;;;OAGG;IACH,KAAY,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,EAAE,CAAC;IAEtE;;OAEG;IACH,KAAY,aAAa,CAAC,CAAC,SAAS,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9E"}
@@ -244,6 +244,17 @@ function Children(initial, adopt, disown) {
244
244
  }
245
245
  return results;
246
246
  }
247
+ function patchOrPush(child) {
248
+ validateChild(child);
249
+ const existing = selectAll.call(self, child.name, [child.tag]);
250
+ if (existing.length) {
251
+ for (const toPatch of existing) {
252
+ toPatch.patch(child);
253
+ }
254
+ } else {
255
+ self.push(child);
256
+ }
257
+ }
247
258
  function updateId(child, oldId) {
248
259
  if (!indices) {
249
260
  return;
@@ -336,6 +347,8 @@ function Children(initial, adopt, disown) {
336
347
  return select;
337
348
  case "selectAll":
338
349
  return selectAll;
350
+ case "patchOrPush":
351
+ return patchOrPush;
339
352
  case "updateId":
340
353
  return updateId;
341
354
  case "updateName":
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/models/Children.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -15,13 +15,12 @@ import { DatatypeModel } from "./DatatypeModel.js";
15
15
  import { EventModel } from "./EventModel.js";
16
16
  import type { FieldModel } from "./FieldModel.js";
17
17
  import { Model } from "./Model.js";
18
- import { PropertyModel } from "./PropertyModel.js";
19
- export declare class ClusterModel extends Model<ClusterElement> implements ClusterElement {
18
+ import { ScopeModel } from "./ScopeModel.js";
19
+ export declare class ClusterModel extends ScopeModel<ClusterElement> implements ClusterElement {
20
20
  tag: ClusterElement.Tag;
21
21
  id: Mei;
22
22
  classification?: ClusterElement.Classification;
23
23
  pics?: string;
24
- isTypeScope: boolean;
25
24
  get children(): Children<ClusterModel.Child>;
26
25
  set children(children: Children.InputIterable<ClusterModel.Child>);
27
26
  get diagnostics(): boolean | undefined;
@@ -32,9 +31,6 @@ export declare class ClusterModel extends Model<ClusterElement> implements Clust
32
31
  get commands(): CommandModel[];
33
32
  get events(): EventModel[];
34
33
  get datatypes(): DatatypeModel[];
35
- get members(): PropertyModel[];
36
- get activeMembers(): import("./ValueModel.js").ValueModel<import("../elements/ValueElement.js").ValueElement>[];
37
- get conformantMembers(): import("./ValueModel.js").ValueModel<import("../elements/ValueElement.js").ValueElement>[];
38
34
  /**
39
35
  * Get attributes, commands and events whether inherited or defined directly in this model.
40
36
  */
@@ -48,10 +44,13 @@ export declare class ClusterModel extends Model<ClusterElement> implements Clust
48
44
  get effectiveMetatype(): Metatype;
49
45
  get effectiveAccess(): Access;
50
46
  valueOf(): ClusterElement;
51
- constructor(definition: ClusterElement.Properties);
47
+ constructor(definition: ClusterModel.Definition, ...children: Model.Definition<ClusterModel.Child>[]);
52
48
  static Tag: ElementTag;
53
49
  }
54
50
  export declare namespace ClusterModel {
51
+ type Definition = ClusterElement.Properties & {
52
+ supportedFeatures?: FeatureSet.Definition;
53
+ };
55
54
  type Child = DatatypeModel | AttributeModel | CommandModel | EventModel | FieldModel;
56
55
  }
57
56
  //# sourceMappingURL=ClusterModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterModel.d.ts","sourceRoot":"","sources":["../../../src/models/ClusterModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,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,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,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,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,qBAAa,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAE,YAAW,cAAc;IACpE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAsB;IAC9C,EAAE,EAAE,GAAG,CAAC;IACR,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,UAAQ;IAE5B,IAAa,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAEpD;IAED,IAAa,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAEzE;IAED,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,qBAEb;IAED,IAAI,QAAQ,mBAEX;IAED,IAAI,MAAM,iBAET;IAED,IAAI,SAAS,oBAEZ;IAED,IAAI,OAAO,IAAI,aAAa,EAAE,CA4B7B;IAED,IAAI,aAAa,+FAEhB;IAED,IAAI,iBAAiB,+FAEpB;IAED;;OAEG;IACH,IAAI,OAAO,IAKD,CAAC,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC,EAAE,CACvD;IAED,IAAI,QAAQ,WAOX;IAED,IAAI,QAAQ,6EAEX;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;IAEQ,OAAO,IAKK,cAAc;gBAGvB,UAAU,EAAE,cAAc,CAAC,UAAU;IAQjD,MAAM,CAAC,GAAG,aAAsB;CAKnC;AAED,yBAAiB,YAAY,CAAC;IAC1B,KAAY,KAAK,GACX,aAAa,GACb,cAAc,GACd,YAAY,GACZ,UAAU,GAIV,UAAU,CAAC;CACpB"}
1
+ {"version":3,"file":"ClusterModel.d.ts","sourceRoot":"","sources":["../../../src/models/ClusterModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,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,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,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;AAI7C,qBAAa,YAAa,SAAQ,UAAU,CAAC,cAAc,CAAE,YAAW,cAAc;IACzE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAsB;IAC9C,EAAE,EAAE,GAAG,CAAC;IACR,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEtB,IAAa,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAEpD;IAED,IAAa,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAEzE;IAED,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,qBAEb;IAED,IAAI,QAAQ,mBAEX;IAED,IAAI,MAAM,iBAET;IAED,IAAI,SAAS,oBAEZ;IAED;;OAEG;IACH,IAAI,OAAO,IACsG,CACvG,cAAc,GACd,YAAY,GACZ,UAAU,CACf,EAAE,CACN;IAED,IAAI,QAAQ,WAOX;IAED,IAAI,QAAQ,6EAEX;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;IAEQ,OAAO,IAKK,cAAc;gBAGvB,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IAQpG,MAAM,CAAC,GAAG,aAAsB;CAKnC;AAED,yBAAiB,YAAY,CAAC;IAC1B,KAAY,UAAU,GAAG,cAAc,CAAC,UAAU,GAAG;QAAE,iBAAiB,CAAC,EAAE,UAAU,CAAC,UAAU,CAAA;KAAE,CAAC;IAEnG,KAAY,KAAK,GACX,aAAa,GACb,cAAc,GACd,YAAY,GACZ,UAAU,GAGV,UAAU,CAAC;CACpB"}
@@ -9,7 +9,6 @@ import { Quality } from "../aspects/Quality.js";
9
9
  import { SchemaImplementationError } from "../common/errors.js";
10
10
  import { ElementTag, FeatureSet, Metatype } from "../common/index.js";
11
11
  import { ClusterElement } from "../elements/index.js";
12
- import { ModelTraversal } from "../logic/ModelTraversal.js";
13
12
  import { ClusterRevision } from "../standard/elements/ClusterRevision.js";
14
13
  import { FeatureMap } from "../standard/elements/FeatureMap.js";
15
14
  import { Aspects } from "./Aspects.js";
@@ -18,10 +17,10 @@ import { CommandModel } from "./CommandModel.js";
18
17
  import { DatatypeModel } from "./DatatypeModel.js";
19
18
  import { EventModel } from "./EventModel.js";
20
19
  import { Model } from "./Model.js";
20
+ import { ScopeModel } from "./ScopeModel.js";
21
21
  const QUALITY = Symbol("quality");
22
- class ClusterModel extends Model {
22
+ class ClusterModel extends ScopeModel {
23
23
  tag = ClusterElement.Tag;
24
- isTypeScope = true;
25
24
  get children() {
26
25
  return super.children;
27
26
  }
@@ -52,43 +51,11 @@ class ClusterModel extends Model {
52
51
  get datatypes() {
53
52
  return this.all(DatatypeModel);
54
53
  }
55
- get members() {
56
- const traversal = new ModelTraversal();
57
- const members = traversal.findChildren(this, [ElementTag.Field, ElementTag.Attribute]);
58
- const missingGlobalIds = new Set(AttributeModel.globalIds);
59
- for (const m of members) {
60
- if (m instanceof AttributeModel && m.id) {
61
- missingGlobalIds.delete(m.id);
62
- }
63
- }
64
- if (missingGlobalIds.size) {
65
- const root = traversal.findRoot(this);
66
- if (root) {
67
- for (const id of missingGlobalIds) {
68
- const global = root.get(AttributeModel, id);
69
- if (global) {
70
- members.push(global);
71
- }
72
- }
73
- }
74
- }
75
- return members;
76
- }
77
- get activeMembers() {
78
- return new ModelTraversal().findActiveMembers(this, false, this);
79
- }
80
- get conformantMembers() {
81
- return new ModelTraversal().findActiveMembers(this, true, this);
82
- }
83
54
  /**
84
55
  * Get attributes, commands and events whether inherited or defined directly in this model.
85
56
  */
86
57
  get allAces() {
87
- return new ModelTraversal().findChildren(this, [
88
- ElementTag.Attribute,
89
- ElementTag.Command,
90
- ElementTag.Event
91
- ]);
58
+ return this.scope.membersOf(this, { tags: [ElementTag.Attribute, ElementTag.Command, ElementTag.Event] });
92
59
  }
93
60
  get revision() {
94
61
  let revision = 1;
@@ -157,8 +124,8 @@ class ClusterModel extends Model {
157
124
  }
158
125
  return result;
159
126
  }
160
- constructor(definition) {
161
- super(definition);
127
+ constructor(definition, ...children) {
128
+ super(definition, ...children);
162
129
  if (definition instanceof Model) {
163
130
  Aspects.cloneAspects(definition, this, QUALITY);
164
131
  }