@itwin/ecschema-metadata 5.0.0-dev.9 → 5.0.0-dev.90

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 (298) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/lib/cjs/Constants.js +20 -20
  3. package/lib/cjs/Constants.js.map +1 -1
  4. package/lib/cjs/Context.d.ts +83 -34
  5. package/lib/cjs/Context.d.ts.map +1 -1
  6. package/lib/cjs/Context.js +73 -23
  7. package/lib/cjs/Context.js.map +1 -1
  8. package/lib/cjs/DelayedPromise.js +6 -4
  9. package/lib/cjs/DelayedPromise.js.map +1 -1
  10. package/lib/cjs/Deserialization/AbstractParser.js +1 -0
  11. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  12. package/lib/cjs/Deserialization/Helper.d.ts +3 -3
  13. package/lib/cjs/Deserialization/Helper.d.ts.map +1 -1
  14. package/lib/cjs/Deserialization/Helper.js +8 -0
  15. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  16. package/lib/cjs/Deserialization/JsonParser.js +3 -0
  17. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  18. package/lib/cjs/Deserialization/JsonProps.d.ts +3 -0
  19. package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
  20. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  21. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  22. package/lib/cjs/Deserialization/XmlParser.d.ts.map +1 -1
  23. package/lib/cjs/Deserialization/XmlParser.js +11 -3
  24. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  25. package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts.map +1 -1
  26. package/lib/cjs/Deserialization/XmlSerializationUtils.js +2 -6
  27. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  28. package/lib/cjs/ECName.js +1 -0
  29. package/lib/cjs/ECName.js.map +1 -1
  30. package/lib/cjs/ECObjects.d.ts +21 -1
  31. package/lib/cjs/ECObjects.d.ts.map +1 -1
  32. package/lib/cjs/ECObjects.js +33 -2
  33. package/lib/cjs/ECObjects.js.map +1 -1
  34. package/lib/cjs/Exception.js +1 -0
  35. package/lib/cjs/Exception.js.map +1 -1
  36. package/lib/cjs/Interfaces.d.ts +10 -3
  37. package/lib/cjs/Interfaces.d.ts.map +1 -1
  38. package/lib/cjs/Interfaces.js.map +1 -1
  39. package/lib/cjs/Metadata/Class.d.ts +75 -16
  40. package/lib/cjs/Metadata/Class.d.ts.map +1 -1
  41. package/lib/cjs/Metadata/Class.js +168 -46
  42. package/lib/cjs/Metadata/Class.js.map +1 -1
  43. package/lib/cjs/Metadata/Constant.d.ts +14 -1
  44. package/lib/cjs/Metadata/Constant.d.ts.map +1 -1
  45. package/lib/cjs/Metadata/Constant.js +27 -2
  46. package/lib/cjs/Metadata/Constant.js.map +1 -1
  47. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  48. package/lib/cjs/Metadata/CustomAttributeClass.d.ts +16 -4
  49. package/lib/cjs/Metadata/CustomAttributeClass.d.ts.map +1 -1
  50. package/lib/cjs/Metadata/CustomAttributeClass.js +22 -4
  51. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  52. package/lib/cjs/Metadata/EntityClass.d.ts +20 -8
  53. package/lib/cjs/Metadata/EntityClass.d.ts.map +1 -1
  54. package/lib/cjs/Metadata/EntityClass.js +42 -22
  55. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  56. package/lib/cjs/Metadata/Enumeration.d.ts +14 -1
  57. package/lib/cjs/Metadata/Enumeration.d.ts.map +1 -1
  58. package/lib/cjs/Metadata/Enumeration.js +22 -1
  59. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  60. package/lib/cjs/Metadata/Format.d.ts +41 -1
  61. package/lib/cjs/Metadata/Format.d.ts.map +1 -1
  62. package/lib/cjs/Metadata/Format.js +68 -3
  63. package/lib/cjs/Metadata/Format.js.map +1 -1
  64. package/lib/cjs/Metadata/InvertedUnit.d.ts +8 -3
  65. package/lib/cjs/Metadata/InvertedUnit.d.ts.map +1 -1
  66. package/lib/cjs/Metadata/InvertedUnit.js +17 -6
  67. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  68. package/lib/cjs/Metadata/KindOfQuantity.d.ts +14 -3
  69. package/lib/cjs/Metadata/KindOfQuantity.d.ts.map +1 -1
  70. package/lib/cjs/Metadata/KindOfQuantity.js +43 -18
  71. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  72. package/lib/cjs/Metadata/Mixin.d.ts +15 -1
  73. package/lib/cjs/Metadata/Mixin.d.ts.map +1 -1
  74. package/lib/cjs/Metadata/Mixin.js +23 -2
  75. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  76. package/lib/cjs/Metadata/OverrideFormat.js +9 -0
  77. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  78. package/lib/cjs/Metadata/Phenomenon.d.ts +14 -1
  79. package/lib/cjs/Metadata/Phenomenon.d.ts.map +1 -1
  80. package/lib/cjs/Metadata/Phenomenon.js +22 -1
  81. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  82. package/lib/cjs/Metadata/Property.d.ts +5 -1
  83. package/lib/cjs/Metadata/Property.d.ts.map +1 -1
  84. package/lib/cjs/Metadata/Property.js +83 -28
  85. package/lib/cjs/Metadata/Property.js.map +1 -1
  86. package/lib/cjs/Metadata/PropertyCategory.d.ts +14 -1
  87. package/lib/cjs/Metadata/PropertyCategory.d.ts.map +1 -1
  88. package/lib/cjs/Metadata/PropertyCategory.js +21 -1
  89. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  90. package/lib/cjs/Metadata/RelationshipClass.d.ts +15 -2
  91. package/lib/cjs/Metadata/RelationshipClass.d.ts.map +1 -1
  92. package/lib/cjs/Metadata/RelationshipClass.js +47 -10
  93. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  94. package/lib/cjs/Metadata/Schema.d.ts +116 -11
  95. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  96. package/lib/cjs/Metadata/Schema.js +135 -33
  97. package/lib/cjs/Metadata/Schema.js.map +1 -1
  98. package/lib/cjs/Metadata/SchemaItem.d.ts +11 -2
  99. package/lib/cjs/Metadata/SchemaItem.d.ts.map +1 -1
  100. package/lib/cjs/Metadata/SchemaItem.js +10 -0
  101. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  102. package/lib/cjs/Metadata/Unit.d.ts +8 -1
  103. package/lib/cjs/Metadata/Unit.d.ts.map +1 -1
  104. package/lib/cjs/Metadata/Unit.js +21 -3
  105. package/lib/cjs/Metadata/Unit.js.map +1 -1
  106. package/lib/cjs/Metadata/UnitSystem.d.ts +14 -3
  107. package/lib/cjs/Metadata/UnitSystem.d.ts.map +1 -1
  108. package/lib/cjs/Metadata/UnitSystem.js +21 -3
  109. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  110. package/lib/cjs/PropertyTypes.js.map +1 -1
  111. package/lib/cjs/SchemaJsonLocater.d.ts +3 -3
  112. package/lib/cjs/SchemaJsonLocater.d.ts.map +1 -1
  113. package/lib/cjs/SchemaJsonLocater.js +3 -3
  114. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  115. package/lib/cjs/SchemaKey.d.ts +7 -1
  116. package/lib/cjs/SchemaKey.d.ts.map +1 -1
  117. package/lib/cjs/SchemaKey.js +13 -3
  118. package/lib/cjs/SchemaKey.js.map +1 -1
  119. package/lib/cjs/SchemaLoader.d.ts +2 -2
  120. package/lib/cjs/SchemaLoader.d.ts.map +1 -1
  121. package/lib/cjs/SchemaLoader.js +1 -0
  122. package/lib/cjs/SchemaLoader.js.map +1 -1
  123. package/lib/cjs/SchemaPartVisitorDelegate.js +1 -0
  124. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  125. package/lib/cjs/UnitConversion/Graph.js +69 -65
  126. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  127. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  128. package/lib/cjs/UnitConversion/UnitConversion.d.ts +1 -1
  129. package/lib/cjs/UnitConversion/UnitConversion.d.ts.map +1 -1
  130. package/lib/cjs/UnitConversion/UnitConversion.js +9 -7
  131. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  132. package/lib/cjs/UnitConversion/UnitConverter.js +2 -0
  133. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  134. package/lib/cjs/UnitConversion/UnitTree.d.ts +2 -0
  135. package/lib/cjs/UnitConversion/UnitTree.d.ts.map +1 -1
  136. package/lib/cjs/UnitConversion/UnitTree.js +11 -1
  137. package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
  138. package/lib/cjs/UnitProvider/SchemaUnitProvider.d.ts.map +1 -1
  139. package/lib/cjs/UnitProvider/SchemaUnitProvider.js +8 -9
  140. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  141. package/lib/cjs/Validation/SchemaWalker.d.ts +1 -1
  142. package/lib/cjs/Validation/SchemaWalker.d.ts.map +1 -1
  143. package/lib/cjs/Validation/SchemaWalker.js +6 -4
  144. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  145. package/lib/cjs/ecschema-metadata.d.ts +1 -1
  146. package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
  147. package/lib/cjs/ecschema-metadata.js.map +1 -1
  148. package/lib/cjs/utils/SchemaGraph.js +2 -3
  149. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  150. package/lib/esm/Constants.js +20 -20
  151. package/lib/esm/Constants.js.map +1 -1
  152. package/lib/esm/Context.d.ts +83 -34
  153. package/lib/esm/Context.d.ts.map +1 -1
  154. package/lib/esm/Context.js +71 -21
  155. package/lib/esm/Context.js.map +1 -1
  156. package/lib/esm/DelayedPromise.js +6 -4
  157. package/lib/esm/DelayedPromise.js.map +1 -1
  158. package/lib/esm/Deserialization/AbstractParser.js +1 -0
  159. package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
  160. package/lib/esm/Deserialization/Helper.d.ts +3 -3
  161. package/lib/esm/Deserialization/Helper.d.ts.map +1 -1
  162. package/lib/esm/Deserialization/Helper.js +8 -0
  163. package/lib/esm/Deserialization/Helper.js.map +1 -1
  164. package/lib/esm/Deserialization/JsonParser.js +3 -0
  165. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  166. package/lib/esm/Deserialization/JsonProps.d.ts +3 -0
  167. package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
  168. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  169. package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
  170. package/lib/esm/Deserialization/XmlParser.d.ts.map +1 -1
  171. package/lib/esm/Deserialization/XmlParser.js +11 -3
  172. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  173. package/lib/esm/Deserialization/XmlSerializationUtils.d.ts.map +1 -1
  174. package/lib/esm/Deserialization/XmlSerializationUtils.js +2 -6
  175. package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
  176. package/lib/esm/ECName.js +1 -0
  177. package/lib/esm/ECName.js.map +1 -1
  178. package/lib/esm/ECObjects.d.ts +21 -1
  179. package/lib/esm/ECObjects.d.ts.map +1 -1
  180. package/lib/esm/ECObjects.js +31 -1
  181. package/lib/esm/ECObjects.js.map +1 -1
  182. package/lib/esm/Exception.js +1 -0
  183. package/lib/esm/Exception.js.map +1 -1
  184. package/lib/esm/Interfaces.d.ts +10 -3
  185. package/lib/esm/Interfaces.d.ts.map +1 -1
  186. package/lib/esm/Interfaces.js.map +1 -1
  187. package/lib/esm/Metadata/Class.d.ts +75 -16
  188. package/lib/esm/Metadata/Class.d.ts.map +1 -1
  189. package/lib/esm/Metadata/Class.js +169 -47
  190. package/lib/esm/Metadata/Class.js.map +1 -1
  191. package/lib/esm/Metadata/Constant.d.ts +14 -1
  192. package/lib/esm/Metadata/Constant.d.ts.map +1 -1
  193. package/lib/esm/Metadata/Constant.js +27 -2
  194. package/lib/esm/Metadata/Constant.js.map +1 -1
  195. package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
  196. package/lib/esm/Metadata/CustomAttributeClass.d.ts +16 -4
  197. package/lib/esm/Metadata/CustomAttributeClass.d.ts.map +1 -1
  198. package/lib/esm/Metadata/CustomAttributeClass.js +22 -4
  199. package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
  200. package/lib/esm/Metadata/EntityClass.d.ts +20 -8
  201. package/lib/esm/Metadata/EntityClass.d.ts.map +1 -1
  202. package/lib/esm/Metadata/EntityClass.js +42 -22
  203. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  204. package/lib/esm/Metadata/Enumeration.d.ts +14 -1
  205. package/lib/esm/Metadata/Enumeration.d.ts.map +1 -1
  206. package/lib/esm/Metadata/Enumeration.js +22 -1
  207. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  208. package/lib/esm/Metadata/Format.d.ts +41 -1
  209. package/lib/esm/Metadata/Format.d.ts.map +1 -1
  210. package/lib/esm/Metadata/Format.js +68 -3
  211. package/lib/esm/Metadata/Format.js.map +1 -1
  212. package/lib/esm/Metadata/InvertedUnit.d.ts +8 -3
  213. package/lib/esm/Metadata/InvertedUnit.d.ts.map +1 -1
  214. package/lib/esm/Metadata/InvertedUnit.js +17 -6
  215. package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
  216. package/lib/esm/Metadata/KindOfQuantity.d.ts +14 -3
  217. package/lib/esm/Metadata/KindOfQuantity.d.ts.map +1 -1
  218. package/lib/esm/Metadata/KindOfQuantity.js +43 -18
  219. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  220. package/lib/esm/Metadata/Mixin.d.ts +15 -1
  221. package/lib/esm/Metadata/Mixin.d.ts.map +1 -1
  222. package/lib/esm/Metadata/Mixin.js +24 -3
  223. package/lib/esm/Metadata/Mixin.js.map +1 -1
  224. package/lib/esm/Metadata/OverrideFormat.js +9 -0
  225. package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
  226. package/lib/esm/Metadata/Phenomenon.d.ts +14 -1
  227. package/lib/esm/Metadata/Phenomenon.d.ts.map +1 -1
  228. package/lib/esm/Metadata/Phenomenon.js +22 -1
  229. package/lib/esm/Metadata/Phenomenon.js.map +1 -1
  230. package/lib/esm/Metadata/Property.d.ts +5 -1
  231. package/lib/esm/Metadata/Property.d.ts.map +1 -1
  232. package/lib/esm/Metadata/Property.js +84 -29
  233. package/lib/esm/Metadata/Property.js.map +1 -1
  234. package/lib/esm/Metadata/PropertyCategory.d.ts +14 -1
  235. package/lib/esm/Metadata/PropertyCategory.d.ts.map +1 -1
  236. package/lib/esm/Metadata/PropertyCategory.js +21 -1
  237. package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
  238. package/lib/esm/Metadata/RelationshipClass.d.ts +15 -2
  239. package/lib/esm/Metadata/RelationshipClass.d.ts.map +1 -1
  240. package/lib/esm/Metadata/RelationshipClass.js +48 -11
  241. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  242. package/lib/esm/Metadata/Schema.d.ts +116 -11
  243. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  244. package/lib/esm/Metadata/Schema.js +135 -33
  245. package/lib/esm/Metadata/Schema.js.map +1 -1
  246. package/lib/esm/Metadata/SchemaItem.d.ts +11 -2
  247. package/lib/esm/Metadata/SchemaItem.d.ts.map +1 -1
  248. package/lib/esm/Metadata/SchemaItem.js +11 -1
  249. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  250. package/lib/esm/Metadata/Unit.d.ts +8 -1
  251. package/lib/esm/Metadata/Unit.d.ts.map +1 -1
  252. package/lib/esm/Metadata/Unit.js +21 -3
  253. package/lib/esm/Metadata/Unit.js.map +1 -1
  254. package/lib/esm/Metadata/UnitSystem.d.ts +14 -3
  255. package/lib/esm/Metadata/UnitSystem.d.ts.map +1 -1
  256. package/lib/esm/Metadata/UnitSystem.js +21 -3
  257. package/lib/esm/Metadata/UnitSystem.js.map +1 -1
  258. package/lib/esm/PropertyTypes.js.map +1 -1
  259. package/lib/esm/SchemaJsonLocater.d.ts +3 -3
  260. package/lib/esm/SchemaJsonLocater.d.ts.map +1 -1
  261. package/lib/esm/SchemaJsonLocater.js +3 -3
  262. package/lib/esm/SchemaJsonLocater.js.map +1 -1
  263. package/lib/esm/SchemaKey.d.ts +7 -1
  264. package/lib/esm/SchemaKey.d.ts.map +1 -1
  265. package/lib/esm/SchemaKey.js +13 -3
  266. package/lib/esm/SchemaKey.js.map +1 -1
  267. package/lib/esm/SchemaLoader.d.ts +2 -2
  268. package/lib/esm/SchemaLoader.d.ts.map +1 -1
  269. package/lib/esm/SchemaLoader.js +1 -0
  270. package/lib/esm/SchemaLoader.js.map +1 -1
  271. package/lib/esm/SchemaPartVisitorDelegate.js +1 -0
  272. package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
  273. package/lib/esm/UnitConversion/Graph.js +69 -65
  274. package/lib/esm/UnitConversion/Graph.js.map +1 -1
  275. package/lib/esm/UnitConversion/Parser.js.map +1 -1
  276. package/lib/esm/UnitConversion/UnitConversion.d.ts +1 -1
  277. package/lib/esm/UnitConversion/UnitConversion.d.ts.map +1 -1
  278. package/lib/esm/UnitConversion/UnitConversion.js +9 -7
  279. package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
  280. package/lib/esm/UnitConversion/UnitConverter.js +2 -0
  281. package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
  282. package/lib/esm/UnitConversion/UnitTree.d.ts +2 -0
  283. package/lib/esm/UnitConversion/UnitTree.d.ts.map +1 -1
  284. package/lib/esm/UnitConversion/UnitTree.js +11 -1
  285. package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
  286. package/lib/esm/UnitProvider/SchemaUnitProvider.d.ts.map +1 -1
  287. package/lib/esm/UnitProvider/SchemaUnitProvider.js +8 -9
  288. package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
  289. package/lib/esm/Validation/SchemaWalker.d.ts +1 -1
  290. package/lib/esm/Validation/SchemaWalker.d.ts.map +1 -1
  291. package/lib/esm/Validation/SchemaWalker.js +6 -4
  292. package/lib/esm/Validation/SchemaWalker.js.map +1 -1
  293. package/lib/esm/ecschema-metadata.d.ts +1 -1
  294. package/lib/esm/ecschema-metadata.d.ts.map +1 -1
  295. package/lib/esm/ecschema-metadata.js.map +1 -1
  296. package/lib/esm/utils/SchemaGraph.js +2 -3
  297. package/lib/esm/utils/SchemaGraph.js.map +1 -1
  298. package/package.json +14 -14
@@ -10,9 +10,11 @@ import { ECObjectsError, ECObjectsStatus } from "../Exception";
10
10
  import { SchemaItem } from "./SchemaItem";
11
11
  /** @beta */
12
12
  export class Phenomenon extends SchemaItem {
13
+ schemaItemType = Phenomenon.schemaItemType;
14
+ static get schemaItemType() { return SchemaItemType.Phenomenon; }
15
+ _definition; // Contains a combination of Phenomena names which form this Phenomenon. Each Phenomena name is separated by a * and may have an exponent, specified using parentheses
13
16
  constructor(schema, name) {
14
17
  super(schema, name);
15
- this.schemaItemType = SchemaItemType.Phenomenon;
16
18
  this._definition = "";
17
19
  }
18
20
  get definition() { return this._definition; }
@@ -45,6 +47,25 @@ export class Phenomenon extends SchemaItem {
45
47
  async setDefinition(definition) {
46
48
  this._definition = definition;
47
49
  }
50
+ /**
51
+ * Type guard to check if the SchemaItem is of type Phenomenon.
52
+ * @param item The SchemaItem to check.
53
+ * @returns True if the item is a Phenomenon, false otherwise.
54
+ */
55
+ static isPhenomenon(item) {
56
+ if (item && item.schemaItemType === SchemaItemType.Phenomenon)
57
+ return true;
58
+ return false;
59
+ }
60
+ /**
61
+ * Type assertion to check if the SchemaItem is of type Phenomenon.
62
+ * @param item The SchemaItem to check.
63
+ * @returns The item cast to Phenomenon if it is a Phenomenon, undefined otherwise.
64
+ */
65
+ static assertIsPhenomenon(item) {
66
+ if (!this.isPhenomenon(item))
67
+ throw new ECObjectsError(ECObjectsStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.Phenomenon}' (Phenomenon)`);
68
+ }
48
69
  }
49
70
  /**
50
71
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"Phenomenon.js","sourceRoot":"","sources":["../../../src/Metadata/Phenomenon.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,YAAY;AACZ,MAAM,OAAO,UAAW,SAAQ,UAAU;IAIxC,YAAY,MAAc,EAAE,IAAY;QACtC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,IAAW,UAAU,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5D;;;;OAIG;IACa,MAAM,CAAC,aAAsB,KAAK,EAAE,uBAAgC,KAAK;QACvF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAQ,CAAC;QACzE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACxC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,KAAK,CAAC,SAAmB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,YAAY,CAAC,eAAgC;QAC3D,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,IAAI,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;YACxG,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,kBAAkB,IAAI,CAAC,IAAI,yCAAyC,CAAC,CAAC;aAC3H,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE;YAC9B,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC;IAClD,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,eAAgC;QAC7D,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,UAAkB;QAC9C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,UAAU;CAGzD","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { PhenomenonProps } from \"../Deserialization/JsonProps\";\r\nimport { SchemaItemType } from \"../ECObjects\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\n/** @beta */\r\nexport class Phenomenon extends SchemaItem {\r\n public override readonly schemaItemType!: SchemaItemType.Phenomenon;\r\n protected _definition: string; // Contains a combination of Phenomena names which form this Phenomenon. Each Phenomena name is separated by a * and may have an exponent, specified using parentheses\r\n\r\n constructor(schema: Schema, name: string) {\r\n super(schema, name);\r\n this.schemaItemType = SchemaItemType.Phenomenon;\r\n this._definition = \"\";\r\n }\r\n\r\n public get definition(): string { return this._definition; }\r\n\r\n /**\r\n * Save this Phenomenon's properties to an object for serializing to JSON.\r\n * @param standalone Serialization includes only this object (as opposed to the full schema).\r\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\r\n */\r\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): PhenomenonProps {\r\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\r\n schemaJson.definition = this.definition;\r\n return schemaJson;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n itemElement.setAttribute(\"definition\", this.definition);\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(phenomenonProps: PhenomenonProps) {\r\n super.fromJSONSync(phenomenonProps);\r\n if (this._definition !== \"\" && phenomenonProps.definition.toLowerCase() !== this._definition.toLowerCase())\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Phenomenon ${this.name} has an invalid 'definition' attribute.`);\r\n else if (this._definition === \"\")\r\n this._definition = phenomenonProps.definition;\r\n }\r\n\r\n public override async fromJSON(phenomenonProps: PhenomenonProps) {\r\n this.fromJSONSync(phenomenonProps);\r\n }\r\n\r\n protected async setDefinition(definition: string) {\r\n this._definition = definition;\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * An abstract class used for schema editing.\r\n */\r\nexport abstract class MutablePhenomenon extends Phenomenon {\r\n public abstract override setDefinition(definition: string): Promise<void>;\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n"]}
1
+ {"version":3,"file":"Phenomenon.js","sourceRoot":"","sources":["../../../src/Metadata/Phenomenon.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,YAAY;AACZ,MAAM,OAAO,UAAW,SAAQ,UAAU;IACf,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IAC7D,MAAM,KAAc,cAAc,KAAK,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,WAAW,CAAS,CAAC,sKAAsK;IAErM,YAAY,MAAc,EAAE,IAAY;QACtC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,IAAW,UAAU,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5D;;;;OAIG;IACa,MAAM,CAAC,aAAsB,KAAK,EAAE,uBAAgC,KAAK;QACvF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAQ,CAAC;QACzE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACxC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,KAAK,CAAC,SAAmB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,YAAY,CAAC,eAAgC;QAC3D,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,IAAI,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;YACxG,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,kBAAkB,IAAI,CAAC,IAAI,yCAAyC,CAAC,CAAC;aAC3H,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE;YAC9B,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC;IAClD,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,eAAgC;QAC7D,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,UAAkB;QAC9C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,YAAY,CAAC,IAAiB;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,UAAU;YAC3D,OAAO,IAAI,CAAC;QAEd,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAAC,IAAiB;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAC1B,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,qBAAqB,EAAE,aAAa,cAAc,CAAC,UAAU,gBAAgB,CAAC,CAAC;IAC5H,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,UAAU;CAGzD","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { PhenomenonProps } from \"../Deserialization/JsonProps\";\nimport { SchemaItemType } from \"../ECObjects\";\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\nimport { Schema } from \"./Schema\";\nimport { SchemaItem } from \"./SchemaItem\";\n\n/** @beta */\nexport class Phenomenon extends SchemaItem {\n public override readonly schemaItemType = Phenomenon.schemaItemType;\n public static override get schemaItemType() { return SchemaItemType.Phenomenon; }\n protected _definition: string; // Contains a combination of Phenomena names which form this Phenomenon. Each Phenomena name is separated by a * and may have an exponent, specified using parentheses\n\n constructor(schema: Schema, name: string) {\n super(schema, name);\n this._definition = \"\";\n }\n\n public get definition(): string { return this._definition; }\n\n /**\n * Save this Phenomenon's properties to an object for serializing to JSON.\n * @param standalone Serialization includes only this object (as opposed to the full schema).\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\n */\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): PhenomenonProps {\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\n schemaJson.definition = this.definition;\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n itemElement.setAttribute(\"definition\", this.definition);\n return itemElement;\n }\n\n public override fromJSONSync(phenomenonProps: PhenomenonProps) {\n super.fromJSONSync(phenomenonProps);\n if (this._definition !== \"\" && phenomenonProps.definition.toLowerCase() !== this._definition.toLowerCase())\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Phenomenon ${this.name} has an invalid 'definition' attribute.`);\n else if (this._definition === \"\")\n this._definition = phenomenonProps.definition;\n }\n\n public override async fromJSON(phenomenonProps: PhenomenonProps) {\n this.fromJSONSync(phenomenonProps);\n }\n\n protected async setDefinition(definition: string) {\n this._definition = definition;\n }\n\n /**\n * Type guard to check if the SchemaItem is of type Phenomenon.\n * @param item The SchemaItem to check.\n * @returns True if the item is a Phenomenon, false otherwise.\n */\n public static isPhenomenon(item?: SchemaItem): item is Phenomenon {\n if (item && item.schemaItemType === SchemaItemType.Phenomenon)\n return true;\n\n return false;\n }\n\n /**\n * Type assertion to check if the SchemaItem is of type Phenomenon.\n * @param item The SchemaItem to check.\n * @returns The item cast to Phenomenon if it is a Phenomenon, undefined otherwise.\n */\n public static assertIsPhenomenon(item?: SchemaItem): asserts item is Phenomenon {\n if (!this.isPhenomenon(item))\n throw new ECObjectsError(ECObjectsStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.Phenomenon}' (Phenomenon)`);\n }\n}\n\n/**\n * @internal\n * An abstract class used for schema editing.\n */\nexport abstract class MutablePhenomenon extends Phenomenon {\n public abstract override setDefinition(definition: string): Promise<void>;\n public abstract override setDisplayLabel(displayLabel: string): void;\n}\n"]}
@@ -10,7 +10,7 @@ import { ECClass, StructClass } from "./Class";
10
10
  import { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet } from "./CustomAttribute";
11
11
  import { KindOfQuantity } from "./KindOfQuantity";
12
12
  import { PropertyCategory } from "./PropertyCategory";
13
- import { RelationshipClass } from "./RelationshipClass";
13
+ import { type RelationshipClass } from "./RelationshipClass";
14
14
  import { Schema } from "./Schema";
15
15
  /**
16
16
  * A common abstract class for all ECProperty types.
@@ -97,6 +97,10 @@ export declare abstract class Property implements CustomAttributeContainerProps
97
97
  */
98
98
  static isProperty(object: any): object is AnyProperty;
99
99
  }
100
+ /** A callback function to process properties of an Entity
101
+ * @beta
102
+ */
103
+ export type PropertyHandler = (name: string, property: Property) => void;
100
104
  /** @beta */
101
105
  export declare abstract class PrimitiveOrEnumPropertyBase extends Property {
102
106
  protected _extendedTypeName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Property.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Property.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACe,wBAAwB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,gCAAgC,EACpI,sBAAsB,EAAE,aAAa,EAAE,mBAAmB,EAC3D,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAsB,aAAa,EAAyC,iBAAiB,EAA6B,MAAM,cAAc,CAAC;AAEtJ,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACnJ,OAAO,EAAE,YAAY,EAA2C,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAAE,kBAAkB,EAA6B,MAAM,mBAAmB,CAAC;AAElI,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;GAGG;AACH,8BAAsB,QAAS,YAAW,6BAA6B;IACrE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC;IAE9B,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC3B,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACjD,SAAS,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACrD,OAAO,CAAC,iBAAiB,CAAC,CAA+B;gBAE7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IAMvD,OAAO,IAAI,IAAI,IAAI,gBAAgB;IACnC,WAAW,IAAI,IAAI,IAAI,oBAAoB;IAC3C,QAAQ,IAAI,IAAI,IAAI,iBAAiB;IACrC,aAAa,IAAI,IAAI,IAAI,sBAAsB;IAC/C,YAAY,IAAI,IAAI,IAAI,kBAAkB;IAEjD,IAAW,IAAI,WAA8B;IAE7C,IAAW,KAAK,aAA0B;IAE1C,IAAW,KAAK,uBAA0B;IAE1C,IAAW,WAAW,uBAAgC;IAEtD,IAAW,UAAU,YAAwC;IAE7D,IAAW,QAAQ,IAAI,MAAM,CAS5B;IAED,IAAW,QAAQ,IAAI,0BAA0B,GAAG,SAAS,CAS5D;IAED,IAAW,cAAc,IAAI,wBAAwB,GAAG,SAAS,CAShE;IAED,IAAW,YAAY,iBAAyB;IAEhD,IAAW,gBAAgB,IAAI,kBAAkB,GAAG,SAAS,CAAmC;IAEhG,+DAA+D;IAC/D,IAAW,QAAQ,IAAI,MAAM,CAA+C;IAE5E,4DAA4D;IAC5D,IAAW,MAAM,IAAI,MAAM,CAA+B;IAEnD,eAAe,IAAI,gBAAgB,GAAG,SAAS;IAa/C,qBAAqB,IAAI,cAAc,GAAG,SAAS;IAa1D;;OAEG;IACI,MAAM,IAAI,aAAa;IAsB9B,gBAAgB;IACH,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAsClD,YAAY,CAAC,aAAa,EAAE,aAAa;IA4CnC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAIlD,SAAS,CAAC,kBAAkB,CAAC,eAAe,EAAE,eAAe;IAO7D,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;IAI9B;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM;IAI5C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAIhC;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO;IAI3C;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAItC;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,0BAA0B;IAI1D;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,cAAc,EAAE,wBAAwB;IAIpE;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI/D;;OAEG;IACI,uBAAuB,IAAI,kBAAkB;IAgBpD;;OAEG;WACW,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,WAAW;CAM7D;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEzE,YAAY;AACZ,8BAAsB,2BAA4B,SAAQ,QAAQ;IAChE,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE7B,IAAW,gBAAgB,uBAAqC;IAChE,IAAW,SAAS,uBAA8B;IAClD,IAAW,SAAS,uBAA8B;IAClD,IAAW,QAAQ,uBAA6B;IAChD,IAAW,QAAQ,uBAA6B;gBAEpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IAI9D;;OAEG;IACa,MAAM,IAAI,gCAAgC;IAe1D,gBAAgB;IACM,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBlD,YAAY,CAAC,iBAAiB,EAAE,gCAAgC;IAuBhF;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,MAAM;IAItD;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM;IAIxC;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM;IAIxC;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAItC;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAIhB,QAAQ,CAAC,iBAAiB,EAAE,gCAAgC;CAGnF;AAED,YAAY;AACZ,qBAAa,iBAAkB,SAAQ,2BAA2B;IAChE,IAAW,aAAa,IAAI,aAAa,CAA2D;gBAExF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,aAAqC;IAIhF,YAAY,CAAC,sBAAsB,EAAE,sBAAsB;IAQrD,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;IAI7E;;OAEG;IACa,MAAM,IAAI,sBAAsB;IAMhD,gBAAgB;IACM,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAKnE;AAED,YAAY;AACZ,qBAAa,mBAAoB,SAAQ,2BAA2B;IAClE,SAAS,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAE/C,IAAW,WAAW,IAAI,qBAAqB,GAAG,SAAS,CAA8B;IAEzF;;OAEG;IACa,MAAM,IAAI,wBAAwB;gBAMtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB;IAMvD,YAAY,CAAC,wBAAwB,EAAE,wBAAwB;IAkB/E,gBAAgB;IACM,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5C,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB;CAIlF;AAED,YAAY;AACZ,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IAEpC,IAAW,WAAW,IAAI,WAAW,CAA8B;gBAEvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAK7D;;OAEG;IACa,MAAM,IAAI,mBAAmB;IAM7C,gBAAgB;IACM,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAOlD,YAAY,CAAC,mBAAmB,EAAE,mBAAmB;IAQ/C,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB;CAGxE;AAED,YAAY;AACZ,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,SAAS,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;IAC1D,SAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAExC,IAAW,iBAAiB,IAAI,2BAA2B,CAAoC;IAExF,wBAAwB,IAAI,iBAAiB,GAAG,SAAS;IAShE,IAAW,SAAS,sBAA8B;IAElD;;OAEG;IACa,MAAM,IAAI,uBAAuB;IAOjD,gBAAgB;IACM,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;gBAUtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,2BAA2B,EAAE,SAAS,CAAC,EAAE,iBAAiB;CAMrH;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAKhD,YAAY;AACZ,8BAAsB,aAAc,SAAQ,QAAQ;IAClD,SAAS,CAAC,UAAU,EAAE,MAAM,CAAK;IACjC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAa;IAE1C,IAAW,SAAS,WAA8B;IAClD,IAAW,SAAS,uBAA8B;IAElD;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM;IAIxC;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM;CAGzC;;AAoED,YAAY;AACZ,qBAAa,sBAAuB,SAAQ,2BAAqC;gBACnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,aAAqC;IAIhG;;OAEG;IACa,MAAM,IAAI,2BAA2B;CAItD;;AAED,YAAY;AACZ,qBAAa,wBAAyB,SAAQ,6BAAuC;gBACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB;CAGxE;;AAED,YAAY;AACZ,qBAAa,mBAAoB,SAAQ,wBAAkC;gBAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;CAG9D;AAED,YAAY;AACZ,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,GAAG,mBAAmB,CAAC;AACvG,YAAY;AACZ,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;AAC9E,YAAY;AACZ,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG,wBAAwB,CAAC;AACpF,YAAY;AACZ,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,mBAAmB,CAAC;AACrE,YAAY;AACZ,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAEjH;;;GAGG;AACH,8BAAsB,eAAgB,SAAQ,QAAQ;aAC3B,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CACpF"}
@@ -7,16 +7,29 @@
7
7
  */
8
8
  import { DelayedPromiseWithProps } from "../DelayedPromise";
9
9
  import { XmlSerializationUtils } from "../Deserialization/XmlSerializationUtils";
10
- import { parsePrimitiveType, PrimitiveType, primitiveTypeToString, StrengthDirection, strengthDirectionToString } from "../ECObjects";
10
+ import { parsePrimitiveType, PrimitiveType, primitiveTypeToString, SchemaItemType, StrengthDirection, strengthDirectionToString } from "../ECObjects";
11
11
  import { ECObjectsError, ECObjectsStatus } from "../Exception";
12
12
  import { PropertyType, propertyTypeToString, PropertyTypeUtils } from "../PropertyTypes";
13
13
  import { ECName } from "../ECName";
14
14
  import { serializeCustomAttributes } from "./CustomAttribute";
15
+ import { Enumeration } from "./Enumeration";
16
+ import { KindOfQuantity } from "./KindOfQuantity";
17
+ import { PropertyCategory } from "./PropertyCategory";
15
18
  /**
16
19
  * A common abstract class for all ECProperty types.
17
20
  * @beta
18
21
  */
19
22
  export class Property {
23
+ _name;
24
+ _type;
25
+ _class; // TODO: class seems to be unused?
26
+ _description;
27
+ _label;
28
+ _isReadOnly;
29
+ _priority;
30
+ _category;
31
+ _kindOfQuantity;
32
+ _customAttributes;
20
33
  constructor(ecClass, name, type) {
21
34
  this._class = ecClass;
22
35
  this._name = new ECName(name);
@@ -32,9 +45,33 @@ export class Property {
32
45
  get label() { return this._label; }
33
46
  get description() { return this._description; }
34
47
  get isReadOnly() { return this._isReadOnly || false; }
35
- get priority() { return this._priority || 0; }
36
- get category() { return this._category; }
37
- get kindOfQuantity() { return this._kindOfQuantity; }
48
+ get priority() {
49
+ if (this._priority === undefined) {
50
+ const baseProperty = this.class.getInheritedPropertySync(this.name);
51
+ if (undefined !== baseProperty) {
52
+ return baseProperty.priority;
53
+ }
54
+ }
55
+ return this._priority || 0;
56
+ }
57
+ get category() {
58
+ if (this._category === undefined) {
59
+ const baseProperty = this.class.getInheritedPropertySync(this.name);
60
+ if (undefined !== baseProperty) {
61
+ return baseProperty.category;
62
+ }
63
+ }
64
+ return this._category;
65
+ }
66
+ get kindOfQuantity() {
67
+ if (this._kindOfQuantity === undefined) {
68
+ const baseProperty = this.class.getInheritedPropertySync(this.name);
69
+ if (undefined !== baseProperty) {
70
+ return baseProperty.kindOfQuantity;
71
+ }
72
+ }
73
+ return this._kindOfQuantity;
74
+ }
38
75
  get propertyType() { return this._type; }
39
76
  get customAttributes() { return this._customAttributes; }
40
77
  /** Returns the name in the format 'ClassName.PropertyName'. */
@@ -42,14 +79,24 @@ export class Property {
42
79
  /** Returns the schema of the class holding the property. */
43
80
  get schema() { return this._class.schema; }
44
81
  getCategorySync() {
45
- if (!this._category)
82
+ if (!this._category) {
83
+ const baseProperty = this.class.getInheritedPropertySync(this.name);
84
+ if (undefined !== baseProperty) {
85
+ return baseProperty.getCategorySync();
86
+ }
46
87
  return undefined;
47
- return this.class.schema.lookupItemSync(this._category);
88
+ }
89
+ return this.class.schema.lookupItemSync(this._category, PropertyCategory);
48
90
  }
49
91
  getKindOfQuantitySync() {
50
- if (!this._kindOfQuantity)
92
+ if (!this._kindOfQuantity) {
93
+ const baseProperty = this.class.getInheritedPropertySync(this.name);
94
+ if (undefined !== baseProperty) {
95
+ return baseProperty.getKindOfQuantitySync();
96
+ }
51
97
  return undefined;
52
- return this.class.schema.lookupItemSync(this._kindOfQuantity);
98
+ }
99
+ return this.class.schema.lookupItemSync(this._kindOfQuantity, KindOfQuantity);
53
100
  }
54
101
  /**
55
102
  * Save this Property's properties to an object for serializing to JSON.
@@ -64,12 +111,12 @@ export class Property {
64
111
  schemaJson.label = this.label;
65
112
  if (this._isReadOnly !== undefined)
66
113
  schemaJson.isReadOnly = this._isReadOnly;
67
- if (this.category !== undefined)
68
- schemaJson.category = this.category.fullName; // needs to be fully qualified name
114
+ if (this._category !== undefined)
115
+ schemaJson.category = this._category.fullName; // needs to be fully qualified name
69
116
  if (this._priority !== undefined)
70
117
  schemaJson.priority = this._priority;
71
- if (this.kindOfQuantity !== undefined)
72
- schemaJson.kindOfQuantity = this.kindOfQuantity.fullName;
118
+ if (this._kindOfQuantity !== undefined)
119
+ schemaJson.kindOfQuantity = this._kindOfQuantity.fullName;
73
120
  const customAttributes = serializeCustomAttributes(this.customAttributes);
74
121
  if (customAttributes !== undefined)
75
122
  schemaJson.customAttributes = customAttributes;
@@ -86,15 +133,15 @@ export class Property {
86
133
  itemElement.setAttribute("displayLabel", this.label);
87
134
  if (undefined !== this.isReadOnly)
88
135
  itemElement.setAttribute("readOnly", String(this.isReadOnly));
89
- if (undefined !== this.category) {
90
- const category = await this.category;
136
+ if (undefined !== this._category) {
137
+ const category = await this._category;
91
138
  const categoryName = XmlSerializationUtils.createXmlTypedName(this.schema, category.schema, category.name);
92
139
  itemElement.setAttribute("category", categoryName);
93
140
  }
94
- if (undefined !== this.priority)
95
- itemElement.setAttribute("priority", this.priority.toString());
96
- if (undefined !== this.kindOfQuantity) {
97
- const kindOfQuantity = await this.kindOfQuantity;
141
+ if (undefined !== this._priority)
142
+ itemElement.setAttribute("priority", this._priority.toString());
143
+ if (undefined !== this._kindOfQuantity) {
144
+ const kindOfQuantity = await this._kindOfQuantity;
98
145
  const kindOfQuantityName = XmlSerializationUtils.createXmlTypedName(this.schema, kindOfQuantity.schema, kindOfQuantity.name);
99
146
  itemElement.setAttribute("kindOfQuantity", kindOfQuantityName);
100
147
  }
@@ -126,7 +173,7 @@ export class Property {
126
173
  if (!propertyCategorySchemaItemKey)
127
174
  throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'category' ("${propertyProps.category}") that cannot be found.`);
128
175
  this._category = new DelayedPromiseWithProps(propertyCategorySchemaItemKey, async () => {
129
- const category = await this.class.schema.lookupItem(propertyCategorySchemaItemKey);
176
+ const category = await this.class.schema.lookupItem(propertyCategorySchemaItemKey, PropertyCategory);
130
177
  if (undefined === category)
131
178
  throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'category' ("${propertyProps.category}") that cannot be found.`);
132
179
  return category;
@@ -137,7 +184,7 @@ export class Property {
137
184
  if (!koqSchemaItemKey)
138
185
  throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'kindOfQuantity' ("${propertyProps.kindOfQuantity}") that cannot be found.`);
139
186
  this._kindOfQuantity = new DelayedPromiseWithProps(koqSchemaItemKey, async () => {
140
- const koq = await this.class.schema.lookupItem(koqSchemaItemKey);
187
+ const koq = await this.class.schema.lookupItem(koqSchemaItemKey, KindOfQuantity);
141
188
  if (undefined === koq)
142
189
  throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'kindOfQuantity' ("${propertyProps.kindOfQuantity}") that cannot be found.`);
143
190
  return koq;
@@ -226,6 +273,11 @@ export class Property {
226
273
  }
227
274
  /** @beta */
228
275
  export class PrimitiveOrEnumPropertyBase extends Property {
276
+ _extendedTypeName;
277
+ _minLength;
278
+ _maxLength;
279
+ _minValue;
280
+ _maxValue;
229
281
  get extendedTypeName() { return this._extendedTypeName; }
230
282
  get minLength() { return this._minLength; }
231
283
  get maxLength() { return this._maxLength; }
@@ -351,6 +403,7 @@ export class PrimitiveProperty extends PrimitiveOrEnumPropertyBase {
351
403
  }
352
404
  /** @beta */
353
405
  export class EnumerationProperty extends PrimitiveOrEnumPropertyBase {
406
+ _enumeration;
354
407
  get enumeration() { return this._enumeration; }
355
408
  /**
356
409
  * Save this EnumerationProperty's properties to an object for serializing to JSON.
@@ -374,7 +427,7 @@ export class EnumerationProperty extends PrimitiveOrEnumPropertyBase {
374
427
  if (!enumSchemaItemKey)
375
428
  throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the enumeration ${enumerationPropertyProps.typeName}.`);
376
429
  this._enumeration = new DelayedPromiseWithProps(enumSchemaItemKey, async () => {
377
- const enumeration = await this.class.schema.lookupItem(enumSchemaItemKey);
430
+ const enumeration = await this.class.schema.lookupItem(enumSchemaItemKey, Enumeration);
378
431
  if (undefined === enumeration)
379
432
  throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the enumeration ${enumerationPropertyProps.typeName}.`);
380
433
  return enumeration;
@@ -395,6 +448,7 @@ export class EnumerationProperty extends PrimitiveOrEnumPropertyBase {
395
448
  }
396
449
  /** @beta */
397
450
  export class StructProperty extends Property {
451
+ _structClass;
398
452
  get structClass() { return this._structClass; }
399
453
  constructor(ecClass, name, type) {
400
454
  super(ecClass, name, PropertyType.Struct);
@@ -428,11 +482,15 @@ export class StructProperty extends Property {
428
482
  }
429
483
  /** @beta */
430
484
  export class NavigationProperty extends Property {
485
+ _relationshipClass;
486
+ _direction;
431
487
  get relationshipClass() { return this._relationshipClass; }
432
488
  getRelationshipClassSync() {
433
489
  if (!this._relationshipClass) // eslint-disable-line @typescript-eslint/no-misused-promises
434
490
  return undefined;
435
- return this.class.schema.lookupItemSync(this._relationshipClass);
491
+ // We cannot use the type guard here to avoid a circular dependency
492
+ const result = this.class.schema.lookupItemSync(this._relationshipClass);
493
+ return result?.schemaItemType === SchemaItemType.RelationshipClass ? result : undefined;
436
494
  }
437
495
  get direction() { return this._direction; }
438
496
  /**
@@ -463,11 +521,8 @@ export class NavigationProperty extends Property {
463
521
  const INT32_MAX = 2147483647;
464
522
  /** @beta */
465
523
  export class ArrayProperty extends Property {
466
- constructor() {
467
- super(...arguments);
468
- this._minOccurs = 0;
469
- this._maxOccurs = INT32_MAX;
470
- }
524
+ _minOccurs = 0;
525
+ _maxOccurs = INT32_MAX;
471
526
  get minOccurs() { return this._minOccurs; }
472
527
  get maxOccurs() { return this._maxOccurs; }
473
528
  /**
@@ -486,12 +541,12 @@ export class ArrayProperty extends Property {
486
541
  // eslint-disable-next-line @typescript-eslint/naming-convention
487
542
  const ArrayPropertyMixin = (Base) => {
488
543
  return class extends Base {
544
+ _minOccurs = 0;
545
+ _maxOccurs = INT32_MAX;
489
546
  get minOccurs() { return this._minOccurs; }
490
547
  get maxOccurs() { return this._maxOccurs; }
491
548
  constructor(...args) {
492
549
  super(...args);
493
- this._minOccurs = 0;
494
- this._maxOccurs = INT32_MAX;
495
550
  this._type = PropertyTypeUtils.asArray(this._type);
496
551
  }
497
552
  fromJSONSync(arrayPropertyProps) {
@@ -1 +1 @@
1
- {"version":3,"file":"Property.js","sourceRoot":"","sources":["../../../src/Metadata/Property.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAK5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACtI,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAsE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAOlI;;;GAGG;AACH,MAAM,OAAgB,QAAQ;IAa5B,YAAY,OAAgB,EAAE,IAAY,EAAE,IAAkB;QAC5D,IAAI,CAAC,MAAM,GAAG,OAAmB,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEM,OAAO,KAA+B,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrF,WAAW,KAAmC,OAAO,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjG,QAAQ,KAAgC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,aAAa,KAAqC,OAAO,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvG,YAAY,KAAiC,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAExG,IAAW,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7C,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1C,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1C,IAAW,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEtD,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC;IAE7D,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;IAErD,IAAW,QAAQ,KAA6C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAExF,IAAW,cAAc,KAA2C,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAElG,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhD,IAAW,gBAAgB,KAAqC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEhG,+DAA+D;IAC/D,IAAW,QAAQ,KAAa,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAE5E,4DAA4D;IAC5D,IAAW,MAAM,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnD,eAAe;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAEM,qBAAqB;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,MAAM;QACX,MAAM,UAAU,GAAQ,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,UAAU,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAChC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAC1B,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAChC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC7B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,mCAAmC;QACnF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAC9B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;YACnC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC3D,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,IAAI,gBAAgB,KAAK,SAAS;YAChC,UAAU,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACT,KAAK,CAAC,KAAK,CAAC,SAAmB;QACpC,MAAM,QAAQ,GAAG,KAAK,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAClF,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtD,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;YAChC,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK;YAC1B,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU;YAC/B,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhE,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;YACrC,MAAM,YAAY,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3G,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEjE,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YACjD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7H,WAAW,CAAC,YAAY,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,kBAAkB,GAAG,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;YACzE,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5G,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YACD,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,YAAY,CAAC,aAA4B;QAC9C,IAAI,SAAS,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,IAAI,SAAS,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC;QAChD,CAAC;QAED,IAAI,SAAS,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,IAAI,SAAS,KAAK,aAAa,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC;QAC9C,CAAC;QAED,IAAI,SAAS,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACjG,IAAI,CAAC,6BAA6B;gBAChC,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,IAAI,CAAC,IAAI,uBAAuB,aAAa,CAAC,QAAQ,0BAA0B,CAAC,CAAC;YAC5J,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAuB,CAAkC,6BAA6B,EACzG,KAAK,IAAI,EAAE;gBACT,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAmB,6BAA6B,CAAC,CAAC;gBACrG,IAAI,SAAS,KAAK,QAAQ;oBACxB,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,IAAI,CAAC,IAAI,uBAAuB,aAAa,CAAC,QAAQ,0BAA0B,CAAC,CAAC;gBAC5J,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,SAAS,KAAK,aAAa,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YAC1F,IAAI,CAAC,gBAAgB;gBACnB,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,IAAI,CAAC,IAAI,6BAA6B,aAAa,CAAC,cAAc,0BAA0B,CAAC,CAAC;YACxK,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAuB,CAAgC,gBAAgB,EAChG,KAAK,IAAI,EAAE;gBACT,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAiB,gBAAgB,CAAC,CAAC;gBACjF,IAAI,SAAS,KAAK,GAAG;oBACnB,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,IAAI,CAAC,IAAI,6BAA6B,aAAa,CAAC,cAAc,0BAA0B,CAAC,CAAC;gBACxK,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,aAA4B;QAChD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAES,kBAAkB,CAAC,eAAgC;QAC3D,IAAI,CAAC,IAAI,CAAC,iBAAiB;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAA2B,CAAC;QAE9D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACzE,CAAC;IAES,OAAO,CAAC,IAAY;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,WAAmB;QAC1C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,KAAa;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,UAAmB;QACzC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,QAAgB;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,QAAoC;QACxD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,cAAwC;QAClE,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mBAAmB;QAC9B,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,uBAAuB;QAC5B,IAAI,gBAAgB,GAA6C,IAAI,CAAC,iBAAiB,CAAC;QACxF,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;YACnC,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;QACxD,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,oBAAoB,CAAC;QACzB,IAAI,SAAS,KAAK,YAAY;YAC5B,oBAAoB,GAAG,YAAY,CAAC,uBAAuB,EAAE,CAAC;QAChE,IAAI,SAAS,KAAK,oBAAoB,EAAE,CAAC;YACvC,gBAAgB,GAAG,IAAI,GAAG,CAA0B,CAAC,GAAG,oBAAoB,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACtG,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD;;OAEG;IACI,MAAM,CAAC,UAAU,CAAC,MAAW;QAClC,MAAM,QAAQ,GAAG,MAAkB,CAAC;QAEpC,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;eACvF,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC;IAC3C,CAAC;CACF;AAED,YAAY;AACZ,MAAM,OAAgB,2BAA4B,SAAQ,QAAQ;IAOhE,IAAW,gBAAgB,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAChE,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhD,YAAY,OAAgB,EAAE,IAAY,EAAE,IAAkB;QAC5D,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACa,MAAM;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAS,CAAC;QACzC,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACrC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACtD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAC/B,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAC/B,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAC9B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAC9B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,KAAK,CAAC,SAAmB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,SAAS,KAAK,IAAI,CAAC,gBAAgB;YACrC,WAAW,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtE,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS;YAC9B,WAAW,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS;YAC9B,WAAW,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEvE,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,YAAY,CAAC,iBAAmD;QAC9E,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAEtC,IAAI,SAAS,KAAK,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC;QAChD,CAAC;QAED,IAAI,SAAS,KAAK,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC;QAChD,CAAC;QAED,IAAI,SAAS,KAAK,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC;QAC9C,CAAC;QAED,IAAI,SAAS,KAAK,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC;QAC9C,CAAC;QAED,IAAI,SAAS,KAAK,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;YACrD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC;QAC9D,CAAC;IACH,CAAC;IACD;;OAEG;IACO,mBAAmB,CAAC,gBAAwB;QACpD,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAC5C,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,SAAiB;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,SAAiB;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,QAAgB;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,QAAgB;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,iBAAmD;QAChF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;CACF;AAED,YAAY;AACZ,MAAM,OAAO,iBAAkB,SAAQ,2BAA2B;IAChE,IAAW,aAAa,KAAoB,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEpG,YAAY,OAAgB,EAAE,IAAY,EAAE,gBAA+B,aAAa,CAAC,OAAO;QAC9F,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEe,YAAY,CAAC,sBAA8C;QACzE,KAAK,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,aAAa,KAAK,kBAAkB,CAAC,sBAAsB,CAAC,QAAQ,CAAC;gBAC5E,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,sBAA8C;QAC3E,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACa,MAAM;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAS,CAAC;QACzC,UAAU,CAAC,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,KAAK,CAAC,SAAmB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAChF,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAED,YAAY;AACZ,MAAM,OAAO,mBAAoB,SAAQ,2BAA2B;IAGlE,IAAW,WAAW,KAAwC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzF;;OAEG;IACa,MAAM;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAS,CAAC;QACzC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAY,CAAC,QAAQ,CAAC;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,YAAY,OAAgB,EAAE,IAAY,EAAE,IAA2B;QACrE,qDAAqD;QACrD,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEe,YAAY,CAAC,wBAAkD;QAC7E,KAAK,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,wBAAwB,CAAC,QAAQ,EAAE,CAAC;YACpD,IAAI,CAAC,CAAC,IAAI,CAAC,WAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,0DAA0D;gBACpI,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAC9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAY,CAAC,QAAQ,CAAC,CAAC;YACzF,IAAI,CAAC,iBAAiB;gBACpB,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,oCAAoC,wBAAwB,CAAC,QAAQ,GAAG,CAAC,CAAC;YACpI,IAAI,CAAC,YAAY,GAAG,IAAI,uBAAuB,CAA6B,iBAAiB,EAC3F,KAAK,IAAI,EAAE;gBACT,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAc,iBAAiB,CAAC,CAAC;gBACvF,IAAI,SAAS,KAAK,WAAW;oBAC3B,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,oCAAoC,wBAAwB,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACpI,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,KAAK,CAAC,SAAmB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;QAC3C,MAAM,eAAe,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAY,CAAC,MAAM,EAAE,WAAY,CAAC,IAAI,CAAC,CAAC;QACtH,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,wBAAkD;QAC/E,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;CAEF;AAED,YAAY;AACZ,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAG1C,IAAW,WAAW,KAAkB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnE,YAAY,OAAgB,EAAE,IAAY,EAAE,IAAiB;QAC3D,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACa,MAAM;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAS,CAAC;QACzC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAChD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,KAAK,CAAC,SAAmB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,eAAe,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9H,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,YAAY,CAAC,mBAAwC;QACnE,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACxC,IAAI,SAAS,KAAK,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,mBAAmB,CAAC,QAAQ,CAAC;gBACrE,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,mBAAwC;QACrE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;CACF;AAED,YAAY;AACZ,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAI9C,IAAW,iBAAiB,KAAkC,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAExF,wBAAwB;QAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,6DAA6D;YACzF,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnE,CAAC;IAED,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAElD;;OAEG;IACa,MAAM;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAS,CAAC;QACzC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAC9D,UAAU,CAAC,SAAS,GAAG,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,KAAK,CAAC,SAAmB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;QACvD,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACtI,WAAW,CAAC,YAAY,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;QACpE,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAEjF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,YAAY,OAAgB,EAAE,IAAY,EAAE,YAAyC,EAAE,SAA6B;QAClH,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;QAEvC,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC;IACtF,CAAC;CACF;AAID,oDAAoD;AACpD,MAAM,SAAS,GAAG,UAAU,CAAC;AAE7B,YAAY;AACZ,MAAM,OAAgB,aAAc,SAAQ,QAAQ;IAApD;;QACY,eAAU,GAAW,CAAC,CAAC;QACvB,eAAU,GAAY,SAAS,CAAC;IAkB5C,CAAC;IAhBC,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAElD;;OAEG;IACO,YAAY,CAAC,SAAiB;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,SAAiB;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,kBAAkB,GAAG,CAAkC,IAAO,EAAE,EAAE;IACtE,OAAO,KAAM,SAAQ,IAAI;QAIvB,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAElD,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAPP,eAAU,GAAW,CAAC,CAAC;YACvB,eAAU,GAAW,SAAS,CAAC;YAOvC,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;QAEe,YAAY,CAAC,kBAA+C;YAC1E,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACvC,IAAI,SAAS,KAAK,kBAAkB,CAAC,SAAS,EAAE,CAAC;gBAC/C,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC;YACjD,CAAC;YAED,IAAI,SAAS,KAAK,kBAAkB,CAAC,SAAS,EAAE,CAAC;gBAC/C,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC;YACjD,CAAC;QACH,CAAC;QAEe,KAAK,CAAC,QAAQ,CAAC,kBAA+C;YAC5E,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC;QAED;;WAEG;QACa,MAAM;YACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAS,CAAC;YACzC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACtC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;gBAC9B,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,gBAAgB;QACA,KAAK,CAAC,KAAK,CAAC,SAAmB;YAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACjD,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,SAAS;gBAChB,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEnE,OAAO,WAAW,CAAC;QACrB,CAAC;QAED;;WAEG;QACO,YAAY,CAAC,SAAiB;YACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;QAED;;UAEE;QACQ,YAAY,CAAC,SAAiB;YACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;KACmE,CAAC;AACzE,CAAC,CAAC;AAEF,YAAY;AACZ,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB,CAAC,iBAAiB,CAAC;IAC/E,YAAY,OAAgB,EAAE,IAAY,EAAE,gBAA+B,aAAa,CAAC,OAAO;QAC9F,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACa,MAAM;QACpB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;CAEF;AAED,YAAY;AACZ,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IACnF,YAAY,OAAgB,EAAE,IAAY,EAAE,IAA2B;QACrE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,YAAY;AACZ,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB,CAAC,cAAc,CAAC;IACzE,YAAY,OAAgB,EAAE,IAAY,EAAE,IAAiB;QAC3D,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAaD;;;GAGG;AACH,MAAM,OAAgB,eAAgB,SAAQ,QAAQ;CAErD","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { DelayedPromiseWithProps } from \"../DelayedPromise\";\r\nimport {\r\n ArrayPropertyProps, EnumerationPropertyProps, NavigationPropertyProps, PrimitiveArrayPropertyProps, PrimitiveOrEnumPropertyBaseProps,\r\n PrimitivePropertyProps, PropertyProps, StructPropertyProps,\r\n} from \"../Deserialization/JsonProps\";\r\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\r\nimport { parsePrimitiveType, PrimitiveType, primitiveTypeToString, StrengthDirection, strengthDirectionToString } from \"../ECObjects\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\r\nimport { AnyClass, LazyLoadedEnumeration, LazyLoadedKindOfQuantity, LazyLoadedPropertyCategory, LazyLoadedRelationshipClass } from \"../Interfaces\";\r\nimport { PropertyType, propertyTypeToString, PropertyTypeUtils } from \"../PropertyTypes\";\r\nimport { SchemaItemKey } from \"../SchemaKey\";\r\nimport { ECName } from \"../ECName\";\r\nimport { ECClass, StructClass } from \"./Class\";\r\nimport { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet, serializeCustomAttributes } from \"./CustomAttribute\";\r\nimport { Enumeration } from \"./Enumeration\";\r\nimport { KindOfQuantity } from \"./KindOfQuantity\";\r\nimport { PropertyCategory } from \"./PropertyCategory\";\r\nimport { RelationshipClass } from \"./RelationshipClass\";\r\nimport { Schema } from \"./Schema\";\r\n\r\n/**\r\n * A common abstract class for all ECProperty types.\r\n * @beta\r\n */\r\nexport abstract class Property implements CustomAttributeContainerProps {\r\n protected _name: ECName;\r\n protected _type: PropertyType;\r\n\r\n protected _class: AnyClass; // TODO: class seems to be unused?\r\n protected _description?: string;\r\n protected _label?: string;\r\n protected _isReadOnly?: boolean;\r\n protected _priority?: number;\r\n protected _category?: LazyLoadedPropertyCategory;\r\n protected _kindOfQuantity?: LazyLoadedKindOfQuantity;\r\n private _customAttributes?: Map<string, CustomAttribute>;\r\n\r\n constructor(ecClass: ECClass, name: string, type: PropertyType) {\r\n this._class = ecClass as AnyClass;\r\n this._name = new ECName(name);\r\n this._type = type;\r\n }\r\n\r\n public isArray(): this is AnyArrayProperty { return PropertyTypeUtils.isArray(this._type); }\r\n public isPrimitive(): this is AnyPrimitiveProperty { return PropertyTypeUtils.isPrimitive(this._type); }\r\n public isStruct(): this is AnyStructProperty { return PropertyTypeUtils.isStruct(this._type); }\r\n public isEnumeration(): this is AnyEnumerationProperty { return PropertyTypeUtils.isEnumeration(this._type); }\r\n public isNavigation(): this is NavigationProperty { return PropertyTypeUtils.isNavigation(this._type); }\r\n\r\n public get name() { return this._name.name; }\r\n\r\n public get class() { return this._class; }\r\n\r\n public get label() { return this._label; }\r\n\r\n public get description() { return this._description; }\r\n\r\n public get isReadOnly() { return this._isReadOnly || false; }\r\n\r\n public get priority() { return this._priority || 0; }\r\n\r\n public get category(): LazyLoadedPropertyCategory | undefined { return this._category; }\r\n\r\n public get kindOfQuantity(): LazyLoadedKindOfQuantity | undefined { return this._kindOfQuantity; }\r\n\r\n public get propertyType() { return this._type; }\r\n\r\n public get customAttributes(): CustomAttributeSet | undefined { return this._customAttributes; }\r\n\r\n /** Returns the name in the format 'ClassName.PropertyName'. */\r\n public get fullName(): string { return `${this._class.name}.${this.name}`; }\r\n\r\n /** Returns the schema of the class holding the property. */\r\n public get schema(): Schema { return this._class.schema; }\r\n\r\n public getCategorySync(): PropertyCategory | undefined {\r\n if (!this._category)\r\n return undefined;\r\n\r\n return this.class.schema.lookupItemSync(this._category);\r\n }\r\n\r\n public getKindOfQuantitySync(): KindOfQuantity | undefined {\r\n if (!this._kindOfQuantity)\r\n return undefined;\r\n\r\n return this.class.schema.lookupItemSync(this._kindOfQuantity);\r\n }\r\n\r\n /**\r\n * Save this Property's properties to an object for serializing to JSON.\r\n */\r\n public toJSON(): PropertyProps {\r\n const schemaJson: any = {};\r\n schemaJson.name = this.name;\r\n schemaJson.type = propertyTypeToString(this._type);\r\n if (this.description !== undefined)\r\n schemaJson.description = this.description;\r\n if (this.label !== undefined)\r\n schemaJson.label = this.label;\r\n if (this._isReadOnly !== undefined)\r\n schemaJson.isReadOnly = this._isReadOnly;\r\n if (this.category !== undefined)\r\n schemaJson.category = this.category.fullName; // needs to be fully qualified name\r\n if (this._priority !== undefined)\r\n schemaJson.priority = this._priority;\r\n if (this.kindOfQuantity !== undefined)\r\n schemaJson.kindOfQuantity = this.kindOfQuantity.fullName;\r\n const customAttributes = serializeCustomAttributes(this.customAttributes);\r\n if (customAttributes !== undefined)\r\n schemaJson.customAttributes = customAttributes;\r\n return schemaJson;\r\n }\r\n\r\n /** @internal */\r\n public async toXml(schemaXml: Document): Promise<Element> {\r\n const propType = `EC${propertyTypeToString(this._type)}`.replace(\"Primitive\", \"\");\r\n const itemElement = schemaXml.createElement(propType);\r\n itemElement.setAttribute(\"propertyName\", this.name);\r\n if (undefined !== this.description)\r\n itemElement.setAttribute(\"description\", this.description);\r\n if (undefined !== this.label)\r\n itemElement.setAttribute(\"displayLabel\", this.label);\r\n if (undefined !== this.isReadOnly)\r\n itemElement.setAttribute(\"readOnly\", String(this.isReadOnly));\r\n\r\n if (undefined !== this.category) {\r\n const category = await this.category;\r\n const categoryName = XmlSerializationUtils.createXmlTypedName(this.schema, category.schema, category.name);\r\n itemElement.setAttribute(\"category\", categoryName);\r\n }\r\n\r\n if (undefined !== this.priority)\r\n itemElement.setAttribute(\"priority\", this.priority.toString());\r\n\r\n if (undefined !== this.kindOfQuantity) {\r\n const kindOfQuantity = await this.kindOfQuantity;\r\n const kindOfQuantityName = XmlSerializationUtils.createXmlTypedName(this.schema, kindOfQuantity.schema, kindOfQuantity.name);\r\n itemElement.setAttribute(\"kindOfQuantity\", kindOfQuantityName);\r\n }\r\n\r\n if (this._customAttributes) {\r\n const caContainerElement = schemaXml.createElement(\"ECCustomAttributes\");\r\n for (const [name, attribute] of this._customAttributes) {\r\n const caElement = await XmlSerializationUtils.writeCustomAttribute(name, attribute, schemaXml, this.schema);\r\n caContainerElement.appendChild(caElement);\r\n }\r\n itemElement.appendChild(caContainerElement);\r\n }\r\n\r\n return itemElement;\r\n }\r\n\r\n public fromJSONSync(propertyProps: PropertyProps) {\r\n if (undefined !== propertyProps.label) {\r\n this._label = propertyProps.label;\r\n }\r\n\r\n if (undefined !== propertyProps.description) {\r\n this._description = propertyProps.description;\r\n }\r\n\r\n if (undefined !== propertyProps.priority) {\r\n this._priority = propertyProps.priority;\r\n }\r\n\r\n if (undefined !== propertyProps.isReadOnly) {\r\n this._isReadOnly = propertyProps.isReadOnly;\r\n }\r\n\r\n if (undefined !== propertyProps.category) {\r\n const propertyCategorySchemaItemKey = this.class.schema.getSchemaItemKey(propertyProps.category);\r\n if (!propertyCategorySchemaItemKey)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'category' (\"${propertyProps.category}\") that cannot be found.`);\r\n this._category = new DelayedPromiseWithProps<SchemaItemKey, PropertyCategory>(propertyCategorySchemaItemKey,\r\n async () => {\r\n const category = await this.class.schema.lookupItem<PropertyCategory>(propertyCategorySchemaItemKey);\r\n if (undefined === category)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'category' (\"${propertyProps.category}\") that cannot be found.`);\r\n return category;\r\n });\r\n }\r\n\r\n if (undefined !== propertyProps.kindOfQuantity) {\r\n const koqSchemaItemKey = this.class.schema.getSchemaItemKey(propertyProps.kindOfQuantity);\r\n if (!koqSchemaItemKey)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'kindOfQuantity' (\"${propertyProps.kindOfQuantity}\") that cannot be found.`);\r\n this._kindOfQuantity = new DelayedPromiseWithProps<SchemaItemKey, KindOfQuantity>(koqSchemaItemKey,\r\n async () => {\r\n const koq = await this.class.schema.lookupItem<KindOfQuantity>(koqSchemaItemKey);\r\n if (undefined === koq)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'kindOfQuantity' (\"${propertyProps.kindOfQuantity}\") that cannot be found.`);\r\n return koq;\r\n });\r\n }\r\n }\r\n\r\n public async fromJSON(propertyProps: PropertyProps) {\r\n this.fromJSONSync(propertyProps);\r\n }\r\n\r\n protected addCustomAttribute(customAttribute: CustomAttribute) {\r\n if (!this._customAttributes)\r\n this._customAttributes = new Map<string, CustomAttribute>();\r\n\r\n this._customAttributes.set(customAttribute.className, customAttribute);\r\n }\r\n\r\n protected setName(name: ECName) {\r\n this._name = name;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setDescription(description: string) {\r\n this._description = description;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setLabel(label: string) {\r\n this._label = label;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setIsReadOnly(isReadOnly: boolean) {\r\n this._isReadOnly = isReadOnly;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setPriority(priority: number) {\r\n this._priority = priority;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setCategory(category: LazyLoadedPropertyCategory) {\r\n this._category = category;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setKindOfQuantity(kindOfQuantity: LazyLoadedKindOfQuantity) {\r\n this._kindOfQuantity = kindOfQuantity;\r\n }\r\n\r\n /**\r\n * Retrieve all custom attributes in the current property and its base\r\n * This is the async version of getCustomAttributesSync()\r\n */\r\n public async getCustomAttributes(): Promise<CustomAttributeSet> {\r\n return this.getCustomAttributesSync();\r\n }\r\n\r\n /**\r\n * Retrieve all custom attributes in the current property and its base.\r\n */\r\n public getCustomAttributesSync(): CustomAttributeSet {\r\n let customAttributes: Map<string, CustomAttribute> | undefined = this._customAttributes;\r\n if (undefined === customAttributes) {\r\n customAttributes = new Map<string, CustomAttribute>();\r\n }\r\n\r\n const baseProperty = this.class.getInheritedPropertySync(this.name);\r\n let baseCustomAttributes;\r\n if (undefined !== baseProperty)\r\n baseCustomAttributes = baseProperty.getCustomAttributesSync();\r\n if (undefined !== baseCustomAttributes) {\r\n customAttributes = new Map<string, CustomAttribute>([...baseCustomAttributes, ...customAttributes]);\r\n }\r\n\r\n return customAttributes;\r\n }\r\n /**\r\n * @internal\r\n */\r\n public static isProperty(object: any): object is AnyProperty {\r\n const property = object as Property;\r\n\r\n return property !== undefined && property.class !== undefined && property.name !== undefined\r\n && property.propertyType !== undefined;\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport abstract class PrimitiveOrEnumPropertyBase extends Property {\r\n protected _extendedTypeName?: string;\r\n protected _minLength?: number;\r\n protected _maxLength?: number;\r\n protected _minValue?: number;\r\n protected _maxValue?: number;\r\n\r\n public get extendedTypeName() { return this._extendedTypeName; }\r\n public get minLength() { return this._minLength; }\r\n public get maxLength() { return this._maxLength; }\r\n public get minValue() { return this._minValue; }\r\n public get maxValue() { return this._maxValue; }\r\n\r\n constructor(ecClass: ECClass, name: string, type: PropertyType) {\r\n super(ecClass, name, type);\r\n }\r\n\r\n /**\r\n * Save this PrimitiveOrEnumPropertyBase's properties to an object for serializing to JSON.\r\n */\r\n public override toJSON(): PrimitiveOrEnumPropertyBaseProps {\r\n const schemaJson = super.toJSON() as any;\r\n if (this.extendedTypeName !== undefined)\r\n schemaJson.extendedTypeName = this.extendedTypeName;\r\n if (this._minLength !== undefined)\r\n schemaJson.minLength = this.minLength;\r\n if (this._maxLength !== undefined)\r\n schemaJson.maxLength = this.maxLength;\r\n if (this._minValue !== undefined)\r\n schemaJson.minValue = this.minValue;\r\n if (this._maxValue !== undefined)\r\n schemaJson.maxValue = this.maxValue;\r\n return schemaJson;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n if (undefined !== this.extendedTypeName)\r\n itemElement.setAttribute(\"extendedTypeName\", this.extendedTypeName);\r\n if (undefined !== this.minValue)\r\n itemElement.setAttribute(\"minimumValue\", this.minValue.toString());\r\n if (undefined !== this.maxValue)\r\n itemElement.setAttribute(\"maximumValue\", this.maxValue.toString());\r\n if (undefined !== this.minLength)\r\n itemElement.setAttribute(\"minimumLength\", this.minLength.toString());\r\n if (undefined !== this.maxLength)\r\n itemElement.setAttribute(\"maximumLength\", this.maxLength.toString());\r\n\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(propertyBaseProps: PrimitiveOrEnumPropertyBaseProps) {\r\n super.fromJSONSync(propertyBaseProps);\r\n\r\n if (undefined !== propertyBaseProps.minLength) {\r\n this._minLength = propertyBaseProps.minLength;\r\n }\r\n\r\n if (undefined !== propertyBaseProps.maxLength) {\r\n this._maxLength = propertyBaseProps.maxLength;\r\n }\r\n\r\n if (undefined !== propertyBaseProps.minValue) {\r\n this._minValue = propertyBaseProps.minValue;\r\n }\r\n\r\n if (undefined !== propertyBaseProps.maxValue) {\r\n this._maxValue = propertyBaseProps.maxValue;\r\n }\r\n\r\n if (undefined !== propertyBaseProps.extendedTypeName) {\r\n this._extendedTypeName = propertyBaseProps.extendedTypeName;\r\n }\r\n }\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setExtendedTypeName(extendedTypeName: string) {\r\n this._extendedTypeName = extendedTypeName;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setMinLength(minLength: number) {\r\n this._minLength = minLength;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setMaxLength(maxLength: number) {\r\n this._maxLength = maxLength;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setMinValue(minValue: number) {\r\n this._minValue = minValue;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setMaxValue(maxValue: number) {\r\n this._maxValue = maxValue;\r\n }\r\n\r\n public override async fromJSON(propertyBaseProps: PrimitiveOrEnumPropertyBaseProps) {\r\n this.fromJSONSync(propertyBaseProps);\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport class PrimitiveProperty extends PrimitiveOrEnumPropertyBase {\r\n public get primitiveType(): PrimitiveType { return PropertyTypeUtils.getPrimitiveType(this._type); }\r\n\r\n constructor(ecClass: ECClass, name: string, primitiveType: PrimitiveType = PrimitiveType.Integer) {\r\n super(ecClass, name, PropertyTypeUtils.fromPrimitiveType(primitiveType));\r\n }\r\n\r\n public override fromJSONSync(primitivePropertyProps: PrimitivePropertyProps) {\r\n super.fromJSONSync(primitivePropertyProps);\r\n if (undefined !== primitivePropertyProps.typeName) {\r\n if (this.primitiveType !== parsePrimitiveType(primitivePropertyProps.typeName))\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\r\n }\r\n }\r\n\r\n public override async fromJSON(primitivePropertyProps: PrimitivePropertyProps) {\r\n this.fromJSONSync(primitivePropertyProps);\r\n }\r\n\r\n /**\r\n * Save this PrimitiveProperty's properties to an object for serializing to JSON.\r\n */\r\n public override toJSON(): PrimitivePropertyProps {\r\n const schemaJson = super.toJSON() as any;\r\n schemaJson.typeName = primitiveTypeToString(this.primitiveType);\r\n return schemaJson;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n itemElement.setAttribute(\"typeName\", primitiveTypeToString(this.primitiveType));\r\n return itemElement;\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport class EnumerationProperty extends PrimitiveOrEnumPropertyBase {\r\n protected _enumeration?: LazyLoadedEnumeration;\r\n\r\n public get enumeration(): LazyLoadedEnumeration | undefined { return this._enumeration; }\r\n\r\n /**\r\n * Save this EnumerationProperty's properties to an object for serializing to JSON.\r\n */\r\n public override toJSON(): EnumerationPropertyProps {\r\n const schemaJson = super.toJSON() as any;\r\n schemaJson.typeName = this.enumeration!.fullName;\r\n return schemaJson;\r\n }\r\n\r\n constructor(ecClass: ECClass, name: string, type: LazyLoadedEnumeration) {\r\n // TODO: Should we allow specifying the backing type?\r\n super(ecClass, name, PropertyType.Integer_Enumeration);\r\n this._enumeration = type;\r\n }\r\n\r\n public override fromJSONSync(enumerationPropertyProps: EnumerationPropertyProps) {\r\n super.fromJSONSync(enumerationPropertyProps);\r\n if (undefined !== enumerationPropertyProps.typeName) {\r\n if (!(this.enumeration!.fullName).match(enumerationPropertyProps.typeName)) // need to match {schema}.{version}.{itemName} on typeName\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\r\n const enumSchemaItemKey = this.class.schema.getSchemaItemKey(this.enumeration!.fullName);\r\n if (!enumSchemaItemKey)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the enumeration ${enumerationPropertyProps.typeName}.`);\r\n this._enumeration = new DelayedPromiseWithProps<SchemaItemKey, Enumeration>(enumSchemaItemKey,\r\n async () => {\r\n const enumeration = await this.class.schema.lookupItem<Enumeration>(enumSchemaItemKey);\r\n if (undefined === enumeration)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the enumeration ${enumerationPropertyProps.typeName}.`);\r\n return enumeration;\r\n });\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n const enumeration = await this.enumeration;\r\n const enumerationName = XmlSerializationUtils.createXmlTypedName(this.schema, enumeration!.schema, enumeration!.name);\r\n itemElement.setAttribute(\"typeName\", enumerationName);\r\n return itemElement;\r\n }\r\n\r\n public override async fromJSON(enumerationPropertyProps: EnumerationPropertyProps) {\r\n this.fromJSONSync(enumerationPropertyProps);\r\n }\r\n\r\n}\r\n\r\n/** @beta */\r\nexport class StructProperty extends Property {\r\n protected _structClass: StructClass;\r\n\r\n public get structClass(): StructClass { return this._structClass; }\r\n\r\n constructor(ecClass: ECClass, name: string, type: StructClass) {\r\n super(ecClass, name, PropertyType.Struct);\r\n this._structClass = type;\r\n }\r\n\r\n /**\r\n * Save this StructProperty's properties to an object for serializing to JSON.\r\n */\r\n public override toJSON(): StructPropertyProps {\r\n const schemaJson = super.toJSON() as any;\r\n schemaJson.typeName = this.structClass.fullName;\r\n return schemaJson;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n const structClassName = XmlSerializationUtils.createXmlTypedName(this.schema, this.structClass.schema, this.structClass.name);\r\n itemElement.setAttribute(\"typeName\", structClassName);\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(structPropertyProps: StructPropertyProps) {\r\n super.fromJSONSync(structPropertyProps);\r\n if (undefined !== structPropertyProps.typeName) {\r\n if (!this.structClass.key.matchesFullName(structPropertyProps.typeName))\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\r\n }\r\n }\r\n\r\n public override async fromJSON(structPropertyProps: StructPropertyProps) {\r\n this.fromJSONSync(structPropertyProps);\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport class NavigationProperty extends Property {\r\n protected _relationshipClass: LazyLoadedRelationshipClass;\r\n protected _direction: StrengthDirection;\r\n\r\n public get relationshipClass(): LazyLoadedRelationshipClass { return this._relationshipClass; }\r\n\r\n public getRelationshipClassSync(): RelationshipClass | undefined {\r\n if (!this._relationshipClass) // eslint-disable-line @typescript-eslint/no-misused-promises\r\n return undefined;\r\n\r\n return this.class.schema.lookupItemSync(this._relationshipClass);\r\n }\r\n\r\n public get direction() { return this._direction; }\r\n\r\n /**\r\n * Save this NavigationProperty's properties to an object for serializing to JSON.\r\n */\r\n public override toJSON(): NavigationPropertyProps {\r\n const schemaJson = super.toJSON() as any;\r\n schemaJson.relationshipName = this.relationshipClass.fullName;\r\n schemaJson.direction = strengthDirectionToString(this.direction);\r\n return schemaJson;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n const relationshipClass = await this.relationshipClass;\r\n const relationshipClassName = XmlSerializationUtils.createXmlTypedName(this.schema, relationshipClass.schema, relationshipClass.name);\r\n itemElement.setAttribute(\"relationshipName\", relationshipClassName);\r\n itemElement.setAttribute(\"direction\", strengthDirectionToString(this.direction));\r\n\r\n return itemElement;\r\n }\r\n\r\n constructor(ecClass: ECClass, name: string, relationship: LazyLoadedRelationshipClass, direction?: StrengthDirection) {\r\n super(ecClass, name, PropertyType.Navigation);\r\n this._relationshipClass = relationship;\r\n\r\n this._direction = (direction !== undefined) ? direction : StrengthDirection.Forward;\r\n }\r\n}\r\n\r\ntype Constructor<T> = new (...args: any[]) => T;\r\n\r\n// TODO: Consolidate all of the INT32_MAX variables.\r\nconst INT32_MAX = 2147483647;\r\n\r\n/** @beta */\r\nexport abstract class ArrayProperty extends Property {\r\n protected _minOccurs: number = 0;\r\n protected _maxOccurs?: number = INT32_MAX;\r\n\r\n public get minOccurs() { return this._minOccurs; }\r\n public get maxOccurs() { return this._maxOccurs; }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setMinOccurs(minOccurs: number) {\r\n this._minOccurs = minOccurs;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setMaxOccurs(maxOccurs: number) {\r\n this._maxOccurs = maxOccurs;\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nconst ArrayPropertyMixin = <T extends Constructor<Property>>(Base: T) => {\r\n return class extends Base {\r\n protected _minOccurs: number = 0;\r\n protected _maxOccurs: number = INT32_MAX;\r\n\r\n public get minOccurs() { return this._minOccurs; }\r\n public get maxOccurs() { return this._maxOccurs; }\r\n\r\n constructor(...args: any[]) {\r\n super(...args);\r\n this._type = PropertyTypeUtils.asArray(this._type);\r\n }\r\n\r\n public override fromJSONSync(arrayPropertyProps: PrimitiveArrayPropertyProps) {\r\n super.fromJSONSync(arrayPropertyProps);\r\n if (undefined !== arrayPropertyProps.minOccurs) {\r\n this._minOccurs = arrayPropertyProps.minOccurs;\r\n }\r\n\r\n if (undefined !== arrayPropertyProps.maxOccurs) {\r\n this._maxOccurs = arrayPropertyProps.maxOccurs;\r\n }\r\n }\r\n\r\n public override async fromJSON(arrayPropertyProps: PrimitiveArrayPropertyProps) {\r\n this.fromJSONSync(arrayPropertyProps);\r\n }\r\n\r\n /**\r\n * Save this ArrayProperty's properties to an object for serializing to JSON.\r\n */\r\n public override toJSON(): ArrayPropertyProps {\r\n const schemaJson = super.toJSON() as any;\r\n schemaJson.minOccurs = this.minOccurs;\r\n if (this.maxOccurs !== undefined)\r\n schemaJson.maxOccurs = this.maxOccurs;\r\n return schemaJson;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n itemElement.setAttribute(\"minOccurs\", this.minOccurs.toString());\r\n if (this.maxOccurs)\r\n itemElement.setAttribute(\"maxOccurs\", this.maxOccurs.toString());\r\n\r\n return itemElement;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setMinOccurs(minOccurs: number) {\r\n this._minOccurs = minOccurs;\r\n }\r\n\r\n /**\r\n * @internal Used in schema editing.\r\n */\r\n protected setMaxOccurs(maxOccurs: number) {\r\n this._maxOccurs = maxOccurs;\r\n }\r\n } as Constructor<Property> as typeof Base & Constructor<ArrayProperty>;\r\n};\r\n\r\n/** @beta */\r\nexport class PrimitiveArrayProperty extends ArrayPropertyMixin(PrimitiveProperty) {\r\n constructor(ecClass: ECClass, name: string, primitiveType: PrimitiveType = PrimitiveType.Integer) {\r\n super(ecClass, name, primitiveType);\r\n }\r\n\r\n /**\r\n * Save this PrimitiveArrayProperty's properties to an object for serializing to JSON.\r\n */\r\n public override toJSON(): PrimitiveArrayPropertyProps {\r\n return super.toJSON();\r\n }\r\n\r\n}\r\n\r\n/** @beta */\r\nexport class EnumerationArrayProperty extends ArrayPropertyMixin(EnumerationProperty) {\r\n constructor(ecClass: ECClass, name: string, type: LazyLoadedEnumeration) {\r\n super(ecClass, name, type);\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport class StructArrayProperty extends ArrayPropertyMixin(StructProperty) {\r\n constructor(ecClass: ECClass, name: string, type: StructClass) {\r\n super(ecClass, name, type);\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport type AnyArrayProperty = PrimitiveArrayProperty | EnumerationArrayProperty | StructArrayProperty;\r\n/** @beta */\r\nexport type AnyPrimitiveProperty = PrimitiveProperty | PrimitiveArrayProperty;\r\n/** @beta */\r\nexport type AnyEnumerationProperty = EnumerationProperty | EnumerationArrayProperty;\r\n/** @beta */\r\nexport type AnyStructProperty = StructProperty | StructArrayProperty;\r\n/** @beta */\r\nexport type AnyProperty = AnyPrimitiveProperty | AnyEnumerationProperty | AnyStructProperty | NavigationProperty;\r\n\r\n/**\r\n * Hackish approach that works like a \"friend class\" so we can access protected members without making them public.\r\n * @internal\r\n */\r\nexport abstract class MutableProperty extends Property {\r\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\r\n}\r\n"]}
1
+ {"version":3,"file":"Property.js","sourceRoot":"","sources":["../../../src/Metadata/Property.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { DelayedPromiseWithProps } from \"../DelayedPromise\";\nimport {\n ArrayPropertyProps, EnumerationPropertyProps, NavigationPropertyProps, PrimitiveArrayPropertyProps, PrimitiveOrEnumPropertyBaseProps,\n PrimitivePropertyProps, PropertyProps, StructPropertyProps,\n} from \"../Deserialization/JsonProps\";\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\nimport { parsePrimitiveType, PrimitiveType, primitiveTypeToString, SchemaItemType, StrengthDirection, strengthDirectionToString } from \"../ECObjects\";\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\nimport { AnyClass, LazyLoadedEnumeration, LazyLoadedKindOfQuantity, LazyLoadedPropertyCategory, LazyLoadedRelationshipClass } from \"../Interfaces\";\nimport { PropertyType, propertyTypeToString, PropertyTypeUtils } from \"../PropertyTypes\";\nimport { SchemaItemKey } from \"../SchemaKey\";\nimport { ECName } from \"../ECName\";\nimport { ECClass, StructClass } from \"./Class\";\nimport { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet, serializeCustomAttributes } from \"./CustomAttribute\";\nimport { Enumeration } from \"./Enumeration\";\nimport { KindOfQuantity } from \"./KindOfQuantity\";\nimport { PropertyCategory } from \"./PropertyCategory\";\nimport { type RelationshipClass } from \"./RelationshipClass\";\nimport { Schema } from \"./Schema\";\n\n/**\n * A common abstract class for all ECProperty types.\n * @beta\n */\nexport abstract class Property implements CustomAttributeContainerProps {\n protected _name: ECName;\n protected _type: PropertyType;\n\n protected _class: AnyClass; // TODO: class seems to be unused?\n protected _description?: string;\n protected _label?: string;\n protected _isReadOnly?: boolean;\n protected _priority?: number;\n protected _category?: LazyLoadedPropertyCategory;\n protected _kindOfQuantity?: LazyLoadedKindOfQuantity;\n private _customAttributes?: Map<string, CustomAttribute>;\n\n constructor(ecClass: ECClass, name: string, type: PropertyType) {\n this._class = ecClass as AnyClass;\n this._name = new ECName(name);\n this._type = type;\n }\n\n public isArray(): this is AnyArrayProperty { return PropertyTypeUtils.isArray(this._type); }\n public isPrimitive(): this is AnyPrimitiveProperty { return PropertyTypeUtils.isPrimitive(this._type); }\n public isStruct(): this is AnyStructProperty { return PropertyTypeUtils.isStruct(this._type); }\n public isEnumeration(): this is AnyEnumerationProperty { return PropertyTypeUtils.isEnumeration(this._type); }\n public isNavigation(): this is NavigationProperty { return PropertyTypeUtils.isNavigation(this._type); }\n\n public get name() { return this._name.name; }\n\n public get class() { return this._class; }\n\n public get label() { return this._label; }\n\n public get description() { return this._description; }\n\n public get isReadOnly() { return this._isReadOnly || false; }\n\n public get priority(): number {\n if (this._priority === undefined) {\n const baseProperty = this.class.getInheritedPropertySync(this.name);\n if (undefined !== baseProperty) {\n return baseProperty.priority;\n }\n }\n\n return this._priority || 0;\n }\n\n public get category(): LazyLoadedPropertyCategory | undefined {\n if (this._category === undefined) {\n const baseProperty = this.class.getInheritedPropertySync(this.name);\n if (undefined !== baseProperty) {\n return baseProperty.category;\n }\n }\n\n return this._category;\n }\n\n public get kindOfQuantity(): LazyLoadedKindOfQuantity | undefined {\n if (this._kindOfQuantity === undefined) {\n const baseProperty = this.class.getInheritedPropertySync(this.name);\n if (undefined !== baseProperty) {\n return baseProperty.kindOfQuantity;\n }\n }\n\n return this._kindOfQuantity;\n }\n\n public get propertyType() { return this._type; }\n\n public get customAttributes(): CustomAttributeSet | undefined { return this._customAttributes; }\n\n /** Returns the name in the format 'ClassName.PropertyName'. */\n public get fullName(): string { return `${this._class.name}.${this.name}`; }\n\n /** Returns the schema of the class holding the property. */\n public get schema(): Schema { return this._class.schema; }\n\n public getCategorySync(): PropertyCategory | undefined {\n if (!this._category){\n const baseProperty = this.class.getInheritedPropertySync(this.name);\n if (undefined !== baseProperty){\n return baseProperty.getCategorySync();\n }\n\n return undefined;\n }\n\n return this.class.schema.lookupItemSync(this._category, PropertyCategory);\n }\n\n public getKindOfQuantitySync(): KindOfQuantity | undefined {\n if (!this._kindOfQuantity){\n const baseProperty = this.class.getInheritedPropertySync(this.name);\n if (undefined !== baseProperty){\n return baseProperty.getKindOfQuantitySync();\n }\n\n return undefined;\n }\n\n return this.class.schema.lookupItemSync(this._kindOfQuantity, KindOfQuantity);\n }\n\n /**\n * Save this Property's properties to an object for serializing to JSON.\n */\n public toJSON(): PropertyProps {\n const schemaJson: any = {};\n schemaJson.name = this.name;\n schemaJson.type = propertyTypeToString(this._type);\n if (this.description !== undefined)\n schemaJson.description = this.description;\n if (this.label !== undefined)\n schemaJson.label = this.label;\n if (this._isReadOnly !== undefined)\n schemaJson.isReadOnly = this._isReadOnly;\n if (this._category !== undefined)\n schemaJson.category = this._category.fullName; // needs to be fully qualified name\n if (this._priority !== undefined)\n schemaJson.priority = this._priority;\n if (this._kindOfQuantity !== undefined)\n schemaJson.kindOfQuantity = this._kindOfQuantity.fullName;\n const customAttributes = serializeCustomAttributes(this.customAttributes);\n if (customAttributes !== undefined)\n schemaJson.customAttributes = customAttributes;\n return schemaJson;\n }\n\n /** @internal */\n public async toXml(schemaXml: Document): Promise<Element> {\n const propType = `EC${propertyTypeToString(this._type)}`.replace(\"Primitive\", \"\");\n const itemElement = schemaXml.createElement(propType);\n itemElement.setAttribute(\"propertyName\", this.name);\n if (undefined !== this.description)\n itemElement.setAttribute(\"description\", this.description);\n if (undefined !== this.label)\n itemElement.setAttribute(\"displayLabel\", this.label);\n if (undefined !== this.isReadOnly)\n itemElement.setAttribute(\"readOnly\", String(this.isReadOnly));\n\n if (undefined !== this._category) {\n const category = await this._category;\n const categoryName = XmlSerializationUtils.createXmlTypedName(this.schema, category.schema, category.name);\n itemElement.setAttribute(\"category\", categoryName);\n }\n\n if (undefined !== this._priority)\n itemElement.setAttribute(\"priority\", this._priority.toString());\n\n if (undefined !== this._kindOfQuantity) {\n const kindOfQuantity = await this._kindOfQuantity;\n const kindOfQuantityName = XmlSerializationUtils.createXmlTypedName(this.schema, kindOfQuantity.schema, kindOfQuantity.name);\n itemElement.setAttribute(\"kindOfQuantity\", kindOfQuantityName);\n }\n\n if (this._customAttributes) {\n const caContainerElement = schemaXml.createElement(\"ECCustomAttributes\");\n for (const [name, attribute] of this._customAttributes) {\n const caElement = await XmlSerializationUtils.writeCustomAttribute(name, attribute, schemaXml, this.schema);\n caContainerElement.appendChild(caElement);\n }\n itemElement.appendChild(caContainerElement);\n }\n\n return itemElement;\n }\n\n public fromJSONSync(propertyProps: PropertyProps) {\n if (undefined !== propertyProps.label) {\n this._label = propertyProps.label;\n }\n\n if (undefined !== propertyProps.description) {\n this._description = propertyProps.description;\n }\n\n if (undefined !== propertyProps.priority) {\n this._priority = propertyProps.priority;\n }\n\n if (undefined !== propertyProps.isReadOnly) {\n this._isReadOnly = propertyProps.isReadOnly;\n }\n\n if (undefined !== propertyProps.category) {\n const propertyCategorySchemaItemKey = this.class.schema.getSchemaItemKey(propertyProps.category);\n if (!propertyCategorySchemaItemKey)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'category' (\"${propertyProps.category}\") that cannot be found.`);\n this._category = new DelayedPromiseWithProps<SchemaItemKey, PropertyCategory>(propertyCategorySchemaItemKey,\n async () => {\n const category = await this.class.schema.lookupItem(propertyCategorySchemaItemKey, PropertyCategory);\n if (undefined === category)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'category' (\"${propertyProps.category}\") that cannot be found.`);\n return category;\n });\n }\n\n if (undefined !== propertyProps.kindOfQuantity) {\n const koqSchemaItemKey = this.class.schema.getSchemaItemKey(propertyProps.kindOfQuantity);\n if (!koqSchemaItemKey)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'kindOfQuantity' (\"${propertyProps.kindOfQuantity}\") that cannot be found.`);\n this._kindOfQuantity = new DelayedPromiseWithProps<SchemaItemKey, KindOfQuantity>(koqSchemaItemKey,\n async () => {\n const koq = await this.class.schema.lookupItem(koqSchemaItemKey, KindOfQuantity);\n if (undefined === koq)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Property ${this.name} has a 'kindOfQuantity' (\"${propertyProps.kindOfQuantity}\") that cannot be found.`);\n return koq;\n });\n }\n }\n\n public async fromJSON(propertyProps: PropertyProps) {\n this.fromJSONSync(propertyProps);\n }\n\n protected addCustomAttribute(customAttribute: CustomAttribute) {\n if (!this._customAttributes)\n this._customAttributes = new Map<string, CustomAttribute>();\n\n this._customAttributes.set(customAttribute.className, customAttribute);\n }\n\n protected setName(name: ECName) {\n this._name = name;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setDescription(description: string) {\n this._description = description;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setLabel(label: string) {\n this._label = label;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setIsReadOnly(isReadOnly: boolean) {\n this._isReadOnly = isReadOnly;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setPriority(priority: number) {\n this._priority = priority;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setCategory(category: LazyLoadedPropertyCategory) {\n this._category = category;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setKindOfQuantity(kindOfQuantity: LazyLoadedKindOfQuantity) {\n this._kindOfQuantity = kindOfQuantity;\n }\n\n /**\n * Retrieve all custom attributes in the current property and its base\n * This is the async version of getCustomAttributesSync()\n */\n public async getCustomAttributes(): Promise<CustomAttributeSet> {\n return this.getCustomAttributesSync();\n }\n\n /**\n * Retrieve all custom attributes in the current property and its base.\n */\n public getCustomAttributesSync(): CustomAttributeSet {\n let customAttributes: Map<string, CustomAttribute> | undefined = this._customAttributes;\n if (undefined === customAttributes) {\n customAttributes = new Map<string, CustomAttribute>();\n }\n\n const baseProperty = this.class.getInheritedPropertySync(this.name);\n let baseCustomAttributes;\n if (undefined !== baseProperty)\n baseCustomAttributes = baseProperty.getCustomAttributesSync();\n if (undefined !== baseCustomAttributes) {\n customAttributes = new Map<string, CustomAttribute>([...baseCustomAttributes, ...customAttributes]);\n }\n\n return customAttributes;\n }\n /**\n * @internal\n */\n public static isProperty(object: any): object is AnyProperty {\n const property = object as Property;\n\n return property !== undefined && property.class !== undefined && property.name !== undefined\n && property.propertyType !== undefined;\n }\n}\n\n/** A callback function to process properties of an Entity\n * @beta\n */\nexport type PropertyHandler = (name: string, property: Property) => void;\n\n/** @beta */\nexport abstract class PrimitiveOrEnumPropertyBase extends Property {\n protected _extendedTypeName?: string;\n protected _minLength?: number;\n protected _maxLength?: number;\n protected _minValue?: number;\n protected _maxValue?: number;\n\n public get extendedTypeName() { return this._extendedTypeName; }\n public get minLength() { return this._minLength; }\n public get maxLength() { return this._maxLength; }\n public get minValue() { return this._minValue; }\n public get maxValue() { return this._maxValue; }\n\n constructor(ecClass: ECClass, name: string, type: PropertyType) {\n super(ecClass, name, type);\n }\n\n /**\n * Save this PrimitiveOrEnumPropertyBase's properties to an object for serializing to JSON.\n */\n public override toJSON(): PrimitiveOrEnumPropertyBaseProps {\n const schemaJson = super.toJSON() as any;\n if (this.extendedTypeName !== undefined)\n schemaJson.extendedTypeName = this.extendedTypeName;\n if (this._minLength !== undefined)\n schemaJson.minLength = this.minLength;\n if (this._maxLength !== undefined)\n schemaJson.maxLength = this.maxLength;\n if (this._minValue !== undefined)\n schemaJson.minValue = this.minValue;\n if (this._maxValue !== undefined)\n schemaJson.maxValue = this.maxValue;\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n if (undefined !== this.extendedTypeName)\n itemElement.setAttribute(\"extendedTypeName\", this.extendedTypeName);\n if (undefined !== this.minValue)\n itemElement.setAttribute(\"minimumValue\", this.minValue.toString());\n if (undefined !== this.maxValue)\n itemElement.setAttribute(\"maximumValue\", this.maxValue.toString());\n if (undefined !== this.minLength)\n itemElement.setAttribute(\"minimumLength\", this.minLength.toString());\n if (undefined !== this.maxLength)\n itemElement.setAttribute(\"maximumLength\", this.maxLength.toString());\n\n return itemElement;\n }\n\n public override fromJSONSync(propertyBaseProps: PrimitiveOrEnumPropertyBaseProps) {\n super.fromJSONSync(propertyBaseProps);\n\n if (undefined !== propertyBaseProps.minLength) {\n this._minLength = propertyBaseProps.minLength;\n }\n\n if (undefined !== propertyBaseProps.maxLength) {\n this._maxLength = propertyBaseProps.maxLength;\n }\n\n if (undefined !== propertyBaseProps.minValue) {\n this._minValue = propertyBaseProps.minValue;\n }\n\n if (undefined !== propertyBaseProps.maxValue) {\n this._maxValue = propertyBaseProps.maxValue;\n }\n\n if (undefined !== propertyBaseProps.extendedTypeName) {\n this._extendedTypeName = propertyBaseProps.extendedTypeName;\n }\n }\n /**\n * @internal Used in schema editing.\n */\n protected setExtendedTypeName(extendedTypeName: string) {\n this._extendedTypeName = extendedTypeName;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setMinLength(minLength: number) {\n this._minLength = minLength;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setMaxLength(maxLength: number) {\n this._maxLength = maxLength;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setMinValue(minValue: number) {\n this._minValue = minValue;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setMaxValue(maxValue: number) {\n this._maxValue = maxValue;\n }\n\n public override async fromJSON(propertyBaseProps: PrimitiveOrEnumPropertyBaseProps) {\n this.fromJSONSync(propertyBaseProps);\n }\n}\n\n/** @beta */\nexport class PrimitiveProperty extends PrimitiveOrEnumPropertyBase {\n public get primitiveType(): PrimitiveType { return PropertyTypeUtils.getPrimitiveType(this._type); }\n\n constructor(ecClass: ECClass, name: string, primitiveType: PrimitiveType = PrimitiveType.Integer) {\n super(ecClass, name, PropertyTypeUtils.fromPrimitiveType(primitiveType));\n }\n\n public override fromJSONSync(primitivePropertyProps: PrimitivePropertyProps) {\n super.fromJSONSync(primitivePropertyProps);\n if (undefined !== primitivePropertyProps.typeName) {\n if (this.primitiveType !== parsePrimitiveType(primitivePropertyProps.typeName))\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\n }\n }\n\n public override async fromJSON(primitivePropertyProps: PrimitivePropertyProps) {\n this.fromJSONSync(primitivePropertyProps);\n }\n\n /**\n * Save this PrimitiveProperty's properties to an object for serializing to JSON.\n */\n public override toJSON(): PrimitivePropertyProps {\n const schemaJson = super.toJSON() as any;\n schemaJson.typeName = primitiveTypeToString(this.primitiveType);\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n itemElement.setAttribute(\"typeName\", primitiveTypeToString(this.primitiveType));\n return itemElement;\n }\n}\n\n/** @beta */\nexport class EnumerationProperty extends PrimitiveOrEnumPropertyBase {\n protected _enumeration?: LazyLoadedEnumeration;\n\n public get enumeration(): LazyLoadedEnumeration | undefined { return this._enumeration; }\n\n /**\n * Save this EnumerationProperty's properties to an object for serializing to JSON.\n */\n public override toJSON(): EnumerationPropertyProps {\n const schemaJson = super.toJSON() as any;\n schemaJson.typeName = this.enumeration!.fullName;\n return schemaJson;\n }\n\n constructor(ecClass: ECClass, name: string, type: LazyLoadedEnumeration) {\n // TODO: Should we allow specifying the backing type?\n super(ecClass, name, PropertyType.Integer_Enumeration);\n this._enumeration = type;\n }\n\n public override fromJSONSync(enumerationPropertyProps: EnumerationPropertyProps) {\n super.fromJSONSync(enumerationPropertyProps);\n if (undefined !== enumerationPropertyProps.typeName) {\n if (!(this.enumeration!.fullName).match(enumerationPropertyProps.typeName)) // need to match {schema}.{version}.{itemName} on typeName\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\n const enumSchemaItemKey = this.class.schema.getSchemaItemKey(this.enumeration!.fullName);\n if (!enumSchemaItemKey)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the enumeration ${enumerationPropertyProps.typeName}.`);\n this._enumeration = new DelayedPromiseWithProps<SchemaItemKey, Enumeration>(enumSchemaItemKey,\n async () => {\n const enumeration = await this.class.schema.lookupItem(enumSchemaItemKey, Enumeration);\n if (undefined === enumeration)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the enumeration ${enumerationPropertyProps.typeName}.`);\n return enumeration;\n });\n }\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n const enumeration = await this.enumeration;\n const enumerationName = XmlSerializationUtils.createXmlTypedName(this.schema, enumeration!.schema, enumeration!.name);\n itemElement.setAttribute(\"typeName\", enumerationName);\n return itemElement;\n }\n\n public override async fromJSON(enumerationPropertyProps: EnumerationPropertyProps) {\n this.fromJSONSync(enumerationPropertyProps);\n }\n\n}\n\n/** @beta */\nexport class StructProperty extends Property {\n protected _structClass: StructClass;\n\n public get structClass(): StructClass { return this._structClass; }\n\n constructor(ecClass: ECClass, name: string, type: StructClass) {\n super(ecClass, name, PropertyType.Struct);\n this._structClass = type;\n }\n\n /**\n * Save this StructProperty's properties to an object for serializing to JSON.\n */\n public override toJSON(): StructPropertyProps {\n const schemaJson = super.toJSON() as any;\n schemaJson.typeName = this.structClass.fullName;\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n const structClassName = XmlSerializationUtils.createXmlTypedName(this.schema, this.structClass.schema, this.structClass.name);\n itemElement.setAttribute(\"typeName\", structClassName);\n return itemElement;\n }\n\n public override fromJSONSync(structPropertyProps: StructPropertyProps) {\n super.fromJSONSync(structPropertyProps);\n if (undefined !== structPropertyProps.typeName) {\n if (!this.structClass.key.matchesFullName(structPropertyProps.typeName))\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\n }\n }\n\n public override async fromJSON(structPropertyProps: StructPropertyProps) {\n this.fromJSONSync(structPropertyProps);\n }\n}\n\n/** @beta */\nexport class NavigationProperty extends Property {\n protected _relationshipClass: LazyLoadedRelationshipClass;\n protected _direction: StrengthDirection;\n\n public get relationshipClass(): LazyLoadedRelationshipClass { return this._relationshipClass; }\n\n public getRelationshipClassSync(): RelationshipClass | undefined {\n if (!this._relationshipClass) // eslint-disable-line @typescript-eslint/no-misused-promises\n return undefined;\n\n // We cannot use the type guard here to avoid a circular dependency\n const result = this.class.schema.lookupItemSync(this._relationshipClass);\n return result?.schemaItemType === SchemaItemType.RelationshipClass ? result as RelationshipClass : undefined\n }\n\n public get direction() { return this._direction; }\n\n /**\n * Save this NavigationProperty's properties to an object for serializing to JSON.\n */\n public override toJSON(): NavigationPropertyProps {\n const schemaJson = super.toJSON() as any;\n schemaJson.relationshipName = this.relationshipClass.fullName;\n schemaJson.direction = strengthDirectionToString(this.direction);\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n const relationshipClass = await this.relationshipClass;\n const relationshipClassName = XmlSerializationUtils.createXmlTypedName(this.schema, relationshipClass.schema, relationshipClass.name);\n itemElement.setAttribute(\"relationshipName\", relationshipClassName);\n itemElement.setAttribute(\"direction\", strengthDirectionToString(this.direction));\n\n return itemElement;\n }\n\n constructor(ecClass: ECClass, name: string, relationship: LazyLoadedRelationshipClass, direction?: StrengthDirection) {\n super(ecClass, name, PropertyType.Navigation);\n this._relationshipClass = relationship;\n\n this._direction = (direction !== undefined) ? direction : StrengthDirection.Forward;\n }\n}\n\ntype Constructor<T> = new (...args: any[]) => T;\n\n// TODO: Consolidate all of the INT32_MAX variables.\nconst INT32_MAX = 2147483647;\n\n/** @beta */\nexport abstract class ArrayProperty extends Property {\n protected _minOccurs: number = 0;\n protected _maxOccurs?: number = INT32_MAX;\n\n public get minOccurs() { return this._minOccurs; }\n public get maxOccurs() { return this._maxOccurs; }\n\n /**\n * @internal Used in schema editing.\n */\n protected setMinOccurs(minOccurs: number) {\n this._minOccurs = minOccurs;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setMaxOccurs(maxOccurs: number) {\n this._maxOccurs = maxOccurs;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst ArrayPropertyMixin = <T extends Constructor<Property>>(Base: T) => {\n return class extends Base {\n protected _minOccurs: number = 0;\n protected _maxOccurs: number = INT32_MAX;\n\n public get minOccurs() { return this._minOccurs; }\n public get maxOccurs() { return this._maxOccurs; }\n\n constructor(...args: any[]) {\n super(...args);\n this._type = PropertyTypeUtils.asArray(this._type);\n }\n\n public override fromJSONSync(arrayPropertyProps: PrimitiveArrayPropertyProps) {\n super.fromJSONSync(arrayPropertyProps);\n if (undefined !== arrayPropertyProps.minOccurs) {\n this._minOccurs = arrayPropertyProps.minOccurs;\n }\n\n if (undefined !== arrayPropertyProps.maxOccurs) {\n this._maxOccurs = arrayPropertyProps.maxOccurs;\n }\n }\n\n public override async fromJSON(arrayPropertyProps: PrimitiveArrayPropertyProps) {\n this.fromJSONSync(arrayPropertyProps);\n }\n\n /**\n * Save this ArrayProperty's properties to an object for serializing to JSON.\n */\n public override toJSON(): ArrayPropertyProps {\n const schemaJson = super.toJSON() as any;\n schemaJson.minOccurs = this.minOccurs;\n if (this.maxOccurs !== undefined)\n schemaJson.maxOccurs = this.maxOccurs;\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n itemElement.setAttribute(\"minOccurs\", this.minOccurs.toString());\n if (this.maxOccurs)\n itemElement.setAttribute(\"maxOccurs\", this.maxOccurs.toString());\n\n return itemElement;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setMinOccurs(minOccurs: number) {\n this._minOccurs = minOccurs;\n }\n\n /**\n * @internal Used in schema editing.\n */\n protected setMaxOccurs(maxOccurs: number) {\n this._maxOccurs = maxOccurs;\n }\n } as Constructor<Property> as typeof Base & Constructor<ArrayProperty>;\n};\n\n/** @beta */\nexport class PrimitiveArrayProperty extends ArrayPropertyMixin(PrimitiveProperty) {\n constructor(ecClass: ECClass, name: string, primitiveType: PrimitiveType = PrimitiveType.Integer) {\n super(ecClass, name, primitiveType);\n }\n\n /**\n * Save this PrimitiveArrayProperty's properties to an object for serializing to JSON.\n */\n public override toJSON(): PrimitiveArrayPropertyProps {\n return super.toJSON();\n }\n\n}\n\n/** @beta */\nexport class EnumerationArrayProperty extends ArrayPropertyMixin(EnumerationProperty) {\n constructor(ecClass: ECClass, name: string, type: LazyLoadedEnumeration) {\n super(ecClass, name, type);\n }\n}\n\n/** @beta */\nexport class StructArrayProperty extends ArrayPropertyMixin(StructProperty) {\n constructor(ecClass: ECClass, name: string, type: StructClass) {\n super(ecClass, name, type);\n }\n}\n\n/** @beta */\nexport type AnyArrayProperty = PrimitiveArrayProperty | EnumerationArrayProperty | StructArrayProperty;\n/** @beta */\nexport type AnyPrimitiveProperty = PrimitiveProperty | PrimitiveArrayProperty;\n/** @beta */\nexport type AnyEnumerationProperty = EnumerationProperty | EnumerationArrayProperty;\n/** @beta */\nexport type AnyStructProperty = StructProperty | StructArrayProperty;\n/** @beta */\nexport type AnyProperty = AnyPrimitiveProperty | AnyEnumerationProperty | AnyStructProperty | NavigationProperty;\n\n/**\n * Hackish approach that works like a \"friend class\" so we can access protected members without making them public.\n * @internal\n */\nexport abstract class MutableProperty extends Property {\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\n}\n"]}
@@ -9,7 +9,8 @@ import { SchemaItem } from "./SchemaItem";
9
9
  * @beta
10
10
  */
11
11
  export declare class PropertyCategory extends SchemaItem {
12
- readonly schemaItemType: SchemaItemType.PropertyCategory;
12
+ readonly schemaItemType: SchemaItemType;
13
+ static get schemaItemType(): SchemaItemType;
13
14
  protected _priority: number;
14
15
  get priority(): number;
15
16
  constructor(schema: Schema, name: string);
@@ -28,6 +29,18 @@ export declare class PropertyCategory extends SchemaItem {
28
29
  * Used for schema editing.
29
30
  */
30
31
  protected setPriority(priority: number): void;
32
+ /**
33
+ * Type guard to check if the SchemaItem is of type PropertyCategory.
34
+ * @param item The SchemaItem to check.
35
+ * @returns True if the item is a PropertyCategory, false otherwise.
36
+ */
37
+ static isPropertyCategory(item?: SchemaItem): item is PropertyCategory;
38
+ /**
39
+ * Type assertion to check if the SchemaItem is of type PropertyCategory.
40
+ * @param item The SchemaItem to check.
41
+ * @returns The item cast to PropertyCategory if it is a PropertyCategory, undefined otherwise.
42
+ */
43
+ static assertIsPropertyCategory(item?: SchemaItem): asserts item is PropertyCategory;
31
44
  }
32
45
  /**
33
46
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyCategory.d.ts","sourceRoot":"","sources":["../../../src/Metadata/PropertyCategory.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,SAAyB,cAAc,EAAG,cAAc,CAAC,gBAAgB,CAAC;IAC1E,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAE5B,IAAW,QAAQ,WAA6B;gBAEpC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMxC;;;;OAIG;IACa,MAAM,CAAC,UAAU,GAAE,OAAe,EAAE,oBAAoB,GAAE,OAAe,GAAG,qBAAqB;IAMjH,gBAAgB;IACM,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,YAAY,CAAC,qBAAqB,EAAE,qBAAqB;IAKnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IAG3E;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM;CAGvC;AAED;;;GAGG;AACH,8BAAsB,uBAAwB,SAAQ,gBAAgB;aAC3C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;aACnC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CACrE"}
1
+ {"version":3,"file":"PropertyCategory.d.ts","sourceRoot":"","sources":["../../../src/Metadata/PropertyCategory.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,SAAyB,cAAc,iBAAmC;IAC1E,WAA2B,cAAc,mBAA8C;IACvF,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAE5B,IAAW,QAAQ,WAA6B;gBAEpC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAKxC;;;;OAIG;IACa,MAAM,CAAC,UAAU,GAAE,OAAe,EAAE,oBAAoB,GAAE,OAAe,GAAG,qBAAqB;IAMjH,gBAAgB;IACM,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,YAAY,CAAC,qBAAqB,EAAE,qBAAqB;IAKnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IAG3E;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAItC;;;;OAIG;WACW,kBAAkB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,IAAI,gBAAgB;IAI7E;;;;OAIG;WACW,wBAAwB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,gBAAgB;CAI5F;AAED;;;GAGG;AACH,8BAAsB,uBAAwB,SAAQ,gBAAgB;aAC3C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;aACnC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CACrE"}