@itwin/ecschema-editing 5.1.2 → 5.1.3-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/Differencing/Errors.js.map +1 -1
  3. package/lib/cjs/Differencing/SchemaConflicts.js.map +1 -1
  4. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.js.map +1 -1
  5. package/lib/cjs/Differencing/SchemaDifference.js.map +1 -1
  6. package/lib/cjs/Differencing/SchemaDifferenceValidator.js.map +1 -1
  7. package/lib/cjs/Differencing/SchemaDifferenceVisitor.js.map +1 -1
  8. package/lib/cjs/Differencing/Utils.js.map +1 -1
  9. package/lib/cjs/Editing/Constants.js.map +1 -1
  10. package/lib/cjs/Editing/CustomAttributes.js.map +1 -1
  11. package/lib/cjs/Editing/ECClasses.js.map +1 -1
  12. package/lib/cjs/Editing/Editor.js.map +1 -1
  13. package/lib/cjs/Editing/Entities.js.map +1 -1
  14. package/lib/cjs/Editing/Enumerations.js.map +1 -1
  15. package/lib/cjs/Editing/Exception.js.map +1 -1
  16. package/lib/cjs/Editing/Formats.js.map +1 -1
  17. package/lib/cjs/Editing/InvertedUnits.js.map +1 -1
  18. package/lib/cjs/Editing/KindOfQuantities.js.map +1 -1
  19. package/lib/cjs/Editing/Mixins.js.map +1 -1
  20. package/lib/cjs/Editing/Mutable/MutableArrayProperty.js.map +1 -1
  21. package/lib/cjs/Editing/Mutable/MutableCAClass.js.map +1 -1
  22. package/lib/cjs/Editing/Mutable/MutableClass.js.map +1 -1
  23. package/lib/cjs/Editing/Mutable/MutableConstant.js.map +1 -1
  24. package/lib/cjs/Editing/Mutable/MutableEntityClass.js.map +1 -1
  25. package/lib/cjs/Editing/Mutable/MutableEnumeration.js.map +1 -1
  26. package/lib/cjs/Editing/Mutable/MutableFormat.js.map +1 -1
  27. package/lib/cjs/Editing/Mutable/MutableInvertedUnit.js.map +1 -1
  28. package/lib/cjs/Editing/Mutable/MutableKindOfQuantity.js.map +1 -1
  29. package/lib/cjs/Editing/Mutable/MutableMixin.js.map +1 -1
  30. package/lib/cjs/Editing/Mutable/MutableNavigationProperty.js.map +1 -1
  31. package/lib/cjs/Editing/Mutable/MutablePhenomenon.js.map +1 -1
  32. package/lib/cjs/Editing/Mutable/MutablePrimitiveOrEnumProperty.js.map +1 -1
  33. package/lib/cjs/Editing/Mutable/MutableProperty.js.map +1 -1
  34. package/lib/cjs/Editing/Mutable/MutablePropertyCategory.js.map +1 -1
  35. package/lib/cjs/Editing/Mutable/MutableRelationshipClass.js.map +1 -1
  36. package/lib/cjs/Editing/Mutable/MutableSchema.js.map +1 -1
  37. package/lib/cjs/Editing/Mutable/MutableSchemaItem.js.map +1 -1
  38. package/lib/cjs/Editing/Mutable/MutableStructProperty.js.map +1 -1
  39. package/lib/cjs/Editing/Mutable/MutableUnit.js.map +1 -1
  40. package/lib/cjs/Editing/Mutable/MutableUnitSystem.js.map +1 -1
  41. package/lib/cjs/Editing/Phenomena.js.map +1 -1
  42. package/lib/cjs/Editing/Properties.js.map +1 -1
  43. package/lib/cjs/Editing/PropertyCategories.js.map +1 -1
  44. package/lib/cjs/Editing/RelationshipClasses.js.map +1 -1
  45. package/lib/cjs/Editing/SchemaItems.js.map +1 -1
  46. package/lib/cjs/Editing/Structs.js.map +1 -1
  47. package/lib/cjs/Editing/UnitSystems.js.map +1 -1
  48. package/lib/cjs/Editing/Units.js.map +1 -1
  49. package/lib/cjs/Merging/ClassMerger.js.map +1 -1
  50. package/lib/cjs/Merging/ConstantMerger.js.map +1 -1
  51. package/lib/cjs/Merging/CustomAttributeClassMerger.js.map +1 -1
  52. package/lib/cjs/Merging/CustomAttributeMerger.js.map +1 -1
  53. package/lib/cjs/Merging/Edits/NameMapping.js.map +1 -1
  54. package/lib/cjs/Merging/Edits/RenameEditHandler.js.map +1 -1
  55. package/lib/cjs/Merging/Edits/SchemaEdits.js.map +1 -1
  56. package/lib/cjs/Merging/Edits/SkipEditHandler.js.map +1 -1
  57. package/lib/cjs/Merging/EntityClassMerger.js.map +1 -1
  58. package/lib/cjs/Merging/EnumerationMerger.js.map +1 -1
  59. package/lib/cjs/Merging/EnumeratorMerger.js.map +1 -1
  60. package/lib/cjs/Merging/FormatMerger.js.map +1 -1
  61. package/lib/cjs/Merging/InvertedUnitMerger.js.map +1 -1
  62. package/lib/cjs/Merging/KindOfQuantityMerger.js.map +1 -1
  63. package/lib/cjs/Merging/MixinMerger.js.map +1 -1
  64. package/lib/cjs/Merging/PhenomenonMerger.js.map +1 -1
  65. package/lib/cjs/Merging/PropertyCategoryMerger.js.map +1 -1
  66. package/lib/cjs/Merging/PropertyMerger.js.map +1 -1
  67. package/lib/cjs/Merging/RelationshipClassMerger.js.map +1 -1
  68. package/lib/cjs/Merging/SchemaMerger.js.map +1 -1
  69. package/lib/cjs/Merging/SchemaMergingVisitor.js.map +1 -1
  70. package/lib/cjs/Merging/SchemaMergingWalker.js.map +1 -1
  71. package/lib/cjs/Merging/SchemaReferenceMerger.js.map +1 -1
  72. package/lib/cjs/Merging/StructClassMerger.js.map +1 -1
  73. package/lib/cjs/Merging/UnitMerger.js.map +1 -1
  74. package/lib/cjs/Merging/UnitSystemMerger.js.map +1 -1
  75. package/lib/cjs/Merging/Utils.js.map +1 -1
  76. package/lib/cjs/Validation/Diagnostic.js.map +1 -1
  77. package/lib/cjs/Validation/DiagnosticReporter.js.map +1 -1
  78. package/lib/cjs/Validation/ECRules.js.map +1 -1
  79. package/lib/cjs/Validation/LoggingDiagnosticReporter.js.map +1 -1
  80. package/lib/cjs/Validation/RuleSuppressionSet.js.map +1 -1
  81. package/lib/cjs/Validation/Rules.js.map +1 -1
  82. package/lib/cjs/Validation/SchemaChanges.js.map +1 -1
  83. package/lib/cjs/Validation/SchemaCompareDiagnostics.js.map +1 -1
  84. package/lib/cjs/Validation/SchemaCompareReporter.js.map +1 -1
  85. package/lib/cjs/Validation/SchemaCompareResultDelegate.js.map +1 -1
  86. package/lib/cjs/Validation/SchemaCompareVisitor.js.map +1 -1
  87. package/lib/cjs/Validation/SchemaComparer.js.map +1 -1
  88. package/lib/cjs/Validation/SchemaValidater.js.map +1 -1
  89. package/lib/cjs/Validation/SchemaValidationVisitor.js.map +1 -1
  90. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  91. package/lib/cjs/ecschema-editing.js.map +1 -1
  92. package/lib/esm/Differencing/Errors.js.map +1 -1
  93. package/lib/esm/Differencing/SchemaConflicts.js.map +1 -1
  94. package/lib/esm/Differencing/SchemaDiagnosticVisitor.js.map +1 -1
  95. package/lib/esm/Differencing/SchemaDifference.js.map +1 -1
  96. package/lib/esm/Differencing/SchemaDifferenceValidator.js.map +1 -1
  97. package/lib/esm/Differencing/SchemaDifferenceVisitor.js.map +1 -1
  98. package/lib/esm/Differencing/Utils.js.map +1 -1
  99. package/lib/esm/Editing/Constants.js.map +1 -1
  100. package/lib/esm/Editing/CustomAttributes.js.map +1 -1
  101. package/lib/esm/Editing/ECClasses.js.map +1 -1
  102. package/lib/esm/Editing/Editor.js.map +1 -1
  103. package/lib/esm/Editing/Entities.js.map +1 -1
  104. package/lib/esm/Editing/Enumerations.js.map +1 -1
  105. package/lib/esm/Editing/Exception.js.map +1 -1
  106. package/lib/esm/Editing/Formats.js.map +1 -1
  107. package/lib/esm/Editing/InvertedUnits.js.map +1 -1
  108. package/lib/esm/Editing/KindOfQuantities.js.map +1 -1
  109. package/lib/esm/Editing/Mixins.js.map +1 -1
  110. package/lib/esm/Editing/Mutable/MutableArrayProperty.js.map +1 -1
  111. package/lib/esm/Editing/Mutable/MutableCAClass.js.map +1 -1
  112. package/lib/esm/Editing/Mutable/MutableClass.js.map +1 -1
  113. package/lib/esm/Editing/Mutable/MutableConstant.js.map +1 -1
  114. package/lib/esm/Editing/Mutable/MutableEntityClass.js.map +1 -1
  115. package/lib/esm/Editing/Mutable/MutableEnumeration.js.map +1 -1
  116. package/lib/esm/Editing/Mutable/MutableFormat.js.map +1 -1
  117. package/lib/esm/Editing/Mutable/MutableInvertedUnit.js.map +1 -1
  118. package/lib/esm/Editing/Mutable/MutableKindOfQuantity.js.map +1 -1
  119. package/lib/esm/Editing/Mutable/MutableMixin.js.map +1 -1
  120. package/lib/esm/Editing/Mutable/MutableNavigationProperty.js.map +1 -1
  121. package/lib/esm/Editing/Mutable/MutablePhenomenon.js.map +1 -1
  122. package/lib/esm/Editing/Mutable/MutablePrimitiveOrEnumProperty.js.map +1 -1
  123. package/lib/esm/Editing/Mutable/MutableProperty.js.map +1 -1
  124. package/lib/esm/Editing/Mutable/MutablePropertyCategory.js.map +1 -1
  125. package/lib/esm/Editing/Mutable/MutableRelationshipClass.js.map +1 -1
  126. package/lib/esm/Editing/Mutable/MutableSchema.js.map +1 -1
  127. package/lib/esm/Editing/Mutable/MutableSchemaItem.js.map +1 -1
  128. package/lib/esm/Editing/Mutable/MutableStructProperty.js.map +1 -1
  129. package/lib/esm/Editing/Mutable/MutableUnit.js.map +1 -1
  130. package/lib/esm/Editing/Mutable/MutableUnitSystem.js.map +1 -1
  131. package/lib/esm/Editing/Phenomena.js.map +1 -1
  132. package/lib/esm/Editing/Properties.js.map +1 -1
  133. package/lib/esm/Editing/PropertyCategories.js.map +1 -1
  134. package/lib/esm/Editing/RelationshipClasses.js.map +1 -1
  135. package/lib/esm/Editing/SchemaItems.js.map +1 -1
  136. package/lib/esm/Editing/Structs.js.map +1 -1
  137. package/lib/esm/Editing/UnitSystems.js.map +1 -1
  138. package/lib/esm/Editing/Units.js.map +1 -1
  139. package/lib/esm/Merging/ClassMerger.js.map +1 -1
  140. package/lib/esm/Merging/ConstantMerger.js.map +1 -1
  141. package/lib/esm/Merging/CustomAttributeClassMerger.js.map +1 -1
  142. package/lib/esm/Merging/CustomAttributeMerger.js.map +1 -1
  143. package/lib/esm/Merging/Edits/NameMapping.js.map +1 -1
  144. package/lib/esm/Merging/Edits/RenameEditHandler.js.map +1 -1
  145. package/lib/esm/Merging/Edits/SchemaEdits.js.map +1 -1
  146. package/lib/esm/Merging/Edits/SkipEditHandler.js.map +1 -1
  147. package/lib/esm/Merging/EntityClassMerger.js.map +1 -1
  148. package/lib/esm/Merging/EnumerationMerger.js.map +1 -1
  149. package/lib/esm/Merging/EnumeratorMerger.js.map +1 -1
  150. package/lib/esm/Merging/FormatMerger.js.map +1 -1
  151. package/lib/esm/Merging/InvertedUnitMerger.js.map +1 -1
  152. package/lib/esm/Merging/KindOfQuantityMerger.js.map +1 -1
  153. package/lib/esm/Merging/MixinMerger.js.map +1 -1
  154. package/lib/esm/Merging/PhenomenonMerger.js.map +1 -1
  155. package/lib/esm/Merging/PropertyCategoryMerger.js.map +1 -1
  156. package/lib/esm/Merging/PropertyMerger.js.map +1 -1
  157. package/lib/esm/Merging/RelationshipClassMerger.js.map +1 -1
  158. package/lib/esm/Merging/SchemaMerger.js.map +1 -1
  159. package/lib/esm/Merging/SchemaMergingVisitor.js.map +1 -1
  160. package/lib/esm/Merging/SchemaMergingWalker.js.map +1 -1
  161. package/lib/esm/Merging/SchemaReferenceMerger.js.map +1 -1
  162. package/lib/esm/Merging/StructClassMerger.js.map +1 -1
  163. package/lib/esm/Merging/UnitMerger.js.map +1 -1
  164. package/lib/esm/Merging/UnitSystemMerger.js.map +1 -1
  165. package/lib/esm/Merging/Utils.js.map +1 -1
  166. package/lib/esm/Validation/Diagnostic.js.map +1 -1
  167. package/lib/esm/Validation/DiagnosticReporter.js.map +1 -1
  168. package/lib/esm/Validation/ECRules.js.map +1 -1
  169. package/lib/esm/Validation/LoggingDiagnosticReporter.js.map +1 -1
  170. package/lib/esm/Validation/RuleSuppressionSet.js.map +1 -1
  171. package/lib/esm/Validation/Rules.js.map +1 -1
  172. package/lib/esm/Validation/SchemaChanges.js.map +1 -1
  173. package/lib/esm/Validation/SchemaCompareDiagnostics.js.map +1 -1
  174. package/lib/esm/Validation/SchemaCompareReporter.js.map +1 -1
  175. package/lib/esm/Validation/SchemaCompareResultDelegate.js.map +1 -1
  176. package/lib/esm/Validation/SchemaCompareVisitor.js.map +1 -1
  177. package/lib/esm/Validation/SchemaComparer.js.map +1 -1
  178. package/lib/esm/Validation/SchemaValidater.js.map +1 -1
  179. package/lib/esm/Validation/SchemaValidationVisitor.js.map +1 -1
  180. package/lib/esm/Validation/SchemaWalker.js.map +1 -1
  181. package/lib/esm/ecschema-editing.js.map +1 -1
  182. package/package.json +9 -9
  183. package/public/locales/en/ECSchemaEditing.json +26 -26
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaCompareResultDelegate.js","sourceRoot":"","sources":["../../../src/Validation/SchemaCompareResultDelegate.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 Comparison\n */\n\nimport { AnyClass, AnyEnumerator, AnyProperty, Constant, CustomAttribute,\n CustomAttributeClass, CustomAttributeContainerProps, EntityClass, Enumeration, Format, InvertedUnit, KindOfQuantity,\n Mixin, OverrideFormat, Phenomenon, PropertyCategory, RelationshipClass, RelationshipConstraint,\n Schema, SchemaItem, Unit,\n} from \"@itwin/ecschema-metadata\";\nimport { AnyDiagnostic } from \"./Diagnostic\";\nimport { SchemaChanges } from \"./SchemaChanges\";\nimport { SchemaCompareDiagnostics } from \"./SchemaCompareDiagnostics\";\nimport { SchemaCompareDirection } from \"./SchemaComparer\";\nimport { ISchemaCompareReporter } from \"./SchemaCompareReporter\";\n\n/**\n * Used by the [[SchemaComparer]] to report differences found during schema comparison.\n * @internal\n */\nexport class SchemaCompareResultDelegate {\n private _schemaChangeReporters: ISchemaCompareReporter[];\n private _schemaAChanges: SchemaChanges;\n private _schemaBChanges: SchemaChanges;\n\n /**\n * Initializes a new SchemaCompareResultDelegate instance.\n * @param reporters The [[ISchemaCompareReporter]] objects to use to report schema differences.\n */\n constructor(schemaA: Schema, schemaB: Schema, ...reporters: ISchemaCompareReporter[]) {\n this._schemaChangeReporters = reporters;\n this._schemaAChanges = new SchemaChanges(schemaA);\n this._schemaBChanges = new SchemaChanges(schemaB);\n }\n\n public get schemaChangeReporters(): ISchemaCompareReporter[] {\n return this._schemaChangeReporters;\n }\n\n /**\n * Called by the SchemaComparer when the comparison is complete.\n */\n public compareComplete() {\n this.schemaChangeReporters.forEach((r) => r.report(this._schemaAChanges));\n if (this._schemaBChanges)\n this.schemaChangeReporters.forEach((r) => r.report(this._schemaBChanges));\n }\n\n /**\n * Reports differences between Schema properties.\n * @param schemaA The first Schema supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first Schema.\n * @param valueB The value from the second Schema.\n */\n public async reportSchemaDelta(schemaA: Schema, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.SchemaDelta(schemaA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences in the schema reference collection of two schemas.\n * @param schemaA The first Schema supplied for comparison.\n * @param referenceSchema The missing schema reference.\n */\n public async reportSchemaReferenceMissing(schemaA: Schema, referenceSchema: Schema, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.SchemaReferenceMissing(schemaA, [referenceSchema]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences in the schema reference collection of two schemas where the reference version differs.\n * @param schemaA The first Schema supplied for comparison.\n * @param referenceSchema The missing schema reference.\n */\n public async reportSchemaReferenceDelta(schemaA: Schema, referenceSchema: Schema, versionA: string, versionB: string, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.SchemaReferenceDelta(schemaA, [referenceSchema, versionA, versionB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports that a given SchemaItem could not be found in the second Schema.\n * @param schemaItemA The SchemaItem from the first Schema.\n */\n public async reportSchemaItemMissing(schemaItemA: SchemaItem, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.SchemaItemMissing(schemaItemA, []);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between SchemaItem properties.\n * @param schemaItemA The first SchemaItem supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first SchemaItem.\n * @param valueB The value from the second SchemaItem.\n */\n public async reportSchemaItemDelta(schemaItemA: SchemaItem, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.SchemaItemDelta(schemaItemA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between ECClass properties.\n * @param classA The first ECClass supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first ECClass.\n * @param valueB The value from the second ECClass.\n */\n public async reportClassDelta(classA: AnyClass, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.ClassDelta(classA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences of the base class defined between two ECClass objects.\n * @param classA The first ECClass supplied for comparison.\n * @param baseClassA The base class of the first ECClass.\n * @param baseClassB The base class of the second ECClass.\n */\n public async reportBaseClassDelta(classA: AnyClass, baseClassA: AnyClass | undefined, baseClassB: AnyClass | undefined, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.BaseClassDelta(classA, [baseClassA, baseClassB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between ECProperty properties.\n * @param propertyA The first ECProperty supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first ECProperty.\n * @param valueB The value from the second ECProperty.\n */\n public async reportPropertyDelta(propertyA: AnyProperty, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.PropertyDelta(propertyA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports that an ECProperty found in the first ECClass could not be found in the second.\n * @param propertyA The ECProperty supplied for comparison.\n */\n public async reportPropertyMissing(propertyA: AnyProperty, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.PropertyMissing(propertyA, []);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports that a Mixin found in the first EntityClass could not be found in the second.\n * @param entityClassA The first EntityClass that is missing the Mixin.\n * @param mixinA The Mixin from the first EntityClass.\n */\n public async reportEntityMixinMissing(entityClassA: EntityClass, mixinA: Mixin, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.EntityMixinMissing(entityClassA, [mixinA]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between Mixin properties.\n * @param mixinA The first Mixin supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first Mixin.\n * @param valueB The value from the second Mixin.\n */\n public async reportMixinDelta(mixinA: Mixin, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.MixinDelta(mixinA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between RelationshipClass properties.\n * @param relationshipClassA The first RelationshipClass supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first RelationshipClass.\n * @param valueB The value from the second RelationshipClass.\n */\n public async reportRelationshipClassDelta(relationshipClassA: RelationshipClass, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.RelationshipDelta(relationshipClassA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between RelationshipConstraint properties.\n * @param constraintA The first RelationshipConstraint supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first RelationshipConstraint.\n * @param valueB The value from the second RelationshipConstraint.\n */\n public async reportRelationshipConstraintDelta(constraintA: RelationshipConstraint, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.RelationshipConstraintDelta(constraintA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports that a constraint class found in the first RelationshipConstraint could not be found in the second.\n * @param constraintA The first RelationshipConstraint that is missing the class constraint.\n * @param constraintClass The constraint ECClass from the first RelationshipConstraint.\n */\n public async reportRelationshipConstraintClassMissing(constraintA: RelationshipConstraint, constraintClass: EntityClass | Mixin | RelationshipClass, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.RelationshipConstraintClassMissing(constraintA, [constraintClass]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between CustomAttributeClass properties.\n * @param customAttributeA The first CustomAttributeClass supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first CustomAttributeClass.\n * @param valueB The value from the second CustomAttributeClass.\n */\n public async reportCustomAttributeClassDelta(customAttributeA: CustomAttributeClass, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.CustomAttributeClassDelta(customAttributeA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports that a CustomAttribute instance found in the first CustomAttribute container could not be found in the second.\n * @param customAttributeContainerA The first CustomAttribute container that is missing the CustomAttribute instance.\n * @param customAttribute The CustomAttribute missing.\n */\n public async reportCustomAttributeInstanceClassMissing(customAttributeContainerA: CustomAttributeContainerProps, customAttribute: CustomAttribute, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.CustomAttributeInstanceClassMissing(customAttributeContainerA, [customAttribute]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between Enumeration properties.\n * @param enumerationA The first Enumeration supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first Enumeration.\n * @param valueB The value from the second Enumeration.\n */\n public async reportEnumerationDelta(enumerationA: Enumeration, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.EnumerationDelta(enumerationA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports that a enumerator found in the first Enumeration could not be found in the second.\n * @param enumerationA The first Enumeration that is missing the enumerator.\n * @param enumerator The enumerator missing from the second schema.\n */\n public async reportEnumeratorMissing(enumerationA: Enumeration, enumerator: AnyEnumerator, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.EnumeratorMissing(enumerationA, [enumerator]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between enumerator properties within a given Enumeration.\n * @param enumerationA The first Enumeration supplied for comparison.\n * @param enumerator The enumerator containing differing property values.\n * @param propertyName The name of the property.\n * @param valueA The value from the first enumerator.\n * @param valueB The value from the second enumerator.\n */\n public async reportEnumeratorDelta(enumerationA: Enumeration, enumerator: AnyEnumerator, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.EnumeratorDelta(enumerationA, [enumerator, propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between KindOfQuantity properties.\n * @param koqA The first KindOfQuantity supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first KindOfQuantity.\n * @param valueB The value from the second KindOfQuantity.\n */\n public async reportKoqDelta(koqA: KindOfQuantity, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.KoqDelta(koqA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports that a presentation unit found in the first KindOfQuantity could not be found in the second.\n * @param koqA The first KindOfQuantity that is missing the presentation unit.\n * @param unit The Format or OverrideFormat presentation unit missing from the second schema.\n */\n public async reportPresentationUnitMissing(koqA: KindOfQuantity, unit: Format | OverrideFormat, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.PresentationUnitMissing(koqA, [unit]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between PropertyCategory properties.\n * @param categoryA The first PropertyCategory supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first PropertyCategory.\n * @param valueB The value from the second PropertyCategory.\n */\n public async reportPropertyCategoryDelta(categoryA: PropertyCategory, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.PropertyCategoryDelta(categoryA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between Format properties.\n * @param formatA The first Format supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first Format.\n * @param valueB The value from the second Format.\n */\n public async reportFormatDelta(formatA: Format, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.FormatDelta(formatA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports that a unit found in the first Format could not be found in the second.\n * @param formatA The first Format that is missing the unit.\n * @param unit The Unit or InvertedUnit missing from the second schema.\n */\n public async reportFormatUnitMissing(formatA: Format, unit: [Unit | InvertedUnit, string | undefined], _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.FormatUnitMissing(formatA, unit);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between overridden labels within the Units of a given Format.\n * @param formatA The first Format supplied for comparison.\n * @param unit The Unit or InvertedUnit with differing label overrides.\n * @param labelA The value from the first label.\n * @param labelB The value from the second label.\n */\n public async reportUnitLabelOverrideDelta(formatA: Format, unit: Unit | InvertedUnit, labelA: string | undefined, labelB: string | undefined, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.UnitLabelOverrideDelta(formatA, [unit, labelA, labelB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between Unit properties.\n * @param unitA The first Unit supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first Unit.\n * @param valueB The value from the second Unit.\n */\n public async reportUnitDelta(unitA: Unit, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.UnitDelta(unitA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between InvertedUnit properties.\n * @param invertedUnitA The first InvertedUnit supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first InvertedUnit.\n * @param valueB The value from the second InvertedUnit.\n */\n public async reportInvertedUnitDelta(invertedUnitA: InvertedUnit, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.InvertedUnitDelta(invertedUnitA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between Phenomenon properties.\n * @param phenomenonA The first Phenomenon supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first Phenomenon.\n * @param valueB The value from the second Phenomenon.\n */\n public async reportPhenomenonDelta(phenomenonA: Phenomenon, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.PhenomenonDelta(phenomenonA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n /**\n * Reports differences between Constant properties.\n * @param constantA The first Constant supplied for comparison.\n * @param propertyName The name of the property.\n * @param valueA The value from the first Constant.\n * @param valueB The value from the second Constant.\n */\n public async reportConstantDelta(constantA: Constant, propertyName: string, valueA: any, valueB: any, _compareDirection: SchemaCompareDirection): Promise<void> {\n const diag = new SchemaCompareDiagnostics.ConstantDelta(constantA, [propertyName, valueA, valueB]);\n await this.reportDiagnostic(diag);\n }\n\n private async reportDiagnostic(diagnostic: AnyDiagnostic): Promise<void> {\n if (this._schemaAChanges.schema === diagnostic.schema) {\n this._schemaAChanges.addDiagnostic(diagnostic);\n return;\n }\n if (this._schemaBChanges.schema === diagnostic.schema) {\n this._schemaBChanges.addDiagnostic(diagnostic);\n return;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaCompareResultDelegate.js","sourceRoot":"","sources":["../../../src/Validation/SchemaCompareResultDelegate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaCompareVisitor.js","sourceRoot":"","sources":["../../../src/Validation/SchemaCompareVisitor.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 Comparison\n */\n\nimport { AnyClass, AnyProperty, Constant, CustomAttributeClass, CustomAttributeContainerProps,\n ECClass, EntityClass, Enumeration, Format, InvertedUnit, ISchemaPartVisitor, KindOfQuantity, Mixin,\n Phenomenon, Property, PropertyCategory, RelationshipClass, RelationshipConstraint, Schema, SchemaItem,\n SchemaItemType, StructClass, Unit, UnitSystem,\n} from \"@itwin/ecschema-metadata\";\nimport { ISchemaComparer } from \"./SchemaComparer\";\n\n/**\n * An ISchemaPartVisitor interface implementation that is used to compare to Schemas.\n * @internal\n */\nexport class SchemaCompareVisitor implements ISchemaPartVisitor {\n private _schemaB: Schema;\n private _schemaComparer: ISchemaComparer;\n\n /**\n * Initializes a new SchemaCompareVisitor instance.\n * @param schemaComparer The [[SchemaComparer]] to use to compare each item of the schema.\n * @param schemaToCompare The second or 'B' schema to compare against the schema being traversed (Schema A).\n */\n constructor(schemaComparer: ISchemaComparer, schemaToCompare: Schema) {\n this._schemaComparer = schemaComparer;\n this._schemaB = schemaToCompare;\n }\n\n /**\n * Called before schema traversal.\n * @param schema a Schema object.\n */\n public async visitFullSchema(schemaA: Schema) {\n this._schemaComparer.compareSchemaProps(schemaA, this._schemaB);\n }\n\n /**\n * Called for each [[SchemaItem]] instance found during schema traversal.\n * @param schemaItem a SchemaItem object.\n */\n public async visitSchemaItem(schemaItemA: SchemaItem) {\n const schemaItemB = await this._schemaComparer.resolveItem(schemaItemA, this._schemaB, SchemaItem);\n this._schemaComparer.compareSchemaItems(schemaItemA, schemaItemB);\n }\n\n /**\n * Called for each [[AnyClass]] instance found during schema traversal.\n * @param ecClass an ECClass object.\n */\n public async visitClass(classA: AnyClass): Promise<void> {\n const classB = await this._schemaComparer.resolveItem(classA, this._schemaB, ECClass);\n if (classB && classA.schemaItemType === classB.schemaItemType)\n this._schemaComparer.compareClasses(classA, classB);\n }\n\n /**\n * Called for each [[AnyProperty]] instance of an ECClass.\n * @param property an AnyProperty object.\n */\n public async visitProperty(propertyA: AnyProperty): Promise<void> {\n let propertyB: AnyProperty | undefined;\n\n const classB = await this._schemaComparer.resolveItem(propertyA.class, this._schemaB, ECClass);\n if (classB && propertyA.class.schemaItemType === classB.schemaItemType){\n propertyB = await this._schemaComparer.resolveProperty(propertyA, classB);\n this._schemaComparer.compareProperties(propertyA, propertyB);\n }\n }\n\n /**\n * Called for each [[EntityClass]] instance found during schema traversal.\n * @param entityClass an EntityClass object.\n */\n public async visitEntityClass(entityA: EntityClass): Promise<void> {\n const entityB = await this._schemaComparer.resolveItem(entityA, this._schemaB, EntityClass);\n if (entityB && entityB.schemaItemType === SchemaItemType.EntityClass)\n this._schemaComparer.compareEntityClasses(entityA, entityB);\n }\n\n /**\n * Called for each [[StructClass]] instance found during schema traversal.\n * @param structClass a StructClass object.\n */\n public async visitStructClass(_structA: StructClass): Promise<void> {\n // No comparison to make specifically on StructClasses\n }\n\n /**\n * Called for each [[Mixin]] instance found during schema traversal.\n * @param mixin a Mixin object.\n */\n public async visitMixin(mixinA: Mixin): Promise<void> {\n const mixinB = await this._schemaComparer.resolveItem(mixinA, this._schemaB, Mixin);\n if (mixinB && mixinB.schemaItemType === SchemaItemType.Mixin)\n this._schemaComparer.compareMixins(mixinA, mixinB);\n }\n\n /**\n * Called for each [[RelationshipClass]] instance found during schema traversal.\n * @param relationshipClass a RelationshipClass object.\n */\n public async visitRelationshipClass(relationshipA: RelationshipClass): Promise<void> {\n const relationshipB = await this._schemaComparer.resolveItem(relationshipA, this._schemaB, RelationshipClass);\n if (relationshipB && relationshipB.schemaItemType === SchemaItemType.RelationshipClass)\n this._schemaComparer.compareRelationshipClasses(relationshipA, relationshipB);\n }\n\n /**\n * Called for each [[RelationshipConstraint]] of each RelationshipClass found during schema traversal.\n * @param relationshipConstraint a RelationshipConstraint object.\n */\n public async visitRelationshipConstraint(constraintA: RelationshipConstraint): Promise<void> {\n let constraintB: RelationshipConstraint | undefined;\n const relationshipB = await this._schemaComparer.resolveItem(constraintA.relationshipClass, this._schemaB, RelationshipClass);\n if (relationshipB && relationshipB.schemaItemType === SchemaItemType.RelationshipClass) {\n constraintB = constraintA.isSource ? relationshipB.source : relationshipB.target;\n if (constraintB) {\n this._schemaComparer.compareRelationshipConstraints(constraintA, constraintB);\n }\n }\n }\n\n /**\n * Called for each [[CustomAttributeClass]] instance found during schema traversal.\n * @param customAttributeClass a CustomAttributeClass object.\n */\n public async visitCustomAttributeClass(customAttributeA: CustomAttributeClass): Promise<void> {\n const customAttributeB = await this._schemaComparer.resolveItem(customAttributeA, this._schemaB, CustomAttributeClass);\n if (customAttributeB && customAttributeB.schemaItemType === SchemaItemType.CustomAttributeClass)\n this._schemaComparer.compareCustomAttributeClasses(customAttributeA, customAttributeB);\n }\n\n /**\n * Called for each [[CustomAttribute]] container in the schema.\n * @param customAttributeContainer a [[CustomAttributeContainerProps]] object.\n */\n public async visitCustomAttributeContainer(containerA: CustomAttributeContainerProps): Promise<void> {\n let containerB: CustomAttributeContainerProps | undefined;\n\n if (Schema.isSchema(containerA)) {\n containerB = this._schemaB;\n } else if (ECClass.isECClass(containerA)) {\n const parent = await this._schemaComparer.resolveItem(containerA, this._schemaB, ECClass);\n containerB = parent && parent.schemaItemType === containerA.schemaItemType ? parent : undefined;\n } else if (Property.isProperty(containerA)) {\n const parent = await this._schemaComparer.resolveItem(containerA.class, this._schemaB, ECClass);\n containerB = parent && parent.schemaItemType === containerA.class.schemaItemType ? await this._schemaComparer.resolveProperty(containerA, parent) : undefined;\n } else if (RelationshipConstraint.isRelationshipConstraint(containerA)) {\n const parent = await this._schemaComparer.resolveItem(containerA.relationshipClass, this._schemaB, RelationshipClass);\n containerB = parent ? containerA.isSource ? parent.source : parent.target : undefined;\n }\n\n if (containerB)\n this._schemaComparer.compareCustomAttributeContainers(containerA, containerB);\n }\n\n /**\n * Called for each [[Enumeration]] instance found during schema traversal.\n * @param enumeration an Enumeration object.\n */\n public async visitEnumeration(enumA: Enumeration) {\n const enumB = await this._schemaComparer.resolveItem(enumA, this._schemaB, Enumeration);\n if (enumB && enumB.schemaItemType === SchemaItemType.Enumeration)\n this._schemaComparer.compareEnumerations(enumA, enumB);\n }\n\n /**\n * Called for each [[KindOfQuantity]] instance found during schema traversal.\n * @param koq a KindOfQuantity object.\n */\n public async visitKindOfQuantity(koqA: KindOfQuantity) {\n const koqB = await this._schemaComparer.resolveItem(koqA, this._schemaB, KindOfQuantity);\n if (koqB && koqB.schemaItemType === SchemaItemType.KindOfQuantity)\n this._schemaComparer.compareKindOfQuantities(koqA, koqB);\n }\n\n /**\n * Called for each [[PropertyCategory]] instance found during schema traversal.\n * @param category a PropertyCategory object.\n */\n public async visitPropertyCategory(categoryA: PropertyCategory) {\n const categoryB = await this._schemaComparer.resolveItem(categoryA, this._schemaB, PropertyCategory);\n if (categoryB && categoryB.schemaItemType === SchemaItemType.PropertyCategory)\n this._schemaComparer.comparePropertyCategories(categoryA, categoryB);\n }\n\n /**\n * Called for each [[Format]] instance found during schema traversal.\n * @param format a Format object.\n */\n public async visitFormat(formatA: Format): Promise<void> {\n const formatB = await this._schemaComparer.resolveItem(formatA, this._schemaB, Format);\n if (formatB && formatB.schemaItemType === SchemaItemType.Format)\n this._schemaComparer.compareFormats(formatA, formatB);\n }\n\n /**\n * Called for each [[Unit]] instance found during schema traversal.\n * @param unit a Unit object.\n */\n public async visitUnit(unitA: Unit): Promise<void> {\n const unitB = await this._schemaComparer.resolveItem(unitA, this._schemaB, Unit);\n if (unitB && Unit.isUnit(unitB))\n this._schemaComparer.compareUnits(unitA, unitB);\n }\n\n /**\n * Called for each [[InvertedUnit]] instance found during schema traversal.\n * @param invertedUnit an InvertedUnit object.\n */\n public async visitInvertedUnit(invertedUnitA: InvertedUnit): Promise<void> {\n const invertedUnitB = await this._schemaComparer.resolveItem(invertedUnitA, this._schemaB, InvertedUnit);\n if (invertedUnitB && invertedUnitB.schemaItemType === SchemaItemType.InvertedUnit)\n this._schemaComparer.compareInvertedUnits(invertedUnitA, invertedUnitB);\n }\n\n /**\n * Called for each [[UnitSystem]] instance found during schema traversal.\n * @param unitSystem a UnitSystem object.\n */\n public async visitUnitSystem(_unitSystemA: UnitSystem): Promise<void> {\n // No comparison to make specifically on unitSystem\n }\n\n /**\n * Called for each [[Phenomenon]] instance found during schema traversal.\n * @param phenomena a Phenomenon object.\n */\n public async visitPhenomenon(phenomenonA: Phenomenon): Promise<void> {\n const phenomenonB = await this._schemaComparer.resolveItem(phenomenonA, this._schemaB, Phenomenon);\n if (phenomenonB && phenomenonB.schemaItemType === SchemaItemType.Phenomenon)\n this._schemaComparer.comparePhenomenons(phenomenonA, phenomenonB);\n }\n\n /**\n * Called for each [[Constant]] instance found during schema traversal.\n * @param constant a Constant object.\n */\n public async visitConstant(constantA: Constant): Promise<void> {\n const constantB = await this._schemaComparer.resolveItem(constantA, this._schemaB, Constant);\n if (constantB && constantB.schemaItemType === SchemaItemType.Constant)\n this._schemaComparer.compareConstants(constantA, constantB);\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaCompareVisitor.js","sourceRoot":"","sources":["../../../src/Validation/SchemaCompareVisitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaComparer.js","sourceRoot":"","sources":["../../../src/Validation/SchemaComparer.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 Comparison\n */\n\nimport {\n AnyClass, AnyEnumerator, AnyProperty, classModifierToString, Constant, containerTypeToString, CustomAttribute, CustomAttributeClass,\n CustomAttributeContainerProps, ECClass, EntityClass, Enumeration, Format, InvertedUnit, KindOfQuantity, Mixin, OverrideFormat, Phenomenon,\n primitiveTypeToString, PropertyCategory, propertyTypeToString, RelationshipClass, RelationshipConstraint, Schema,\n SchemaItem, SchemaItemKey, strengthDirectionToString, strengthToString, Unit,\n} from \"@itwin/ecschema-metadata\";\nimport { formatTraitsToArray } from \"@itwin/core-quantity\";\nimport { ISchemaCompareReporter } from \"./SchemaCompareReporter\";\nimport { SchemaCompareResultDelegate } from \"./SchemaCompareResultDelegate\";\nimport { SchemaCompareVisitor } from \"./SchemaCompareVisitor\";\nimport { SchemaWalker } from \"./SchemaWalker\";\n\n/**\n * Enum that identifies if Schema A is being iterated (Forward) or\n * Schema B is being iterated (Backward);\n * @alpha\n */\nexport enum SchemaCompareDirection {\n Forward = 0,\n Backward = 1,\n}\n/**\n * Interface for comparing EC Schemas.\n * @alpha\n */\nexport interface ISchemaComparer {\n compareSchemas(schemaA: Schema, schemaB: Schema): void;\n compareSchemaProps(schemaA: Schema, schemaB: Schema): void;\n compareSchemaItems(schemaItemA: SchemaItem, schemaItemB: SchemaItem | undefined): void;\n compareClasses(classA: AnyClass, classB: AnyClass): void;\n compareProperties(propertyA: AnyProperty, propertyB: AnyProperty | undefined): void;\n compareEntityClasses(entityA: EntityClass, entityB: EntityClass): void;\n compareMixins(mixinA: Mixin, mixinB: Mixin): void;\n compareRelationshipClasses(relationshipClassA: RelationshipClass, relationshipClassB: RelationshipClass): void;\n compareRelationshipConstraints(relationshipConstraintA: RelationshipConstraint, relationshipConstraintB: RelationshipConstraint): void;\n compareCustomAttributeClasses(customAttributeClassA: CustomAttributeClass, customAttributeClassB: CustomAttributeClass): void;\n compareCustomAttributeContainers(containerA: CustomAttributeContainerProps, containerB: CustomAttributeContainerProps): void;\n compareEnumerations(enumA: Enumeration, enumB: Enumeration): void;\n compareKindOfQuantities(koqA: KindOfQuantity, koqB: KindOfQuantity): void;\n comparePropertyCategories(categoryA: PropertyCategory, categoryB: PropertyCategory): void;\n compareFormats(formatA: Format, formatB: Format): void;\n compareUnits(unitA: Unit, unitB: Unit): void;\n compareInvertedUnits(invertedUnitA: InvertedUnit, invertedUnitB: InvertedUnit): void;\n comparePhenomenons(phenomenonA: Phenomenon, phenomenonB: Phenomenon): void;\n compareConstants(constantA: Constant, constantB: Constant): void;\n\n /** @internal */\n resolveItem<TItem extends typeof SchemaItem>(item: SchemaItem, lookupSchema: Schema, itemConstructor: TItem): Promise<InstanceType<TItem> | undefined>;\n /** @internal */\n resolveProperty(propertyA: AnyProperty, ecClass: ECClass): Promise<AnyProperty | undefined>;\n /** @internal */\n areEqualByName(itemKeyA?: Readonly<SchemaItemKey> | SchemaItem, itemKeyB?: Readonly<SchemaItemKey> | SchemaItem): boolean;\n}\n\n function areStringsEqual(lhs?: string, rhs?: string): boolean {\n return (lhs ?? \"\") === (rhs ?? \"\");\n}\n\n/**\n * Compares EC Schemas and reports differences using the [[IDiagnosticReporter]] objects\n * specified.\n * @alpha\n */\nexport class SchemaComparer {\n private _compareDirection: SchemaCompareDirection;\n private _reporter!: SchemaCompareResultDelegate;\n private _reporters: ISchemaCompareReporter[];\n\n /**\n * Initializes a new SchemaComparer instance.\n * @param reporters The [[IDiagnosticReporter]] object(s) to use to report the results.\n */\n constructor(...reporters: ISchemaCompareReporter[]) {\n this._compareDirection = SchemaCompareDirection.Forward;\n this._reporters = reporters;\n }\n\n /**\n * Resolves a schema Item from the given lookup schema.\n * @internal\n */\n public async resolveItem<TItem extends typeof SchemaItem>(item: SchemaItem, lookupSchema: Schema, itemConstructor: TItem): Promise<InstanceType<TItem> | undefined> {\n return lookupSchema.lookupItem(item.name, itemConstructor);\n }\n\n /**\n * Resolves a property from a class.\n * @internal\n */\n public async resolveProperty(propertyA: AnyProperty, ecClass: ECClass): Promise<AnyProperty | undefined> {\n return ecClass.getProperty(propertyA.name) as Promise<AnyProperty | undefined>;\n }\n\n /**\n * Compares two schema items to determine if they are the same by name.\n * @internal\n */\n public areEqualByName(itemKeyA?: Readonly<SchemaItemKey> | SchemaItem, itemKeyB?: Readonly<SchemaItemKey> | SchemaItem): boolean {\n const nameA = itemKeyA ? itemKeyA.name.toUpperCase() : undefined;\n const nameB = itemKeyB ? itemKeyB.name.toUpperCase() : undefined;\n return nameA === nameB;\n }\n\n /**\n * Compares two schemas to identify differences.\n * @param schemaA The first Schema.\n * @param schemaB The second Schema.\n */\n public async compareSchemas(schemaA: Schema, schemaB: Schema) {\n this._reporter = new SchemaCompareResultDelegate(schemaA, schemaB, ...this._reporters);\n let visitor = new SchemaCompareVisitor(this, schemaB);\n let walker = new SchemaWalker(visitor);\n await walker.traverseSchema(schemaA);\n\n this._compareDirection = SchemaCompareDirection.Backward;\n\n visitor = new SchemaCompareVisitor(this, schemaA);\n walker = new SchemaWalker(visitor);\n await walker.traverseSchema(schemaB);\n\n this._compareDirection = SchemaCompareDirection.Forward;\n this._reporter.compareComplete();\n }\n\n /**\n * Compares two schemas to identify differences between property values.\n * @param schemaA The first Schema.\n * @param schemaB The second Schema.\n */\n public async compareSchemaProps(schemaA: Schema, schemaB: Schema): Promise<void> {\n const promises: Array<Promise<void>> = [];\n for (const ref of schemaA.references) {\n const refB = await schemaB.getReference(ref.fullName);\n if (!refB)\n promises.push(this._reporter.reportSchemaReferenceMissing(schemaA, ref, this._compareDirection));\n else if (!refB.schemaKey.matches(ref.schemaKey))\n promises.push(this._reporter.reportSchemaReferenceDelta(schemaA, ref, ref.schemaKey.version.toString(), refB.schemaKey.version.toString(), this._compareDirection));\n }\n\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n if (schemaA.schemaKey.toString() !== schemaB.schemaKey.toString())\n promises.push(this._reporter.reportSchemaDelta(schemaA, \"schemaKey\", schemaA.schemaKey.toString(), schemaB.schemaKey.toString(), this._compareDirection));\n\n if (schemaA.alias !== schemaB.alias)\n promises.push(this._reporter.reportSchemaDelta(schemaA, \"alias\", schemaA.alias, schemaB.alias, this._compareDirection));\n\n if (!areStringsEqual(schemaA.description, schemaB.description))\n promises.push(this._reporter.reportSchemaDelta(schemaA, \"description\", schemaA.description, schemaB.description, this._compareDirection));\n\n if (schemaA.label !== schemaB.label)\n promises.push(this._reporter.reportSchemaDelta(schemaA, \"label\", schemaA.label, schemaB.label, this._compareDirection));\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two SchemaItems to identify differences between property values.\n * @param schemaItemA The first SchemaItem.\n * @param schemaItemB The second SchemaItem.\n */\n public async compareSchemaItems(schemaItemA: SchemaItem, schemaItemB: SchemaItem | undefined): Promise<void> {\n const promises: Array<Promise<void>> = [];\n if (!schemaItemB) {\n promises.push(this._reporter.reportSchemaItemMissing(schemaItemA, this._compareDirection));\n await Promise.all(promises);\n return;\n }\n\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n if (schemaItemA.schemaItemType !== schemaItemB.schemaItemType) {\n const aType = schemaItemA.schemaItemType;\n const bType = schemaItemB.schemaItemType;\n promises.push(this._reporter.reportSchemaItemDelta(schemaItemA, \"schemaItemType\", aType, bType, this._compareDirection));\n await Promise.all(promises);\n return;\n }\n\n if (!areStringsEqual(schemaItemA.description, schemaItemB.description))\n promises.push(this._reporter.reportSchemaItemDelta(schemaItemA, \"description\", schemaItemA.description, schemaItemB.description, this._compareDirection));\n\n if (!areStringsEqual(schemaItemA.label, schemaItemB.label))\n promises.push(this._reporter.reportSchemaItemDelta(schemaItemA, \"label\", schemaItemA.label, schemaItemB.label, this._compareDirection));\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two ECClasses to identify differences between property values.\n * @param classA The first ECClass.\n * @param classB The second ECClass.\n */\n public async compareClasses(classA: AnyClass, classB: AnyClass): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n const promises: Array<Promise<void>> = [];\n\n if (classA.modifier !== classB.modifier) {\n const aMod = classModifierToString(classA.modifier);\n const bMod = classModifierToString(classB.modifier);\n promises.push(this._reporter.reportClassDelta(classA, \"modifier\", aMod, bMod, this._compareDirection));\n }\n\n if (classA.baseClass || classB.baseClass) {\n const fullNameA = classA.baseClass?.fullName;\n const fullNameB = classB.baseClass?.fullName;\n\n if (fullNameA !== fullNameB) {\n const areSameByName = this.areItemsSameByName(classA.baseClass, classB.baseClass, classA.schema.name, classB.schema.name);\n if (!areSameByName) {\n const baseA = await classA.baseClass as AnyClass;\n const baseB = await classB.baseClass as AnyClass;\n promises.push(this._reporter.reportBaseClassDelta(classA, baseA, baseB, this._compareDirection));\n }\n }\n }\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two ECProperties to identify differences between property values.\n * @param propertyA The first ECProperty.\n * @param propertyB The second ECProperty.\n */\n public async compareProperties(propertyA: AnyProperty, propertyB: AnyProperty | undefined): Promise<void> {\n const promises: Array<Promise<void>> = [];\n\n if (!propertyB) {\n promises.push(this._reporter.reportPropertyMissing(propertyA, this._compareDirection));\n await Promise.all(promises);\n return;\n }\n\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n const propertyTypeA = propertyTypeToString(propertyA.propertyType);\n const propertyTypeB = propertyTypeToString(propertyB.propertyType);\n if (propertyTypeA !== propertyTypeB) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"type\", propertyTypeA, propertyTypeB, this._compareDirection));\n await Promise.all(promises);\n return;\n }\n\n if (!areStringsEqual(propertyA.label, propertyB.label))\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"label\", propertyA.label, propertyB.label, this._compareDirection));\n\n if (!areStringsEqual(propertyA.description, propertyB.description))\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"description\", propertyA.description, propertyB.description, this._compareDirection));\n\n if (propertyA.isReadOnly !== propertyB.isReadOnly)\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"isReadOnly\", propertyA.isReadOnly, propertyB.isReadOnly, this._compareDirection));\n\n if (propertyA.priority !== propertyB.priority)\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"priority\", propertyA.priority, propertyB.priority, this._compareDirection));\n\n if (propertyA.category || propertyB.category) {\n const catKeyA = propertyA.category?.fullName;\n const catKeyB = propertyB.category?.fullName;\n if (catKeyA !== catKeyB) {\n const areSameByName = this.areItemsSameByName(propertyA.category, propertyB.category, propertyA.schema.name, propertyB.schema.name);\n if (!areSameByName)\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"category\", catKeyA, catKeyB, this._compareDirection));\n }\n }\n\n if (propertyA.kindOfQuantity || propertyB.kindOfQuantity) {\n const koqKeyA = propertyA.kindOfQuantity?.fullName;\n const koqKeyB = propertyB.kindOfQuantity?.fullName;\n if (koqKeyA !== koqKeyB) {\n const areSameByName = this.areItemsSameByName(propertyA.kindOfQuantity, propertyB.kindOfQuantity, propertyA.schema.name, propertyB.schema.name);\n if (!areSameByName)\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"kindOfQuantity\", koqKeyA, koqKeyB, this._compareDirection));\n }\n }\n\n promises.push(this.comparePropertyType(propertyA, propertyB));\n await Promise.all(promises);\n }\n\n /**\n * Compares two EntityClass objects to identify differences between property values.\n * @param entityA\n * @param entityB\n */\n public async compareEntityClasses(entityA: EntityClass, entityB: EntityClass): Promise<void> {\n const promises: Array<Promise<void>> = [];\n for (const mixinA of entityA.mixins) {\n if (-1 === entityB.mixins.findIndex((mixinB) => this.areItemsSameByName(mixinA, mixinB, entityA.schema.name, entityB.schema.name)))\n promises.push(this._reporter.reportEntityMixinMissing(entityA, await mixinA, this._compareDirection));\n }\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two Mixin objects to identify differences between property values.\n * @param mixinA\n * @param mixinB\n */\n public async compareMixins(mixinA: Mixin, mixinB: Mixin): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n if (mixinA.appliesTo || mixinB.appliesTo) {\n const appliesToA = mixinA.appliesTo?.fullName;\n const appliesToB = mixinB.appliesTo?.fullName;\n if (appliesToA !== appliesToB) {\n const areSameByName = this.areItemsSameByName(mixinA.appliesTo, mixinB.appliesTo, mixinA.schema.name, mixinB.schema.name);\n if (!areSameByName)\n await this._reporter.reportMixinDelta(mixinA, \"appliesTo\", appliesToA, appliesToB, this._compareDirection);\n }\n }\n }\n\n /**\n * Compares two RelationshipClass objects to identify differences between property values.\n * @param relationshipA\n * @param relationshipB\n */\n public async compareRelationshipClasses(relationshipA: RelationshipClass, relationshipB: RelationshipClass): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n const promises: Array<Promise<void>> = [];\n\n if (relationshipA.strength !== relationshipB.strength) {\n const strengthAString = strengthToString(relationshipA.strength);\n const strengthBString = strengthToString(relationshipB.strength);\n promises.push(this._reporter.reportRelationshipClassDelta(relationshipA, \"strength\", strengthAString, strengthBString, this._compareDirection));\n }\n\n if (relationshipA.strengthDirection !== relationshipB.strengthDirection) {\n const directionAString = strengthDirectionToString(relationshipA.strengthDirection);\n const directionBString = strengthDirectionToString(relationshipB.strengthDirection);\n promises.push(this._reporter.reportRelationshipClassDelta(relationshipA, \"strengthDirection\", directionAString, directionBString, this._compareDirection));\n }\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two RelationshipConstraint objects to identify differences between property values.\n * @param relationshipConstraintA\n * @param relationshipConstraintB\n */\n public async compareRelationshipConstraints(constraintA: RelationshipConstraint, constraintB: RelationshipConstraint): Promise<void> {\n const promises: Array<Promise<void>> = [];\n\n if (constraintA.constraintClasses) {\n for (const classA of constraintA.constraintClasses) {\n if (!constraintB.constraintClasses || -1 === constraintB.constraintClasses.findIndex((classB) =>\n this.areItemsSameByName(classA, classB, constraintA.schema.name, constraintB.schema.name)))\n promises.push(this._reporter.reportRelationshipConstraintClassMissing(constraintA, await classA, this._compareDirection));\n }\n }\n\n if (this._compareDirection === SchemaCompareDirection.Backward) {\n await Promise.all(promises);\n return;\n }\n\n if (constraintA.multiplicity || constraintB.multiplicity) {\n const multiplicityA = constraintA.multiplicity.toString();\n const multiplicityB = constraintB.multiplicity.toString();\n if (multiplicityA !== multiplicityB)\n promises.push(this._reporter.reportRelationshipConstraintDelta(constraintA, \"multiplicity\", multiplicityA, multiplicityB, this._compareDirection));\n }\n\n if (constraintA.roleLabel !== constraintB.roleLabel)\n promises.push(this._reporter.reportRelationshipConstraintDelta(constraintA, \"roleLabel\", constraintA.roleLabel, constraintB.roleLabel, this._compareDirection));\n\n if (constraintA.polymorphic !== constraintB.polymorphic)\n promises.push(this._reporter.reportRelationshipConstraintDelta(constraintA, \"polymorphic\", constraintA.polymorphic, constraintB.polymorphic, this._compareDirection));\n\n if (constraintA.abstractConstraint || constraintB.abstractConstraint) {\n const abstractA = constraintA.abstractConstraint?.fullName;\n const abstractB = constraintB.abstractConstraint?.fullName;\n if (abstractA !== abstractB) {\n const areSameByName = this.areItemsSameByName(constraintA.abstractConstraint, constraintB.abstractConstraint, constraintA.schema.name, constraintB.schema.name);\n if (!areSameByName) {\n promises.push(this._reporter.reportRelationshipConstraintDelta(constraintA, \"abstractConstraint\", abstractA, abstractB, this._compareDirection));\n }\n }\n }\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two CustomAttributeClass objects to identify differences between property values.\n * @param customAttributeClassA\n * @param customAttributeClassB\n */\n public async compareCustomAttributeClasses(customAttributeClassA: CustomAttributeClass, customAttributeClassB: CustomAttributeClass): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n if (customAttributeClassA.appliesTo !== customAttributeClassB.appliesTo) {\n const typeA = containerTypeToString(customAttributeClassA.appliesTo);\n const typeB = containerTypeToString(customAttributeClassB.appliesTo);\n await this._reporter.reportCustomAttributeClassDelta(customAttributeClassA, \"appliesTo\", typeA, typeB, this._compareDirection);\n }\n }\n\n /**\n * Compares two CustomAttributeContainerProps objects to identify differences between property values.\n * @param containerA\n * @param containerB\n */\n public async compareCustomAttributeContainers(containerA: CustomAttributeContainerProps, containerB: CustomAttributeContainerProps): Promise<void> {\n const promises: Array<Promise<void>> = [];\n\n if (containerA.customAttributes) {\n for (const ca of containerA.customAttributes) {\n if (!containerB.customAttributes || !this.containerHasClass(ca[1], containerA, containerB))\n promises.push(this._reporter.reportCustomAttributeInstanceClassMissing(containerA, ca[1], this._compareDirection));\n }\n }\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two Enumeration objects to identify differences between property values.\n * @param enumA\n * @param enumB\n */\n public async compareEnumerations(enumA: Enumeration, enumB: Enumeration): Promise<void> {\n const promises: Array<Promise<void>> = [];\n\n for (const enumeratorA of enumA.enumerators) {\n const enumeratorB = enumB.enumerators.find((e) => e.name === enumeratorA.name);\n if (!enumeratorB) {\n promises.push(this._reporter.reportEnumeratorMissing(enumA, enumeratorA, this._compareDirection));\n } else if (this._compareDirection === SchemaCompareDirection.Forward) {\n promises.push(this.compareEnumerators(enumeratorA, enumeratorB, enumA, enumB));\n }\n }\n\n if (this._compareDirection === SchemaCompareDirection.Backward) {\n await Promise.all(promises);\n return;\n }\n if (enumA.type !== enumB.type) {\n const typeAString = enumA.type ? primitiveTypeToString(enumA.type) : undefined;\n const typeBString = enumB.type ? primitiveTypeToString(enumB.type) : undefined;\n promises.push(this._reporter.reportEnumerationDelta(enumA, \"type\", typeAString, typeBString, this._compareDirection));\n }\n\n if (enumA.isStrict !== enumB.isStrict)\n promises.push(this._reporter.reportEnumerationDelta(enumA, \"isStrict\", enumA.isStrict, enumB.isStrict, this._compareDirection));\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two KindOfQuantity objects to identify differences between property values.\n * @param koqA\n * @param koqB\n */\n public async compareKindOfQuantities(koqA: KindOfQuantity, koqB: KindOfQuantity): Promise<void> {\n const promises: Array<Promise<void>> = [];\n\n if (koqA.presentationFormats) {\n for (const lazyUnitA of koqA.presentationFormats) {\n const unitA = OverrideFormat.isOverrideFormat(lazyUnitA) ? lazyUnitA : await lazyUnitA;\n\n let itemFound = false;\n for(const lazyUnitB of koqB.presentationFormats) {\n const unitB = OverrideFormat.isOverrideFormat(lazyUnitB) ? lazyUnitB : await lazyUnitB;\n if (this.areOverrideFormatsSameByName(unitA, unitB, koqA.schema.name, koqB.schema.name)) {\n itemFound = true;\n break;\n }\n }\n\n if (!itemFound) {\n promises.push(this._reporter.reportPresentationUnitMissing(koqA, unitA, this._compareDirection));\n }\n }\n }\n\n if (this._compareDirection === SchemaCompareDirection.Backward) {\n await Promise.all(promises);\n return;\n }\n\n if (koqA.relativeError !== koqB.relativeError) {\n promises.push(this._reporter.reportKoqDelta(koqA, \"relativeError\", koqA.relativeError, koqB.relativeError, this._compareDirection));\n }\n\n if (koqA.persistenceUnit || koqB.persistenceUnit) {\n const unitNameA = koqA.persistenceUnit?.fullName;\n const unitNameB = koqB.persistenceUnit?.fullName;\n if (unitNameA !== unitNameB) {\n const eqByName = this.areItemsSameByName(koqA.persistenceUnit, koqB.persistenceUnit, koqA.schema.name, koqB.schema.name);\n if (!eqByName)\n promises.push(this._reporter.reportKoqDelta(koqA, \"persistenceUnit\", unitNameA, unitNameB, this._compareDirection));\n }\n }\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two PropertyCategory objects to identify differences between property values.\n * @param categoryA\n * @param categoryB\n */\n public async comparePropertyCategories(categoryA: PropertyCategory, categoryB: PropertyCategory): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n if (categoryA.priority !== categoryB.priority)\n await this._reporter.reportPropertyCategoryDelta(categoryA, \"priority\", categoryA.priority, categoryB.priority, this._compareDirection);\n }\n\n /**\n * Compares two Format objects to identify differences between property values.\n * @param formatA\n * @param formatB\n */\n public async compareFormats(formatA: Format, formatB: Format): Promise<void> {\n const promises: Array<Promise<void>> = [];\n\n promises.push(this.compareFormatUnits(formatA, formatB));\n\n if (this._compareDirection === SchemaCompareDirection.Backward) {\n await Promise.all(promises);\n return;\n }\n\n if (formatA.roundFactor !== formatB.roundFactor)\n promises.push(this._reporter.reportFormatDelta(formatA, \"roundFactor\", formatA.roundFactor, formatB.roundFactor, this._compareDirection));\n\n if (formatA.type !== formatB.type) {\n const typeAString = formatA.type;\n const typeBString = formatB.type;\n promises.push(this._reporter.reportFormatDelta(formatA, \"type\", typeAString, typeBString, this._compareDirection));\n }\n\n if (formatA.precision !== formatB.precision)\n promises.push(this._reporter.reportFormatDelta(formatA, \"precision\", formatA.precision, formatB.precision, this._compareDirection));\n\n if (formatA.minWidth !== formatB.minWidth)\n promises.push(this._reporter.reportFormatDelta(formatA, \"minWidth\", formatA.minWidth, formatB.minWidth, this._compareDirection));\n\n if (formatA.scientificType !== formatB.scientificType) {\n const typeAString = formatA.scientificType !== undefined ? formatA.scientificType : undefined;\n const typeBString = formatB.scientificType !== undefined ? formatB.scientificType : undefined;\n promises.push(this._reporter.reportFormatDelta(formatA, \"scientificType\", typeAString, typeBString, this._compareDirection));\n }\n\n if (formatA.showSignOption !== formatB.showSignOption) {\n const optionA = formatA.showSignOption;\n const optionB = formatB.showSignOption;\n promises.push(this._reporter.reportFormatDelta(formatA, \"showSignOption\", optionA, optionB, this._compareDirection));\n }\n\n if (formatA.decimalSeparator !== formatB.decimalSeparator)\n promises.push(this._reporter.reportFormatDelta(formatA, \"decimalSeparator\", formatA.decimalSeparator, formatB.decimalSeparator, this._compareDirection));\n\n if (formatA.thousandSeparator !== formatB.thousandSeparator)\n promises.push(this._reporter.reportFormatDelta(formatA, \"thousandSeparator\", formatA.thousandSeparator, formatB.thousandSeparator, this._compareDirection));\n\n if (formatA.uomSeparator !== formatB.uomSeparator)\n promises.push(this._reporter.reportFormatDelta(formatA, \"uomSeparator\", formatA.uomSeparator, formatB.uomSeparator, this._compareDirection));\n\n if (formatA.stationSeparator !== formatB.stationSeparator)\n promises.push(this._reporter.reportFormatDelta(formatA, \"stationSeparator\", formatA.stationSeparator, formatB.stationSeparator, this._compareDirection));\n\n if (formatA.stationOffsetSize !== formatB.stationOffsetSize)\n promises.push(this._reporter.reportFormatDelta(formatA, \"stationOffsetSize\", formatA.stationOffsetSize, formatB.stationOffsetSize, this._compareDirection));\n\n if (formatA.formatTraits !== formatB.formatTraits) {\n const traitsA = formatTraitsToArray(formatA.formatTraits);\n const traitsB = formatTraitsToArray(formatB.formatTraits);\n promises.push(this._reporter.reportFormatDelta(formatA, \"formatTraits\", traitsA.toString(), traitsB.toString(), this._compareDirection));\n }\n\n if (formatA.spacer !== formatB.spacer)\n promises.push(this._reporter.reportFormatDelta(formatA, \"spacer\", formatA.spacer, formatB.spacer, this._compareDirection));\n\n if (formatA.includeZero !== formatB.includeZero)\n promises.push(this._reporter.reportFormatDelta(formatA, \"includeZero\", formatA.includeZero, formatB.includeZero, this._compareDirection));\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two Unit objects to identify differences between property values.\n * @param unitA\n * @param unitB\n */\n public async compareUnits(unitA: Unit, unitB: Unit): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n const promises: Array<Promise<void>> = [];\n\n if (unitA.phenomenon || unitB.phenomenon) {\n const fullNameA = unitA.phenomenon?.fullName;\n const fullNameB = unitB.phenomenon?.fullName;\n if (fullNameA !== fullNameB) {\n const eqByName = this.areItemsSameByName(unitA.phenomenon, unitB.phenomenon, unitA.schema.name, unitB.schema.name);\n if (!eqByName)\n promises.push(this._reporter.reportUnitDelta(unitA, \"phenomenon\", fullNameA, fullNameB, this._compareDirection));\n }\n }\n\n if (unitA.unitSystem || unitB.unitSystem) {\n const fullNameA = unitA.unitSystem?.fullName;\n const fullNameB = unitB.unitSystem?.fullName;\n if (fullNameA !== fullNameB) {\n const eqByName = this.areItemsSameByName(unitA.unitSystem, unitB.unitSystem, unitA.schema.name, unitB.schema.name);\n if (!eqByName)\n promises.push(this._reporter.reportUnitDelta(unitA, \"unitSystem\", fullNameA, fullNameB, this._compareDirection));\n }\n }\n\n if (unitA.definition !== unitB.definition)\n promises.push(this._reporter.reportUnitDelta(unitA, \"definition\", unitA.definition, unitB.definition, this._compareDirection));\n\n if (unitA.numerator !== unitB.numerator)\n promises.push(this._reporter.reportUnitDelta(unitA, \"numerator\", unitA.numerator, unitB.numerator, this._compareDirection));\n\n if (unitA.denominator !== unitB.denominator)\n promises.push(this._reporter.reportUnitDelta(unitA, \"denominator\", unitA.denominator, unitB.denominator, this._compareDirection));\n\n if (unitA.offset !== unitB.offset)\n promises.push(this._reporter.reportUnitDelta(unitA, \"offset\", unitA.offset, unitB.offset, this._compareDirection));\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two InvertedUnit objects to identify differences between property values.\n * @param invertedUnitA\n * @param invertedUnitB\n */\n public async compareInvertedUnits(invertedUnitA: InvertedUnit, invertedUnitB: InvertedUnit): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n const promises: Array<Promise<void>> = [];\n\n if (invertedUnitA.invertsUnit || invertedUnitB.invertsUnit) {\n const fullNameA = invertedUnitA.invertsUnit?.fullName;\n const fullNameB = invertedUnitB.invertsUnit?.fullName;\n if (fullNameA !== fullNameB) {\n const eqByName = this.areItemsSameByName(invertedUnitA.invertsUnit, invertedUnitB.invertsUnit, invertedUnitA.schema.name, invertedUnitB.schema.name);\n if (!eqByName)\n promises.push(this._reporter.reportInvertedUnitDelta(invertedUnitA, \"invertsUnit\", fullNameA, fullNameB, this._compareDirection));\n }\n }\n\n if (invertedUnitA.unitSystem || invertedUnitB.unitSystem) {\n const fullNameA = invertedUnitA.unitSystem?.fullName;\n const fullNameB = invertedUnitB.unitSystem?.fullName;\n if (fullNameA !== fullNameB) {\n const eqByName = this.areItemsSameByName(invertedUnitA.unitSystem, invertedUnitB.unitSystem, invertedUnitA.schema.name, invertedUnitB.schema.name);\n if (!eqByName)\n promises.push(this._reporter.reportInvertedUnitDelta(invertedUnitA, \"unitSystem\", fullNameA, fullNameB, this._compareDirection));\n }\n }\n\n await Promise.all(promises);\n }\n\n /**\n * Compares two Phenomenon objects to identify differences between property values.\n * @param phenomenonA\n * @param phenomenonB\n */\n public async comparePhenomenons(phenomenonA: Phenomenon, phenomenonB: Phenomenon): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n if (phenomenonA.definition !== phenomenonB.definition)\n await this._reporter.reportPhenomenonDelta(phenomenonA, \"definition\", phenomenonA.definition, phenomenonB.definition, this._compareDirection);\n }\n\n /**\n * Compares two Constant objects to identify differences between property values.\n * @param constantA\n * @param constantB\n */\n public async compareConstants(constantA: Constant, constantB: Constant): Promise<void> {\n if (this._compareDirection === SchemaCompareDirection.Backward)\n return;\n\n const promises: Array<Promise<void>> = [];\n\n if (constantA.phenomenon || constantB.phenomenon) {\n const fullNameA = constantA.phenomenon?.fullName;\n const fullNameB = constantB.phenomenon?.fullName;\n if (fullNameA !== fullNameB) {\n const eqByName = this.areItemsSameByName(constantA.phenomenon, constantB.phenomenon, constantA.schema.name, constantB.schema.name);\n if (!eqByName)\n promises.push(this._reporter.reportConstantDelta(constantA, \"phenomenon\", fullNameA, fullNameB, this._compareDirection));\n }\n }\n\n if (constantA.definition !== constantB.definition)\n promises.push(this._reporter.reportConstantDelta(constantA, \"definition\", constantA.definition, constantB.definition, this._compareDirection));\n\n if (constantA.numerator !== constantB.numerator)\n promises.push(this._reporter.reportConstantDelta(constantA, \"numerator\", constantA.numerator, constantB.numerator, this._compareDirection));\n\n if (constantA.denominator !== constantB.denominator)\n promises.push(this._reporter.reportConstantDelta(constantA, \"denominator\", constantA.denominator, constantB.denominator, this._compareDirection));\n\n await Promise.all(promises);\n }\n\n private async comparePropertyType(propertyA: AnyProperty, propertyB: AnyProperty): Promise<void> {\n const promises: Array<Promise<void>> = [];\n\n if (propertyA.isArray()) {\n const minOccursB = propertyB.isArray() ? propertyB.minOccurs : undefined;\n if (propertyA.minOccurs !== minOccursB) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"minOccurs\", propertyA.minOccurs, minOccursB, this._compareDirection));\n }\n\n const maxOccursB = propertyB.isArray() ? propertyB.maxOccurs : undefined;\n if (propertyA.maxOccurs !== maxOccursB) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"maxOccurs\", propertyA.maxOccurs, maxOccursB, this._compareDirection));\n }\n }\n\n if (propertyA.isEnumeration()) {\n const enumerationB = propertyB.isEnumeration() ? propertyB.enumeration : undefined;\n if (propertyA.enumeration || enumerationB) {\n const enumA = propertyA.enumeration?.fullName;\n const enumB = enumerationB?.fullName;\n if (enumA !== enumB) {\n const areSameByName = this.areItemsSameByName(propertyA.enumeration, enumerationB, propertyA.schema.name, propertyB.schema.name);\n if (!areSameByName) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"enumeration\", enumA, enumB, this._compareDirection));\n }\n }\n }\n }\n\n if (propertyA.isNavigation()) {\n const strengthDirectionB = propertyB.isNavigation() ? propertyB.direction : undefined;\n if (propertyA.direction !== strengthDirectionB) {\n const dirA = strengthDirectionToString(propertyA.direction);\n const dirB = strengthDirectionB !== undefined ? strengthDirectionToString(strengthDirectionB) : undefined;\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"direction\", dirA, dirB, this._compareDirection));\n }\n\n if (propertyA.relationshipClass) { // eslint-disable-line @typescript-eslint/no-misused-promises\n const relationshipClassB = propertyB.isNavigation() ? propertyB.relationshipClass : undefined;\n const relA = propertyA.relationshipClass.fullName;\n const relB = relationshipClassB ? relationshipClassB.fullName : undefined;\n if (relA !== relB){\n const areSameByName = this.areItemsSameByName(propertyA.relationshipClass, relationshipClassB, propertyA.schema.name, propertyB.schema.name);\n if(!areSameByName)\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"relationshipClass\", relA, relB, this._compareDirection));\n }\n }\n }\n\n if (propertyA.isPrimitive()) {\n const primitiveTypeB = propertyB.isPrimitive() ? propertyB.primitiveType : undefined;\n if (propertyA.primitiveType !== primitiveTypeB) {\n const aType = primitiveTypeToString(propertyA.primitiveType);\n const bType = primitiveTypeB !== undefined ? primitiveTypeToString(primitiveTypeB) : undefined;\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"primitiveType\", aType, bType, this._compareDirection));\n }\n\n const minLengthB = propertyB.isPrimitive() ? propertyB.minLength : undefined;\n if (propertyA.minLength !== minLengthB) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"minLength\", propertyA.minLength, minLengthB, this._compareDirection));\n }\n\n // valid for primitive and enumeration properties\n const maxLengthB = propertyB.isPrimitive() ? propertyB.maxLength : undefined;\n if (propertyA.maxLength !== maxLengthB) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"maxLength\", propertyA.maxLength, maxLengthB, this._compareDirection));\n }\n\n const minValueB = propertyB.isPrimitive() ? propertyB.minValue : undefined;\n if (propertyA.minValue !== minValueB) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"minValue\", propertyA.minValue, minValueB, this._compareDirection));\n }\n\n const maxValueB = propertyB.isPrimitive() ? propertyB.maxValue : undefined;\n if (propertyA.maxValue !== maxValueB) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"maxValue\", propertyA.maxValue, maxValueB, this._compareDirection));\n }\n\n const extendedTypeNameB = propertyB.isPrimitive() ? propertyB.extendedTypeName : undefined;\n if (propertyA.extendedTypeName !== extendedTypeNameB) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"extendedTypeName\", propertyA.extendedTypeName, extendedTypeNameB, this._compareDirection));\n }\n }\n\n if (propertyA.isStruct()) {\n const structA = propertyA.structClass;\n const structB = propertyB.isStruct() ? propertyB.structClass : undefined;\n if (structA || structB) {\n const structNameA = structA.fullName;\n const structNameB = structB?.fullName;\n if (structNameA !== structNameB) {\n const areSameByName = this.areItemsSameByName(structA.key, structB?.key, propertyA.schema.name, propertyB.schema.name);\n if (!areSameByName) {\n promises.push(this._reporter.reportPropertyDelta(propertyA, \"structClass\", structNameA, structNameB, this._compareDirection));\n }\n }\n }\n }\n\n await Promise.all(promises);\n }\n\n private async compareEnumerators(enumeratorA: AnyEnumerator, enumeratorB: AnyEnumerator, enumA: Enumeration, enumB: Enumeration): Promise<void> {\n const promises: Array<Promise<void>> = [];\n\n if (!areStringsEqual(enumeratorA.description, enumeratorB.description))\n promises.push(this._reporter.reportEnumeratorDelta(enumA, enumeratorA, \"description\", enumeratorA.description, enumeratorB.description, this._compareDirection));\n\n if (!areStringsEqual(enumeratorA.label, enumeratorB.label))\n promises.push(this._reporter.reportEnumeratorDelta(enumA, enumeratorA, \"label\", enumeratorA.label, enumeratorB.label, this._compareDirection));\n\n // No need to compare values if the type is different (which will be reported separately)\n if (enumA.type === enumB.type && enumeratorA.value !== enumeratorB.value)\n promises.push(this._reporter.reportEnumeratorDelta(enumA, enumeratorA, \"value\", enumeratorA.value, enumeratorB.value, this._compareDirection));\n\n await Promise.all(promises);\n }\n\n private async compareFormatUnits(formatA: Format, formatB: Format): Promise<void> {\n if (!formatA.units)\n return;\n\n const promises: Array<Promise<void>> = [];\n\n for (const [lazyUnitA, labelA] of formatA.units) {\n const unitA = await lazyUnitA;\n const unitB = formatB.units ? formatB.units.find((u) => this.areItemsSameByName(unitA, u[0], formatA.schema.name, formatB.schema.name)) : undefined;\n if (!unitB) {\n promises.push(this._reporter.reportFormatUnitMissing(formatA, [unitA, labelA], this._compareDirection));\n continue;\n }\n\n if (this._compareDirection === SchemaCompareDirection.Backward)\n continue;\n\n if (labelA !== unitB[1]) {;\n const labelB = unitB[1];\n promises.push(this._reporter.reportUnitLabelOverrideDelta(formatA, unitA, labelA, labelB, this._compareDirection));\n }\n }\n\n await Promise.all(promises);\n }\n\n private areOverrideFormatsSameByName(\n itemKeyA: Format | OverrideFormat,\n itemKeyB: Format | OverrideFormat,\n topLevelSchemaNameA: string,\n topLevelSchemaNameB: string | undefined ): boolean {\n\n if (itemKeyA.units) {\n for (const unitA of itemKeyA.units) {\n if (!itemKeyB.units\n || -1 === itemKeyB.units.findIndex((unitB) => this.areItemsSameByName(unitA[0], unitB[0], topLevelSchemaNameA, topLevelSchemaNameB)\n && unitA[1] === unitB[1]))\n return false;\n }\n }\n\n const itemA = OverrideFormat.isOverrideFormat(itemKeyA) ? itemKeyA.parent : itemKeyA;\n const itemB = OverrideFormat.isOverrideFormat(itemKeyB) ? itemKeyB.parent : itemKeyB;\n\n return itemKeyA.precision === itemKeyB.precision && this.areItemsSameByName(itemA, itemB, topLevelSchemaNameA, topLevelSchemaNameB);\n }\n\n /**\n * Compares two item keys.\n * @param itemKeyA item key A to compare to.\n * @param itemKeyB item key B to compare to.\n * @param topLevelSchemaNameA top level schema name in which the item A exists.\n * @param topLevelSchemaNameB top level schema name in which the item B exists.\n * @returns true if both names are the same and they come from their respective top level schema.\n */\n private areItemsSameByName(\n itemKeyA: Readonly<SchemaItemKey> | SchemaItem | undefined,\n itemKeyB: Readonly<SchemaItemKey> | SchemaItem | undefined,\n topLevelSchemaNameA: string,\n topLevelSchemaNameB: string | undefined ): boolean {\n\n const equalByName = this.areEqualByName(itemKeyA, itemKeyB);\n\n const schemaNameA = itemKeyA\n ? SchemaItem.isSchemaItem(itemKeyA)\n ? itemKeyA.schema.name\n : itemKeyA.schemaName\n : undefined;\n\n const schemaNameB = itemKeyB\n ? SchemaItem.isSchemaItem(itemKeyB)\n ? itemKeyB.schema.name\n : itemKeyB.schemaName\n : undefined;\n\n return (equalByName && schemaNameA === topLevelSchemaNameA && schemaNameB === topLevelSchemaNameB) || (equalByName && schemaNameA === schemaNameB);\n }\n\n /**\n * Looks for same classA in containerB using key.\n * @param classNameA name of the class to look for in containerB.\n * @param containerA container which classNameA belongs to.\n * @param containerB container in which to look for classNameA.\n * @returns true if a same classA is in containerB, otherwise false.\n */\n private containerHasClass(attributeA: CustomAttribute, containerA: CustomAttributeContainerProps, containerB: CustomAttributeContainerProps): boolean {\n if (containerB && containerB.customAttributes) {\n for (const [_className, attributeB] of containerB.customAttributes) {\n const classItemKeyA = containerA.schema.getSchemaItemKey(attributeA.className);\n const classItemKeyB = containerB.schema.getSchemaItemKey(attributeB.className);\n\n if (this.areItemsSameByName(classItemKeyA, classItemKeyB, containerA.schema.name, containerB.schema.name)) {\n return Object.keys(attributeA).every((propertyName) => {\n const valueA = attributeA[propertyName];\n const valueB = attributeB[propertyName];\n\n // If propertyName is class name, they don't need to be compared as this has been done\n // in the areItemsSameByName function.\n if(propertyName === \"className\")\n return true;\n\n return deepEquals(valueA, valueB);\n });\n }\n }\n }\n return false;\n }\n}\n\n/**\n * Compares two values on their deep equality.\n * @param a left side to compare\n * @param b right side to compare\n * @returns true if they are deeply equal, otherwise false.\n */\nfunction deepEquals(a: unknown, b: unknown): boolean {\n if(Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((value, index) => {\n return deepEquals(value, b[index]);\n });\n }\n if(isObject(a) && isObject(b)) {\n const propertiesA = Object.keys(a);\n const propertiesB = Object.keys(b);\n return propertiesA.length === propertiesB.length && propertiesA.every((propertyName) => {\n return deepEquals(a[propertyName], b[propertyName]);\n });\n }\n return a === b;\n}\n\nfunction isObject(value: unknown): value is { [property: string]: unknown } {\n return typeof value === \"object\";\n}\n"]}
1
+ {"version":3,"file":"SchemaComparer.js","sourceRoot":"","sources":["../../../src/Validation/SchemaComparer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidater.js","sourceRoot":"","sources":["../../../src/Validation/SchemaValidater.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAuB,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,kBAAmB,SAAQ,6BAA6B;IACpD,YAAY,GAAoB,EAAE,CAAC;IAE3C,iDAAiD;IACjD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAC,UAAyB;QAChD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IAC1B;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,gBAA2B;QAC5E,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACpD,MAAM,SAAS,GAA0B,CAAC,kBAAkB,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,gBAAgB;YAClB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEpC,OAAO,kBAAkB,CAAC,WAAW,CAAC;IACxC,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,QAAoB,EAAE,SAAgC;QACpF,MAAM,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC9C,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","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 Validation\n */\n\nimport { ISchemaPartVisitor, Schema } from \"@itwin/ecschema-metadata\";\nimport { IRuleSet } from \"./Rules\";\nimport { SchemaValidationVisitor } from \"./SchemaValidationVisitor\";\nimport { IDiagnosticReporter, SuppressionDiagnosticReporter } from \"./DiagnosticReporter\";\nimport { AnyDiagnostic } from \"./Diagnostic\";\nimport { SchemaWalker } from \"./SchemaWalker\";\nimport { ECRuleSet } from \"./ECRules\";\n\nclass CollectionReporter extends SuppressionDiagnosticReporter {\n private _diagnostics: AnyDiagnostic[] = [];\n\n /** Gets the collection of diagnostic message. */\n public get diagnostics(): AnyDiagnostic[] {\n return this._diagnostics;\n }\n\n /**\n * Handles the given [[IDiagnostic]] based on the implementation requirements for a\n * given reporter.\n * @param diagnostic The diagnostic to report.\n */\n protected reportInternal(diagnostic: AnyDiagnostic) {\n this._diagnostics.push(diagnostic);\n }\n}\n\n/**\n * Applies EC Rules, see [[ECRuleSet]], to a given Schema and reports any violations.\n * @beta\n */\nexport class SchemaValidater {\n /**\n * Validates a schema against the [[ECRuleSet]].\n * @param schema The schema to validate.\n * @param validaterRuleSet Optional IRuleSet to be applied to the schema in addition to the default EC rules.\n */\n public static async validateSchema(schema: Schema, validaterRuleSet?: IRuleSet): Promise<AnyDiagnostic[]> {\n const collectionReporter = new CollectionReporter();\n const reporters: IDiagnosticReporter[] = [collectionReporter];\n\n const ruleSets = [ECRuleSet];\n if (validaterRuleSet)\n ruleSets.push(validaterRuleSet);\n\n const visitor = this.createNewVisitor(ruleSets, reporters);\n const reader = new SchemaWalker(visitor);\n await reader.traverseSchema(schema);\n\n return collectionReporter.diagnostics;\n }\n\n private static createNewVisitor(ruleSets: IRuleSet[], reporters: IDiagnosticReporter[]): ISchemaPartVisitor {\n const visitor = new SchemaValidationVisitor();\n ruleSets.forEach((set) => visitor.registerRuleSet(set));\n reporters.forEach((reporter) => visitor.registerReporter(reporter));\n return visitor;\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaValidater.js","sourceRoot":"","sources":["../../../src/Validation/SchemaValidater.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAuB,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,kBAAmB,SAAQ,6BAA6B;IACpD,YAAY,GAAoB,EAAE,CAAC;IAE3C,iDAAiD;IACjD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAC,UAAyB;QAChD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IAC1B;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,gBAA2B;QAC5E,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACpD,MAAM,SAAS,GAA0B,CAAC,kBAAkB,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,gBAAgB;YAClB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEpC,OAAO,kBAAkB,CAAC,WAAW,CAAC;IACxC,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,QAAoB,EAAE,SAAgC;QACpF,MAAM,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC9C,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidationVisitor.js","sourceRoot":"","sources":["../../../src/Validation/SchemaValidationVisitor.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 Validation\n */\n\nimport { AnyClass, AnyECType, AnyProperty, Constant, CustomAttribute, CustomAttributeClass, CustomAttributeContainerProps,\n EntityClass, Enumeration, Format, InvertedUnit, ISchemaPartVisitor, KindOfQuantity, Mixin,\n Phenomenon, PropertyCategory, RelationshipClass, RelationshipConstraint, Schema, SchemaItem,\n StructClass, Unit, UnitSystem,\n} from \"@itwin/ecschema-metadata\";\n\nimport { AnyDiagnostic, DiagnosticCategory } from \"./Diagnostic\";\nimport { IDiagnosticReporter } from \"./DiagnosticReporter\";\nimport { IRuleSet } from \"./Rules\";\nimport { IRuleSuppressionMap, IRuleSuppressionSet, ISuppressionRule } from \"./RuleSuppressionSet\";\n\ninterface RuleSetArray {\n [name: string]: IRuleSet;\n}\n\n/**\n * A SchemaWalkerVisitor interface implementation that is used to validate ECObjects schemas using\n * [[IRuleSet]] objects registered with the instance. Also allows for reporting of [[IDiagnostic]]\n * objects returned from failing rules using [[IDiagnosticReporter]] implementations registered\n * with an instance of this class.\n * @beta\n */\nexport class SchemaValidationVisitor implements ISchemaPartVisitor {\n private _reporters: IDiagnosticReporter[] = [];\n private _ruleSets: RuleSetArray = {};\n private _ruleSuppressionSet?: IRuleSuppressionSet;\n\n /** Gets the IRule<AnyClass> objects registered with the visitor. */\n public get ruleSets(): RuleSetArray {\n return this._ruleSets;\n }\n\n public get suppressionSet(): IRuleSuppressionSet | undefined {\n return this._ruleSuppressionSet;\n }\n\n /** Gets the IDiagnosticReporter objects registered with the visitor. */\n public get diagnosticReporters(): IDiagnosticReporter[] {\n return this._reporters;\n }\n\n /**\n * Registers a [[IDiagnosticReporter]] allowing the reporter to be\n * notified when a [[IDiagnostic]] is created due to a rule violation.\n * @param reporter The [[DiagnosticReporter]] to register.\n */\n public registerReporter(...reporters: IDiagnosticReporter[]) {\n for (const reporter of reporters)\n this._reporters.push(reporter);\n }\n\n /**\n * Registers a [[IRuleSet]] that will applied during schema traversal.\n * @param ruleSet The [[IRuleSet]] to register.\n */\n public registerRuleSet(ruleSet: IRuleSet) {\n if (undefined !== this.ruleSets[ruleSet.name])\n throw new Error(`A RuleSet with the name '${ruleSet.name}' has already been registered.`);\n\n this.ruleSets[ruleSet.name] = ruleSet;\n }\n\n /**\n * Registers a [[IRuleSuppressionSet]] that will be applied during schema traversal.\n * @param ruleSet The [[IRuleSuppressionSet]] to register.\n * Only supports one Rule Suppression Set, if you call it twice it will overwrite the\n * previous suppression set\n */\n public registerRuleSuppressionSet(suppressionSet: IRuleSuppressionSet) {\n this._ruleSuppressionSet = suppressionSet;\n }\n\n /**\n * Called before schema traversal.\n * @param schema a Schema object.\n */\n public async visitFullSchema(schema: Schema) {\n for (const index of Object.keys(this._ruleSets))\n await this.applySchemaRules(schema, this._ruleSets[index]);\n }\n\n /**\n * Called for each [[SchemaItem]] instance found during schema traversal.\n * @param schemaItem a SchemaItem object.\n */\n public async visitSchemaItem(schemaItem: SchemaItem) {\n for (const index of Object.keys(this._ruleSets))\n await this.applySchemaItemRules(schemaItem, this._ruleSets[index]);\n }\n\n /**\n * Called for each [AnyClass]($ecschema-metadata) instance found during schema traversal.\n * @param ecClass an ECClass object.\n */\n public async visitClass(ecClass: AnyClass): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyClassRules(ecClass, this._ruleSets[index]);\n }\n\n /**\n * Called for each [AnyProperty]($ecschema-metadata) instance of an ECClass.\n * @param property an AnyProperty object.\n */\n public async visitProperty(property: AnyProperty): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyPropertyRules(property, this._ruleSets[index]);\n }\n\n /**\n * Called for each [EntityClass]($ecschema-metadata) instance found during schema traversal.\n * @param entityClass an EntityClass object.\n */\n public async visitEntityClass(entity: EntityClass): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyEntityRules(entity, this._ruleSets[index]);\n }\n\n /**\n * Called for each [StructClass]($ecschema-metadata) instance found during schema traversal.\n * @param structClass a StructClass object.\n */\n public async visitStructClass(struct: StructClass): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyStructRules(struct, this._ruleSets[index]);\n }\n\n /**\n * Called for each [Mixin]($ecschema-metadata) instance found during schema traversal.\n * @param mixin a Mixin object.\n */\n public async visitMixin(mixin: Mixin): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyMixinRules(mixin, this._ruleSets[index]);\n }\n\n /**\n * Called for each [RelationshipClass]($ecschema-metadata) instance found during schema traversal.\n * @param relationshipClass a RelationshipClass object.\n */\n public async visitRelationshipClass(relationship: RelationshipClass): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyRelationshipRules(relationship, this._ruleSets[index]);\n }\n\n /**\n * Called for each [RelationshipConstraint]($ecschema-metadata) of each RelationshipClass found during schema traversal.\n * @param relationshipConstraint a RelationshipConstraint object.\n */\n public async visitRelationshipConstraint(constraint: RelationshipConstraint): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyRelationshipConstraintRules(constraint, this._ruleSets[index]);\n }\n\n /**\n * Called for each [CustomAttributeClass]($ecschema-metadata) instance found during schema traversal.\n * @param customAttributeClass a CustomAttributeClass object.\n */\n public async visitCustomAttributeClass(customAttribute: CustomAttributeClass): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyCustomAttributeRules(customAttribute, this._ruleSets[index]);\n }\n\n /**\n * Called for each [CustomAttribute]($ecschema-metadata) container in the schema.\n * @param customAttributeContainer a [[CustomAttributeContainerProps]] object.\n */\n public async visitCustomAttributeContainer(container: CustomAttributeContainerProps): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyCustomAttributeContainerRules(container, this._ruleSets[index]);\n\n if (undefined === container.customAttributes)\n return;\n\n for (const [, customAttribute] of container.customAttributes) {\n for (const index of Object.keys(this._ruleSets)) {\n await this.applyCustomAttributeInstanceRules(container, customAttribute, this._ruleSets[index]);\n }\n }\n }\n\n /**\n * Called for each [Enumeration]($ecschema-metadata) instance found during schema traversal.\n * @param enumeration an Enumeration object.\n */\n public async visitEnumeration(enumeration: Enumeration) {\n for (const index of Object.keys(this._ruleSets))\n await this.applyEnumerationRules(enumeration, this._ruleSets[index]);\n }\n\n /**\n * Called for each [KindOfQuantity]($ecschema-metadata) instance found during schema traversal.\n * @param koq a KindOfQuantity object.\n */\n public async visitKindOfQuantity(koq: KindOfQuantity) {\n for (const index of Object.keys(this._ruleSets))\n await this.applyKindOfQuantityRules(koq, this._ruleSets[index]);\n }\n\n /**\n * Called for each [PropertyCategory]($ecschema-metadata) instance found during schema traversal.\n * @param category a PropertyCategory object.\n */\n public async visitPropertyCategory(category: PropertyCategory) {\n for (const index of Object.keys(this._ruleSets))\n await this.applyPropertyCategoryRules(category, this._ruleSets[index]);\n }\n\n /**\n * Called for each [Format]($ecschema-metadata) instance found during schema traversal.\n * @param format a Format object.\n */\n public async visitFormat(format: Format): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyFormatRules(format, this._ruleSets[index]);\n }\n\n /**\n * Called for each [Unit]($ecschema-metadata) instance found during schema traversal.\n * @param unit a Unit object.\n */\n public async visitUnit(unit: Unit): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyUnitRules(unit, this._ruleSets[index]);\n }\n\n /**\n * Called for each [InvertedUnit]($ecschema-metadata) instance found during schema traversal.\n * @param invertedUnit an InvertedUnit object.\n */\n public async visitInvertedUnit(invertedUnit: InvertedUnit): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyInvertedUnitRules(invertedUnit, this._ruleSets[index]);\n }\n\n /**\n * Called for each [UnitSystem]($ecschema-metadata) instance found during schema traversal.\n * @param unitSystem a UnitSystem object.\n */\n public async visitUnitSystem(unitSystem: UnitSystem): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyUnitSystemRules(unitSystem, this._ruleSets[index]);\n }\n\n /**\n * Called for each [Phenomenon]($ecschema-metadata) instance found during schema traversal.\n * @param phenomena a Phenomenon object.\n */\n public async visitPhenomenon(phenomenon: Phenomenon): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyPhenomenonRules(phenomenon, this._ruleSets[index]);\n }\n\n /**\n * Called for each [Constant]($ecschema-metadata) instance found during schema traversal.\n * @param constant a Constant object.\n */\n public async visitConstant(constant: Constant): Promise<void> {\n for (const index of Object.keys(this._ruleSets))\n await this.applyConstantRules(constant, this._ruleSets[index]);\n }\n\n public async applySchemaRules(schema: Schema, ruleSet: IRuleSet) {\n if (!ruleSet.schemaRules || this.excludeSchemaFromRuleSet(schema, ruleSet))\n return;\n\n for (const rule of ruleSet.schemaRules) {\n const result = rule(schema);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.schemaRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, schema, suppressions);\n }\n }\n }\n\n public async applySchemaItemRules(schemaItem: SchemaItem, ruleSet: IRuleSet) {\n if (!ruleSet.schemaItemRules || this.excludeSchemaFromRuleSet(schemaItem.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.schemaItemRules) {\n const result = rule(schemaItem);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.schemaItemRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, schemaItem, suppressions);\n }\n }\n }\n\n public async applyClassRules(ecClass: AnyClass, ruleSet: IRuleSet) {\n if (!ruleSet.classRules || this.excludeSchemaFromRuleSet(ecClass.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.classRules) {\n const result = rule(ecClass);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.classRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, ecClass, suppressions);\n }\n }\n }\n\n public async applyPropertyRules(property: AnyProperty, ruleSet: IRuleSet) {\n if (!ruleSet.propertyRules || this.excludeSchemaFromRuleSet(property.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.propertyRules) {\n const result = rule(property);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.propertyRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, property, suppressions);\n }\n }\n }\n\n public async applyEntityRules(entityClass: EntityClass, ruleSet: IRuleSet) {\n if (!ruleSet.entityClassRules || this.excludeSchemaFromRuleSet(entityClass.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.entityClassRules) {\n const result = rule(entityClass);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.entityRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, entityClass, suppressions);\n }\n }\n }\n\n public async applyStructRules(structClass: StructClass, ruleSet: IRuleSet) {\n if (!ruleSet.structClassRules || this.excludeSchemaFromRuleSet(structClass.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.structClassRules) {\n const result = rule(structClass);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.structRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, structClass, suppressions);\n }\n }\n }\n\n public async applyMixinRules(mixin: Mixin, ruleSet: IRuleSet) {\n if (!ruleSet.mixinRules || this.excludeSchemaFromRuleSet(mixin.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.mixinRules) {\n const result = rule(mixin);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.mixinRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, mixin, suppressions);\n }\n }\n }\n\n public async applyRelationshipRules(relationship: RelationshipClass, ruleSet: IRuleSet) {\n if (!ruleSet.relationshipRules || this.excludeSchemaFromRuleSet(relationship.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.relationshipRules) {\n const result = rule(relationship);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.relationshipRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, relationship, suppressions);\n }\n }\n }\n\n public async applyRelationshipConstraintRules(constraint: RelationshipConstraint, ruleSet: IRuleSet) {\n if (!ruleSet.relationshipConstraintRules || this.excludeSchemaFromRuleSet(constraint.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.relationshipConstraintRules) {\n const result = rule(constraint);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.relationshipConstraintRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, constraint, suppressions);\n }\n }\n }\n\n public async applyCustomAttributeRules(customAttribute: CustomAttributeClass, ruleSet: IRuleSet) {\n if (!ruleSet.customAttributeClassRules || this.excludeSchemaFromRuleSet(customAttribute.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.customAttributeClassRules) {\n const result = rule(customAttribute);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.customAttributeRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, customAttribute, suppressions);\n }\n }\n }\n\n public async applyCustomAttributeContainerRules(container: CustomAttributeContainerProps, ruleSet: IRuleSet) {\n if (!ruleSet.customAttributeContainerRules || this.excludeSchemaFromRuleSet(container.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.customAttributeContainerRules) {\n const result = rule(container);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.customAttributeContainerSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, container, suppressions);\n }\n }\n }\n\n public async applyCustomAttributeInstanceRules(container: CustomAttributeContainerProps, customAttribute: CustomAttribute, ruleSet: IRuleSet) {\n if (!ruleSet.customAttributeInstanceRules || this.excludeSchemaFromRuleSet(container.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.customAttributeInstanceRules) {\n const result = rule(container, customAttribute);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.customAttributeInstanceSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, container, suppressions);\n }\n }\n }\n\n public async applyEnumerationRules(enumeration: Enumeration, ruleSet: IRuleSet) {\n if (!ruleSet.enumerationRules || this.excludeSchemaFromRuleSet(enumeration.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.enumerationRules) {\n const result = rule(enumeration);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.enumerationRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, enumeration, suppressions);\n }\n }\n }\n\n public async applyKindOfQuantityRules(kindOfQuantity: KindOfQuantity, ruleSet: IRuleSet) {\n if (!ruleSet.kindOfQuantityRules || this.excludeSchemaFromRuleSet(kindOfQuantity.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.kindOfQuantityRules) {\n const result = rule(kindOfQuantity);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.koqRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, kindOfQuantity, suppressions);\n }\n }\n }\n\n public async applyPropertyCategoryRules(propertyCategory: PropertyCategory, ruleSet: IRuleSet) {\n if (!ruleSet.propertyCategoryRules || this.excludeSchemaFromRuleSet(propertyCategory.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.propertyCategoryRules) {\n const result = rule(propertyCategory);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.propertyCategoryRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, propertyCategory, suppressions);\n }\n }\n }\n\n public async applyFormatRules(format: Format, ruleSet: IRuleSet) {\n if (!ruleSet.formatRules || this.excludeSchemaFromRuleSet(format.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.formatRules) {\n const result = rule(format);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.formatRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, format, suppressions);\n }\n }\n }\n\n public async applyUnitRules(unit: Unit, ruleSet: IRuleSet) {\n if (!ruleSet.unitRules || this.excludeSchemaFromRuleSet(unit.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.unitRules) {\n const result = rule(unit);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.unitRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, unit, suppressions);\n }\n }\n }\n\n public async applyInvertedUnitRules(invertedUnit: InvertedUnit, ruleSet: IRuleSet) {\n if (!ruleSet.invertedUnitRules || this.excludeSchemaFromRuleSet(invertedUnit.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.invertedUnitRules) {\n const result = rule(invertedUnit);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.invertedUnitRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, invertedUnit, suppressions);\n }\n }\n }\n\n public async applyUnitSystemRules(unitSystem: UnitSystem, ruleSet: IRuleSet) {\n if (!ruleSet.unitSystemRules || this.excludeSchemaFromRuleSet(unitSystem.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.unitSystemRules) {\n const result = rule(unitSystem);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.unitSystemRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, unitSystem, suppressions);\n }\n }\n }\n\n public async applyPhenomenonRules(phenomenon: Phenomenon, ruleSet: IRuleSet) {\n if (!ruleSet.phenomenonRules || this.excludeSchemaFromRuleSet(phenomenon.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.phenomenonRules) {\n const result = rule(phenomenon);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.phenomenonRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, phenomenon, suppressions);\n }\n }\n }\n\n public async applyConstantRules(constant: Constant, ruleSet: IRuleSet) {\n if (!ruleSet.constantRules || this.excludeSchemaFromRuleSet(constant.schema, ruleSet))\n return;\n\n for (const rule of ruleSet.constantRules) {\n const result = rule(constant);\n for await (const diagnostic of result) {\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.constantRuleSuppressions : undefined;\n await this.reportDiagnostics(diagnostic, constant, suppressions);\n }\n }\n }\n\n private findSuppressionRule<T extends AnyECType, U = object>(suppressionSet: Array<IRuleSuppressionMap<T, U>>, code: string): ISuppressionRule<T, U> | undefined {\n if (!suppressionSet)\n return;\n\n for (const suppression of suppressionSet) {\n if (suppression.ruleCode === code) {\n return suppression.rule;\n }\n }\n\n return;\n }\n\n private excludeSchemaFromRuleSet(schema: Schema, ruleSet: IRuleSet): boolean {\n if (!ruleSet.schemaExclusionSet)\n return false;\n\n return ruleSet.schemaExclusionSet.includes(schema.name);\n }\n\n private async reportDiagnostics<T extends AnyECType, U = object>(diagnostic: AnyDiagnostic, ecType: T, suppressionMap: Array<IRuleSuppressionMap<T, U>> | undefined) {\n if (!diagnostic)\n return;\n\n if (suppressionMap) {\n const suppressRule = this.findSuppressionRule(suppressionMap, diagnostic.code);\n if (suppressRule) {\n const ecSuppression = await suppressRule(diagnostic, ecType);\n if (ecSuppression) {\n diagnostic.category = DiagnosticCategory.Warning;\n }\n }\n }\n\n this._reporters.forEach((reporter) => {\n reporter.report(diagnostic);\n });\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaValidationVisitor.js","sourceRoot":"","sources":["../../../src/Validation/SchemaValidationVisitor.ts"],"names":[],"mappings":"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"}