@itwin/ecschema-metadata 5.1.0-dev.9 → 5.1.0

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 (268) hide show
  1. package/CHANGELOG.md +88 -1
  2. package/lib/cjs/Constants.js.map +1 -1
  3. package/lib/cjs/Context.d.ts +1 -1
  4. package/lib/cjs/Context.js +1 -1
  5. package/lib/cjs/Context.js.map +1 -1
  6. package/lib/cjs/DelayedPromise.js.map +1 -1
  7. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  8. package/lib/cjs/Deserialization/Helper.d.ts +30 -11
  9. package/lib/cjs/Deserialization/Helper.d.ts.map +1 -1
  10. package/lib/cjs/Deserialization/Helper.js +124 -96
  11. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  12. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  13. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  14. package/lib/cjs/Deserialization/SchemaGraphUtil.d.ts +12 -3
  15. package/lib/cjs/Deserialization/SchemaGraphUtil.d.ts.map +1 -1
  16. package/lib/cjs/Deserialization/SchemaGraphUtil.js +36 -23
  17. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  18. package/lib/cjs/Deserialization/XmlParser.d.ts.map +1 -1
  19. package/lib/cjs/Deserialization/XmlParser.js +14 -5
  20. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  21. package/lib/cjs/Deserialization/XmlSerializationUtils.js +1 -1
  22. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  23. package/lib/cjs/ECName.js +1 -1
  24. package/lib/cjs/ECName.js.map +1 -1
  25. package/lib/cjs/ECObjects.d.ts +1 -1
  26. package/lib/cjs/ECObjects.js +2 -2
  27. package/lib/cjs/ECObjects.js.map +1 -1
  28. package/lib/cjs/Exception.js.map +1 -1
  29. package/lib/cjs/IncrementalLoading/ClassParsers.d.ts +60 -0
  30. package/lib/cjs/IncrementalLoading/ClassParsers.d.ts.map +1 -0
  31. package/lib/cjs/IncrementalLoading/ClassParsers.js +111 -0
  32. package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -0
  33. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts +211 -0
  34. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -0
  35. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js +387 -0
  36. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -0
  37. package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts +14 -0
  38. package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -0
  39. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +609 -0
  40. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -0
  41. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts +109 -0
  42. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -0
  43. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js +219 -0
  44. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -0
  45. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts +36 -0
  46. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -0
  47. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js +77 -0
  48. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -0
  49. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts +60 -0
  50. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts.map +1 -0
  51. package/lib/cjs/IncrementalLoading/PerformanceLogger.js +82 -0
  52. package/lib/cjs/IncrementalLoading/PerformanceLogger.js.map +1 -0
  53. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts +51 -0
  54. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -0
  55. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js +122 -0
  56. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -0
  57. package/lib/cjs/IncrementalLoading/SchemaItemQueries.d.ts +16 -0
  58. package/lib/cjs/IncrementalLoading/SchemaItemQueries.d.ts.map +1 -0
  59. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +308 -0
  60. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -0
  61. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts +42 -0
  62. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts.map +1 -0
  63. package/lib/cjs/IncrementalLoading/SchemaParser.js +109 -0
  64. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -0
  65. package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts +12 -0
  66. package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -0
  67. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +365 -0
  68. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -0
  69. package/lib/cjs/Interfaces.js.map +1 -1
  70. package/lib/cjs/Metadata/Class.d.ts +5 -16
  71. package/lib/cjs/Metadata/Class.d.ts.map +1 -1
  72. package/lib/cjs/Metadata/Class.js +68 -68
  73. package/lib/cjs/Metadata/Class.js.map +1 -1
  74. package/lib/cjs/Metadata/Constant.js.map +1 -1
  75. package/lib/cjs/Metadata/CustomAttribute.d.ts +7 -1
  76. package/lib/cjs/Metadata/CustomAttribute.d.ts.map +1 -1
  77. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  78. package/lib/cjs/Metadata/CustomAttributeClass.d.ts +1 -1
  79. package/lib/cjs/Metadata/CustomAttributeClass.js +1 -1
  80. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  81. package/lib/cjs/Metadata/EntityClass.d.ts +6 -6
  82. package/lib/cjs/Metadata/EntityClass.d.ts.map +1 -1
  83. package/lib/cjs/Metadata/EntityClass.js +48 -26
  84. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  85. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  86. package/lib/cjs/Metadata/Format.d.ts +5 -0
  87. package/lib/cjs/Metadata/Format.d.ts.map +1 -1
  88. package/lib/cjs/Metadata/Format.js +7 -0
  89. package/lib/cjs/Metadata/Format.js.map +1 -1
  90. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  91. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  92. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  93. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  94. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  95. package/lib/cjs/Metadata/Property.js.map +1 -1
  96. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  97. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  98. package/lib/cjs/Metadata/Schema.d.ts +10 -0
  99. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  100. package/lib/cjs/Metadata/Schema.js +13 -0
  101. package/lib/cjs/Metadata/Schema.js.map +1 -1
  102. package/lib/cjs/Metadata/SchemaItem.d.ts +10 -0
  103. package/lib/cjs/Metadata/SchemaItem.d.ts.map +1 -1
  104. package/lib/cjs/Metadata/SchemaItem.js +13 -0
  105. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  106. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  107. package/lib/cjs/PropertyTypes.js.map +1 -1
  108. package/lib/cjs/SchemaFormatsProvider.d.ts +4 -3
  109. package/lib/cjs/SchemaFormatsProvider.d.ts.map +1 -1
  110. package/lib/cjs/SchemaFormatsProvider.js +60 -17
  111. package/lib/cjs/SchemaFormatsProvider.js.map +1 -1
  112. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  113. package/lib/cjs/SchemaKey.js.map +1 -1
  114. package/lib/cjs/SchemaLoader.d.ts +4 -1
  115. package/lib/cjs/SchemaLoader.d.ts.map +1 -1
  116. package/lib/cjs/SchemaLoader.js +4 -1
  117. package/lib/cjs/SchemaLoader.js.map +1 -1
  118. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  119. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  120. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  121. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  122. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  123. package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
  124. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  125. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  126. package/lib/cjs/ecschema-metadata.d.ts +2 -0
  127. package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
  128. package/lib/cjs/ecschema-metadata.js +2 -0
  129. package/lib/cjs/ecschema-metadata.js.map +1 -1
  130. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  131. package/lib/cjs/utils/SchemaLoadingController.d.ts +37 -0
  132. package/lib/cjs/utils/SchemaLoadingController.d.ts.map +1 -0
  133. package/lib/cjs/utils/SchemaLoadingController.js +65 -0
  134. package/lib/cjs/utils/SchemaLoadingController.js.map +1 -0
  135. package/lib/esm/Constants.js.map +1 -1
  136. package/lib/esm/Context.d.ts +1 -1
  137. package/lib/esm/Context.js +1 -1
  138. package/lib/esm/Context.js.map +1 -1
  139. package/lib/esm/DelayedPromise.js.map +1 -1
  140. package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
  141. package/lib/esm/Deserialization/Helper.d.ts +30 -11
  142. package/lib/esm/Deserialization/Helper.d.ts.map +1 -1
  143. package/lib/esm/Deserialization/Helper.js +124 -96
  144. package/lib/esm/Deserialization/Helper.js.map +1 -1
  145. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  146. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  147. package/lib/esm/Deserialization/SchemaGraphUtil.d.ts +12 -3
  148. package/lib/esm/Deserialization/SchemaGraphUtil.d.ts.map +1 -1
  149. package/lib/esm/Deserialization/SchemaGraphUtil.js +36 -23
  150. package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
  151. package/lib/esm/Deserialization/XmlParser.d.ts.map +1 -1
  152. package/lib/esm/Deserialization/XmlParser.js +14 -5
  153. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  154. package/lib/esm/Deserialization/XmlSerializationUtils.js +1 -1
  155. package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
  156. package/lib/esm/ECName.js +1 -1
  157. package/lib/esm/ECName.js.map +1 -1
  158. package/lib/esm/ECObjects.d.ts +1 -1
  159. package/lib/esm/ECObjects.js +2 -2
  160. package/lib/esm/ECObjects.js.map +1 -1
  161. package/lib/esm/Exception.js.map +1 -1
  162. package/lib/esm/IncrementalLoading/ClassParsers.d.ts +60 -0
  163. package/lib/esm/IncrementalLoading/ClassParsers.d.ts.map +1 -0
  164. package/lib/esm/IncrementalLoading/ClassParsers.js +104 -0
  165. package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -0
  166. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts +211 -0
  167. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -0
  168. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js +383 -0
  169. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -0
  170. package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts +14 -0
  171. package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -0
  172. package/lib/esm/IncrementalLoading/FullSchemaQueries.js +606 -0
  173. package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -0
  174. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts +109 -0
  175. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -0
  176. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js +215 -0
  177. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -0
  178. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts +36 -0
  179. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -0
  180. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js +73 -0
  181. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -0
  182. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts +60 -0
  183. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts.map +1 -0
  184. package/lib/esm/IncrementalLoading/PerformanceLogger.js +78 -0
  185. package/lib/esm/IncrementalLoading/PerformanceLogger.js.map +1 -0
  186. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts +51 -0
  187. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -0
  188. package/lib/esm/IncrementalLoading/SchemaItemParsers.js +117 -0
  189. package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -0
  190. package/lib/esm/IncrementalLoading/SchemaItemQueries.d.ts +16 -0
  191. package/lib/esm/IncrementalLoading/SchemaItemQueries.d.ts.map +1 -0
  192. package/lib/esm/IncrementalLoading/SchemaItemQueries.js +305 -0
  193. package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -0
  194. package/lib/esm/IncrementalLoading/SchemaParser.d.ts +42 -0
  195. package/lib/esm/IncrementalLoading/SchemaParser.d.ts.map +1 -0
  196. package/lib/esm/IncrementalLoading/SchemaParser.js +104 -0
  197. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -0
  198. package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts +12 -0
  199. package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -0
  200. package/lib/esm/IncrementalLoading/SchemaStubQueries.js +359 -0
  201. package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -0
  202. package/lib/esm/Interfaces.js.map +1 -1
  203. package/lib/esm/Metadata/Class.d.ts +5 -16
  204. package/lib/esm/Metadata/Class.d.ts.map +1 -1
  205. package/lib/esm/Metadata/Class.js +68 -68
  206. package/lib/esm/Metadata/Class.js.map +1 -1
  207. package/lib/esm/Metadata/Constant.js.map +1 -1
  208. package/lib/esm/Metadata/CustomAttribute.d.ts +7 -1
  209. package/lib/esm/Metadata/CustomAttribute.d.ts.map +1 -1
  210. package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
  211. package/lib/esm/Metadata/CustomAttributeClass.d.ts +1 -1
  212. package/lib/esm/Metadata/CustomAttributeClass.js +1 -1
  213. package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
  214. package/lib/esm/Metadata/EntityClass.d.ts +6 -6
  215. package/lib/esm/Metadata/EntityClass.d.ts.map +1 -1
  216. package/lib/esm/Metadata/EntityClass.js +48 -26
  217. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  218. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  219. package/lib/esm/Metadata/Format.d.ts +5 -0
  220. package/lib/esm/Metadata/Format.d.ts.map +1 -1
  221. package/lib/esm/Metadata/Format.js +7 -0
  222. package/lib/esm/Metadata/Format.js.map +1 -1
  223. package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
  224. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  225. package/lib/esm/Metadata/Mixin.js.map +1 -1
  226. package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
  227. package/lib/esm/Metadata/Phenomenon.js.map +1 -1
  228. package/lib/esm/Metadata/Property.js.map +1 -1
  229. package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
  230. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  231. package/lib/esm/Metadata/Schema.d.ts +10 -0
  232. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  233. package/lib/esm/Metadata/Schema.js +13 -0
  234. package/lib/esm/Metadata/Schema.js.map +1 -1
  235. package/lib/esm/Metadata/SchemaItem.d.ts +10 -0
  236. package/lib/esm/Metadata/SchemaItem.d.ts.map +1 -1
  237. package/lib/esm/Metadata/SchemaItem.js +13 -0
  238. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  239. package/lib/esm/Metadata/UnitSystem.js.map +1 -1
  240. package/lib/esm/PropertyTypes.js.map +1 -1
  241. package/lib/esm/SchemaFormatsProvider.d.ts +4 -3
  242. package/lib/esm/SchemaFormatsProvider.d.ts.map +1 -1
  243. package/lib/esm/SchemaFormatsProvider.js +61 -18
  244. package/lib/esm/SchemaFormatsProvider.js.map +1 -1
  245. package/lib/esm/SchemaJsonLocater.js.map +1 -1
  246. package/lib/esm/SchemaKey.js.map +1 -1
  247. package/lib/esm/SchemaLoader.d.ts +4 -1
  248. package/lib/esm/SchemaLoader.d.ts.map +1 -1
  249. package/lib/esm/SchemaLoader.js +4 -1
  250. package/lib/esm/SchemaLoader.js.map +1 -1
  251. package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
  252. package/lib/esm/UnitConversion/Graph.js.map +1 -1
  253. package/lib/esm/UnitConversion/Parser.js.map +1 -1
  254. package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
  255. package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
  256. package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
  257. package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
  258. package/lib/esm/Validation/SchemaWalker.js.map +1 -1
  259. package/lib/esm/ecschema-metadata.d.ts +2 -0
  260. package/lib/esm/ecschema-metadata.d.ts.map +1 -1
  261. package/lib/esm/ecschema-metadata.js +2 -0
  262. package/lib/esm/ecschema-metadata.js.map +1 -1
  263. package/lib/esm/utils/SchemaGraph.js.map +1 -1
  264. package/lib/esm/utils/SchemaLoadingController.d.ts +37 -0
  265. package/lib/esm/utils/SchemaLoadingController.d.ts.map +1 -0
  266. package/lib/esm/utils/SchemaLoadingController.js +61 -0
  267. package/lib/esm/utils/SchemaLoadingController.js.map +1 -0
  268. package/package.json +15 -10
@@ -1 +1 @@
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 { ECSchemaError, ECSchemaStatus } 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 * @public @preview\n */\nexport abstract class Property implements CustomAttributeContainerProps {\n private _name: ECName;\n private _class: AnyClass; // TODO: class seems to be unused?\n private _description?: string;\n private _label?: string;\n private _isReadOnly?: boolean;\n private _priority?: number;\n private _category?: LazyLoadedPropertyCategory;\n private _kindOfQuantity?: LazyLoadedKindOfQuantity;\n private _customAttributes?: Map<string, CustomAttribute>;\n\n /** @internal */\n protected _type: PropertyType;\n\n /** @internal */\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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 /** @internal */\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 /** @internal */\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\n\n/** @public @preview */\nexport abstract class PrimitiveOrEnumPropertyBase extends Property {\n /** @internal */\n protected _extendedTypeName?: string;\n /** @internal */\n protected _minLength?: number;\n /** @internal */\n protected _maxLength?: number;\n /** @internal */\n protected _minValue?: number;\n /** @internal */\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 /** @internal */\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/** @public @preview */\nexport class PrimitiveProperty extends PrimitiveOrEnumPropertyBase {\n public get primitiveType(): PrimitiveType { return PropertyTypeUtils.getPrimitiveType(this.propertyType); }\n\n /** @internal */\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 ECSchemaError(ECSchemaStatus.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/** @public @preview */\nexport class EnumerationProperty extends PrimitiveOrEnumPropertyBase {\n /** @internal */\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 /** @internal */\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 ECSchemaError(ECSchemaStatus.InvalidECJson, ``);\n const enumSchemaItemKey = this.class.schema.getSchemaItemKey(this.enumeration!.fullName);\n if (!enumSchemaItemKey)\n throw new ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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/** @public @preview */\nexport class StructProperty extends Property {\n /** @internal */\n protected _structClass: StructClass;\n\n public get structClass(): StructClass { return this._structClass; }\n\n /** @internal */\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 ECSchemaError(ECSchemaStatus.InvalidECJson, ``);\n }\n }\n\n public override async fromJSON(structPropertyProps: StructPropertyProps) {\n this.fromJSONSync(structPropertyProps);\n }\n}\n\n/** @public @preview */\nexport class NavigationProperty extends Property {\n /** @internal */\n protected _relationshipClass: LazyLoadedRelationshipClass;\n /** @internal */\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 /** @internal */\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/** @public @preview */\nexport abstract class ArrayProperty extends Property {\n /** @internal */\n protected _minOccurs: number = 0;\n /** @internal */\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 /** @internal */\n protected _minOccurs: number = 0;\n /** @internal */\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.propertyType);\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/** @public @preview */\nexport class PrimitiveArrayProperty extends ArrayPropertyMixin(PrimitiveProperty) {\n /** @internal */\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/** @public @preview */\nexport class EnumerationArrayProperty extends ArrayPropertyMixin(EnumerationProperty) {\n constructor(ecClass: ECClass, name: string, type: LazyLoadedEnumeration) {\n super(ecClass, name, type);\n }\n}\n\n/** @public @preview */\nexport class StructArrayProperty extends ArrayPropertyMixin(StructProperty) {\n /** @internal */\n constructor(ecClass: ECClass, name: string, type: StructClass) {\n super(ecClass, name, type);\n }\n}\n\n/** @public @preview */\nexport type AnyArrayProperty = PrimitiveArrayProperty | EnumerationArrayProperty | StructArrayProperty;\n/** @public @preview */\nexport type AnyPrimitiveProperty = PrimitiveProperty | PrimitiveArrayProperty;\n/** @public @preview */\nexport type AnyEnumerationProperty = EnumerationProperty | EnumerationArrayProperty;\n/** @public @preview */\nexport type AnyStructProperty = StructProperty | StructArrayProperty;\n/** @public @preview */\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"]}
1
+ {"version":3,"file":"Property.js","sourceRoot":"","sources":["../../../src/Metadata/Property.ts"],"names":[],"mappings":"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","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, SchemaItemType, StrengthDirection, strengthDirectionToString } from \"../ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } 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 { type RelationshipClass } from \"./RelationshipClass\";\r\nimport { Schema } from \"./Schema\";\r\n\r\n/**\r\n * A common abstract class for all ECProperty types.\r\n * @public @preview\r\n */\r\nexport abstract class Property implements CustomAttributeContainerProps {\r\n private _name: ECName;\r\n private _class: AnyClass; // TODO: class seems to be unused?\r\n private _description?: string;\r\n private _label?: string;\r\n private _isReadOnly?: boolean;\r\n private _priority?: number;\r\n private _category?: LazyLoadedPropertyCategory;\r\n private _kindOfQuantity?: LazyLoadedKindOfQuantity;\r\n private _customAttributes?: Map<string, CustomAttribute>;\r\n\r\n /** @internal */\r\n protected _type: PropertyType;\r\n\r\n /** @internal */\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(): number {\r\n if (this._priority === undefined) {\r\n const baseProperty = this.class.getInheritedPropertySync(this.name);\r\n if (undefined !== baseProperty) {\r\n return baseProperty.priority;\r\n }\r\n }\r\n\r\n return this._priority || 0;\r\n }\r\n\r\n public get category(): LazyLoadedPropertyCategory | undefined {\r\n if (this._category === undefined) {\r\n const baseProperty = this.class.getInheritedPropertySync(this.name);\r\n if (undefined !== baseProperty) {\r\n return baseProperty.category;\r\n }\r\n }\r\n\r\n return this._category;\r\n }\r\n\r\n public get kindOfQuantity(): LazyLoadedKindOfQuantity | undefined {\r\n if (this._kindOfQuantity === undefined) {\r\n const baseProperty = this.class.getInheritedPropertySync(this.name);\r\n if (undefined !== baseProperty) {\r\n return baseProperty.kindOfQuantity;\r\n }\r\n }\r\n\r\n return this._kindOfQuantity;\r\n }\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 const baseProperty = this.class.getInheritedPropertySync(this.name);\r\n if (undefined !== baseProperty) {\r\n return baseProperty.getCategorySync();\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n return this.class.schema.lookupItemSync(this._category, PropertyCategory);\r\n }\r\n\r\n public getKindOfQuantitySync(): KindOfQuantity | undefined {\r\n if (!this._kindOfQuantity) {\r\n const baseProperty = this.class.getInheritedPropertySync(this.name);\r\n if (undefined !== baseProperty) {\r\n return baseProperty.getKindOfQuantitySync();\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n return this.class.schema.lookupItemSync(this._kindOfQuantity, 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 ECSchemaError(ECSchemaStatus.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(propertyCategorySchemaItemKey, PropertyCategory);\r\n if (undefined === category)\r\n throw new ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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(koqSchemaItemKey, KindOfQuantity);\r\n if (undefined === koq)\r\n throw new ECSchemaError(ECSchemaStatus.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 /** @internal */\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 /** @internal */\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\r\n\r\n/** @public @preview */\r\nexport abstract class PrimitiveOrEnumPropertyBase extends Property {\r\n /** @internal */\r\n protected _extendedTypeName?: string;\r\n /** @internal */\r\n protected _minLength?: number;\r\n /** @internal */\r\n protected _maxLength?: number;\r\n /** @internal */\r\n protected _minValue?: number;\r\n /** @internal */\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 /** @internal */\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/** @public @preview */\r\nexport class PrimitiveProperty extends PrimitiveOrEnumPropertyBase {\r\n public get primitiveType(): PrimitiveType { return PropertyTypeUtils.getPrimitiveType(this.propertyType); }\r\n\r\n /** @internal */\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 ECSchemaError(ECSchemaStatus.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/** @public @preview */\r\nexport class EnumerationProperty extends PrimitiveOrEnumPropertyBase {\r\n /** @internal */\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 /** @internal */\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 ECSchemaError(ECSchemaStatus.InvalidECJson, ``);\r\n const enumSchemaItemKey = this.class.schema.getSchemaItemKey(this.enumeration!.fullName);\r\n if (!enumSchemaItemKey)\r\n throw new ECSchemaError(ECSchemaStatus.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(enumSchemaItemKey, Enumeration);\r\n if (undefined === enumeration)\r\n throw new ECSchemaError(ECSchemaStatus.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/** @public @preview */\r\nexport class StructProperty extends Property {\r\n /** @internal */\r\n protected _structClass: StructClass;\r\n\r\n public get structClass(): StructClass { return this._structClass; }\r\n\r\n /** @internal */\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 ECSchemaError(ECSchemaStatus.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/** @public @preview */\r\nexport class NavigationProperty extends Property {\r\n /** @internal */\r\n protected _relationshipClass: LazyLoadedRelationshipClass;\r\n /** @internal */\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 // We cannot use the type guard here to avoid a circular dependency\r\n const result = this.class.schema.lookupItemSync(this._relationshipClass);\r\n return result?.schemaItemType === SchemaItemType.RelationshipClass ? result as RelationshipClass : undefined\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 /** @internal */\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/** @public @preview */\r\nexport abstract class ArrayProperty extends Property {\r\n /** @internal */\r\n protected _minOccurs: number = 0;\r\n /** @internal */\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 /** @internal */\r\n protected _minOccurs: number = 0;\r\n /** @internal */\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.propertyType);\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/** @public @preview */\r\nexport class PrimitiveArrayProperty extends ArrayPropertyMixin(PrimitiveProperty) {\r\n /** @internal */\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/** @public @preview */\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/** @public @preview */\r\nexport class StructArrayProperty extends ArrayPropertyMixin(StructProperty) {\r\n /** @internal */\r\n constructor(ecClass: ECClass, name: string, type: StructClass) {\r\n super(ecClass, name, type);\r\n }\r\n}\r\n\r\n/** @public @preview */\r\nexport type AnyArrayProperty = PrimitiveArrayProperty | EnumerationArrayProperty | StructArrayProperty;\r\n/** @public @preview */\r\nexport type AnyPrimitiveProperty = PrimitiveProperty | PrimitiveArrayProperty;\r\n/** @public @preview */\r\nexport type AnyEnumerationProperty = EnumerationProperty | EnumerationArrayProperty;\r\n/** @public @preview */\r\nexport type AnyStructProperty = StructProperty | StructArrayProperty;\r\n/** @public @preview */\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 +1 @@
1
- {"version":3,"file":"PropertyCategory.js","sourceRoot":"","sources":["../../../src/Metadata/PropertyCategory.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,4CAA8C;AAC9C,4CAA6D;AAE7D,6CAA0C;AAE1C;;GAEG;AACH,MAAa,gBAAiB,SAAQ,uBAAU;IACrB,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;IAC1E,gBAAgB;IACT,MAAM,KAAc,cAAc,KAAK,OAAO,0BAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC/E,SAAS,CAAS;IAE1B,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,gBAAgB;IAChB,YAAY,MAAc,EAAE,IAAY;QACtC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;;;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,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpC,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,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,YAAY,CAAC,qBAA4C;QACvE,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC;IAClD,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,qBAA4C;QACzE,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;IACD;;;OAGG;IACO,WAAW,CAAC,QAAgB;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAAC,IAAiB;QAChD,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,0BAAc,CAAC,gBAAgB;YACjE,OAAO,IAAI,CAAC;QAEd,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,wBAAwB,CAAC,IAAiB;QACtD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAChC,MAAM,IAAI,yBAAa,CAAC,0BAAc,CAAC,qBAAqB,EAAE,aAAa,0BAAc,CAAC,gBAAgB,sBAAsB,CAAC,CAAC;IACtI,CAAC;CACF;AAxED,4CAwEC;AAED;;;GAGG;AACH,MAAsB,uBAAwB,SAAQ,gBAAgB;CAGrE;AAHD,0DAGC","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 { PropertyCategoryProps } from \"../Deserialization/JsonProps\";\nimport { SchemaItemType } from \"../ECObjects\";\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\nimport { Schema } from \"./Schema\";\nimport { SchemaItem } from \"./SchemaItem\";\n\n/**\n * @public @preview\n */\nexport class PropertyCategory extends SchemaItem {\n public override readonly schemaItemType = PropertyCategory.schemaItemType;\n /** @internal */\n public static override get schemaItemType() { return SchemaItemType.PropertyCategory; }\n private _priority: number;\n\n public get priority() {\n return this._priority;\n }\n\n /** @internal */\n constructor(schema: Schema, name: string) {\n super(schema, name);\n this._priority = 0;\n }\n\n /**\n * Save this PropertyCategory'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): PropertyCategoryProps {\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\n schemaJson.priority = this.priority;\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(\"priority\", this.priority.toString());\n return itemElement;\n }\n\n public override fromJSONSync(propertyCategoryProps: PropertyCategoryProps) {\n super.fromJSONSync(propertyCategoryProps);\n this._priority = propertyCategoryProps.priority;\n }\n\n public override async fromJSON(propertyCategoryProps: PropertyCategoryProps) {\n this.fromJSONSync(propertyCategoryProps);\n }\n /**\n * Used for schema editing.\n * @internal\n */\n protected setPriority(priority: number) {\n this._priority = priority;\n }\n\n /**\n * Type guard to check if the SchemaItem is of type PropertyCategory.\n * @param item The SchemaItem to check.\n * @returns True if the item is a PropertyCategory, false otherwise.\n */\n public static isPropertyCategory(item?: SchemaItem): item is PropertyCategory {\n if (item && item.schemaItemType === SchemaItemType.PropertyCategory)\n return true;\n\n return false;\n }\n\n /**\n * Type assertion to check if the SchemaItem is of type PropertyCategory.\n * @param item The SchemaItem to check.\n * @returns The item cast to PropertyCategory if it is a PropertyCategory, undefined otherwise.\n * @internal\n */\n public static assertIsPropertyCategory(item?: SchemaItem): asserts item is PropertyCategory {\n if (!this.isPropertyCategory(item))\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.PropertyCategory}' (PropertyCategory)`);\n }\n}\n\n/**\n * @internal\n * An abstract class used for schema editing.\n */\nexport abstract class MutablePropertyCategory extends PropertyCategory {\n public abstract override setPriority(priority: number): void;\n public abstract override setDisplayLabel(displayLabel: string): void;\n}\n"]}
1
+ {"version":3,"file":"PropertyCategory.js","sourceRoot":"","sources":["../../../src/Metadata/PropertyCategory.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,4CAA8C;AAC9C,4CAA6D;AAE7D,6CAA0C;AAE1C;;GAEG;AACH,MAAa,gBAAiB,SAAQ,uBAAU;IACrB,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;IAC1E,gBAAgB;IACT,MAAM,KAAc,cAAc,KAAK,OAAO,0BAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC/E,SAAS,CAAS;IAE1B,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,gBAAgB;IAChB,YAAY,MAAc,EAAE,IAAY;QACtC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;;;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,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpC,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,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,YAAY,CAAC,qBAA4C;QACvE,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC;IAClD,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,qBAA4C;QACzE,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;IACD;;;OAGG;IACO,WAAW,CAAC,QAAgB;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAAC,IAAiB;QAChD,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,0BAAc,CAAC,gBAAgB;YACjE,OAAO,IAAI,CAAC;QAEd,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,wBAAwB,CAAC,IAAiB;QACtD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAChC,MAAM,IAAI,yBAAa,CAAC,0BAAc,CAAC,qBAAqB,EAAE,aAAa,0BAAc,CAAC,gBAAgB,sBAAsB,CAAC,CAAC;IACtI,CAAC;CACF;AAxED,4CAwEC;AAED;;;GAGG;AACH,MAAsB,uBAAwB,SAAQ,gBAAgB;CAGrE;AAHD,0DAGC","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 { PropertyCategoryProps } from \"../Deserialization/JsonProps\";\r\nimport { SchemaItemType } from \"../ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\n/**\r\n * @public @preview\r\n */\r\nexport class PropertyCategory extends SchemaItem {\r\n public override readonly schemaItemType = PropertyCategory.schemaItemType;\r\n /** @internal */\r\n public static override get schemaItemType() { return SchemaItemType.PropertyCategory; }\r\n private _priority: number;\r\n\r\n public get priority() {\r\n return this._priority;\r\n }\r\n\r\n /** @internal */\r\n constructor(schema: Schema, name: string) {\r\n super(schema, name);\r\n this._priority = 0;\r\n }\r\n\r\n /**\r\n * Save this PropertyCategory'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): PropertyCategoryProps {\r\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\r\n schemaJson.priority = this.priority;\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(\"priority\", this.priority.toString());\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(propertyCategoryProps: PropertyCategoryProps) {\r\n super.fromJSONSync(propertyCategoryProps);\r\n this._priority = propertyCategoryProps.priority;\r\n }\r\n\r\n public override async fromJSON(propertyCategoryProps: PropertyCategoryProps) {\r\n this.fromJSONSync(propertyCategoryProps);\r\n }\r\n /**\r\n * Used for schema editing.\r\n * @internal\r\n */\r\n protected setPriority(priority: number) {\r\n this._priority = priority;\r\n }\r\n\r\n /**\r\n * Type guard to check if the SchemaItem is of type PropertyCategory.\r\n * @param item The SchemaItem to check.\r\n * @returns True if the item is a PropertyCategory, false otherwise.\r\n */\r\n public static isPropertyCategory(item?: SchemaItem): item is PropertyCategory {\r\n if (item && item.schemaItemType === SchemaItemType.PropertyCategory)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Type assertion to check if the SchemaItem is of type PropertyCategory.\r\n * @param item The SchemaItem to check.\r\n * @returns The item cast to PropertyCategory if it is a PropertyCategory, undefined otherwise.\r\n * @internal\r\n */\r\n public static assertIsPropertyCategory(item?: SchemaItem): asserts item is PropertyCategory {\r\n if (!this.isPropertyCategory(item))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.PropertyCategory}' (PropertyCategory)`);\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 MutablePropertyCategory extends PropertyCategory {\r\n public abstract override setPriority(priority: number): void;\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipClass.js","sourceRoot":"","sources":["../../../src/Metadata/RelationshipClass.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 { ECSpecVersion, SchemaReadHelper } from \"../Deserialization/Helper\";\nimport { RelationshipClassProps, RelationshipConstraintProps } from \"../Deserialization/JsonProps\";\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\nimport {\n ECClassModifier, parseStrength, parseStrengthDirection, RelationshipEnd, SchemaItemType, StrengthDirection, strengthDirectionToString,\n strengthToString, StrengthType,\n} from \"../ECObjects\";\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\nimport { LazyLoadedRelationshipConstraintClass } from \"../Interfaces\";\nimport { SchemaItemKey } from \"../SchemaKey\";\nimport { ECClass } from \"./Class\";\nimport { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet, serializeCustomAttributes } from \"./CustomAttribute\";\nimport { createNavigationProperty, createNavigationPropertySync, EntityClass } from \"./EntityClass\";\nimport { Mixin } from \"./Mixin\";\nimport { NavigationProperty } from \"./Property\";\nimport { Schema } from \"./Schema\";\nimport { SchemaItem } from \"./SchemaItem\";\n\ntype AnyConstraintClass = EntityClass | Mixin | RelationshipClass;\n\n/**\n * A Typescript class representation of a ECRelationshipClass.\n * @public @preview\n */\nexport class RelationshipClass extends ECClass {\n public override readonly schemaItemType = RelationshipClass.schemaItemType;\n /** @internal */\n public static override get schemaItemType() { return SchemaItemType.RelationshipClass; }\n /** @internal */\n protected _strength: StrengthType;\n /** @internal */\n protected _strengthDirection: StrengthDirection;\n /** @internal */\n protected _source: RelationshipConstraint;\n /** @internal */\n protected _target: RelationshipConstraint;\n\n /** @internal */\n constructor(schema: Schema, name: string, modifier?: ECClassModifier) {\n super(schema, name, modifier);\n this._strengthDirection = StrengthDirection.Forward;\n this._strength = StrengthType.Referencing;\n this._source = new RelationshipConstraint(this, RelationshipEnd.Source);\n this._target = new RelationshipConstraint(this, RelationshipEnd.Target);\n }\n\n public get strength() { return this._strength; }\n public get strengthDirection() { return this._strengthDirection; }\n public get source() { return this._source; }\n public get target() { return this._target; }\n\n /**\n *\n * @param name\n * @param relationship\n * @param direction\n * @internal\n */\n protected async createNavigationProperty(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): Promise<NavigationProperty> {\n return this.addProperty(await createNavigationProperty(this, name, relationship, direction));\n }\n\n /** @internal */\n protected createNavigationPropertySync(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): NavigationProperty {\n return this.addProperty(createNavigationPropertySync(this, name, relationship, direction));\n }\n\n /**\n * @internal Used for schema editing.\n */\n protected setStrength(strength: StrengthType) {\n this._strength = strength;\n }\n\n /**\n * @internal Used for schema editing.\n */\n protected setStrengthDirection(direction: StrengthDirection) {\n this._strengthDirection = direction;\n }\n\n /**\n * @internal Used for schema editing.\n */\n protected setSourceConstraint(source: RelationshipConstraint) {\n this._source = source;\n }\n\n /**\n * @internal Used for schema editing.\n */\n protected setTargetConstraint(target: RelationshipConstraint) {\n this._target = target;\n }\n /**\n * Save this RelationshipClass'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): RelationshipClassProps {\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\n schemaJson.strength = strengthToString(this.strength);\n schemaJson.strengthDirection = strengthDirectionToString(this.strengthDirection);\n schemaJson.source = this.source.toJSON();\n schemaJson.target = this.target.toJSON();\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(\"strength\", strengthToString(this.strength));\n itemElement.setAttribute(\"strengthDirection\", strengthDirectionToString(this.strengthDirection));\n itemElement.appendChild(await this.source.toXml(schemaXml));\n itemElement.appendChild(await this.target.toXml(schemaXml));\n return itemElement;\n }\n\n public override fromJSONSync(relationshipClassProps: RelationshipClassProps) {\n super.fromJSONSync(relationshipClassProps);\n\n let strength = parseStrength(relationshipClassProps.strength);\n if (undefined === strength) {\n if (SchemaReadHelper.isECSpecVersionNewer({ readVersion: relationshipClassProps.originalECSpecMajorVersion, writeVersion: relationshipClassProps.originalECSpecMinorVersion } as ECSpecVersion))\n strength = StrengthType.Referencing;\n else\n throw new ECSchemaError(ECSchemaStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strength' attribute. '${relationshipClassProps.strength}' is not a valid StrengthType.`);\n }\n\n const strengthDirection = parseStrengthDirection(relationshipClassProps.strengthDirection);\n if (undefined === strengthDirection)\n throw new ECSchemaError(ECSchemaStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strengthDirection' attribute. '${relationshipClassProps.strengthDirection}' is not a valid StrengthDirection.`);\n\n this._strength = strength;\n this._strengthDirection = strengthDirection;\n }\n\n public override async fromJSON(relationshipClassProps: RelationshipClassProps) {\n this.fromJSONSync(relationshipClassProps);\n }\n\n /**\n * Type guard to check if the SchemaItem is of type RelationshipClass.\n * @param item The SchemaItem to check.\n * @returns True if the item is a RelationshipClass, false otherwise.\n */\n public static isRelationshipClass(item?: SchemaItem): item is RelationshipClass {\n if (item && item.schemaItemType === SchemaItemType.RelationshipClass)\n return true;\n\n return false;\n }\n\n /**\n * Type assertion to check if the SchemaItem is of type RelationshipClass.\n * @param item The SchemaItem to check.\n * @returns The item cast to RelationshipClass if it is a RelationshipClass, undefined otherwise.\n * @internal\n */\n public static assertIsRelationshipClass(item?: SchemaItem): asserts item is RelationshipClass {\n if (!this.isRelationshipClass(item))\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.RelationshipClass}' (RelationshipClass)`);\n }\n}\n\n/**\n * A Typescript class representation of a ECRelationshipConstraint.\n * @public @preview\n */\nexport class RelationshipConstraint implements CustomAttributeContainerProps {\n private _abstractConstraint?: LazyLoadedRelationshipConstraintClass;\n private _relationshipClass: RelationshipClass;\n private _relationshipEnd: RelationshipEnd;\n private _multiplicity?: RelationshipMultiplicity;\n private _polymorphic?: boolean;\n private _roleLabel?: string;\n private _constraintClasses?: LazyLoadedRelationshipConstraintClass[];\n private _customAttributes?: Map<string, CustomAttribute>;\n\n /** @internal */\n constructor(relClass: RelationshipClass, relEnd: RelationshipEnd, roleLabel?: string, polymorphic?: boolean) {\n this._relationshipEnd = relEnd;\n if (polymorphic)\n this._polymorphic = polymorphic;\n else\n this._polymorphic = false;\n\n this._multiplicity = RelationshipMultiplicity.zeroOne;\n this._relationshipClass = relClass;\n this._roleLabel = roleLabel;\n }\n\n public get multiplicity() { return this._multiplicity ?? RelationshipMultiplicity.zeroOne; }\n\n public get polymorphic() { return this._polymorphic ?? false; }\n\n public get roleLabel() { return this._roleLabel; }\n\n public get constraintClasses(): ReadonlyArray<LazyLoadedRelationshipConstraintClass> | undefined { return this._constraintClasses; }\n\n public get relationshipClass() { return this._relationshipClass; }\n\n public get relationshipEnd() { return this._relationshipEnd; }\n\n public get customAttributes(): CustomAttributeSet | undefined { return this._customAttributes; }\n\n /** Returns the constraint name, ie. 'RelationshipName.Source/Target' */\n public get fullName() { return `${this._relationshipClass.name}:${this.isSource ? \"Source\" : \"Target\"}`; }\n\n /** Returns the schema of the RelationshipClass. */\n public get schema(): Schema { return this._relationshipClass.schema; }\n\n public get abstractConstraint(): LazyLoadedRelationshipConstraintClass | undefined {\n if (this._abstractConstraint)\n return this._abstractConstraint;\n\n if (this.constraintClasses && this.constraintClasses.length === 1)\n return this.constraintClasses[0];\n\n return this._abstractConstraint;\n }\n\n /**\n * True if this RelationshipConstraint is the Source relationship end.\n */\n public get isSource(): boolean { return this.relationshipEnd === RelationshipEnd.Source; }\n\n /**\n * Adds the provided class as a constraint class to this constraint.\n * @param constraint The class to add as a constraint class.\n * @internal\n */\n public addClass(constraint: LazyLoadedRelationshipConstraintClass): void {\n // TODO: Ensure we don't start mixing constraint class types\n // TODO: Check that this class is or subclasses abstract constraint?\n\n if (!this._constraintClasses)\n this._constraintClasses = [];\n\n // TODO: Handle relationship constraints\n this._constraintClasses.push(constraint);\n }\n\n /**\n * Removes the provided class as a constraint class from this constraint.\n * @param constraint The class to add as a constraint class.\n *\n * @internal\n */\n protected removeClass(constraint: LazyLoadedRelationshipConstraintClass): void {\n if (undefined === this._constraintClasses)\n return;\n\n this._constraintClasses.forEach((item, index) => {\n const constraintName = item.fullName;\n if (constraintName === constraint.fullName)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._constraintClasses?.splice(index, 1);\n });\n }\n\n /**\n * Save this RelationshipConstraint's properties to an object for serializing to JSON.\n */\n public toJSON(): RelationshipConstraintProps {\n const schemaJson: { [value: string]: any } = {};\n schemaJson.multiplicity = this.multiplicity.toString();\n schemaJson.roleLabel = this.roleLabel;\n schemaJson.polymorphic = this.polymorphic;\n if (undefined !== this._abstractConstraint)\n schemaJson.abstractConstraint = this._abstractConstraint.fullName;\n if (undefined !== this.constraintClasses && this.constraintClasses.length > 0)\n schemaJson.constraintClasses = this.constraintClasses.map((constraintClass) => constraintClass.fullName);\n\n const customAttributes = serializeCustomAttributes(this.customAttributes);\n if (undefined !== customAttributes)\n schemaJson.customAttributes = customAttributes;\n return schemaJson as RelationshipConstraintProps;\n }\n\n /** @internal */\n public async toXml(schemaXml: Document): Promise<Element> {\n const elementName = this.isSource ? \"Source\" : \"Target\";\n const itemElement = schemaXml.createElement(elementName);\n if (undefined !== this.polymorphic)\n itemElement.setAttribute(\"polymorphic\", this.polymorphic.toString());\n if (undefined !== this.roleLabel)\n itemElement.setAttribute(\"roleLabel\", this.roleLabel);\n if (undefined !== this.multiplicity)\n itemElement.setAttribute(\"multiplicity\", this.multiplicity.toString());\n\n const abstractConstraint = await this.abstractConstraint;\n if (undefined !== abstractConstraint) {\n const abstractConstraintName = XmlSerializationUtils.createXmlTypedName(this.schema, abstractConstraint.schema, abstractConstraint.name);\n itemElement.setAttribute(\"abstractConstraint\", abstractConstraintName);\n }\n\n if (undefined !== this.constraintClasses) {\n for (const item of this.constraintClasses) {\n const constraintClass = await item;\n const classElement = schemaXml.createElement(\"Class\");\n const constraintClassName = XmlSerializationUtils.createXmlTypedName(this.schema, constraintClass.schema, constraintClass.name);\n classElement.setAttribute(\"class\", constraintClassName);\n itemElement.appendChild(classElement);\n }\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(relationshipConstraintProps: RelationshipConstraintProps) {\n\n this._roleLabel = relationshipConstraintProps.roleLabel;\n this._polymorphic = relationshipConstraintProps.polymorphic;\n\n const parsedMultiplicity = RelationshipMultiplicity.fromString(relationshipConstraintProps.multiplicity);\n if (!parsedMultiplicity)\n throw new ECSchemaError(ECSchemaStatus.InvalidMultiplicity, ``);\n this._multiplicity = parsedMultiplicity;\n\n const relClassSchema = this.relationshipClass.schema;\n\n if (undefined !== relationshipConstraintProps.abstractConstraint) {\n const abstractConstraintSchemaItemKey = relClassSchema.getSchemaItemKey(relationshipConstraintProps.abstractConstraint);\n if (!abstractConstraintSchemaItemKey)\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to locate the abstractConstraint ${relationshipConstraintProps.abstractConstraint}.`);\n this.setAbstractConstraint(new DelayedPromiseWithProps<SchemaItemKey, AnyConstraintClass>(abstractConstraintSchemaItemKey,\n async () => {\n const tempAbstractConstraint = await relClassSchema.lookupItem(relationshipConstraintProps.abstractConstraint!);\n if (undefined === tempAbstractConstraint ||\n (!EntityClass.isEntityClass(tempAbstractConstraint) && !Mixin.isMixin(tempAbstractConstraint) && !RelationshipClass.isRelationshipClass(tempAbstractConstraint)))\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to locate the abstractConstraint ${relationshipConstraintProps.abstractConstraint}.`);\n\n return tempAbstractConstraint;\n }));\n }\n\n const loadEachConstraint = (constraintClassName: any) => {\n const tempConstraintClass = relClassSchema.lookupItemSync(constraintClassName);\n if (!tempConstraintClass ||\n (!EntityClass.isEntityClass(tempConstraintClass) && !Mixin.isMixin(tempConstraintClass) && !RelationshipClass.isRelationshipClass(tempConstraintClass)))\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, ``);\n return tempConstraintClass;\n };\n\n for (const constraintClassName of relationshipConstraintProps.constraintClasses) {\n const constraintClass = loadEachConstraint(constraintClassName);\n this.addClass(new DelayedPromiseWithProps(constraintClass.key, async () => constraintClass));\n }\n }\n\n public async fromJSON(relationshipConstraintProps: RelationshipConstraintProps) {\n this.fromJSONSync(relationshipConstraintProps);\n }\n\n /**\n * Indicates if the provided [[ECClass]] is supported by this [[RelationshipConstraint]].\n * @param ecClass The class to check.\n */\n public async supportsClass(ecClass: ECClass): Promise<boolean> {\n if (!this.constraintClasses) {\n if (this.relationshipClass.baseClass) {\n const baseRelationship = await this.relationshipClass.baseClass as RelationshipClass;\n const baseConstraint = this.isSource ? baseRelationship.source : baseRelationship.target;\n return baseConstraint.supportsClass(ecClass);\n }\n return false;\n }\n\n if (ecClass.schemaItemType !== SchemaItemType.EntityClass && ecClass.schemaItemType !== SchemaItemType.RelationshipClass &&\n ecClass.schemaItemType !== SchemaItemType.Mixin) {\n return false;\n }\n\n const abstractConstraint = await this.abstractConstraint;\n\n if (abstractConstraint && await RelationshipConstraint.classCompatibleWithConstraint(abstractConstraint, ecClass, this.polymorphic || false))\n return true;\n\n for (const constraint of this.constraintClasses) {\n if (await RelationshipConstraint.classCompatibleWithConstraint(await constraint, ecClass, this.polymorphic || false))\n return true;\n }\n\n return false;\n }\n\n /**\n * Indicates if an ECClass is of the type or applies to the type (if a mixin) of the ECClass specified by the constraintClass parameter.\n * @param constraintClass The ECClass that is a constraint class of a relationship.\n * @param testClass The ECClass to check against the constraint class.\n * @param isPolymorphic Indicates if the testClass should be checked polymorphically.\n */\n public static async classCompatibleWithConstraint(constraintClass: ECClass, testClass: ECClass, isPolymorphic: boolean): Promise<boolean> {\n if (SchemaItem.equalByKey(constraintClass, testClass))\n return true;\n\n if (isPolymorphic) {\n if (testClass.schemaItemType === SchemaItemType.EntityClass || testClass.schemaItemType === SchemaItemType.RelationshipClass) {\n return testClass.is(constraintClass);\n }\n\n if (testClass.schemaItemType === SchemaItemType.Mixin) {\n if (constraintClass.schemaItemType === SchemaItemType.EntityClass)\n return (testClass as Mixin).applicableTo(constraintClass as EntityClass);\n else\n return testClass.is(constraintClass);\n }\n }\n return false;\n }\n\n /**\n * @internal\n */\n public static isRelationshipConstraint(object: any): object is RelationshipConstraint {\n const relationshipConstraint = object as RelationshipConstraint;\n\n return relationshipConstraint !== undefined && relationshipConstraint.polymorphic !== undefined && relationshipConstraint.multiplicity !== undefined\n && relationshipConstraint.relationshipEnd !== undefined && relationshipConstraint._relationshipClass !== undefined;\n }\n\n /** @internal */\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 /** @internal */\n protected setRoleLabel(roleLabel: string | undefined) {\n this._roleLabel = roleLabel;\n }\n\n /** @internal */\n protected setRelationshipEnd(relationshipEnd: RelationshipEnd) {\n this._relationshipEnd = relationshipEnd;\n }\n\n /** @internal */\n protected setPolymorphic(polymorphic: boolean) {\n this._polymorphic = polymorphic;\n }\n\n /** @internal */\n protected setMultiplicity(multiplicity: RelationshipMultiplicity) {\n this._multiplicity = multiplicity;\n }\n\n /** @internal */\n protected setAbstractConstraint(abstractConstraint: LazyLoadedRelationshipConstraintClass | undefined) {\n this._abstractConstraint = abstractConstraint;\n }\n}\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 MutableRelationshipConstraint extends RelationshipConstraint {\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\n public abstract override setRoleLabel(roleLabel: string | undefined): void;\n public abstract override setRelationshipEnd(relationshipEnd: RelationshipEnd): void;\n public abstract override setPolymorphic(polymorphic: boolean): void;\n public abstract override setMultiplicity(multiplicity: RelationshipMultiplicity): void;\n public abstract override setAbstractConstraint(abstractConstraint: LazyLoadedRelationshipConstraintClass | undefined): void;\n}\n\nconst INT32_MAX = 2147483647;\n\n/**\n * @public @preview\n */\nexport class RelationshipMultiplicity {\n public static readonly zeroOne = new RelationshipMultiplicity(0, 1);\n public static readonly zeroMany = new RelationshipMultiplicity(0, INT32_MAX);\n public static readonly oneOne = new RelationshipMultiplicity(1, 1);\n public static readonly oneMany = new RelationshipMultiplicity(1, INT32_MAX);\n\n public readonly lowerLimit: number;\n public readonly upperLimit: number;\n\n /** @internal */\n constructor(lowerLimit: number, upperLimit: number) {\n this.lowerLimit = lowerLimit;\n this.upperLimit = upperLimit;\n }\n\n public static fromString(str: string): RelationshipMultiplicity | undefined {\n const matches = /^\\(([0-9]*)\\.\\.([0-9]*|\\*)\\)$/.exec(str);\n if (matches === null || matches.length !== 3)\n return undefined;\n\n const lowerLimit = parseInt(matches[1], 10);\n const upperLimit = matches[2] === \"*\" ? INT32_MAX : parseInt(matches[2], 10);\n if (0 === lowerLimit && 1 === upperLimit)\n return RelationshipMultiplicity.zeroOne;\n else if (0 === lowerLimit && INT32_MAX === upperLimit)\n return RelationshipMultiplicity.zeroMany;\n else if (1 === lowerLimit && 1 === upperLimit)\n return RelationshipMultiplicity.oneOne;\n else if (1 === lowerLimit && INT32_MAX === upperLimit)\n return RelationshipMultiplicity.oneMany;\n\n return new RelationshipMultiplicity(lowerLimit, upperLimit);\n }\n\n public equals(rhs: RelationshipMultiplicity): boolean {\n return this.lowerLimit === rhs.lowerLimit && this.upperLimit === rhs.upperLimit;\n }\n\n public toString(): string {\n return `(${this.lowerLimit}..${this.upperLimit === INT32_MAX ? \"*\" : this.upperLimit})`;\n }\n}\n\n/**\n * @internal\n * An abstract class used for schema editing.\n */\nexport abstract class MutableRelationshipClass extends RelationshipClass {\n public override get source() { return this._source as MutableRelationshipConstraint; }\n public override get target() { return this._target as MutableRelationshipConstraint; }\n public abstract override setStrength(strength: StrengthType): void;\n public abstract override setStrengthDirection(direction: StrengthDirection): void;\n public abstract override createNavigationProperty(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): Promise<NavigationProperty>;\n public abstract override createNavigationPropertySync(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): NavigationProperty;\n public abstract override setDisplayLabel(displayLabel: string): void;\n}\n"]}
1
+ {"version":3,"file":"RelationshipClass.js","sourceRoot":"","sources":["../../../src/Metadata/RelationshipClass.ts"],"names":[],"mappings":"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","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 { ECSpecVersion, SchemaReadHelper } from \"../Deserialization/Helper\";\r\nimport { RelationshipClassProps, RelationshipConstraintProps } from \"../Deserialization/JsonProps\";\r\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\r\nimport {\r\n ECClassModifier, parseStrength, parseStrengthDirection, RelationshipEnd, SchemaItemType, StrengthDirection, strengthDirectionToString,\r\n strengthToString, StrengthType,\r\n} from \"../ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\r\nimport { LazyLoadedRelationshipConstraintClass } from \"../Interfaces\";\r\nimport { SchemaItemKey } from \"../SchemaKey\";\r\nimport { ECClass } from \"./Class\";\r\nimport { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet, serializeCustomAttributes } from \"./CustomAttribute\";\r\nimport { createNavigationProperty, createNavigationPropertySync, EntityClass } from \"./EntityClass\";\r\nimport { Mixin } from \"./Mixin\";\r\nimport { NavigationProperty } from \"./Property\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\ntype AnyConstraintClass = EntityClass | Mixin | RelationshipClass;\r\n\r\n/**\r\n * A Typescript class representation of a ECRelationshipClass.\r\n * @public @preview\r\n */\r\nexport class RelationshipClass extends ECClass {\r\n public override readonly schemaItemType = RelationshipClass.schemaItemType;\r\n /** @internal */\r\n public static override get schemaItemType() { return SchemaItemType.RelationshipClass; }\r\n /** @internal */\r\n protected _strength: StrengthType;\r\n /** @internal */\r\n protected _strengthDirection: StrengthDirection;\r\n /** @internal */\r\n protected _source: RelationshipConstraint;\r\n /** @internal */\r\n protected _target: RelationshipConstraint;\r\n\r\n /** @internal */\r\n constructor(schema: Schema, name: string, modifier?: ECClassModifier) {\r\n super(schema, name, modifier);\r\n this._strengthDirection = StrengthDirection.Forward;\r\n this._strength = StrengthType.Referencing;\r\n this._source = new RelationshipConstraint(this, RelationshipEnd.Source);\r\n this._target = new RelationshipConstraint(this, RelationshipEnd.Target);\r\n }\r\n\r\n public get strength() { return this._strength; }\r\n public get strengthDirection() { return this._strengthDirection; }\r\n public get source() { return this._source; }\r\n public get target() { return this._target; }\r\n\r\n /**\r\n *\r\n * @param name\r\n * @param relationship\r\n * @param direction\r\n * @internal\r\n */\r\n protected async createNavigationProperty(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): Promise<NavigationProperty> {\r\n return this.addProperty(await createNavigationProperty(this, name, relationship, direction));\r\n }\r\n\r\n /** @internal */\r\n protected createNavigationPropertySync(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): NavigationProperty {\r\n return this.addProperty(createNavigationPropertySync(this, name, relationship, direction));\r\n }\r\n\r\n /**\r\n * @internal Used for schema editing.\r\n */\r\n protected setStrength(strength: StrengthType) {\r\n this._strength = strength;\r\n }\r\n\r\n /**\r\n * @internal Used for schema editing.\r\n */\r\n protected setStrengthDirection(direction: StrengthDirection) {\r\n this._strengthDirection = direction;\r\n }\r\n\r\n /**\r\n * @internal Used for schema editing.\r\n */\r\n protected setSourceConstraint(source: RelationshipConstraint) {\r\n this._source = source;\r\n }\r\n\r\n /**\r\n * @internal Used for schema editing.\r\n */\r\n protected setTargetConstraint(target: RelationshipConstraint) {\r\n this._target = target;\r\n }\r\n /**\r\n * Save this RelationshipClass'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): RelationshipClassProps {\r\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\r\n schemaJson.strength = strengthToString(this.strength);\r\n schemaJson.strengthDirection = strengthDirectionToString(this.strengthDirection);\r\n schemaJson.source = this.source.toJSON();\r\n schemaJson.target = this.target.toJSON();\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(\"strength\", strengthToString(this.strength));\r\n itemElement.setAttribute(\"strengthDirection\", strengthDirectionToString(this.strengthDirection));\r\n itemElement.appendChild(await this.source.toXml(schemaXml));\r\n itemElement.appendChild(await this.target.toXml(schemaXml));\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(relationshipClassProps: RelationshipClassProps) {\r\n super.fromJSONSync(relationshipClassProps);\r\n\r\n let strength = parseStrength(relationshipClassProps.strength);\r\n if (undefined === strength) {\r\n if (SchemaReadHelper.isECSpecVersionNewer({ readVersion: relationshipClassProps.originalECSpecMajorVersion, writeVersion: relationshipClassProps.originalECSpecMinorVersion } as ECSpecVersion))\r\n strength = StrengthType.Referencing;\r\n else\r\n throw new ECSchemaError(ECSchemaStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strength' attribute. '${relationshipClassProps.strength}' is not a valid StrengthType.`);\r\n }\r\n\r\n const strengthDirection = parseStrengthDirection(relationshipClassProps.strengthDirection);\r\n if (undefined === strengthDirection)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strengthDirection' attribute. '${relationshipClassProps.strengthDirection}' is not a valid StrengthDirection.`);\r\n\r\n this._strength = strength;\r\n this._strengthDirection = strengthDirection;\r\n }\r\n\r\n public override async fromJSON(relationshipClassProps: RelationshipClassProps) {\r\n this.fromJSONSync(relationshipClassProps);\r\n }\r\n\r\n /**\r\n * Type guard to check if the SchemaItem is of type RelationshipClass.\r\n * @param item The SchemaItem to check.\r\n * @returns True if the item is a RelationshipClass, false otherwise.\r\n */\r\n public static isRelationshipClass(item?: SchemaItem): item is RelationshipClass {\r\n if (item && item.schemaItemType === SchemaItemType.RelationshipClass)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Type assertion to check if the SchemaItem is of type RelationshipClass.\r\n * @param item The SchemaItem to check.\r\n * @returns The item cast to RelationshipClass if it is a RelationshipClass, undefined otherwise.\r\n * @internal\r\n */\r\n public static assertIsRelationshipClass(item?: SchemaItem): asserts item is RelationshipClass {\r\n if (!this.isRelationshipClass(item))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.RelationshipClass}' (RelationshipClass)`);\r\n }\r\n}\r\n\r\n/**\r\n * A Typescript class representation of a ECRelationshipConstraint.\r\n * @public @preview\r\n */\r\nexport class RelationshipConstraint implements CustomAttributeContainerProps {\r\n private _abstractConstraint?: LazyLoadedRelationshipConstraintClass;\r\n private _relationshipClass: RelationshipClass;\r\n private _relationshipEnd: RelationshipEnd;\r\n private _multiplicity?: RelationshipMultiplicity;\r\n private _polymorphic?: boolean;\r\n private _roleLabel?: string;\r\n private _constraintClasses?: LazyLoadedRelationshipConstraintClass[];\r\n private _customAttributes?: Map<string, CustomAttribute>;\r\n\r\n /** @internal */\r\n constructor(relClass: RelationshipClass, relEnd: RelationshipEnd, roleLabel?: string, polymorphic?: boolean) {\r\n this._relationshipEnd = relEnd;\r\n if (polymorphic)\r\n this._polymorphic = polymorphic;\r\n else\r\n this._polymorphic = false;\r\n\r\n this._multiplicity = RelationshipMultiplicity.zeroOne;\r\n this._relationshipClass = relClass;\r\n this._roleLabel = roleLabel;\r\n }\r\n\r\n public get multiplicity() { return this._multiplicity ?? RelationshipMultiplicity.zeroOne; }\r\n\r\n public get polymorphic() { return this._polymorphic ?? false; }\r\n\r\n public get roleLabel() { return this._roleLabel; }\r\n\r\n public get constraintClasses(): ReadonlyArray<LazyLoadedRelationshipConstraintClass> | undefined { return this._constraintClasses; }\r\n\r\n public get relationshipClass() { return this._relationshipClass; }\r\n\r\n public get relationshipEnd() { return this._relationshipEnd; }\r\n\r\n public get customAttributes(): CustomAttributeSet | undefined { return this._customAttributes; }\r\n\r\n /** Returns the constraint name, ie. 'RelationshipName.Source/Target' */\r\n public get fullName() { return `${this._relationshipClass.name}:${this.isSource ? \"Source\" : \"Target\"}`; }\r\n\r\n /** Returns the schema of the RelationshipClass. */\r\n public get schema(): Schema { return this._relationshipClass.schema; }\r\n\r\n public get abstractConstraint(): LazyLoadedRelationshipConstraintClass | undefined {\r\n if (this._abstractConstraint)\r\n return this._abstractConstraint;\r\n\r\n if (this.constraintClasses && this.constraintClasses.length === 1)\r\n return this.constraintClasses[0];\r\n\r\n return this._abstractConstraint;\r\n }\r\n\r\n /**\r\n * True if this RelationshipConstraint is the Source relationship end.\r\n */\r\n public get isSource(): boolean { return this.relationshipEnd === RelationshipEnd.Source; }\r\n\r\n /**\r\n * Adds the provided class as a constraint class to this constraint.\r\n * @param constraint The class to add as a constraint class.\r\n * @internal\r\n */\r\n public addClass(constraint: LazyLoadedRelationshipConstraintClass): void {\r\n // TODO: Ensure we don't start mixing constraint class types\r\n // TODO: Check that this class is or subclasses abstract constraint?\r\n\r\n if (!this._constraintClasses)\r\n this._constraintClasses = [];\r\n\r\n // TODO: Handle relationship constraints\r\n this._constraintClasses.push(constraint);\r\n }\r\n\r\n /**\r\n * Removes the provided class as a constraint class from this constraint.\r\n * @param constraint The class to add as a constraint class.\r\n *\r\n * @internal\r\n */\r\n protected removeClass(constraint: LazyLoadedRelationshipConstraintClass): void {\r\n if (undefined === this._constraintClasses)\r\n return;\r\n\r\n this._constraintClasses.forEach((item, index) => {\r\n const constraintName = item.fullName;\r\n if (constraintName === constraint.fullName)\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._constraintClasses?.splice(index, 1);\r\n });\r\n }\r\n\r\n /**\r\n * Save this RelationshipConstraint's properties to an object for serializing to JSON.\r\n */\r\n public toJSON(): RelationshipConstraintProps {\r\n const schemaJson: { [value: string]: any } = {};\r\n schemaJson.multiplicity = this.multiplicity.toString();\r\n schemaJson.roleLabel = this.roleLabel;\r\n schemaJson.polymorphic = this.polymorphic;\r\n if (undefined !== this._abstractConstraint)\r\n schemaJson.abstractConstraint = this._abstractConstraint.fullName;\r\n if (undefined !== this.constraintClasses && this.constraintClasses.length > 0)\r\n schemaJson.constraintClasses = this.constraintClasses.map((constraintClass) => constraintClass.fullName);\r\n\r\n const customAttributes = serializeCustomAttributes(this.customAttributes);\r\n if (undefined !== customAttributes)\r\n schemaJson.customAttributes = customAttributes;\r\n return schemaJson as RelationshipConstraintProps;\r\n }\r\n\r\n /** @internal */\r\n public async toXml(schemaXml: Document): Promise<Element> {\r\n const elementName = this.isSource ? \"Source\" : \"Target\";\r\n const itemElement = schemaXml.createElement(elementName);\r\n if (undefined !== this.polymorphic)\r\n itemElement.setAttribute(\"polymorphic\", this.polymorphic.toString());\r\n if (undefined !== this.roleLabel)\r\n itemElement.setAttribute(\"roleLabel\", this.roleLabel);\r\n if (undefined !== this.multiplicity)\r\n itemElement.setAttribute(\"multiplicity\", this.multiplicity.toString());\r\n\r\n const abstractConstraint = await this.abstractConstraint;\r\n if (undefined !== abstractConstraint) {\r\n const abstractConstraintName = XmlSerializationUtils.createXmlTypedName(this.schema, abstractConstraint.schema, abstractConstraint.name);\r\n itemElement.setAttribute(\"abstractConstraint\", abstractConstraintName);\r\n }\r\n\r\n if (undefined !== this.constraintClasses) {\r\n for (const item of this.constraintClasses) {\r\n const constraintClass = await item;\r\n const classElement = schemaXml.createElement(\"Class\");\r\n const constraintClassName = XmlSerializationUtils.createXmlTypedName(this.schema, constraintClass.schema, constraintClass.name);\r\n classElement.setAttribute(\"class\", constraintClassName);\r\n itemElement.appendChild(classElement);\r\n }\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(relationshipConstraintProps: RelationshipConstraintProps) {\r\n\r\n this._roleLabel = relationshipConstraintProps.roleLabel;\r\n this._polymorphic = relationshipConstraintProps.polymorphic;\r\n\r\n const parsedMultiplicity = RelationshipMultiplicity.fromString(relationshipConstraintProps.multiplicity);\r\n if (!parsedMultiplicity)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidMultiplicity, ``);\r\n this._multiplicity = parsedMultiplicity;\r\n\r\n const relClassSchema = this.relationshipClass.schema;\r\n\r\n if (undefined !== relationshipConstraintProps.abstractConstraint) {\r\n const abstractConstraintSchemaItemKey = relClassSchema.getSchemaItemKey(relationshipConstraintProps.abstractConstraint);\r\n if (!abstractConstraintSchemaItemKey)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to locate the abstractConstraint ${relationshipConstraintProps.abstractConstraint}.`);\r\n this.setAbstractConstraint(new DelayedPromiseWithProps<SchemaItemKey, AnyConstraintClass>(abstractConstraintSchemaItemKey,\r\n async () => {\r\n const tempAbstractConstraint = await relClassSchema.lookupItem(relationshipConstraintProps.abstractConstraint!);\r\n if (undefined === tempAbstractConstraint ||\r\n (!EntityClass.isEntityClass(tempAbstractConstraint) && !Mixin.isMixin(tempAbstractConstraint) && !RelationshipClass.isRelationshipClass(tempAbstractConstraint)))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to locate the abstractConstraint ${relationshipConstraintProps.abstractConstraint}.`);\r\n\r\n return tempAbstractConstraint;\r\n }));\r\n }\r\n\r\n const loadEachConstraint = (constraintClassName: any) => {\r\n const tempConstraintClass = relClassSchema.lookupItemSync(constraintClassName);\r\n if (!tempConstraintClass ||\r\n (!EntityClass.isEntityClass(tempConstraintClass) && !Mixin.isMixin(tempConstraintClass) && !RelationshipClass.isRelationshipClass(tempConstraintClass)))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, ``);\r\n return tempConstraintClass;\r\n };\r\n\r\n for (const constraintClassName of relationshipConstraintProps.constraintClasses) {\r\n const constraintClass = loadEachConstraint(constraintClassName);\r\n this.addClass(new DelayedPromiseWithProps(constraintClass.key, async () => constraintClass));\r\n }\r\n }\r\n\r\n public async fromJSON(relationshipConstraintProps: RelationshipConstraintProps) {\r\n this.fromJSONSync(relationshipConstraintProps);\r\n }\r\n\r\n /**\r\n * Indicates if the provided [[ECClass]] is supported by this [[RelationshipConstraint]].\r\n * @param ecClass The class to check.\r\n */\r\n public async supportsClass(ecClass: ECClass): Promise<boolean> {\r\n if (!this.constraintClasses) {\r\n if (this.relationshipClass.baseClass) {\r\n const baseRelationship = await this.relationshipClass.baseClass as RelationshipClass;\r\n const baseConstraint = this.isSource ? baseRelationship.source : baseRelationship.target;\r\n return baseConstraint.supportsClass(ecClass);\r\n }\r\n return false;\r\n }\r\n\r\n if (ecClass.schemaItemType !== SchemaItemType.EntityClass && ecClass.schemaItemType !== SchemaItemType.RelationshipClass &&\r\n ecClass.schemaItemType !== SchemaItemType.Mixin) {\r\n return false;\r\n }\r\n\r\n const abstractConstraint = await this.abstractConstraint;\r\n\r\n if (abstractConstraint && await RelationshipConstraint.classCompatibleWithConstraint(abstractConstraint, ecClass, this.polymorphic || false))\r\n return true;\r\n\r\n for (const constraint of this.constraintClasses) {\r\n if (await RelationshipConstraint.classCompatibleWithConstraint(await constraint, ecClass, this.polymorphic || false))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Indicates if an ECClass is of the type or applies to the type (if a mixin) of the ECClass specified by the constraintClass parameter.\r\n * @param constraintClass The ECClass that is a constraint class of a relationship.\r\n * @param testClass The ECClass to check against the constraint class.\r\n * @param isPolymorphic Indicates if the testClass should be checked polymorphically.\r\n */\r\n public static async classCompatibleWithConstraint(constraintClass: ECClass, testClass: ECClass, isPolymorphic: boolean): Promise<boolean> {\r\n if (SchemaItem.equalByKey(constraintClass, testClass))\r\n return true;\r\n\r\n if (isPolymorphic) {\r\n if (testClass.schemaItemType === SchemaItemType.EntityClass || testClass.schemaItemType === SchemaItemType.RelationshipClass) {\r\n return testClass.is(constraintClass);\r\n }\r\n\r\n if (testClass.schemaItemType === SchemaItemType.Mixin) {\r\n if (constraintClass.schemaItemType === SchemaItemType.EntityClass)\r\n return (testClass as Mixin).applicableTo(constraintClass as EntityClass);\r\n else\r\n return testClass.is(constraintClass);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static isRelationshipConstraint(object: any): object is RelationshipConstraint {\r\n const relationshipConstraint = object as RelationshipConstraint;\r\n\r\n return relationshipConstraint !== undefined && relationshipConstraint.polymorphic !== undefined && relationshipConstraint.multiplicity !== undefined\r\n && relationshipConstraint.relationshipEnd !== undefined && relationshipConstraint._relationshipClass !== undefined;\r\n }\r\n\r\n /** @internal */\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 /** @internal */\r\n protected setRoleLabel(roleLabel: string | undefined) {\r\n this._roleLabel = roleLabel;\r\n }\r\n\r\n /** @internal */\r\n protected setRelationshipEnd(relationshipEnd: RelationshipEnd) {\r\n this._relationshipEnd = relationshipEnd;\r\n }\r\n\r\n /** @internal */\r\n protected setPolymorphic(polymorphic: boolean) {\r\n this._polymorphic = polymorphic;\r\n }\r\n\r\n /** @internal */\r\n protected setMultiplicity(multiplicity: RelationshipMultiplicity) {\r\n this._multiplicity = multiplicity;\r\n }\r\n\r\n /** @internal */\r\n protected setAbstractConstraint(abstractConstraint: LazyLoadedRelationshipConstraintClass | undefined) {\r\n this._abstractConstraint = abstractConstraint;\r\n }\r\n}\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 MutableRelationshipConstraint extends RelationshipConstraint {\r\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\r\n public abstract override setRoleLabel(roleLabel: string | undefined): void;\r\n public abstract override setRelationshipEnd(relationshipEnd: RelationshipEnd): void;\r\n public abstract override setPolymorphic(polymorphic: boolean): void;\r\n public abstract override setMultiplicity(multiplicity: RelationshipMultiplicity): void;\r\n public abstract override setAbstractConstraint(abstractConstraint: LazyLoadedRelationshipConstraintClass | undefined): void;\r\n}\r\n\r\nconst INT32_MAX = 2147483647;\r\n\r\n/**\r\n * @public @preview\r\n */\r\nexport class RelationshipMultiplicity {\r\n public static readonly zeroOne = new RelationshipMultiplicity(0, 1);\r\n public static readonly zeroMany = new RelationshipMultiplicity(0, INT32_MAX);\r\n public static readonly oneOne = new RelationshipMultiplicity(1, 1);\r\n public static readonly oneMany = new RelationshipMultiplicity(1, INT32_MAX);\r\n\r\n public readonly lowerLimit: number;\r\n public readonly upperLimit: number;\r\n\r\n /** @internal */\r\n constructor(lowerLimit: number, upperLimit: number) {\r\n this.lowerLimit = lowerLimit;\r\n this.upperLimit = upperLimit;\r\n }\r\n\r\n public static fromString(str: string): RelationshipMultiplicity | undefined {\r\n const matches = /^\\(([0-9]*)\\.\\.([0-9]*|\\*)\\)$/.exec(str);\r\n if (matches === null || matches.length !== 3)\r\n return undefined;\r\n\r\n const lowerLimit = parseInt(matches[1], 10);\r\n const upperLimit = matches[2] === \"*\" ? INT32_MAX : parseInt(matches[2], 10);\r\n if (0 === lowerLimit && 1 === upperLimit)\r\n return RelationshipMultiplicity.zeroOne;\r\n else if (0 === lowerLimit && INT32_MAX === upperLimit)\r\n return RelationshipMultiplicity.zeroMany;\r\n else if (1 === lowerLimit && 1 === upperLimit)\r\n return RelationshipMultiplicity.oneOne;\r\n else if (1 === lowerLimit && INT32_MAX === upperLimit)\r\n return RelationshipMultiplicity.oneMany;\r\n\r\n return new RelationshipMultiplicity(lowerLimit, upperLimit);\r\n }\r\n\r\n public equals(rhs: RelationshipMultiplicity): boolean {\r\n return this.lowerLimit === rhs.lowerLimit && this.upperLimit === rhs.upperLimit;\r\n }\r\n\r\n public toString(): string {\r\n return `(${this.lowerLimit}..${this.upperLimit === INT32_MAX ? \"*\" : this.upperLimit})`;\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 MutableRelationshipClass extends RelationshipClass {\r\n public override get source() { return this._source as MutableRelationshipConstraint; }\r\n public override get target() { return this._target as MutableRelationshipConstraint; }\r\n public abstract override setStrength(strength: StrengthType): void;\r\n public abstract override setStrengthDirection(direction: StrengthDirection): void;\r\n public abstract override createNavigationProperty(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): Promise<NavigationProperty>;\r\n public abstract override createNavigationPropertySync(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): NavigationProperty;\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n"]}
@@ -22,6 +22,7 @@ import { RelationshipClass } from "./RelationshipClass";
22
22
  import { SchemaItem } from "./SchemaItem";
23
23
  import { Unit } from "./Unit";
24
24
  import { UnitSystem } from "./UnitSystem";
25
+ import { SchemaLoadingController } from "../utils/SchemaLoadingController";
25
26
  /**
26
27
  * @public @preview
27
28
  */
@@ -37,6 +38,7 @@ export declare class Schema implements CustomAttributeContainerProps {
37
38
  private _customAttributes?;
38
39
  private _originalECSpecMajorVersion?;
39
40
  private _originalECSpecMinorVersion?;
41
+ private _loadingController?;
40
42
  /**
41
43
  * Constructs an empty Schema with the given name and version in the provided context.
42
44
  * @param context The SchemaContext that will control the lifetime of the schema
@@ -79,6 +81,12 @@ export declare class Schema implements CustomAttributeContainerProps {
79
81
  get schema(): Schema;
80
82
  /** Returns the schema context this schema is within. */
81
83
  get context(): SchemaContext;
84
+ /**
85
+ * Returns the SchemaLoadingController for this Schema. This would only be set if the schema is
86
+ * loaded incrementally.
87
+ * @internal
88
+ */
89
+ get loadingController(): SchemaLoadingController | undefined;
82
90
  /**
83
91
  * Returns a SchemaItemKey given the item name and the schema it belongs to
84
92
  * @param fullName fully qualified name {Schema name}.{Item Name}
@@ -421,6 +429,8 @@ export declare class Schema implements CustomAttributeContainerProps {
421
429
  protected setDescription(description: string): void;
422
430
  /** @internal */
423
431
  protected setAlias(alias: string): void;
432
+ /** @internal */
433
+ setLoadingController(controller: SchemaLoadingController): void;
424
434
  }
425
435
  /**
426
436
  * Hackish approach that works like a "friend class" so we can access protected members without making them public.
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Schema.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,7 @@ class Schema {
48
48
  _customAttributes;
49
49
  _originalECSpecMajorVersion;
50
50
  _originalECSpecMinorVersion;
51
+ _loadingController;
51
52
  /** @internal */
52
53
  constructor(context, nameOrKey, alias, readVer, writeVer, minorVer) {
53
54
  this._schemaKey = (typeof (nameOrKey) === "string") ? new SchemaKey_1.SchemaKey(nameOrKey, new SchemaKey_1.ECVersion(readVer, writeVer, minorVer)) : nameOrKey;
@@ -113,6 +114,14 @@ class Schema {
113
114
  get schema() { return this; }
114
115
  /** Returns the schema context this schema is within. */
115
116
  get context() { return this._context; }
117
+ /**
118
+ * Returns the SchemaLoadingController for this Schema. This would only be set if the schema is
119
+ * loaded incrementally.
120
+ * @internal
121
+ */
122
+ get loadingController() {
123
+ return this._loadingController;
124
+ }
116
125
  /**
117
126
  * Returns a SchemaItemKey given the item name and the schema it belongs to
118
127
  * @param fullName fully qualified name {Schema name}.{Item Name}
@@ -738,6 +747,10 @@ class Schema {
738
747
  }
739
748
  this._alias = alias;
740
749
  }
750
+ /** @internal */
751
+ setLoadingController(controller) {
752
+ this._loadingController = controller;
753
+ }
741
754
  }
742
755
  exports.Schema = Schema;
743
756
  /**