@itwin/ecschema-metadata 5.0.0-dev.99 → 5.1.0-dev.1

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 (282) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/Context.d.ts +3 -3
  3. package/lib/cjs/Context.d.ts.map +1 -1
  4. package/lib/cjs/Context.js +6 -6
  5. package/lib/cjs/Context.js.map +1 -1
  6. package/lib/cjs/DelayedPromise.d.ts +9 -8
  7. package/lib/cjs/DelayedPromise.d.ts.map +1 -1
  8. package/lib/cjs/DelayedPromise.js +2 -2
  9. package/lib/cjs/DelayedPromise.js.map +1 -1
  10. package/lib/cjs/Deserialization/Helper.d.ts.map +1 -1
  11. package/lib/cjs/Deserialization/Helper.js +27 -26
  12. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  13. package/lib/cjs/Deserialization/JsonParser.js +150 -150
  14. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  15. package/lib/cjs/Deserialization/JsonProps.d.ts +34 -34
  16. package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
  17. package/lib/cjs/Deserialization/JsonProps.js +3 -3
  18. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  19. package/lib/cjs/Deserialization/XmlParser.js +49 -49
  20. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  21. package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts +0 -5
  22. package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts.map +1 -1
  23. package/lib/cjs/Deserialization/XmlSerializationUtils.js +6 -11
  24. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  25. package/lib/cjs/ECName.d.ts +2 -2
  26. package/lib/cjs/ECName.js +4 -4
  27. package/lib/cjs/ECName.js.map +1 -1
  28. package/lib/cjs/ECObjects.d.ts +23 -11
  29. package/lib/cjs/ECObjects.d.ts.map +1 -1
  30. package/lib/cjs/ECObjects.js +47 -24
  31. package/lib/cjs/ECObjects.js.map +1 -1
  32. package/lib/cjs/Exception.d.ts +4 -4
  33. package/lib/cjs/Exception.d.ts.map +1 -1
  34. package/lib/cjs/Exception.js +60 -60
  35. package/lib/cjs/Exception.js.map +1 -1
  36. package/lib/cjs/Interfaces.d.ts +30 -34
  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 +107 -19
  40. package/lib/cjs/Metadata/Class.d.ts.map +1 -1
  41. package/lib/cjs/Metadata/Class.js +127 -47
  42. package/lib/cjs/Metadata/Class.js.map +1 -1
  43. package/lib/cjs/Metadata/Constant.d.ts +12 -9
  44. package/lib/cjs/Metadata/Constant.d.ts.map +1 -1
  45. package/lib/cjs/Metadata/Constant.js +12 -9
  46. package/lib/cjs/Metadata/Constant.js.map +1 -1
  47. package/lib/cjs/Metadata/CustomAttribute.d.ts +2 -2
  48. package/lib/cjs/Metadata/CustomAttribute.d.ts.map +1 -1
  49. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  50. package/lib/cjs/Metadata/CustomAttributeClass.d.ts +5 -3
  51. package/lib/cjs/Metadata/CustomAttributeClass.d.ts.map +1 -1
  52. package/lib/cjs/Metadata/CustomAttributeClass.js +7 -5
  53. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  54. package/lib/cjs/Metadata/EntityClass.d.ts +20 -3
  55. package/lib/cjs/Metadata/EntityClass.d.ts.map +1 -1
  56. package/lib/cjs/Metadata/EntityClass.js +32 -14
  57. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  58. package/lib/cjs/Metadata/Enumeration.d.ts +16 -9
  59. package/lib/cjs/Metadata/Enumeration.d.ts.map +1 -1
  60. package/lib/cjs/Metadata/Enumeration.js +20 -13
  61. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  62. package/lib/cjs/Metadata/Format.d.ts +32 -24
  63. package/lib/cjs/Metadata/Format.d.ts.map +1 -1
  64. package/lib/cjs/Metadata/Format.js +47 -27
  65. package/lib/cjs/Metadata/Format.js.map +1 -1
  66. package/lib/cjs/Metadata/InvertedUnit.d.ts +11 -7
  67. package/lib/cjs/Metadata/InvertedUnit.d.ts.map +1 -1
  68. package/lib/cjs/Metadata/InvertedUnit.js +16 -10
  69. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  70. package/lib/cjs/Metadata/KindOfQuantity.d.ts +24 -15
  71. package/lib/cjs/Metadata/KindOfQuantity.d.ts.map +1 -1
  72. package/lib/cjs/Metadata/KindOfQuantity.js +54 -29
  73. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  74. package/lib/cjs/Metadata/Mixin.d.ts +16 -3
  75. package/lib/cjs/Metadata/Mixin.d.ts.map +1 -1
  76. package/lib/cjs/Metadata/Mixin.js +20 -7
  77. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  78. package/lib/cjs/Metadata/OverrideFormat.d.ts +12 -12
  79. package/lib/cjs/Metadata/OverrideFormat.d.ts.map +1 -1
  80. package/lib/cjs/Metadata/OverrideFormat.js +27 -19
  81. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  82. package/lib/cjs/Metadata/Phenomenon.d.ts +10 -2
  83. package/lib/cjs/Metadata/Phenomenon.d.ts.map +1 -1
  84. package/lib/cjs/Metadata/Phenomenon.js +11 -3
  85. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  86. package/lib/cjs/Metadata/Property.d.ts +46 -28
  87. package/lib/cjs/Metadata/Property.d.ts.map +1 -1
  88. package/lib/cjs/Metadata/Property.js +46 -22
  89. package/lib/cjs/Metadata/Property.js.map +1 -1
  90. package/lib/cjs/Metadata/PropertyCategory.d.ts +6 -3
  91. package/lib/cjs/Metadata/PropertyCategory.d.ts.map +1 -1
  92. package/lib/cjs/Metadata/PropertyCategory.js +12 -5
  93. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  94. package/lib/cjs/Metadata/RelationshipClass.d.ts +48 -25
  95. package/lib/cjs/Metadata/RelationshipClass.d.ts.map +1 -1
  96. package/lib/cjs/Metadata/RelationshipClass.js +54 -34
  97. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  98. package/lib/cjs/Metadata/Schema.d.ts +50 -28
  99. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  100. package/lib/cjs/Metadata/Schema.js +64 -42
  101. package/lib/cjs/Metadata/Schema.js.map +1 -1
  102. package/lib/cjs/Metadata/SchemaItem.d.ts +10 -19
  103. package/lib/cjs/Metadata/SchemaItem.d.ts.map +1 -1
  104. package/lib/cjs/Metadata/SchemaItem.js +12 -20
  105. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  106. package/lib/cjs/Metadata/Unit.d.ts +17 -21
  107. package/lib/cjs/Metadata/Unit.d.ts.map +1 -1
  108. package/lib/cjs/Metadata/Unit.js +20 -22
  109. package/lib/cjs/Metadata/Unit.js.map +1 -1
  110. package/lib/cjs/Metadata/UnitSystem.d.ts +3 -1
  111. package/lib/cjs/Metadata/UnitSystem.d.ts.map +1 -1
  112. package/lib/cjs/Metadata/UnitSystem.js +4 -2
  113. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  114. package/lib/cjs/PropertyTypes.d.ts +11 -11
  115. package/lib/cjs/PropertyTypes.d.ts.map +1 -1
  116. package/lib/cjs/PropertyTypes.js +28 -20
  117. package/lib/cjs/PropertyTypes.js.map +1 -1
  118. package/lib/cjs/SchemaFormatsProvider.d.ts +39 -0
  119. package/lib/cjs/SchemaFormatsProvider.d.ts.map +1 -0
  120. package/lib/cjs/SchemaFormatsProvider.js +146 -0
  121. package/lib/cjs/SchemaFormatsProvider.js.map +1 -0
  122. package/lib/cjs/SchemaJsonLocater.d.ts +5 -5
  123. package/lib/cjs/SchemaJsonLocater.js +4 -4
  124. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  125. package/lib/cjs/SchemaKey.d.ts +6 -6
  126. package/lib/cjs/SchemaKey.d.ts.map +1 -1
  127. package/lib/cjs/SchemaKey.js +9 -9
  128. package/lib/cjs/SchemaKey.js.map +1 -1
  129. package/lib/cjs/SchemaLoader.d.ts +3 -3
  130. package/lib/cjs/SchemaLoader.js +4 -4
  131. package/lib/cjs/SchemaLoader.js.map +1 -1
  132. package/lib/cjs/SchemaPartVisitorDelegate.d.ts +2 -2
  133. package/lib/cjs/SchemaPartVisitorDelegate.js +1 -1
  134. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  135. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  136. package/lib/cjs/ecschema-metadata.d.ts +2 -1
  137. package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
  138. package/lib/cjs/ecschema-metadata.js +1 -0
  139. package/lib/cjs/ecschema-metadata.js.map +1 -1
  140. package/lib/cjs/utils/SchemaGraph.js +3 -3
  141. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  142. package/lib/esm/Context.d.ts +3 -3
  143. package/lib/esm/Context.d.ts.map +1 -1
  144. package/lib/esm/Context.js +7 -7
  145. package/lib/esm/Context.js.map +1 -1
  146. package/lib/esm/DelayedPromise.d.ts +9 -8
  147. package/lib/esm/DelayedPromise.d.ts.map +1 -1
  148. package/lib/esm/DelayedPromise.js +2 -2
  149. package/lib/esm/DelayedPromise.js.map +1 -1
  150. package/lib/esm/Deserialization/Helper.d.ts.map +1 -1
  151. package/lib/esm/Deserialization/Helper.js +28 -27
  152. package/lib/esm/Deserialization/Helper.js.map +1 -1
  153. package/lib/esm/Deserialization/JsonParser.js +151 -151
  154. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  155. package/lib/esm/Deserialization/JsonProps.d.ts +34 -34
  156. package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
  157. package/lib/esm/Deserialization/JsonProps.js +3 -3
  158. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  159. package/lib/esm/Deserialization/XmlParser.js +50 -50
  160. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  161. package/lib/esm/Deserialization/XmlSerializationUtils.d.ts +0 -5
  162. package/lib/esm/Deserialization/XmlSerializationUtils.d.ts.map +1 -1
  163. package/lib/esm/Deserialization/XmlSerializationUtils.js +7 -12
  164. package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
  165. package/lib/esm/ECName.d.ts +2 -2
  166. package/lib/esm/ECName.js +5 -5
  167. package/lib/esm/ECName.js.map +1 -1
  168. package/lib/esm/ECObjects.d.ts +23 -11
  169. package/lib/esm/ECObjects.d.ts.map +1 -1
  170. package/lib/esm/ECObjects.js +48 -25
  171. package/lib/esm/ECObjects.js.map +1 -1
  172. package/lib/esm/Exception.d.ts +4 -4
  173. package/lib/esm/Exception.d.ts.map +1 -1
  174. package/lib/esm/Exception.js +58 -58
  175. package/lib/esm/Exception.js.map +1 -1
  176. package/lib/esm/Interfaces.d.ts +30 -34
  177. package/lib/esm/Interfaces.d.ts.map +1 -1
  178. package/lib/esm/Interfaces.js.map +1 -1
  179. package/lib/esm/Metadata/Class.d.ts +107 -19
  180. package/lib/esm/Metadata/Class.d.ts.map +1 -1
  181. package/lib/esm/Metadata/Class.js +128 -48
  182. package/lib/esm/Metadata/Class.js.map +1 -1
  183. package/lib/esm/Metadata/Constant.d.ts +12 -9
  184. package/lib/esm/Metadata/Constant.d.ts.map +1 -1
  185. package/lib/esm/Metadata/Constant.js +13 -10
  186. package/lib/esm/Metadata/Constant.js.map +1 -1
  187. package/lib/esm/Metadata/CustomAttribute.d.ts +2 -2
  188. package/lib/esm/Metadata/CustomAttribute.d.ts.map +1 -1
  189. package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
  190. package/lib/esm/Metadata/CustomAttributeClass.d.ts +5 -3
  191. package/lib/esm/Metadata/CustomAttributeClass.d.ts.map +1 -1
  192. package/lib/esm/Metadata/CustomAttributeClass.js +8 -6
  193. package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
  194. package/lib/esm/Metadata/EntityClass.d.ts +20 -3
  195. package/lib/esm/Metadata/EntityClass.d.ts.map +1 -1
  196. package/lib/esm/Metadata/EntityClass.js +33 -15
  197. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  198. package/lib/esm/Metadata/Enumeration.d.ts +16 -9
  199. package/lib/esm/Metadata/Enumeration.d.ts.map +1 -1
  200. package/lib/esm/Metadata/Enumeration.js +21 -14
  201. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  202. package/lib/esm/Metadata/Format.d.ts +32 -24
  203. package/lib/esm/Metadata/Format.d.ts.map +1 -1
  204. package/lib/esm/Metadata/Format.js +48 -28
  205. package/lib/esm/Metadata/Format.js.map +1 -1
  206. package/lib/esm/Metadata/InvertedUnit.d.ts +11 -7
  207. package/lib/esm/Metadata/InvertedUnit.d.ts.map +1 -1
  208. package/lib/esm/Metadata/InvertedUnit.js +17 -11
  209. package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
  210. package/lib/esm/Metadata/KindOfQuantity.d.ts +24 -15
  211. package/lib/esm/Metadata/KindOfQuantity.d.ts.map +1 -1
  212. package/lib/esm/Metadata/KindOfQuantity.js +55 -30
  213. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  214. package/lib/esm/Metadata/Mixin.d.ts +16 -3
  215. package/lib/esm/Metadata/Mixin.d.ts.map +1 -1
  216. package/lib/esm/Metadata/Mixin.js +21 -8
  217. package/lib/esm/Metadata/Mixin.js.map +1 -1
  218. package/lib/esm/Metadata/OverrideFormat.d.ts +12 -12
  219. package/lib/esm/Metadata/OverrideFormat.d.ts.map +1 -1
  220. package/lib/esm/Metadata/OverrideFormat.js +28 -20
  221. package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
  222. package/lib/esm/Metadata/Phenomenon.d.ts +10 -2
  223. package/lib/esm/Metadata/Phenomenon.d.ts.map +1 -1
  224. package/lib/esm/Metadata/Phenomenon.js +12 -4
  225. package/lib/esm/Metadata/Phenomenon.js.map +1 -1
  226. package/lib/esm/Metadata/Property.d.ts +46 -28
  227. package/lib/esm/Metadata/Property.d.ts.map +1 -1
  228. package/lib/esm/Metadata/Property.js +47 -23
  229. package/lib/esm/Metadata/Property.js.map +1 -1
  230. package/lib/esm/Metadata/PropertyCategory.d.ts +6 -3
  231. package/lib/esm/Metadata/PropertyCategory.d.ts.map +1 -1
  232. package/lib/esm/Metadata/PropertyCategory.js +13 -6
  233. package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
  234. package/lib/esm/Metadata/RelationshipClass.d.ts +48 -25
  235. package/lib/esm/Metadata/RelationshipClass.d.ts.map +1 -1
  236. package/lib/esm/Metadata/RelationshipClass.js +55 -35
  237. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  238. package/lib/esm/Metadata/Schema.d.ts +50 -28
  239. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  240. package/lib/esm/Metadata/Schema.js +65 -43
  241. package/lib/esm/Metadata/Schema.js.map +1 -1
  242. package/lib/esm/Metadata/SchemaItem.d.ts +10 -19
  243. package/lib/esm/Metadata/SchemaItem.d.ts.map +1 -1
  244. package/lib/esm/Metadata/SchemaItem.js +13 -21
  245. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  246. package/lib/esm/Metadata/Unit.d.ts +17 -21
  247. package/lib/esm/Metadata/Unit.d.ts.map +1 -1
  248. package/lib/esm/Metadata/Unit.js +21 -23
  249. package/lib/esm/Metadata/Unit.js.map +1 -1
  250. package/lib/esm/Metadata/UnitSystem.d.ts +3 -1
  251. package/lib/esm/Metadata/UnitSystem.d.ts.map +1 -1
  252. package/lib/esm/Metadata/UnitSystem.js +5 -3
  253. package/lib/esm/Metadata/UnitSystem.js.map +1 -1
  254. package/lib/esm/PropertyTypes.d.ts +11 -11
  255. package/lib/esm/PropertyTypes.d.ts.map +1 -1
  256. package/lib/esm/PropertyTypes.js +29 -21
  257. package/lib/esm/PropertyTypes.js.map +1 -1
  258. package/lib/esm/SchemaFormatsProvider.d.ts +39 -0
  259. package/lib/esm/SchemaFormatsProvider.d.ts.map +1 -0
  260. package/lib/esm/SchemaFormatsProvider.js +142 -0
  261. package/lib/esm/SchemaFormatsProvider.js.map +1 -0
  262. package/lib/esm/SchemaJsonLocater.d.ts +5 -5
  263. package/lib/esm/SchemaJsonLocater.js +4 -4
  264. package/lib/esm/SchemaJsonLocater.js.map +1 -1
  265. package/lib/esm/SchemaKey.d.ts +6 -6
  266. package/lib/esm/SchemaKey.d.ts.map +1 -1
  267. package/lib/esm/SchemaKey.js +10 -10
  268. package/lib/esm/SchemaKey.js.map +1 -1
  269. package/lib/esm/SchemaLoader.d.ts +3 -3
  270. package/lib/esm/SchemaLoader.js +5 -5
  271. package/lib/esm/SchemaLoader.js.map +1 -1
  272. package/lib/esm/SchemaPartVisitorDelegate.d.ts +2 -2
  273. package/lib/esm/SchemaPartVisitorDelegate.js +1 -1
  274. package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
  275. package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
  276. package/lib/esm/ecschema-metadata.d.ts +2 -1
  277. package/lib/esm/ecschema-metadata.d.ts.map +1 -1
  278. package/lib/esm/ecschema-metadata.js +1 -0
  279. package/lib/esm/ecschema-metadata.js.map +1 -1
  280. package/lib/esm/utils/SchemaGraph.js +4 -4
  281. package/lib/esm/utils/SchemaGraph.js.map +1 -1
  282. package/package.json +8 -6
@@ -9,7 +9,7 @@ import { assert } from "@itwin/core-bentley";
9
9
  import { DelayedPromiseWithProps } from "../DelayedPromise";
10
10
  import { XmlSerializationUtils } from "../Deserialization/XmlSerializationUtils";
11
11
  import { AbstractSchemaItemType, classModifierToString, ECClassModifier, parseClassModifier, parsePrimitiveType, PrimitiveType, SchemaItemType } from "../ECObjects";
12
- import { ECObjectsError, ECObjectsStatus } from "../Exception";
12
+ import { ECSchemaError, ECSchemaStatus } from "../Exception";
13
13
  import { SchemaItemKey, SchemaKey } from "../SchemaKey";
14
14
  import { serializeCustomAttributes } from "./CustomAttribute";
15
15
  import { Enumeration } from "./Enumeration";
@@ -18,9 +18,10 @@ import { SchemaItem } from "./SchemaItem";
18
18
  import { SchemaReadHelper } from "../Deserialization/Helper";
19
19
  /**
20
20
  * A common abstract class for all of the ECClass types.
21
- * @beta
21
+ * @public @preview
22
22
  */
23
23
  export class ECClass extends SchemaItem {
24
+ /** @internal */
24
25
  static get schemaItemType() { return AbstractSchemaItemType.Class; } // need this so getItem("name", ECClass) in schema works
25
26
  _modifier;
26
27
  _baseClass;
@@ -30,6 +31,7 @@ export class ECClass extends SchemaItem {
30
31
  _mergedPropertyCache;
31
32
  get modifier() { return this._modifier; }
32
33
  get customAttributes() { return this._customAttributes; }
34
+ /** @internal */
33
35
  constructor(schema, name, modifier) {
34
36
  super(schema, name);
35
37
  if (modifier)
@@ -43,8 +45,16 @@ export class ECClass extends SchemaItem {
43
45
  get baseClass() {
44
46
  return this._baseClass;
45
47
  }
48
+ getBaseClassSync() {
49
+ if (!this.baseClass) {
50
+ return undefined;
51
+ }
52
+ return this.schema.lookupItemSync(this.baseClass, ECClass);
53
+ }
46
54
  /**
47
55
  * Sets the base class of the ECClass. Pass undefined to 'remove' the base class.
56
+ *
57
+ * @internal
48
58
  */
49
59
  async setBaseClass(baseClass) {
50
60
  const oldBaseClass = this._baseClass;
@@ -67,6 +77,8 @@ export class ECClass extends SchemaItem {
67
77
  * Convenience method for adding an already loaded ECProperty used by create*Property methods.
68
78
  * @param prop The property to add.
69
79
  * @return The property that was added.
80
+ *
81
+ * @internal
70
82
  */
71
83
  addProperty(prop) {
72
84
  if (!this._properties)
@@ -78,7 +90,7 @@ export class ECClass extends SchemaItem {
78
90
  /**
79
91
  * Deletes a property from within this class.
80
92
  * @param name The property name to delete, lookup is case-insensitive
81
- * @alpha
93
+ * @internal
82
94
  */
83
95
  async deleteProperty(name) {
84
96
  if (this._properties) {
@@ -92,7 +104,7 @@ export class ECClass extends SchemaItem {
92
104
  /**
93
105
  * Deletes a property from within this class.
94
106
  * @param name The property name to delete, lookup is case-insensitive
95
- * @alpha
107
+ * @internal
96
108
  */
97
109
  deletePropertySync(name) {
98
110
  if (this._properties) {
@@ -103,40 +115,37 @@ export class ECClass extends SchemaItem {
103
115
  }
104
116
  }
105
117
  }
106
- getBaseClassSync() {
107
- if (!this.baseClass) {
108
- return undefined;
109
- }
110
- return this.schema.lookupItemSync(this.baseClass, ECClass);
111
- }
112
118
  /**
113
- * Searches, case-insensitive, for a local ECProperty with the name provided.
114
- * @param name
119
+ * Searches, case-insensitive, for an ECProperty with given the name on this class and, by default, on
120
+ * all base classes. Set excludeInherited to 'true' to only search the local class.
121
+ * @param name The name of the property to retrieve.
122
+ * @param excludeInherited If true, excludes inherited properties from the results. Defaults to false.
115
123
  */
116
- async getProperty(name, includeInherited = false) {
124
+ async getProperty(name, excludeInherited = false) {
117
125
  if (this._properties) {
118
126
  const upperKey = name.toUpperCase();
119
127
  const property = this._properties.get(upperKey);
120
128
  if (property)
121
129
  return property;
122
130
  }
123
- if (!includeInherited) {
131
+ if (excludeInherited) {
124
132
  return undefined;
125
133
  }
126
134
  return this.getInheritedProperty(name);
127
135
  }
128
136
  /**
129
137
  * Searches, case-insensitive, for a local ECProperty with the name provided.
130
- * @param name
138
+ * @param name The name of the property to retrieve.
139
+ * @param excludeInherited If true, excludes inherited properties from the results. Defaults to false.
131
140
  */
132
- getPropertySync(name, includeInherited = false) {
141
+ getPropertySync(name, excludeInherited = false) {
133
142
  if (this._properties) {
134
143
  const upperKey = name.toUpperCase();
135
144
  const property = this._properties.get(upperKey);
136
145
  if (property)
137
146
  return property;
138
147
  }
139
- if (!includeInherited) {
148
+ if (excludeInherited) {
140
149
  return undefined;
141
150
  }
142
151
  return this.getInheritedPropertySync(name);
@@ -148,7 +157,7 @@ export class ECClass extends SchemaItem {
148
157
  async getInheritedProperty(name) {
149
158
  if (this.baseClass) {
150
159
  const baseClassObj = await this.baseClass;
151
- return baseClassObj.getProperty(name, true);
160
+ return baseClassObj.getProperty(name);
152
161
  }
153
162
  return undefined;
154
163
  }
@@ -159,36 +168,36 @@ export class ECClass extends SchemaItem {
159
168
  getInheritedPropertySync(name) {
160
169
  const baseClassObj = this.getBaseClassSync();
161
170
  if (baseClassObj)
162
- return baseClassObj.getPropertySync(name, true);
171
+ return baseClassObj.getPropertySync(name);
163
172
  return undefined;
164
173
  }
165
174
  async createPrimitiveProperty(name, primitiveType) {
166
- if (await this.getProperty(name))
167
- throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
175
+ if (await this.getProperty(name, true))
176
+ throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
168
177
  const propType = await this.loadPrimitiveType(primitiveType, this.schema);
169
178
  if (typeof (propType) === "number")
170
179
  return this.addProperty(new PrimitiveProperty(this, name, propType));
171
180
  return this.addProperty(new EnumerationProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));
172
181
  }
173
182
  createPrimitivePropertySync(name, primitiveType) {
174
- if (this.getPropertySync(name))
175
- throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
183
+ if (this.getPropertySync(name, true))
184
+ throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
176
185
  const propType = this.loadPrimitiveTypeSync(primitiveType, this.schema);
177
186
  if (typeof (propType) === "number")
178
187
  return this.addProperty(new PrimitiveProperty(this, name, propType));
179
188
  return this.addProperty(new EnumerationProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));
180
189
  }
181
190
  async createPrimitiveArrayProperty(name, primitiveType) {
182
- if (await this.getProperty(name))
183
- throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
191
+ if (await this.getProperty(name, true))
192
+ throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
184
193
  const propType = await this.loadPrimitiveType(primitiveType, this.schema);
185
194
  if (typeof (propType) === "number")
186
195
  return this.addProperty(new PrimitiveArrayProperty(this, name, propType));
187
196
  return this.addProperty(new EnumerationArrayProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));
188
197
  }
189
198
  createPrimitiveArrayPropertySync(name, primitiveType) {
190
- if (this.getPropertySync(name))
191
- throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
199
+ if (this.getPropertySync(name, true))
200
+ throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
192
201
  const propType = this.loadPrimitiveTypeSync(primitiveType, this.schema);
193
202
  if (typeof (propType) === "number")
194
203
  return this.addProperty(new PrimitiveArrayProperty(this, name, propType));
@@ -198,42 +207,58 @@ export class ECClass extends SchemaItem {
198
207
  *
199
208
  * @param name The name of property to create.
200
209
  * @param structType The struct type of property to create.
210
+ *
211
+ * @internal
201
212
  */
202
213
  async createStructProperty(name, structType) {
203
- if (await this.getProperty(name))
204
- throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
214
+ if (await this.getProperty(name, true))
215
+ throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
205
216
  return this.addProperty(new StructProperty(this, name, await this.loadStructType(structType, this.schema)));
206
217
  }
207
218
  /**
208
219
  *
209
220
  * @param name The name of property to create.
210
221
  * @param structType The struct type of property to create.
222
+ *
223
+ * @internal
211
224
  */
212
225
  createStructPropertySync(name, structType) {
213
- if (this.getPropertySync(name))
214
- throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
226
+ if (this.getPropertySync(name, true))
227
+ throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
215
228
  return this.addProperty(new StructProperty(this, name, this.loadStructTypeSync(structType, this.schema)));
216
229
  }
217
230
  /**
218
231
  *
219
232
  * @param name
220
233
  * @param type
234
+ *
235
+ * @internal
221
236
  */
222
237
  async createStructArrayProperty(name, structType) {
223
- if (await this.getProperty(name))
224
- throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
238
+ if (await this.getProperty(name, true))
239
+ throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
225
240
  return this.addProperty(new StructArrayProperty(this, name, await this.loadStructType(structType, this.schema)));
226
241
  }
227
242
  /**
228
243
  *
229
244
  * @param name
230
245
  * @param type
246
+ *
247
+ * @internal
231
248
  */
232
249
  createStructArrayPropertySync(name, structType) {
233
- if (this.getPropertySync(name))
234
- throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
250
+ if (this.getPropertySync(name, true))
251
+ throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
235
252
  return this.addProperty(new StructArrayProperty(this, name, this.loadStructTypeSync(structType, this.schema)));
236
253
  }
254
+ /**
255
+ *
256
+ * @param structType
257
+ * @param schema
258
+ * @returns
259
+ *
260
+ * @internal
261
+ */
237
262
  async loadStructType(structType, schema) {
238
263
  let correctType;
239
264
  if (typeof (structType) === "string") {
@@ -242,9 +267,17 @@ export class ECClass extends SchemaItem {
242
267
  else
243
268
  correctType = structType;
244
269
  if (!correctType)
245
- throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);
270
+ throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);
246
271
  return correctType;
247
272
  }
273
+ /**
274
+ *
275
+ * @param structType
276
+ * @param schema
277
+ * @returns
278
+ *
279
+ * @internal
280
+ */
248
281
  loadStructTypeSync(structType, schema) {
249
282
  let correctType;
250
283
  if (typeof (structType) === "string") {
@@ -253,9 +286,17 @@ export class ECClass extends SchemaItem {
253
286
  else
254
287
  correctType = structType;
255
288
  if (!correctType)
256
- throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);
289
+ throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);
257
290
  return correctType;
258
291
  }
292
+ /**
293
+ *
294
+ * @param primitiveType
295
+ * @param schema
296
+ * @returns
297
+ *
298
+ * @internal
299
+ */
259
300
  async loadPrimitiveType(primitiveType, schema) {
260
301
  if (primitiveType === undefined)
261
302
  return PrimitiveType.Integer;
@@ -265,14 +306,22 @@ export class ECClass extends SchemaItem {
265
306
  resolvedType = await schema.lookupItem(primitiveType, Enumeration);
266
307
  }
267
308
  if (resolvedType === undefined)
268
- throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
309
+ throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
269
310
  // If resolvedType is a SchemaItem, make sure it is an Enumeration- if not, throw an error
270
311
  if (typeof (resolvedType) !== "number" && resolvedType.schemaItemType !== SchemaItemType.Enumeration)
271
- throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
312
+ throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
272
313
  return resolvedType;
273
314
  }
274
315
  return primitiveType;
275
316
  }
317
+ /**
318
+ *
319
+ * @param primitiveType
320
+ * @param schema
321
+ * @returns
322
+ *
323
+ * @internal
324
+ */
276
325
  loadPrimitiveTypeSync(primitiveType, schema) {
277
326
  if (primitiveType === undefined)
278
327
  return PrimitiveType.Integer;
@@ -282,7 +331,7 @@ export class ECClass extends SchemaItem {
282
331
  resolvedType = schema.lookupItemSync(primitiveType, Enumeration);
283
332
  }
284
333
  if (resolvedType === undefined)
285
- throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
334
+ throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
286
335
  return resolvedType;
287
336
  }
288
337
  return primitiveType;
@@ -343,7 +392,7 @@ export class ECClass extends SchemaItem {
343
392
  if (SchemaReadHelper.isECSpecVersionNewer({ readVersion: classProps.originalECSpecMajorVersion, writeVersion: classProps.originalECSpecMinorVersion }))
344
393
  this._modifier = ECClassModifier.None;
345
394
  else
346
- throw new ECObjectsError(ECObjectsStatus.InvalidModifier, `The string '${classProps.modifier}' is not a valid ECClassModifier.`);
395
+ throw new ECSchemaError(ECSchemaStatus.InvalidModifier, `The string '${classProps.modifier}' is not a valid ECClassModifier.`);
347
396
  }
348
397
  else {
349
398
  this._modifier = modifier;
@@ -352,14 +401,14 @@ export class ECClass extends SchemaItem {
352
401
  if (undefined !== classProps.baseClass) {
353
402
  const ecClassSchemaItemKey = this.schema.getSchemaItemKey(classProps.baseClass);
354
403
  if (!ecClassSchemaItemKey)
355
- throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);
404
+ throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);
356
405
  const baseClass = this.schema.lookupItemSync(ecClassSchemaItemKey);
357
406
  let lazyBase;
358
407
  if (!baseClass) {
359
408
  lazyBase = new DelayedPromiseWithProps(ecClassSchemaItemKey, async () => {
360
409
  const baseItem = await this.schema.lookupItem(ecClassSchemaItemKey);
361
410
  if (undefined === baseItem || !ECClass.isECClass(baseItem))
362
- throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);
411
+ throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);
363
412
  return baseItem;
364
413
  });
365
414
  }
@@ -377,6 +426,12 @@ export class ECClass extends SchemaItem {
377
426
  async fromJSON(classProps) {
378
427
  this.fromJSONSync(classProps);
379
428
  }
429
+ /**
430
+ *
431
+ * @param customAttribute
432
+ *
433
+ * @internal
434
+ */
380
435
  addCustomAttribute(customAttribute) {
381
436
  if (!this._customAttributes)
382
437
  this._customAttributes = new Map();
@@ -423,6 +478,15 @@ export class ECClass extends SchemaItem {
423
478
  yield baseClass;
424
479
  }
425
480
  }
481
+ /**
482
+ *
483
+ * @param target
484
+ * @param existingValues
485
+ * @param propertiesToMerge
486
+ * @param overwriteExisting
487
+ *
488
+ * @internal
489
+ */
426
490
  static mergeProperties(target, existingValues, propertiesToMerge, overwriteExisting) {
427
491
  for (const property of propertiesToMerge) {
428
492
  const upperCaseName = property.name.toUpperCase();
@@ -438,6 +502,14 @@ export class ECClass extends SchemaItem {
438
502
  }
439
503
  }
440
504
  }
505
+ /**
506
+ *
507
+ * @param result
508
+ * @param existingValues
509
+ * @returns
510
+ *
511
+ * @internal
512
+ */
441
513
  async buildPropertyCache(result, existingValues) {
442
514
  if (!existingValues) {
443
515
  existingValues = new Map();
@@ -452,6 +524,14 @@ export class ECClass extends SchemaItem {
452
524
  return;
453
525
  ECClass.mergeProperties(result, existingValues, [...this._properties.values()], true);
454
526
  }
527
+ /**
528
+ *
529
+ * @param result
530
+ * @param existingValues
531
+ * @returns
532
+ *
533
+ * @internal
534
+ */
455
535
  buildPropertyCacheSync(result, existingValues) {
456
536
  if (!existingValues) {
457
537
  existingValues = new Map();
@@ -594,9 +674,9 @@ export class ECClass extends SchemaItem {
594
674
  object.schemaItemType === SchemaItemType.StructClass || object.schemaItemType === SchemaItemType.CustomAttributeClass;
595
675
  }
596
676
  /**
597
- * @alpha
598
677
  * A setter method for the ECClass modifier, used specifically for schema editing.
599
678
  * @param modifier
679
+ * @internal
600
680
  */
601
681
  setModifier(modifier) {
602
682
  this._modifier = modifier;
@@ -633,17 +713,16 @@ export class ECClass extends SchemaItem {
633
713
  }
634
714
  /**
635
715
  * A Typescript class representation of an ECStructClass.
636
- * @beta
716
+ * @public @preview
637
717
  */
638
718
  export class StructClass extends ECClass {
639
719
  /**
640
720
  * Get the type of item represented by this instance
641
- * @beta
642
721
  */
643
722
  schemaItemType = StructClass.schemaItemType;
644
723
  /**
645
724
  * Get the type of item represented by this class
646
- * @beta
725
+ * @internal
647
726
  */
648
727
  static get schemaItemType() { return SchemaItemType.StructClass; }
649
728
  /**
@@ -660,10 +739,11 @@ export class StructClass extends ECClass {
660
739
  * Type assertion to check if the SchemaItem is of type StructClass.
661
740
  * @param item The SchemaItem to check.
662
741
  * @returns The item cast to StructClass if it is a StructClass, undefined otherwise.
742
+ * @internal
663
743
  */
664
744
  static assertIsStructClass(item) {
665
745
  if (!this.isStructClass(item))
666
- throw new ECObjectsError(ECObjectsStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.StructClass}' (StructClass)`);
746
+ throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.StructClass}' (StructClass)`);
667
747
  }
668
748
  }
669
749
  /**