@itwin/ecschema-editing 5.0.0-dev.9 → 5.0.0-dev.92

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 (589) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/lib/cjs/Differencing/Errors.js +6 -0
  3. package/lib/cjs/Differencing/Errors.js.map +1 -1
  4. package/lib/cjs/Differencing/SchemaConflicts.d.ts +3 -1
  5. package/lib/cjs/Differencing/SchemaConflicts.d.ts.map +1 -1
  6. package/lib/cjs/Differencing/SchemaConflicts.js +2 -0
  7. package/lib/cjs/Differencing/SchemaConflicts.js.map +1 -1
  8. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.d.ts +4 -3
  9. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.d.ts.map +1 -1
  10. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.js +57 -11
  11. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.js.map +1 -1
  12. package/lib/cjs/Differencing/SchemaDifference.d.ts +33 -4
  13. package/lib/cjs/Differencing/SchemaDifference.d.ts.map +1 -1
  14. package/lib/cjs/Differencing/SchemaDifference.js +55 -5
  15. package/lib/cjs/Differencing/SchemaDifference.js.map +1 -1
  16. package/lib/cjs/Differencing/SchemaDifferenceValidator.d.ts +2 -1
  17. package/lib/cjs/Differencing/SchemaDifferenceValidator.d.ts.map +1 -1
  18. package/lib/cjs/Differencing/SchemaDifferenceValidator.js +78 -19
  19. package/lib/cjs/Differencing/SchemaDifferenceValidator.js.map +1 -1
  20. package/lib/cjs/Differencing/SchemaDifferenceVisitor.d.ts.map +1 -1
  21. package/lib/cjs/Differencing/SchemaDifferenceVisitor.js +5 -0
  22. package/lib/cjs/Differencing/SchemaDifferenceVisitor.js.map +1 -1
  23. package/lib/cjs/Differencing/Utils.js.map +1 -1
  24. package/lib/cjs/Editing/Constants.d.ts +2 -1
  25. package/lib/cjs/Editing/Constants.d.ts.map +1 -1
  26. package/lib/cjs/Editing/Constants.js +4 -1
  27. package/lib/cjs/Editing/Constants.js.map +1 -1
  28. package/lib/cjs/Editing/CustomAttributes.d.ts +2 -1
  29. package/lib/cjs/Editing/CustomAttributes.d.ts.map +1 -1
  30. package/lib/cjs/Editing/CustomAttributes.js +3 -0
  31. package/lib/cjs/Editing/CustomAttributes.js.map +1 -1
  32. package/lib/cjs/Editing/ECClasses.d.ts +6 -1
  33. package/lib/cjs/Editing/ECClasses.d.ts.map +1 -1
  34. package/lib/cjs/Editing/ECClasses.js +48 -49
  35. package/lib/cjs/Editing/ECClasses.js.map +1 -1
  36. package/lib/cjs/Editing/Editor.d.ts +2 -2
  37. package/lib/cjs/Editing/Editor.d.ts.map +1 -1
  38. package/lib/cjs/Editing/Editor.js +32 -21
  39. package/lib/cjs/Editing/Editor.js.map +1 -1
  40. package/lib/cjs/Editing/Entities.d.ts +2 -1
  41. package/lib/cjs/Editing/Entities.d.ts.map +1 -1
  42. package/lib/cjs/Editing/Entities.js +18 -14
  43. package/lib/cjs/Editing/Entities.js.map +1 -1
  44. package/lib/cjs/Editing/Enumerations.d.ts +2 -1
  45. package/lib/cjs/Editing/Enumerations.d.ts.map +1 -1
  46. package/lib/cjs/Editing/Enumerations.js +6 -3
  47. package/lib/cjs/Editing/Enumerations.js.map +1 -1
  48. package/lib/cjs/Editing/Exception.js +35 -6
  49. package/lib/cjs/Editing/Exception.js.map +1 -1
  50. package/lib/cjs/Editing/Formats.d.ts +2 -1
  51. package/lib/cjs/Editing/Formats.d.ts.map +1 -1
  52. package/lib/cjs/Editing/Formats.js +5 -1
  53. package/lib/cjs/Editing/Formats.js.map +1 -1
  54. package/lib/cjs/Editing/InvertedUnits.d.ts +2 -1
  55. package/lib/cjs/Editing/InvertedUnits.d.ts.map +1 -1
  56. package/lib/cjs/Editing/InvertedUnits.js +10 -6
  57. package/lib/cjs/Editing/InvertedUnits.js.map +1 -1
  58. package/lib/cjs/Editing/KindOfQuantities.d.ts +2 -1
  59. package/lib/cjs/Editing/KindOfQuantities.d.ts.map +1 -1
  60. package/lib/cjs/Editing/KindOfQuantities.js +11 -7
  61. package/lib/cjs/Editing/KindOfQuantities.js.map +1 -1
  62. package/lib/cjs/Editing/Mixins.d.ts +2 -1
  63. package/lib/cjs/Editing/Mixins.d.ts.map +1 -1
  64. package/lib/cjs/Editing/Mixins.js +13 -9
  65. package/lib/cjs/Editing/Mixins.js.map +1 -1
  66. package/lib/cjs/Editing/Mutable/MutableArrayProperty.js.map +1 -1
  67. package/lib/cjs/Editing/Mutable/MutableCAClass.js.map +1 -1
  68. package/lib/cjs/Editing/Mutable/MutableClass.d.ts +2 -1
  69. package/lib/cjs/Editing/Mutable/MutableClass.d.ts.map +1 -1
  70. package/lib/cjs/Editing/Mutable/MutableClass.js.map +1 -1
  71. package/lib/cjs/Editing/Mutable/MutableConstant.js.map +1 -1
  72. package/lib/cjs/Editing/Mutable/MutableEntityClass.js.map +1 -1
  73. package/lib/cjs/Editing/Mutable/MutableEnumeration.js.map +1 -1
  74. package/lib/cjs/Editing/Mutable/MutableFormat.d.ts +8 -1
  75. package/lib/cjs/Editing/Mutable/MutableFormat.d.ts.map +1 -1
  76. package/lib/cjs/Editing/Mutable/MutableFormat.js.map +1 -1
  77. package/lib/cjs/Editing/Mutable/MutableInvertedUnit.js.map +1 -1
  78. package/lib/cjs/Editing/Mutable/MutableKindOfQuantity.js.map +1 -1
  79. package/lib/cjs/Editing/Mutable/MutableMixin.js.map +1 -1
  80. package/lib/cjs/Editing/Mutable/MutableNavigationProperty.js.map +1 -1
  81. package/lib/cjs/Editing/Mutable/MutablePhenomenon.js.map +1 -1
  82. package/lib/cjs/Editing/Mutable/MutablePrimitiveOrEnumProperty.js.map +1 -1
  83. package/lib/cjs/Editing/Mutable/MutableProperty.js.map +1 -1
  84. package/lib/cjs/Editing/Mutable/MutablePropertyCategory.js.map +1 -1
  85. package/lib/cjs/Editing/Mutable/MutableRelationshipClass.js.map +1 -1
  86. package/lib/cjs/Editing/Mutable/MutableSchema.js.map +1 -1
  87. package/lib/cjs/Editing/Mutable/MutableSchemaItem.js.map +1 -1
  88. package/lib/cjs/Editing/Mutable/MutableStructProperty.js.map +1 -1
  89. package/lib/cjs/Editing/Mutable/MutableUnit.js.map +1 -1
  90. package/lib/cjs/Editing/Mutable/MutableUnitSystem.js.map +1 -1
  91. package/lib/cjs/Editing/Phenomena.d.ts +2 -1
  92. package/lib/cjs/Editing/Phenomena.d.ts.map +1 -1
  93. package/lib/cjs/Editing/Phenomena.js +3 -0
  94. package/lib/cjs/Editing/Phenomena.js.map +1 -1
  95. package/lib/cjs/Editing/Properties.d.ts +2 -2
  96. package/lib/cjs/Editing/Properties.d.ts.map +1 -1
  97. package/lib/cjs/Editing/Properties.js +6 -4
  98. package/lib/cjs/Editing/Properties.js.map +1 -1
  99. package/lib/cjs/Editing/PropertyCategories.d.ts +2 -1
  100. package/lib/cjs/Editing/PropertyCategories.d.ts.map +1 -1
  101. package/lib/cjs/Editing/PropertyCategories.js +5 -1
  102. package/lib/cjs/Editing/PropertyCategories.js.map +1 -1
  103. package/lib/cjs/Editing/RelationshipClasses.d.ts +1 -0
  104. package/lib/cjs/Editing/RelationshipClasses.d.ts.map +1 -1
  105. package/lib/cjs/Editing/RelationshipClasses.js +17 -10
  106. package/lib/cjs/Editing/RelationshipClasses.js.map +1 -1
  107. package/lib/cjs/Editing/SchemaItems.d.ts +2 -2
  108. package/lib/cjs/Editing/SchemaItems.d.ts.map +1 -1
  109. package/lib/cjs/Editing/SchemaItems.js +8 -11
  110. package/lib/cjs/Editing/SchemaItems.js.map +1 -1
  111. package/lib/cjs/Editing/Structs.d.ts +2 -1
  112. package/lib/cjs/Editing/Structs.d.ts.map +1 -1
  113. package/lib/cjs/Editing/Structs.js +3 -0
  114. package/lib/cjs/Editing/Structs.js.map +1 -1
  115. package/lib/cjs/Editing/UnitSystems.d.ts +2 -1
  116. package/lib/cjs/Editing/UnitSystems.d.ts.map +1 -1
  117. package/lib/cjs/Editing/UnitSystems.js +3 -0
  118. package/lib/cjs/Editing/UnitSystems.js.map +1 -1
  119. package/lib/cjs/Editing/Units.d.ts +2 -1
  120. package/lib/cjs/Editing/Units.d.ts.map +1 -1
  121. package/lib/cjs/Editing/Units.js +5 -2
  122. package/lib/cjs/Editing/Units.js.map +1 -1
  123. package/lib/cjs/Merging/ClassMerger.js.map +1 -1
  124. package/lib/cjs/Merging/ConstantMerger.js +4 -4
  125. package/lib/cjs/Merging/ConstantMerger.js.map +1 -1
  126. package/lib/cjs/Merging/CustomAttributeClassMerger.js.map +1 -1
  127. package/lib/cjs/Merging/CustomAttributeMerger.d.ts.map +1 -1
  128. package/lib/cjs/Merging/CustomAttributeMerger.js +7 -6
  129. package/lib/cjs/Merging/CustomAttributeMerger.js.map +1 -1
  130. package/lib/cjs/Merging/Edits/NameMapping.d.ts +22 -0
  131. package/lib/cjs/Merging/Edits/NameMapping.d.ts.map +1 -0
  132. package/lib/cjs/Merging/Edits/NameMapping.js +54 -0
  133. package/lib/cjs/Merging/Edits/NameMapping.js.map +1 -0
  134. package/lib/cjs/Merging/Edits/RenameEditHandler.d.ts +1 -1
  135. package/lib/cjs/Merging/Edits/RenameEditHandler.d.ts.map +1 -1
  136. package/lib/cjs/Merging/Edits/RenameEditHandler.js +1 -260
  137. package/lib/cjs/Merging/Edits/RenameEditHandler.js.map +1 -1
  138. package/lib/cjs/Merging/Edits/SchemaEdits.d.ts +9 -6
  139. package/lib/cjs/Merging/Edits/SchemaEdits.d.ts.map +1 -1
  140. package/lib/cjs/Merging/Edits/SchemaEdits.js +19 -14
  141. package/lib/cjs/Merging/Edits/SchemaEdits.js.map +1 -1
  142. package/lib/cjs/Merging/Edits/SkipEditHandler.js.map +1 -1
  143. package/lib/cjs/Merging/EntityClassMerger.js +1 -2
  144. package/lib/cjs/Merging/EntityClassMerger.js.map +1 -1
  145. package/lib/cjs/Merging/EnumerationMerger.js +1 -1
  146. package/lib/cjs/Merging/EnumerationMerger.js.map +1 -1
  147. package/lib/cjs/Merging/EnumeratorMerger.d.ts.map +1 -1
  148. package/lib/cjs/Merging/EnumeratorMerger.js +2 -2
  149. package/lib/cjs/Merging/EnumeratorMerger.js.map +1 -1
  150. package/lib/cjs/Merging/FormatMerger.d.ts +24 -0
  151. package/lib/cjs/Merging/FormatMerger.d.ts.map +1 -0
  152. package/lib/cjs/Merging/FormatMerger.js +143 -0
  153. package/lib/cjs/Merging/FormatMerger.js.map +1 -0
  154. package/lib/cjs/Merging/InvertedUnitMerger.d.ts +14 -0
  155. package/lib/cjs/Merging/InvertedUnitMerger.d.ts.map +1 -0
  156. package/lib/cjs/Merging/InvertedUnitMerger.js +45 -0
  157. package/lib/cjs/Merging/InvertedUnitMerger.js.map +1 -0
  158. package/lib/cjs/Merging/KindOfQuantityMerger.d.ts +1 -1
  159. package/lib/cjs/Merging/KindOfQuantityMerger.d.ts.map +1 -1
  160. package/lib/cjs/Merging/KindOfQuantityMerger.js +4 -5
  161. package/lib/cjs/Merging/KindOfQuantityMerger.js.map +1 -1
  162. package/lib/cjs/Merging/MixinMerger.js +1 -1
  163. package/lib/cjs/Merging/MixinMerger.js.map +1 -1
  164. package/lib/cjs/Merging/PhenomenonMerger.js +1 -1
  165. package/lib/cjs/Merging/PhenomenonMerger.js.map +1 -1
  166. package/lib/cjs/Merging/PropertyCategoryMerger.js.map +1 -1
  167. package/lib/cjs/Merging/PropertyMerger.js +28 -26
  168. package/lib/cjs/Merging/PropertyMerger.js.map +1 -1
  169. package/lib/cjs/Merging/RelationshipClassMerger.d.ts.map +1 -1
  170. package/lib/cjs/Merging/RelationshipClassMerger.js +4 -4
  171. package/lib/cjs/Merging/RelationshipClassMerger.js.map +1 -1
  172. package/lib/cjs/Merging/SchemaMerger.d.ts +5 -3
  173. package/lib/cjs/Merging/SchemaMerger.d.ts.map +1 -1
  174. package/lib/cjs/Merging/SchemaMerger.js +45 -5
  175. package/lib/cjs/Merging/SchemaMerger.js.map +1 -1
  176. package/lib/cjs/Merging/SchemaMergingVisitor.d.ts +14 -8
  177. package/lib/cjs/Merging/SchemaMergingVisitor.d.ts.map +1 -1
  178. package/lib/cjs/Merging/SchemaMergingVisitor.js +42 -17
  179. package/lib/cjs/Merging/SchemaMergingVisitor.js.map +1 -1
  180. package/lib/cjs/Merging/SchemaMergingWalker.d.ts.map +1 -1
  181. package/lib/cjs/Merging/SchemaMergingWalker.js +2 -0
  182. package/lib/cjs/Merging/SchemaMergingWalker.js.map +1 -1
  183. package/lib/cjs/Merging/SchemaReferenceMerger.js.map +1 -1
  184. package/lib/cjs/Merging/StructClassMerger.js.map +1 -1
  185. package/lib/cjs/Merging/UnitMerger.d.ts +14 -0
  186. package/lib/cjs/Merging/UnitMerger.d.ts.map +1 -0
  187. package/lib/cjs/Merging/UnitMerger.js +62 -0
  188. package/lib/cjs/Merging/UnitMerger.js.map +1 -0
  189. package/lib/cjs/Merging/UnitSystemMerger.js.map +1 -1
  190. package/lib/cjs/Merging/Utils.d.ts +11 -0
  191. package/lib/cjs/Merging/Utils.d.ts.map +1 -1
  192. package/lib/cjs/Merging/Utils.js +23 -3
  193. package/lib/cjs/Merging/Utils.js.map +1 -1
  194. package/lib/cjs/Validation/Diagnostic.js +18 -16
  195. package/lib/cjs/Validation/Diagnostic.js.map +1 -1
  196. package/lib/cjs/Validation/DiagnosticReporter.js +4 -1
  197. package/lib/cjs/Validation/DiagnosticReporter.js.map +1 -1
  198. package/lib/cjs/Validation/ECRules.js +1 -1
  199. package/lib/cjs/Validation/ECRules.js.map +1 -1
  200. package/lib/cjs/Validation/LoggingDiagnosticReporter.js.map +1 -1
  201. package/lib/cjs/Validation/RuleSuppressionSet.js.map +1 -1
  202. package/lib/cjs/Validation/Rules.js.map +1 -1
  203. package/lib/cjs/Validation/SchemaChanges.js +39 -69
  204. package/lib/cjs/Validation/SchemaChanges.js.map +1 -1
  205. package/lib/cjs/Validation/SchemaCompareDiagnostics.d.ts +2 -2
  206. package/lib/cjs/Validation/SchemaCompareDiagnostics.js.map +1 -1
  207. package/lib/cjs/Validation/SchemaCompareReporter.js.map +1 -1
  208. package/lib/cjs/Validation/SchemaCompareResultDelegate.d.ts +1 -1
  209. package/lib/cjs/Validation/SchemaCompareResultDelegate.d.ts.map +1 -1
  210. package/lib/cjs/Validation/SchemaCompareResultDelegate.js +4 -1
  211. package/lib/cjs/Validation/SchemaCompareResultDelegate.js.map +1 -1
  212. package/lib/cjs/Validation/SchemaCompareVisitor.d.ts.map +1 -1
  213. package/lib/cjs/Validation/SchemaCompareVisitor.js +23 -23
  214. package/lib/cjs/Validation/SchemaCompareVisitor.js.map +1 -1
  215. package/lib/cjs/Validation/SchemaComparer.d.ts +22 -1
  216. package/lib/cjs/Validation/SchemaComparer.d.ts.map +1 -1
  217. package/lib/cjs/Validation/SchemaComparer.js +30 -5
  218. package/lib/cjs/Validation/SchemaComparer.js.map +1 -1
  219. package/lib/cjs/Validation/SchemaValidater.js +1 -4
  220. package/lib/cjs/Validation/SchemaValidater.js.map +1 -1
  221. package/lib/cjs/Validation/SchemaValidationVisitor.js +3 -4
  222. package/lib/cjs/Validation/SchemaValidationVisitor.js.map +1 -1
  223. package/lib/cjs/Validation/SchemaWalker.d.ts +1 -1
  224. package/lib/cjs/Validation/SchemaWalker.d.ts.map +1 -1
  225. package/lib/cjs/Validation/SchemaWalker.js +6 -4
  226. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  227. package/lib/cjs/ecschema-editing.js.map +1 -1
  228. package/lib/esm/Differencing/Errors.d.ts +19 -0
  229. package/lib/esm/Differencing/Errors.d.ts.map +1 -0
  230. package/lib/esm/Differencing/Errors.js +26 -0
  231. package/lib/esm/Differencing/Errors.js.map +1 -0
  232. package/lib/esm/Differencing/SchemaConflicts.d.ts +84 -0
  233. package/lib/esm/Differencing/SchemaConflicts.d.ts.map +1 -0
  234. package/lib/esm/Differencing/SchemaConflicts.js +60 -0
  235. package/lib/esm/Differencing/SchemaConflicts.js.map +1 -0
  236. package/lib/esm/Differencing/SchemaDiagnosticVisitor.d.ts +41 -0
  237. package/lib/esm/Differencing/SchemaDiagnosticVisitor.d.ts.map +1 -0
  238. package/lib/esm/Differencing/SchemaDiagnosticVisitor.js +443 -0
  239. package/lib/esm/Differencing/SchemaDiagnosticVisitor.js.map +1 -0
  240. package/lib/esm/Differencing/SchemaDifference.d.ts +357 -0
  241. package/lib/esm/Differencing/SchemaDifference.d.ts.map +1 -0
  242. package/lib/esm/Differencing/SchemaDifference.js +106 -0
  243. package/lib/esm/Differencing/SchemaDifference.js.map +1 -0
  244. package/lib/esm/Differencing/SchemaDifferenceValidator.d.ts +18 -0
  245. package/lib/esm/Differencing/SchemaDifferenceValidator.d.ts.map +1 -0
  246. package/lib/esm/Differencing/SchemaDifferenceValidator.js +521 -0
  247. package/lib/esm/Differencing/SchemaDifferenceValidator.js.map +1 -0
  248. package/lib/esm/Differencing/SchemaDifferenceVisitor.d.ts +32 -0
  249. package/lib/esm/Differencing/SchemaDifferenceVisitor.d.ts.map +1 -0
  250. package/lib/esm/Differencing/SchemaDifferenceVisitor.js +88 -0
  251. package/lib/esm/Differencing/SchemaDifferenceVisitor.js.map +1 -0
  252. package/lib/esm/Differencing/Utils.d.ts +110 -0
  253. package/lib/esm/Differencing/Utils.d.ts.map +1 -0
  254. package/lib/esm/Differencing/Utils.js +161 -0
  255. package/lib/esm/Differencing/Utils.js.map +1 -0
  256. package/lib/esm/Editing/Constants.d.ts +22 -0
  257. package/lib/esm/Editing/Constants.d.ts.map +1 -0
  258. package/lib/esm/Editing/Constants.js +55 -0
  259. package/lib/esm/Editing/Constants.js.map +1 -0
  260. package/lib/esm/Editing/CustomAttributes.d.ts +22 -0
  261. package/lib/esm/Editing/CustomAttributes.d.ts.map +1 -0
  262. package/lib/esm/Editing/CustomAttributes.js +49 -0
  263. package/lib/esm/Editing/CustomAttributes.js.map +1 -0
  264. package/lib/esm/Editing/ECClasses.d.ts +86 -0
  265. package/lib/esm/Editing/ECClasses.d.ts.map +1 -0
  266. package/lib/esm/Editing/ECClasses.js +294 -0
  267. package/lib/esm/Editing/ECClasses.js.map +1 -0
  268. package/lib/esm/Editing/Editor.d.ts +117 -0
  269. package/lib/esm/Editing/Editor.d.ts.map +1 -0
  270. package/lib/esm/Editing/Editor.js +264 -0
  271. package/lib/esm/Editing/Editor.js.map +1 -0
  272. package/lib/esm/Editing/Entities.d.ts +38 -0
  273. package/lib/esm/Editing/Entities.d.ts.map +1 -0
  274. package/lib/esm/Editing/Entities.js +126 -0
  275. package/lib/esm/Editing/Entities.js.map +1 -0
  276. package/lib/esm/Editing/Enumerations.d.ts +25 -0
  277. package/lib/esm/Editing/Enumerations.d.ts.map +1 -0
  278. package/lib/esm/Editing/Enumerations.js +90 -0
  279. package/lib/esm/Editing/Enumerations.js.map +1 -0
  280. package/lib/esm/Editing/Exception.d.ts +358 -0
  281. package/lib/esm/Editing/Exception.d.ts.map +1 -0
  282. package/lib/esm/Editing/Exception.js +471 -0
  283. package/lib/esm/Editing/Exception.js.map +1 -0
  284. package/lib/esm/Editing/Formats.d.ts +23 -0
  285. package/lib/esm/Editing/Formats.d.ts.map +1 -0
  286. package/lib/esm/Editing/Formats.js +62 -0
  287. package/lib/esm/Editing/Formats.js.map +1 -0
  288. package/lib/esm/Editing/InvertedUnits.d.ts +19 -0
  289. package/lib/esm/Editing/InvertedUnits.d.ts.map +1 -0
  290. package/lib/esm/Editing/InvertedUnits.js +68 -0
  291. package/lib/esm/Editing/InvertedUnits.js.map +1 -0
  292. package/lib/esm/Editing/KindOfQuantities.d.ts +30 -0
  293. package/lib/esm/Editing/KindOfQuantities.d.ts.map +1 -0
  294. package/lib/esm/Editing/KindOfQuantities.js +92 -0
  295. package/lib/esm/Editing/KindOfQuantities.js.map +1 -0
  296. package/lib/esm/Editing/Mixins.d.ts +35 -0
  297. package/lib/esm/Editing/Mixins.d.ts.map +1 -0
  298. package/lib/esm/Editing/Mixins.js +90 -0
  299. package/lib/esm/Editing/Mixins.js.map +1 -0
  300. package/lib/esm/Editing/Mutable/MutableArrayProperty.d.ts +10 -0
  301. package/lib/esm/Editing/Mutable/MutableArrayProperty.d.ts.map +1 -0
  302. package/lib/esm/Editing/Mutable/MutableArrayProperty.js +12 -0
  303. package/lib/esm/Editing/Mutable/MutableArrayProperty.js.map +1 -0
  304. package/lib/esm/Editing/Mutable/MutableCAClass.d.ts +10 -0
  305. package/lib/esm/Editing/Mutable/MutableCAClass.d.ts.map +1 -0
  306. package/lib/esm/Editing/Mutable/MutableCAClass.js +12 -0
  307. package/lib/esm/Editing/Mutable/MutableCAClass.js.map +1 -0
  308. package/lib/esm/Editing/Mutable/MutableClass.d.ts +39 -0
  309. package/lib/esm/Editing/Mutable/MutableClass.d.ts.map +1 -0
  310. package/lib/esm/Editing/Mutable/MutableClass.js +18 -0
  311. package/lib/esm/Editing/Mutable/MutableClass.js.map +1 -0
  312. package/lib/esm/Editing/Mutable/MutableConstant.d.ts +14 -0
  313. package/lib/esm/Editing/Mutable/MutableConstant.d.ts.map +1 -0
  314. package/lib/esm/Editing/Mutable/MutableConstant.js +12 -0
  315. package/lib/esm/Editing/Mutable/MutableConstant.js.map +1 -0
  316. package/lib/esm/Editing/Mutable/MutableEntityClass.d.ts +12 -0
  317. package/lib/esm/Editing/Mutable/MutableEntityClass.d.ts.map +1 -0
  318. package/lib/esm/Editing/Mutable/MutableEntityClass.js +12 -0
  319. package/lib/esm/Editing/Mutable/MutableEntityClass.js.map +1 -0
  320. package/lib/esm/Editing/Mutable/MutableEnumeration.d.ts +11 -0
  321. package/lib/esm/Editing/Mutable/MutableEnumeration.d.ts.map +1 -0
  322. package/lib/esm/Editing/Mutable/MutableEnumeration.js +11 -0
  323. package/lib/esm/Editing/Mutable/MutableEnumeration.js.map +1 -0
  324. package/lib/esm/Editing/Mutable/MutableFormat.d.ts +26 -0
  325. package/lib/esm/Editing/Mutable/MutableFormat.d.ts.map +1 -0
  326. package/lib/esm/Editing/Mutable/MutableFormat.js +12 -0
  327. package/lib/esm/Editing/Mutable/MutableFormat.js.map +1 -0
  328. package/lib/esm/Editing/Mutable/MutableInvertedUnit.d.ts +11 -0
  329. package/lib/esm/Editing/Mutable/MutableInvertedUnit.d.ts.map +1 -0
  330. package/lib/esm/Editing/Mutable/MutableInvertedUnit.js +12 -0
  331. package/lib/esm/Editing/Mutable/MutableInvertedUnit.js.map +1 -0
  332. package/lib/esm/Editing/Mutable/MutableKindOfQuantity.d.ts +14 -0
  333. package/lib/esm/Editing/Mutable/MutableKindOfQuantity.d.ts.map +1 -0
  334. package/lib/esm/Editing/Mutable/MutableKindOfQuantity.js +12 -0
  335. package/lib/esm/Editing/Mutable/MutableKindOfQuantity.js.map +1 -0
  336. package/lib/esm/Editing/Mutable/MutableMixin.d.ts +12 -0
  337. package/lib/esm/Editing/Mutable/MutableMixin.d.ts.map +1 -0
  338. package/lib/esm/Editing/Mutable/MutableMixin.js +12 -0
  339. package/lib/esm/Editing/Mutable/MutableMixin.js.map +1 -0
  340. package/lib/esm/Editing/Mutable/MutableNavigationProperty.d.ts +8 -0
  341. package/lib/esm/Editing/Mutable/MutableNavigationProperty.d.ts.map +1 -0
  342. package/lib/esm/Editing/Mutable/MutableNavigationProperty.js +12 -0
  343. package/lib/esm/Editing/Mutable/MutableNavigationProperty.js.map +1 -0
  344. package/lib/esm/Editing/Mutable/MutablePhenomenon.d.ts +11 -0
  345. package/lib/esm/Editing/Mutable/MutablePhenomenon.d.ts.map +1 -0
  346. package/lib/esm/Editing/Mutable/MutablePhenomenon.js +12 -0
  347. package/lib/esm/Editing/Mutable/MutablePhenomenon.js.map +1 -0
  348. package/lib/esm/Editing/Mutable/MutablePrimitiveOrEnumProperty.d.ts +13 -0
  349. package/lib/esm/Editing/Mutable/MutablePrimitiveOrEnumProperty.d.ts.map +1 -0
  350. package/lib/esm/Editing/Mutable/MutablePrimitiveOrEnumProperty.js +12 -0
  351. package/lib/esm/Editing/Mutable/MutablePrimitiveOrEnumProperty.js.map +1 -0
  352. package/lib/esm/Editing/Mutable/MutableProperty.d.ts +16 -0
  353. package/lib/esm/Editing/Mutable/MutableProperty.d.ts.map +1 -0
  354. package/lib/esm/Editing/Mutable/MutableProperty.js +12 -0
  355. package/lib/esm/Editing/Mutable/MutableProperty.js.map +1 -0
  356. package/lib/esm/Editing/Mutable/MutablePropertyCategory.d.ts +11 -0
  357. package/lib/esm/Editing/Mutable/MutablePropertyCategory.d.ts.map +1 -0
  358. package/lib/esm/Editing/Mutable/MutablePropertyCategory.js +12 -0
  359. package/lib/esm/Editing/Mutable/MutablePropertyCategory.js.map +1 -0
  360. package/lib/esm/Editing/Mutable/MutableRelationshipClass.d.ts +30 -0
  361. package/lib/esm/Editing/Mutable/MutableRelationshipClass.d.ts.map +1 -0
  362. package/lib/esm/Editing/Mutable/MutableRelationshipClass.js +20 -0
  363. package/lib/esm/Editing/Mutable/MutableRelationshipClass.js.map +1 -0
  364. package/lib/esm/Editing/Mutable/MutableSchema.d.ts +51 -0
  365. package/lib/esm/Editing/Mutable/MutableSchema.d.ts.map +1 -0
  366. package/lib/esm/Editing/Mutable/MutableSchema.js +14 -0
  367. package/lib/esm/Editing/Mutable/MutableSchema.js.map +1 -0
  368. package/lib/esm/Editing/Mutable/MutableSchemaItem.d.ts +11 -0
  369. package/lib/esm/Editing/Mutable/MutableSchemaItem.d.ts.map +1 -0
  370. package/lib/esm/Editing/Mutable/MutableSchemaItem.js +12 -0
  371. package/lib/esm/Editing/Mutable/MutableSchemaItem.js.map +1 -0
  372. package/lib/esm/Editing/Mutable/MutableStructProperty.d.ts +8 -0
  373. package/lib/esm/Editing/Mutable/MutableStructProperty.d.ts.map +1 -0
  374. package/lib/esm/Editing/Mutable/MutableStructProperty.js +12 -0
  375. package/lib/esm/Editing/Mutable/MutableStructProperty.js.map +1 -0
  376. package/lib/esm/Editing/Mutable/MutableUnit.d.ts +12 -0
  377. package/lib/esm/Editing/Mutable/MutableUnit.d.ts.map +1 -0
  378. package/lib/esm/Editing/Mutable/MutableUnit.js +12 -0
  379. package/lib/esm/Editing/Mutable/MutableUnit.js.map +1 -0
  380. package/lib/esm/Editing/Mutable/MutableUnitSystem.d.ts +10 -0
  381. package/lib/esm/Editing/Mutable/MutableUnitSystem.d.ts.map +1 -0
  382. package/lib/esm/Editing/Mutable/MutableUnitSystem.js +12 -0
  383. package/lib/esm/Editing/Mutable/MutableUnitSystem.js.map +1 -0
  384. package/lib/esm/Editing/Phenomena.d.ts +17 -0
  385. package/lib/esm/Editing/Phenomena.d.ts.map +1 -0
  386. package/lib/esm/Editing/Phenomena.js +44 -0
  387. package/lib/esm/Editing/Phenomena.js.map +1 -0
  388. package/lib/esm/Editing/Properties.d.ts +206 -0
  389. package/lib/esm/Editing/Properties.d.ts.map +1 -0
  390. package/lib/esm/Editing/Properties.js +415 -0
  391. package/lib/esm/Editing/Properties.js.map +1 -0
  392. package/lib/esm/Editing/PropertyCategories.d.ts +18 -0
  393. package/lib/esm/Editing/PropertyCategories.d.ts.map +1 -0
  394. package/lib/esm/Editing/PropertyCategories.js +54 -0
  395. package/lib/esm/Editing/PropertyCategories.js.map +1 -0
  396. package/lib/esm/Editing/RelationshipClasses.d.ts +69 -0
  397. package/lib/esm/Editing/RelationshipClasses.d.ts.map +1 -0
  398. package/lib/esm/Editing/RelationshipClasses.js +236 -0
  399. package/lib/esm/Editing/RelationshipClasses.js.map +1 -0
  400. package/lib/esm/Editing/SchemaItems.d.ts +42 -0
  401. package/lib/esm/Editing/SchemaItems.d.ts.map +1 -0
  402. package/lib/esm/Editing/SchemaItems.js +104 -0
  403. package/lib/esm/Editing/SchemaItems.js.map +1 -0
  404. package/lib/esm/Editing/Structs.d.ts +21 -0
  405. package/lib/esm/Editing/Structs.d.ts.map +1 -0
  406. package/lib/esm/Editing/Structs.js +47 -0
  407. package/lib/esm/Editing/Structs.js.map +1 -0
  408. package/lib/esm/Editing/UnitSystems.d.ts +17 -0
  409. package/lib/esm/Editing/UnitSystems.d.ts.map +1 -0
  410. package/lib/esm/Editing/UnitSystems.js +43 -0
  411. package/lib/esm/Editing/UnitSystems.js.map +1 -0
  412. package/lib/esm/Editing/Units.d.ts +17 -0
  413. package/lib/esm/Editing/Units.d.ts.map +1 -0
  414. package/lib/esm/Editing/Units.js +49 -0
  415. package/lib/esm/Editing/Units.js.map +1 -0
  416. package/lib/esm/Merging/ClassMerger.d.ts +9 -0
  417. package/lib/esm/Merging/ClassMerger.d.ts.map +1 -0
  418. package/lib/esm/Merging/ClassMerger.js +66 -0
  419. package/lib/esm/Merging/ClassMerger.js.map +1 -0
  420. package/lib/esm/Merging/ConstantMerger.d.ts +14 -0
  421. package/lib/esm/Merging/ConstantMerger.d.ts.map +1 -0
  422. package/lib/esm/Merging/ConstantMerger.js +64 -0
  423. package/lib/esm/Merging/ConstantMerger.js.map +1 -0
  424. package/lib/esm/Merging/CustomAttributeClassMerger.d.ts +14 -0
  425. package/lib/esm/Merging/CustomAttributeClassMerger.d.ts.map +1 -0
  426. package/lib/esm/Merging/CustomAttributeClassMerger.js +36 -0
  427. package/lib/esm/Merging/CustomAttributeClassMerger.js.map +1 -0
  428. package/lib/esm/Merging/CustomAttributeMerger.d.ts +19 -0
  429. package/lib/esm/Merging/CustomAttributeMerger.d.ts.map +1 -0
  430. package/lib/esm/Merging/CustomAttributeMerger.js +66 -0
  431. package/lib/esm/Merging/CustomAttributeMerger.js.map +1 -0
  432. package/lib/esm/Merging/Edits/NameMapping.d.ts +22 -0
  433. package/lib/esm/Merging/Edits/NameMapping.d.ts.map +1 -0
  434. package/lib/esm/Merging/Edits/NameMapping.js +49 -0
  435. package/lib/esm/Merging/Edits/NameMapping.js.map +1 -0
  436. package/lib/esm/Merging/Edits/RenameEditHandler.d.ts +14 -0
  437. package/lib/esm/Merging/Edits/RenameEditHandler.d.ts.map +1 -0
  438. package/lib/esm/Merging/Edits/RenameEditHandler.js +62 -0
  439. package/lib/esm/Merging/Edits/RenameEditHandler.js.map +1 -0
  440. package/lib/esm/Merging/Edits/SchemaEdits.d.ts +81 -0
  441. package/lib/esm/Merging/Edits/SchemaEdits.d.ts.map +1 -0
  442. package/lib/esm/Merging/Edits/SchemaEdits.js +112 -0
  443. package/lib/esm/Merging/Edits/SchemaEdits.js.map +1 -0
  444. package/lib/esm/Merging/Edits/SkipEditHandler.d.ts +14 -0
  445. package/lib/esm/Merging/Edits/SkipEditHandler.d.ts.map +1 -0
  446. package/lib/esm/Merging/Edits/SkipEditHandler.js +60 -0
  447. package/lib/esm/Merging/Edits/SkipEditHandler.js.map +1 -0
  448. package/lib/esm/Merging/EntityClassMerger.d.ts +19 -0
  449. package/lib/esm/Merging/EntityClassMerger.d.ts.map +1 -0
  450. package/lib/esm/Merging/EntityClassMerger.js +39 -0
  451. package/lib/esm/Merging/EntityClassMerger.js.map +1 -0
  452. package/lib/esm/Merging/EnumerationMerger.d.ts +14 -0
  453. package/lib/esm/Merging/EnumerationMerger.d.ts.map +1 -0
  454. package/lib/esm/Merging/EnumerationMerger.js +48 -0
  455. package/lib/esm/Merging/EnumerationMerger.js.map +1 -0
  456. package/lib/esm/Merging/EnumeratorMerger.d.ts +14 -0
  457. package/lib/esm/Merging/EnumeratorMerger.d.ts.map +1 -0
  458. package/lib/esm/Merging/EnumeratorMerger.js +36 -0
  459. package/lib/esm/Merging/EnumeratorMerger.js.map +1 -0
  460. package/lib/esm/Merging/FormatMerger.d.ts +24 -0
  461. package/lib/esm/Merging/FormatMerger.d.ts.map +1 -0
  462. package/lib/esm/Merging/FormatMerger.js +137 -0
  463. package/lib/esm/Merging/FormatMerger.js.map +1 -0
  464. package/lib/esm/Merging/InvertedUnitMerger.d.ts +14 -0
  465. package/lib/esm/Merging/InvertedUnitMerger.d.ts.map +1 -0
  466. package/lib/esm/Merging/InvertedUnitMerger.js +41 -0
  467. package/lib/esm/Merging/InvertedUnitMerger.js.map +1 -0
  468. package/lib/esm/Merging/KindOfQuantityMerger.d.ts +19 -0
  469. package/lib/esm/Merging/KindOfQuantityMerger.d.ts.map +1 -0
  470. package/lib/esm/Merging/KindOfQuantityMerger.js +89 -0
  471. package/lib/esm/Merging/KindOfQuantityMerger.js.map +1 -0
  472. package/lib/esm/Merging/MixinMerger.d.ts +14 -0
  473. package/lib/esm/Merging/MixinMerger.d.ts.map +1 -0
  474. package/lib/esm/Merging/MixinMerger.js +33 -0
  475. package/lib/esm/Merging/MixinMerger.js.map +1 -0
  476. package/lib/esm/Merging/PhenomenonMerger.d.ts +14 -0
  477. package/lib/esm/Merging/PhenomenonMerger.d.ts.map +1 -0
  478. package/lib/esm/Merging/PhenomenonMerger.js +36 -0
  479. package/lib/esm/Merging/PhenomenonMerger.js.map +1 -0
  480. package/lib/esm/Merging/PropertyCategoryMerger.d.ts +14 -0
  481. package/lib/esm/Merging/PropertyCategoryMerger.d.ts.map +1 -0
  482. package/lib/esm/Merging/PropertyCategoryMerger.js +31 -0
  483. package/lib/esm/Merging/PropertyCategoryMerger.js.map +1 -0
  484. package/lib/esm/Merging/PropertyMerger.d.ts +12 -0
  485. package/lib/esm/Merging/PropertyMerger.d.ts.map +1 -0
  486. package/lib/esm/Merging/PropertyMerger.js +228 -0
  487. package/lib/esm/Merging/PropertyMerger.js.map +1 -0
  488. package/lib/esm/Merging/RelationshipClassMerger.d.ts +27 -0
  489. package/lib/esm/Merging/RelationshipClassMerger.d.ts.map +1 -0
  490. package/lib/esm/Merging/RelationshipClassMerger.js +136 -0
  491. package/lib/esm/Merging/RelationshipClassMerger.js.map +1 -0
  492. package/lib/esm/Merging/SchemaMerger.d.ts +49 -0
  493. package/lib/esm/Merging/SchemaMerger.d.ts.map +1 -0
  494. package/lib/esm/Merging/SchemaMerger.js +117 -0
  495. package/lib/esm/Merging/SchemaMerger.js.map +1 -0
  496. package/lib/esm/Merging/SchemaMergingVisitor.d.ts +149 -0
  497. package/lib/esm/Merging/SchemaMergingVisitor.d.ts.map +1 -0
  498. package/lib/esm/Merging/SchemaMergingVisitor.js +339 -0
  499. package/lib/esm/Merging/SchemaMergingVisitor.js.map +1 -0
  500. package/lib/esm/Merging/SchemaMergingWalker.d.ts +19 -0
  501. package/lib/esm/Merging/SchemaMergingWalker.d.ts.map +1 -0
  502. package/lib/esm/Merging/SchemaMergingWalker.js +61 -0
  503. package/lib/esm/Merging/SchemaMergingWalker.js.map +1 -0
  504. package/lib/esm/Merging/SchemaReferenceMerger.d.ts +13 -0
  505. package/lib/esm/Merging/SchemaReferenceMerger.d.ts.map +1 -0
  506. package/lib/esm/Merging/SchemaReferenceMerger.js +57 -0
  507. package/lib/esm/Merging/SchemaReferenceMerger.js.map +1 -0
  508. package/lib/esm/Merging/StructClassMerger.d.ts +14 -0
  509. package/lib/esm/Merging/StructClassMerger.d.ts.map +1 -0
  510. package/lib/esm/Merging/StructClassMerger.js +20 -0
  511. package/lib/esm/Merging/StructClassMerger.js.map +1 -0
  512. package/lib/esm/Merging/UnitMerger.d.ts +14 -0
  513. package/lib/esm/Merging/UnitMerger.d.ts.map +1 -0
  514. package/lib/esm/Merging/UnitMerger.js +58 -0
  515. package/lib/esm/Merging/UnitMerger.js.map +1 -0
  516. package/lib/esm/Merging/UnitSystemMerger.d.ts +14 -0
  517. package/lib/esm/Merging/UnitSystemMerger.d.ts.map +1 -0
  518. package/lib/esm/Merging/UnitSystemMerger.js +24 -0
  519. package/lib/esm/Merging/UnitSystemMerger.js.map +1 -0
  520. package/lib/esm/Merging/Utils.d.ts +34 -0
  521. package/lib/esm/Merging/Utils.d.ts.map +1 -0
  522. package/lib/esm/Merging/Utils.js +90 -0
  523. package/lib/esm/Merging/Utils.js.map +1 -0
  524. package/lib/esm/Validation/Diagnostic.d.ts +322 -0
  525. package/lib/esm/Validation/Diagnostic.d.ts.map +1 -0
  526. package/lib/esm/Validation/Diagnostic.js +295 -0
  527. package/lib/esm/Validation/Diagnostic.js.map +1 -0
  528. package/lib/esm/Validation/DiagnosticReporter.d.ts +97 -0
  529. package/lib/esm/Validation/DiagnosticReporter.d.ts.map +1 -0
  530. package/lib/esm/Validation/DiagnosticReporter.js +105 -0
  531. package/lib/esm/Validation/DiagnosticReporter.js.map +1 -0
  532. package/lib/esm/Validation/ECRules.d.ts +454 -0
  533. package/lib/esm/Validation/ECRules.d.ts.map +1 -0
  534. package/lib/esm/Validation/ECRules.js +578 -0
  535. package/lib/esm/Validation/ECRules.js.map +1 -0
  536. package/lib/esm/Validation/LoggingDiagnosticReporter.d.ts +14 -0
  537. package/lib/esm/Validation/LoggingDiagnosticReporter.d.ts.map +1 -0
  538. package/lib/esm/Validation/LoggingDiagnosticReporter.js +37 -0
  539. package/lib/esm/Validation/LoggingDiagnosticReporter.js.map +1 -0
  540. package/lib/esm/Validation/RuleSuppressionSet.d.ts +60 -0
  541. package/lib/esm/Validation/RuleSuppressionSet.d.ts.map +1 -0
  542. package/lib/esm/Validation/RuleSuppressionSet.js +9 -0
  543. package/lib/esm/Validation/RuleSuppressionSet.js.map +1 -0
  544. package/lib/esm/Validation/Rules.d.ts +65 -0
  545. package/lib/esm/Validation/Rules.d.ts.map +1 -0
  546. package/lib/esm/Validation/Rules.js +9 -0
  547. package/lib/esm/Validation/Rules.js.map +1 -0
  548. package/lib/esm/Validation/SchemaChanges.d.ts +640 -0
  549. package/lib/esm/Validation/SchemaChanges.d.ts.map +1 -0
  550. package/lib/esm/Validation/SchemaChanges.js +1141 -0
  551. package/lib/esm/Validation/SchemaChanges.js.map +1 -0
  552. package/lib/esm/Validation/SchemaCompareDiagnostics.d.ts +423 -0
  553. package/lib/esm/Validation/SchemaCompareDiagnostics.d.ts.map +1 -0
  554. package/lib/esm/Validation/SchemaCompareDiagnostics.js +109 -0
  555. package/lib/esm/Validation/SchemaCompareDiagnostics.js.map +1 -0
  556. package/lib/esm/Validation/SchemaCompareReporter.d.ts +12 -0
  557. package/lib/esm/Validation/SchemaCompareReporter.d.ts.map +1 -0
  558. package/lib/esm/Validation/SchemaCompareReporter.js +9 -0
  559. package/lib/esm/Validation/SchemaCompareReporter.js.map +1 -0
  560. package/lib/esm/Validation/SchemaCompareResultDelegate.d.ts +237 -0
  561. package/lib/esm/Validation/SchemaCompareResultDelegate.d.ts.map +1 -0
  562. package/lib/esm/Validation/SchemaCompareResultDelegate.js +346 -0
  563. package/lib/esm/Validation/SchemaCompareResultDelegate.js.map +1 -0
  564. package/lib/esm/Validation/SchemaCompareVisitor.d.ts +120 -0
  565. package/lib/esm/Validation/SchemaCompareVisitor.d.ts.map +1 -0
  566. package/lib/esm/Validation/SchemaCompareVisitor.js +222 -0
  567. package/lib/esm/Validation/SchemaCompareVisitor.js.map +1 -0
  568. package/lib/esm/Validation/SchemaComparer.d.ts +211 -0
  569. package/lib/esm/Validation/SchemaComparer.d.ts.map +1 -0
  570. package/lib/esm/Validation/SchemaComparer.js +770 -0
  571. package/lib/esm/Validation/SchemaComparer.js.map +1 -0
  572. package/lib/esm/Validation/SchemaValidater.d.ts +20 -0
  573. package/lib/esm/Validation/SchemaValidater.d.ts.map +1 -0
  574. package/lib/esm/Validation/SchemaValidater.js +55 -0
  575. package/lib/esm/Validation/SchemaValidater.js.map +1 -0
  576. package/lib/esm/Validation/SchemaValidationVisitor.d.ts +171 -0
  577. package/lib/esm/Validation/SchemaValidationVisitor.d.ts.map +1 -0
  578. package/lib/esm/Validation/SchemaValidationVisitor.js +488 -0
  579. package/lib/esm/Validation/SchemaValidationVisitor.js.map +1 -0
  580. package/lib/esm/Validation/SchemaWalker.d.ts +23 -0
  581. package/lib/esm/Validation/SchemaWalker.d.ts.map +1 -0
  582. package/lib/esm/Validation/SchemaWalker.js +50 -0
  583. package/lib/esm/Validation/SchemaWalker.js.map +1 -0
  584. package/lib/esm/ecschema-editing.d.ts +49 -0
  585. package/lib/esm/ecschema-editing.d.ts.map +1 -0
  586. package/lib/esm/ecschema-editing.js +52 -0
  587. package/lib/esm/ecschema-editing.js.map +1 -0
  588. package/package.json +19 -17
  589. package/public/locales/en/ECSchemaEditing.json +26 -26
@@ -0,0 +1,443 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Differencing
7
+ */
8
+ import { SchemaCompareCodes } from "../Validation/SchemaCompareDiagnostics";
9
+ import { Property, RelationshipConstraint, Schema, SchemaItem, } from "@itwin/ecschema-metadata";
10
+ import { SchemaOtherTypes, } from "./SchemaDifference";
11
+ /**
12
+ * The SchemaDiagnosticVisitor is a visitor implementation for diagnostic entries
13
+ * from the schema comparer api. Depending on the diagnostic code, the difference
14
+ * result is build together.
15
+ * @internal
16
+ */
17
+ export class SchemaDiagnosticVisitor {
18
+ schemaDifferences;
19
+ schemaItemDifferences;
20
+ schemaItemPathDifferences;
21
+ customAttributeDifferences;
22
+ constructor() {
23
+ this.schemaDifferences = [];
24
+ this.schemaItemDifferences = [];
25
+ this.schemaItemPathDifferences = [];
26
+ this.customAttributeDifferences = [];
27
+ }
28
+ /**
29
+ * Visitor function to process the schema change diagnostic object.
30
+ * @internal
31
+ */
32
+ visit(diagnostic) {
33
+ switch (diagnostic.code) {
34
+ case SchemaCompareCodes.SchemaDelta:
35
+ return this.visitChangedSchemaProperties(diagnostic);
36
+ case SchemaCompareCodes.SchemaReferenceMissing:
37
+ return this.visitSchemaReference(diagnostic, "add");
38
+ case SchemaCompareCodes.SchemaReferenceDelta:
39
+ return this.visitSchemaReference(diagnostic, "modify");
40
+ case SchemaCompareCodes.SchemaItemMissing:
41
+ return this.visitMissingSchemaItem(diagnostic);
42
+ case SchemaCompareCodes.SchemaItemDelta:
43
+ case SchemaCompareCodes.ClassDelta:
44
+ case SchemaCompareCodes.ConstantDelta:
45
+ case SchemaCompareCodes.CustomAttributeClassDelta:
46
+ case SchemaCompareCodes.FormatDelta:
47
+ case SchemaCompareCodes.InvertedUnitDelta:
48
+ case SchemaCompareCodes.KoqDelta:
49
+ case SchemaCompareCodes.MixinDelta:
50
+ case SchemaCompareCodes.PhenomenonDelta:
51
+ case SchemaCompareCodes.PropertyCategoryDelta:
52
+ case SchemaCompareCodes.RelationshipDelta:
53
+ case SchemaCompareCodes.UnitDelta:
54
+ case SchemaCompareCodes.EnumerationDelta:
55
+ return this.visitChangedSchemaItem(diagnostic);
56
+ case SchemaCompareCodes.EnumeratorDelta:
57
+ return this.visitChangedEnumerator(diagnostic);
58
+ case SchemaCompareCodes.EnumeratorMissing:
59
+ return this.visitMissingEnumerator(diagnostic);
60
+ case SchemaCompareCodes.BaseClassDelta:
61
+ return this.visitMissingBaseClass(diagnostic);
62
+ case SchemaCompareCodes.EntityMixinMissing:
63
+ return this.visitMissingMixinOnClass(diagnostic);
64
+ case SchemaCompareCodes.PropertyDelta:
65
+ return this.visitChangedProperty(diagnostic);
66
+ case SchemaCompareCodes.PropertyMissing:
67
+ return this.visitMissingProperty(diagnostic);
68
+ case SchemaCompareCodes.RelationshipConstraintClassMissing:
69
+ return this.visitMissingRelationshipConstraintClass(diagnostic);
70
+ case SchemaCompareCodes.RelationshipConstraintDelta:
71
+ return this.visitChangedRelationshipConstraint(diagnostic);
72
+ case SchemaCompareCodes.CustomAttributeInstanceClassMissing:
73
+ return this.visitMissingCustomAttributeInstance(diagnostic);
74
+ case SchemaCompareCodes.PresentationUnitMissing:
75
+ return this.visitMissingPresentationUnit(diagnostic);
76
+ case SchemaCompareCodes.FormatUnitMissing:
77
+ return this.visitMissingFormatUnit(diagnostic);
78
+ case SchemaCompareCodes.UnitLabelOverrideDelta:
79
+ return this.visitChangedFormatUnitLabel(diagnostic);
80
+ }
81
+ return;
82
+ }
83
+ visitChangedSchemaProperties(diagnostic) {
84
+ let modifyEntry = this.schemaDifferences.find((entry) => {
85
+ return entry.changeType === "modify" && entry.schemaType === SchemaOtherTypes.Schema;
86
+ });
87
+ let hasChanges = false;
88
+ let addEntry = false;
89
+ if (modifyEntry === undefined) {
90
+ addEntry = true;
91
+ modifyEntry = {
92
+ changeType: "modify",
93
+ schemaType: SchemaOtherTypes.Schema,
94
+ difference: {},
95
+ };
96
+ }
97
+ // Only label and description are taken from the source schema. If the schema name or alias
98
+ // differs, those are ignored for now.
99
+ const [propertyName, propertyValue] = diagnostic.messageArgs;
100
+ if (propertyName === "label") {
101
+ modifyEntry.difference.label = propertyValue;
102
+ hasChanges = true;
103
+ }
104
+ if (propertyName === "description") {
105
+ modifyEntry.difference.description = propertyValue;
106
+ hasChanges = true;
107
+ }
108
+ if (addEntry && hasChanges) {
109
+ this.schemaDifferences.push(modifyEntry);
110
+ }
111
+ }
112
+ visitMissingSchemaItem(diagnostic) {
113
+ const schemaItem = diagnostic.ecDefinition;
114
+ this.schemaItemDifferences.push({
115
+ changeType: "add",
116
+ schemaType: schemaItem.schemaItemType,
117
+ itemName: schemaItem.name,
118
+ difference: schemaItem.toJSON(),
119
+ });
120
+ }
121
+ visitChangedSchemaItem(diagnostic) {
122
+ const schemaItem = diagnostic.ecDefinition;
123
+ const [propertyName, sourceValue, _targetValue] = diagnostic.messageArgs;
124
+ if (propertyName === "schemaItemType") {
125
+ // If the schema item type is different, the whole item is added as "new" item. The
126
+ // difference validator will then figure whether there is a conflict with items of
127
+ // of the same name.
128
+ return this.visitMissingSchemaItem(diagnostic);
129
+ }
130
+ if (sourceValue === undefined) {
131
+ return;
132
+ }
133
+ let modifyEntry = this.schemaItemDifferences.find((entry) => {
134
+ return entry.changeType === "modify" && entry.itemName === schemaItem.name;
135
+ });
136
+ if (modifyEntry === undefined) {
137
+ modifyEntry = {
138
+ changeType: "modify",
139
+ schemaType: schemaItem.schemaItemType,
140
+ itemName: schemaItem.name,
141
+ difference: {},
142
+ };
143
+ this.schemaItemDifferences.push(modifyEntry);
144
+ }
145
+ // TODO: Since propertyName is type of string, the compiler complains about accepting
146
+ // an unspecific string as property indexer. Casted to any as short term fix but that
147
+ // needs to be handled better in future.
148
+ modifyEntry.difference[propertyName] = sourceValue;
149
+ }
150
+ visitMissingEnumerator(diagnostic) {
151
+ const enumeration = diagnostic.ecDefinition;
152
+ const [enumerator] = diagnostic.messageArgs;
153
+ this.schemaItemPathDifferences.push({
154
+ changeType: "add",
155
+ schemaType: SchemaOtherTypes.Enumerator,
156
+ itemName: enumeration.name,
157
+ path: "$enumerators",
158
+ difference: enumerator,
159
+ });
160
+ }
161
+ lookupEnumeratorEntry(changeType, item, enumeratorName) {
162
+ return this.schemaItemPathDifferences.find((change) => {
163
+ return change.changeType === changeType
164
+ && change.schemaType === SchemaOtherTypes.Enumerator
165
+ && change.itemName === item
166
+ && change.path === "$enumerators"
167
+ && change.difference.name === enumeratorName;
168
+ });
169
+ }
170
+ visitChangedEnumerator(diagnostic) {
171
+ const enumeration = diagnostic.ecDefinition;
172
+ const [enumerator, propertyName, sourceValue] = diagnostic.messageArgs;
173
+ if (this.lookupEnumeratorEntry("add", enumeration.name, enumerator.name)) {
174
+ return;
175
+ }
176
+ let modifyEntry = this.schemaItemPathDifferences.find((entry) => {
177
+ return entry.changeType === "modify" && entry.schemaType === SchemaOtherTypes.Enumerator && entry.itemName === enumeration.name && entry.path === enumerator.name;
178
+ });
179
+ if (modifyEntry === undefined) {
180
+ modifyEntry = {
181
+ changeType: "modify",
182
+ schemaType: SchemaOtherTypes.Enumerator,
183
+ itemName: enumeration.name,
184
+ path: enumerator.name,
185
+ difference: {},
186
+ };
187
+ this.schemaItemPathDifferences.push(modifyEntry);
188
+ }
189
+ if (sourceValue !== undefined) {
190
+ modifyEntry.difference[propertyName] = sourceValue;
191
+ }
192
+ }
193
+ visitMissingProperty(diagnostic) {
194
+ const property = diagnostic.ecDefinition;
195
+ this.schemaItemPathDifferences.push({
196
+ changeType: "add",
197
+ schemaType: SchemaOtherTypes.Property,
198
+ itemName: property.class.name,
199
+ path: property.name,
200
+ difference: property.toJSON(),
201
+ });
202
+ }
203
+ visitChangedProperty(diagnostic) {
204
+ const property = diagnostic.ecDefinition;
205
+ const [propertyName, sourceValue] = diagnostic.messageArgs;
206
+ if (isPropertyTypeName(property, propertyName)) {
207
+ return this.visitMissingProperty(diagnostic);
208
+ }
209
+ let modifyEntry = this.schemaItemPathDifferences.find((entry) => {
210
+ return entry.changeType === "modify" && entry.schemaType === SchemaOtherTypes.Property && entry.itemName === property.class.name && entry.path === property.name;
211
+ });
212
+ if (modifyEntry === undefined) {
213
+ modifyEntry = {
214
+ changeType: "modify",
215
+ schemaType: SchemaOtherTypes.Property,
216
+ itemName: property.class.name,
217
+ path: property.name,
218
+ difference: {},
219
+ };
220
+ this.schemaItemPathDifferences.push(modifyEntry);
221
+ }
222
+ if (propertyName !== "name") {
223
+ modifyEntry.difference[propertyName] = sourceValue;
224
+ }
225
+ }
226
+ visitMissingBaseClass(diagnostic) {
227
+ const ecClass = diagnostic.ecDefinition;
228
+ const [sourceBaseClass] = diagnostic.messageArgs;
229
+ let modifyEntry = this.schemaItemDifferences.find((entry) => {
230
+ return entry.changeType === "modify" && entry.schemaType === ecClass.schemaItemType && entry.itemName === ecClass.name;
231
+ });
232
+ if (modifyEntry === undefined) {
233
+ modifyEntry = {
234
+ changeType: "modify",
235
+ schemaType: ecClass.schemaItemType,
236
+ itemName: ecClass.name,
237
+ difference: {},
238
+ };
239
+ this.schemaItemDifferences.push(modifyEntry);
240
+ }
241
+ modifyEntry.difference.baseClass = sourceBaseClass !== undefined ? sourceBaseClass.fullName : undefined;
242
+ }
243
+ visitMissingMixinOnClass(diagnostic) {
244
+ const ecClass = diagnostic.ecDefinition;
245
+ const [mixin] = diagnostic.messageArgs;
246
+ let addEntry = this.schemaItemDifferences.find((entry) => {
247
+ return entry.changeType === "add" && entry.schemaType === SchemaOtherTypes.EntityClassMixin && entry.itemName === ecClass.name;
248
+ });
249
+ if (addEntry === undefined) {
250
+ addEntry = {
251
+ changeType: "add",
252
+ schemaType: SchemaOtherTypes.EntityClassMixin,
253
+ itemName: ecClass.name,
254
+ difference: [],
255
+ };
256
+ this.schemaItemDifferences.push(addEntry);
257
+ }
258
+ addEntry.difference.push(mixin.fullName);
259
+ }
260
+ visitMissingRelationshipConstraintClass(diagnostic) {
261
+ const constraint = diagnostic.ecDefinition;
262
+ const className = constraint.relationshipClass.name;
263
+ const constraintPath = constraint.isSource ? "$source" : "$target";
264
+ let addEntry = this.schemaItemPathDifferences.find((entry) => {
265
+ return entry.changeType === "add" && entry.schemaType === SchemaOtherTypes.RelationshipConstraintClass, entry.itemName === className && entry.path === constraintPath;
266
+ });
267
+ if (!addEntry) {
268
+ addEntry = {
269
+ changeType: "add",
270
+ schemaType: SchemaOtherTypes.RelationshipConstraintClass,
271
+ itemName: className,
272
+ path: constraintPath,
273
+ difference: [],
274
+ };
275
+ this.schemaItemPathDifferences.push(addEntry);
276
+ }
277
+ const [constraintClass] = diagnostic.messageArgs;
278
+ addEntry.difference.push(constraintClass.fullName);
279
+ }
280
+ visitChangedRelationshipConstraint(diagnostic) {
281
+ const constraint = diagnostic.ecDefinition;
282
+ const className = constraint.relationshipClass.name;
283
+ const constraintPath = constraint.isSource ? "$source" : "$target";
284
+ if (this.schemaItemDifferences.find((entry) => entry.changeType === "add" && entry.itemName === className)) {
285
+ return;
286
+ }
287
+ let modifyEntry = this.schemaItemPathDifferences.find((entry) => {
288
+ return entry.changeType === "modify" && entry.schemaType === SchemaOtherTypes.RelationshipConstraint && entry.itemName === className && entry.path === constraintPath;
289
+ });
290
+ if (modifyEntry === undefined) {
291
+ modifyEntry = {
292
+ changeType: "modify",
293
+ schemaType: SchemaOtherTypes.RelationshipConstraint,
294
+ itemName: className,
295
+ path: constraintPath,
296
+ difference: {},
297
+ };
298
+ this.schemaItemPathDifferences.push(modifyEntry);
299
+ }
300
+ const [propertyName, propertyValue] = diagnostic.messageArgs;
301
+ if (propertyName === "abstractConstraint" && propertyValue !== undefined) {
302
+ modifyEntry.difference.abstractConstraint = propertyValue;
303
+ }
304
+ if (propertyName === "multiplicity" && propertyValue !== undefined) {
305
+ modifyEntry.difference.multiplicity = propertyValue;
306
+ }
307
+ if (propertyName === "polymorphic" && propertyValue !== undefined) {
308
+ modifyEntry.difference.polymorphic = propertyValue;
309
+ }
310
+ if (propertyName === "roleLabel" && propertyValue !== undefined) {
311
+ modifyEntry.difference.roleLabel = propertyValue;
312
+ }
313
+ }
314
+ visitSchemaReference(diagnostic, changeType) {
315
+ const [referencedSchema] = diagnostic.messageArgs;
316
+ this.schemaDifferences.push({
317
+ changeType,
318
+ schemaType: SchemaOtherTypes.SchemaReference,
319
+ difference: {
320
+ name: referencedSchema.name,
321
+ version: referencedSchema.schemaKey.version.toString(),
322
+ },
323
+ });
324
+ }
325
+ visitMissingCustomAttributeInstance(diagnostic) {
326
+ const [customAttribute] = diagnostic.messageArgs;
327
+ const ecType = diagnostic.ecDefinition;
328
+ if (Schema.isSchema(ecType)) {
329
+ return this.customAttributeDifferences.push({
330
+ changeType: "add",
331
+ schemaType: SchemaOtherTypes.CustomAttributeInstance,
332
+ appliedTo: "Schema",
333
+ difference: customAttribute,
334
+ });
335
+ }
336
+ if (SchemaItem.isSchemaItem(ecType)) {
337
+ return this.customAttributeDifferences.push({
338
+ changeType: "add",
339
+ schemaType: SchemaOtherTypes.CustomAttributeInstance,
340
+ appliedTo: "SchemaItem",
341
+ itemName: ecType.name,
342
+ difference: customAttribute,
343
+ });
344
+ }
345
+ if (Property.isProperty(ecType)) {
346
+ return this.customAttributeDifferences.push({
347
+ changeType: "add",
348
+ schemaType: SchemaOtherTypes.CustomAttributeInstance,
349
+ appliedTo: "Property",
350
+ itemName: ecType.class.name,
351
+ path: ecType.name,
352
+ difference: customAttribute,
353
+ });
354
+ }
355
+ if (RelationshipConstraint.isRelationshipConstraint(ecType)) {
356
+ return this.customAttributeDifferences.push({
357
+ changeType: "add",
358
+ schemaType: SchemaOtherTypes.CustomAttributeInstance,
359
+ appliedTo: "RelationshipConstraint",
360
+ itemName: ecType.relationshipClass.name,
361
+ path: ecType.isSource ? "$source" : "$target",
362
+ difference: customAttribute,
363
+ });
364
+ }
365
+ return;
366
+ }
367
+ visitMissingPresentationUnit(diagnostic) {
368
+ const koq = diagnostic.ecDefinition;
369
+ const [presentationFormat] = diagnostic.messageArgs;
370
+ let addEntry = this.schemaItemDifferences.find((entry) => {
371
+ return entry.changeType === "add" && entry.schemaType === SchemaOtherTypes.KindOfQuantityPresentationFormat
372
+ && entry.itemName === koq.name;
373
+ });
374
+ if (addEntry === undefined) {
375
+ addEntry = {
376
+ changeType: "add",
377
+ schemaType: SchemaOtherTypes.KindOfQuantityPresentationFormat,
378
+ itemName: koq.name,
379
+ difference: [],
380
+ };
381
+ this.schemaItemDifferences.push(addEntry);
382
+ }
383
+ addEntry.difference.push(presentationFormat.fullName);
384
+ }
385
+ visitMissingFormatUnit(diagnostic) {
386
+ const format = diagnostic.ecDefinition;
387
+ for (let index = this.schemaItemPathDifferences.length - 1; index >= 0; index--) {
388
+ const entry = this.schemaItemPathDifferences[index];
389
+ if (entry.changeType === "modify" && entry.schemaType === SchemaOtherTypes.FormatUnitLabel && entry.itemName === format.name) {
390
+ this.schemaItemPathDifferences.splice(index, 1);
391
+ }
392
+ }
393
+ let modifyEntry = this.schemaItemDifferences.find((entry) => {
394
+ return entry.changeType === "modify" && entry.schemaType === SchemaOtherTypes.FormatUnit
395
+ && entry.itemName === format.name;
396
+ });
397
+ if (modifyEntry === undefined && format.units) {
398
+ modifyEntry = {
399
+ changeType: "modify",
400
+ schemaType: SchemaOtherTypes.FormatUnit,
401
+ itemName: format.name,
402
+ difference: [],
403
+ };
404
+ for (const [unit, label] of format.units) {
405
+ modifyEntry.difference.push({
406
+ name: unit.fullName,
407
+ label,
408
+ });
409
+ }
410
+ ;
411
+ this.schemaItemDifferences.push(modifyEntry);
412
+ }
413
+ }
414
+ visitChangedFormatUnitLabel(diagnostic) {
415
+ const format = diagnostic.ecDefinition;
416
+ if (this.schemaItemDifferences.find((entry) => {
417
+ return entry.changeType === "modify"
418
+ && entry.schemaType === SchemaOtherTypes.FormatUnit && entry.itemName === format.name;
419
+ })) {
420
+ return;
421
+ }
422
+ const [unit, label] = diagnostic.messageArgs;
423
+ this.schemaItemPathDifferences.push({
424
+ changeType: "modify",
425
+ schemaType: SchemaOtherTypes.FormatUnitLabel,
426
+ itemName: format.name,
427
+ path: unit.fullName,
428
+ difference: {
429
+ label,
430
+ },
431
+ });
432
+ }
433
+ ;
434
+ }
435
+ ;
436
+ function isPropertyTypeName(property, propertyName) {
437
+ return (propertyName === "type") ||
438
+ (property.isEnumeration() && propertyName === "enumeration") ||
439
+ (property.isPrimitive() && propertyName === "primitiveType") ||
440
+ (property.isStruct() && propertyName === "structClass") ||
441
+ (property.isNavigation() && propertyName === "relationshipClass");
442
+ }
443
+ //# sourceMappingURL=SchemaDiagnosticVisitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaDiagnosticVisitor.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDiagnosticVisitor.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 Differencing\n */\n\nimport type { AnyDiagnostic } from \"../Validation/Diagnostic\";\nimport { SchemaCompareCodes } from \"../Validation/SchemaCompareDiagnostics\";\nimport {\n AnyEnumerator, AnyPropertyProps, AnySchemaItem, CustomAttribute, ECClass,\n Enumeration, Format, InvertedUnit, KindOfQuantity, Mixin, OverrideFormat, Property, PropertyProps,\n RelationshipConstraint, RelationshipConstraintProps, Schema, SchemaItem, Unit,\n} from \"@itwin/ecschema-metadata\";\nimport {\n type AnyClassItemDifference,\n type AnySchemaItemDifference,\n type AnySchemaItemPathDifference,\n type ClassPropertyDifference,\n type CustomAttributeDifference,\n type DifferenceType,\n type EntityClassMixinDifference,\n type EnumeratorDifference,\n type FormatUnitDifference,\n type KindOfQuantityPresentationFormatDifference,\n type RelationshipConstraintClassDifference,\n type RelationshipConstraintDifference,\n type SchemaDifference,\n SchemaOtherTypes,\n type SchemaReferenceDifference,\n} from \"./SchemaDifference\";\n\n/**\n * The SchemaDiagnosticVisitor is a visitor implementation for diagnostic entries\n * from the schema comparer api. Depending on the diagnostic code, the difference\n * result is build together.\n * @internal\n */\nexport class SchemaDiagnosticVisitor {\n\n public readonly schemaDifferences: Array<SchemaDifference | SchemaReferenceDifference>;\n public readonly schemaItemDifferences: Array<AnySchemaItemDifference\n | EntityClassMixinDifference\n | KindOfQuantityPresentationFormatDifference\n | FormatUnitDifference>;\n public readonly schemaItemPathDifferences: Array<AnySchemaItemPathDifference>;\n public readonly customAttributeDifferences: Array<CustomAttributeDifference>;\n\n constructor() {\n this.schemaDifferences = [];\n this.schemaItemDifferences = [];\n this.schemaItemPathDifferences = [];\n this.customAttributeDifferences = [];\n }\n\n /**\n * Visitor function to process the schema change diagnostic object.\n * @internal\n */\n public visit(diagnostic: AnyDiagnostic) {\n switch (diagnostic.code) {\n case SchemaCompareCodes.SchemaDelta:\n return this.visitChangedSchemaProperties(diagnostic);\n\n case SchemaCompareCodes.SchemaReferenceMissing:\n return this.visitSchemaReference(diagnostic, \"add\");\n case SchemaCompareCodes.SchemaReferenceDelta:\n return this.visitSchemaReference(diagnostic, \"modify\");\n\n case SchemaCompareCodes.SchemaItemMissing:\n return this.visitMissingSchemaItem(diagnostic);\n\n case SchemaCompareCodes.SchemaItemDelta:\n case SchemaCompareCodes.ClassDelta:\n case SchemaCompareCodes.ConstantDelta:\n case SchemaCompareCodes.CustomAttributeClassDelta:\n case SchemaCompareCodes.FormatDelta:\n case SchemaCompareCodes.InvertedUnitDelta:\n case SchemaCompareCodes.KoqDelta:\n case SchemaCompareCodes.MixinDelta:\n case SchemaCompareCodes.PhenomenonDelta:\n case SchemaCompareCodes.PropertyCategoryDelta:\n case SchemaCompareCodes.RelationshipDelta:\n case SchemaCompareCodes.UnitDelta:\n case SchemaCompareCodes.EnumerationDelta:\n return this.visitChangedSchemaItem(diagnostic);\n\n case SchemaCompareCodes.EnumeratorDelta:\n return this.visitChangedEnumerator(diagnostic);\n case SchemaCompareCodes.EnumeratorMissing:\n return this.visitMissingEnumerator(diagnostic);\n\n case SchemaCompareCodes.BaseClassDelta:\n return this.visitMissingBaseClass(diagnostic);\n case SchemaCompareCodes.EntityMixinMissing:\n return this.visitMissingMixinOnClass(diagnostic);\n case SchemaCompareCodes.PropertyDelta:\n return this.visitChangedProperty(diagnostic);\n case SchemaCompareCodes.PropertyMissing:\n return this.visitMissingProperty(diagnostic);\n\n case SchemaCompareCodes.RelationshipConstraintClassMissing:\n return this.visitMissingRelationshipConstraintClass(diagnostic);\n case SchemaCompareCodes.RelationshipConstraintDelta:\n return this.visitChangedRelationshipConstraint(diagnostic);\n\n case SchemaCompareCodes.CustomAttributeInstanceClassMissing:\n return this.visitMissingCustomAttributeInstance(diagnostic);\n\n case SchemaCompareCodes.PresentationUnitMissing:\n return this.visitMissingPresentationUnit(diagnostic);\n\n case SchemaCompareCodes.FormatUnitMissing:\n return this.visitMissingFormatUnit(diagnostic);\n case SchemaCompareCodes.UnitLabelOverrideDelta:\n return this.visitChangedFormatUnitLabel(diagnostic);\n }\n return;\n }\n\n private visitChangedSchemaProperties(diagnostic: AnyDiagnostic) {\n let modifyEntry = this.schemaDifferences.find((entry): entry is SchemaDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Schema;\n });\n\n let hasChanges = false;\n let addEntry = false;\n if (modifyEntry === undefined) {\n addEntry = true;\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Schema,\n difference: {},\n };\n }\n\n // Only label and description are taken from the source schema. If the schema name or alias\n // differs, those are ignored for now.\n const [propertyName, propertyValue] = diagnostic.messageArgs as [string, any];\n if (propertyName === \"label\") {\n modifyEntry.difference.label = propertyValue;\n hasChanges = true;\n }\n if (propertyName === \"description\") {\n modifyEntry.difference.description = propertyValue;\n hasChanges = true;\n }\n\n if (addEntry && hasChanges) {\n this.schemaDifferences.push(modifyEntry);\n }\n }\n\n private visitMissingSchemaItem(diagnostic: AnyDiagnostic) {\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\n\n this.schemaItemDifferences.push({\n changeType: \"add\",\n schemaType: schemaItem.schemaItemType,\n itemName: schemaItem.name,\n difference: schemaItem.toJSON(),\n });\n }\n\n private visitChangedSchemaItem(diagnostic: AnyDiagnostic) {\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\n const [propertyName, sourceValue, _targetValue] = diagnostic.messageArgs as [string, unknown, unknown];\n if (propertyName === \"schemaItemType\") {\n // If the schema item type is different, the whole item is added as \"new\" item. The\n // difference validator will then figure whether there is a conflict with items of\n // of the same name.\n return this.visitMissingSchemaItem(diagnostic);\n }\n\n if (sourceValue === undefined) {\n return;\n }\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is AnySchemaItemDifference => {\n return entry.changeType === \"modify\" && entry.itemName === schemaItem.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: schemaItem.schemaItemType,\n itemName: schemaItem.name,\n difference: {},\n } as AnySchemaItemDifference;\n this.schemaItemDifferences.push(modifyEntry);\n }\n\n // TODO: Since propertyName is type of string, the compiler complains about accepting\n // an unspecific string as property indexer. Casted to any as short term fix but that\n // needs to be handled better in future.\n (modifyEntry.difference as any)[propertyName] = sourceValue;\n }\n\n private visitMissingEnumerator(diagnostic: AnyDiagnostic) {\n const enumeration = diagnostic.ecDefinition as Enumeration;\n const [enumerator] = diagnostic.messageArgs as [AnyEnumerator];\n this.schemaItemPathDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.Enumerator,\n itemName: enumeration.name,\n path: \"$enumerators\",\n difference: enumerator,\n });\n }\n\n private lookupEnumeratorEntry(changeType: DifferenceType, item: string, enumeratorName: string) {\n return this.schemaItemPathDifferences.find((change) => {\n return change.changeType === changeType\n && change.schemaType === SchemaOtherTypes.Enumerator\n && change.itemName === item\n && change.path === \"$enumerators\"\n && change.difference.name === enumeratorName;\n });\n }\n\n private visitChangedEnumerator(diagnostic: AnyDiagnostic) {\n const enumeration = diagnostic.ecDefinition as Enumeration;\n const [enumerator, propertyName, sourceValue] = diagnostic.messageArgs as [AnyEnumerator, keyof AnyEnumerator, any];\n if (this.lookupEnumeratorEntry(\"add\", enumeration.name, enumerator.name)) {\n return;\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is EnumeratorDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Enumerator && entry.itemName === enumeration.name && entry.path === enumerator.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Enumerator,\n itemName: enumeration.name,\n path: enumerator.name,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n if (sourceValue !== undefined) {\n modifyEntry.difference[propertyName] = sourceValue;\n }\n }\n\n private visitMissingProperty(diagnostic: AnyDiagnostic) {\n const property = diagnostic.ecDefinition as Property;\n this.schemaItemPathDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.Property,\n itemName: property.class.name,\n path: property.name,\n difference: property.toJSON() as AnyPropertyProps,\n });\n }\n\n private visitChangedProperty(diagnostic: AnyDiagnostic) {\n const property = diagnostic.ecDefinition as Property;\n const [propertyName, sourceValue] = diagnostic.messageArgs as [keyof PropertyProps, any, any];\n\n if (isPropertyTypeName(property, propertyName)) {\n return this.visitMissingProperty(diagnostic);\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is ClassPropertyDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Property && entry.itemName === property.class.name && entry.path === property.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Property,\n itemName: property.class.name,\n path: property.name,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n if (propertyName !== \"name\") {\n modifyEntry.difference[propertyName] = sourceValue;\n }\n }\n\n private visitMissingBaseClass(diagnostic: AnyDiagnostic) {\n const ecClass = diagnostic.ecDefinition as ECClass;\n const [sourceBaseClass] = diagnostic.messageArgs as [ECClass, ECClass];\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is AnyClassItemDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === ecClass.schemaItemType && entry.itemName === ecClass.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: ecClass.schemaItemType,\n itemName: ecClass.name,\n difference: {},\n } as AnyClassItemDifference;\n this.schemaItemDifferences.push(modifyEntry);\n }\n\n modifyEntry.difference.baseClass = sourceBaseClass !== undefined ? sourceBaseClass.fullName : undefined;\n }\n\n private visitMissingMixinOnClass(diagnostic: AnyDiagnostic) {\n const ecClass = diagnostic.ecDefinition as ECClass;\n const [mixin] = diagnostic.messageArgs as [Mixin];\n\n let addEntry = this.schemaItemDifferences.find((entry): entry is EntityClassMixinDifference => {\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.EntityClassMixin && entry.itemName === ecClass.name;\n });\n\n if (addEntry === undefined) {\n addEntry = {\n changeType: \"add\",\n schemaType: SchemaOtherTypes.EntityClassMixin,\n itemName: ecClass.name,\n difference: [],\n };\n this.schemaItemDifferences.push(addEntry);\n }\n addEntry.difference.push(mixin.fullName);\n }\n\n private visitMissingRelationshipConstraintClass(diagnostic: AnyDiagnostic) {\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\n const className = constraint.relationshipClass.name;\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\n\n let addEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintClassDifference => {\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraintClass, entry.itemName === className && entry.path === constraintPath;\n });\n\n if (!addEntry) {\n addEntry = {\n changeType: \"add\",\n schemaType: SchemaOtherTypes.RelationshipConstraintClass,\n itemName: className,\n path: constraintPath,\n difference: [],\n };\n this.schemaItemPathDifferences.push(addEntry);\n }\n\n const [constraintClass] = diagnostic.messageArgs as [ECClass];\n addEntry.difference.push(constraintClass.fullName);\n }\n\n private visitChangedRelationshipConstraint(diagnostic: AnyDiagnostic) {\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\n const className = constraint.relationshipClass.name;\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\n if (this.schemaItemDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === className)) {\n return;\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraint && entry.itemName === className && entry.path === constraintPath;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.RelationshipConstraint,\n itemName: className,\n path: constraintPath,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n const [propertyName, propertyValue] = diagnostic.messageArgs as [keyof RelationshipConstraintProps, any];\n if (propertyName === \"abstractConstraint\" && propertyValue !== undefined) {\n modifyEntry.difference.abstractConstraint = propertyValue;\n }\n if (propertyName === \"multiplicity\" && propertyValue !== undefined) {\n modifyEntry.difference.multiplicity = propertyValue;\n }\n if (propertyName === \"polymorphic\" && propertyValue !== undefined) {\n modifyEntry.difference.polymorphic = propertyValue;\n }\n if (propertyName === \"roleLabel\" && propertyValue !== undefined) {\n modifyEntry.difference.roleLabel = propertyValue;\n }\n }\n\n private visitSchemaReference(diagnostic: AnyDiagnostic, changeType: DifferenceType) {\n const [referencedSchema] = diagnostic.messageArgs as [Schema];\n this.schemaDifferences.push({\n changeType,\n schemaType: SchemaOtherTypes.SchemaReference,\n difference: {\n name: referencedSchema.name,\n version: referencedSchema.schemaKey.version.toString(),\n },\n });\n }\n\n private visitMissingCustomAttributeInstance(diagnostic: AnyDiagnostic) {\n const [customAttribute] = diagnostic.messageArgs as [CustomAttribute];\n const ecType = diagnostic.ecDefinition;\n if (Schema.isSchema(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"Schema\",\n difference: customAttribute,\n });\n }\n\n if (SchemaItem.isSchemaItem(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"SchemaItem\",\n itemName: ecType.name,\n difference: customAttribute,\n });\n }\n\n if (Property.isProperty(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"Property\",\n itemName: ecType.class.name,\n path: ecType.name,\n difference: customAttribute,\n });\n }\n\n if (RelationshipConstraint.isRelationshipConstraint(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"RelationshipConstraint\",\n itemName: ecType.relationshipClass.name,\n path: ecType.isSource ? \"$source\" : \"$target\",\n difference: customAttribute,\n });\n }\n return;\n }\n\n private visitMissingPresentationUnit(diagnostic: AnyDiagnostic) {\n const koq = diagnostic.ecDefinition as KindOfQuantity;\n const [presentationFormat] = diagnostic.messageArgs as [Format | OverrideFormat];\n\n let addEntry = this.schemaItemDifferences.find((entry): entry is KindOfQuantityPresentationFormatDifference => {\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.KindOfQuantityPresentationFormat\n && entry.itemName === koq.name;\n });\n\n if (addEntry === undefined) {\n addEntry = {\n changeType: \"add\",\n schemaType: SchemaOtherTypes.KindOfQuantityPresentationFormat,\n itemName: koq.name,\n difference: [],\n };\n this.schemaItemDifferences.push(addEntry);\n }\n addEntry.difference.push(presentationFormat.fullName);\n }\n\n private visitMissingFormatUnit(diagnostic: AnyDiagnostic) {\n const format = diagnostic.ecDefinition as Format;\n\n for (let index = this.schemaItemPathDifferences.length-1; index>=0; index--) {\n const entry = this.schemaItemPathDifferences[index];\n if (entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.FormatUnitLabel && entry.itemName === format.name) {\n this.schemaItemPathDifferences.splice(index, 1);\n }\n }\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is FormatUnitDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.FormatUnit\n && entry.itemName === format.name;\n });\n\n if (modifyEntry === undefined && format.units) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.FormatUnit,\n itemName: format.name,\n difference: [],\n };\n\n for (const [unit, label] of format.units) {\n modifyEntry.difference.push({\n name: unit.fullName,\n label,\n });\n };\n\n this.schemaItemDifferences.push(modifyEntry);\n }\n }\n\n private visitChangedFormatUnitLabel(diagnostic: AnyDiagnostic) {\n const format = diagnostic.ecDefinition as Format;\n\n if (this.schemaItemDifferences.find((entry): entry is FormatUnitDifference => { return entry.changeType === \"modify\"\n && entry.schemaType === SchemaOtherTypes.FormatUnit && entry.itemName === format.name})) {\n return;\n }\n\n const [unit, label] = diagnostic.messageArgs as [Unit | InvertedUnit, string | undefined];\n this.schemaItemPathDifferences.push({\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.FormatUnitLabel,\n itemName: format.name,\n path: unit.fullName,\n difference: {\n label,\n },\n });\n };\n};\n\nfunction isPropertyTypeName(property: Property, propertyName: string) {\n return (propertyName === \"type\") ||\n (property.isEnumeration() && propertyName === \"enumeration\") ||\n (property.isPrimitive() && propertyName === \"primitiveType\") ||\n (property.isStruct() && propertyName === \"structClass\") ||\n (property.isNavigation() && propertyName === \"relationshipClass\");\n}\n"]}