@itwin/ecschema-editing 5.4.0-dev.5 → 5.4.0-dev.6
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.
- package/lib/cjs/Differencing/Errors.js.map +1 -1
- package/lib/cjs/Differencing/SchemaConflicts.js.map +1 -1
- package/lib/cjs/Differencing/SchemaDiagnosticVisitor.js.map +1 -1
- package/lib/cjs/Differencing/SchemaDifference.js.map +1 -1
- package/lib/cjs/Differencing/SchemaDifferenceValidator.js.map +1 -1
- package/lib/cjs/Differencing/SchemaDifferenceVisitor.js.map +1 -1
- package/lib/cjs/Differencing/Utils.js.map +1 -1
- package/lib/cjs/Editing/Constants.js.map +1 -1
- package/lib/cjs/Editing/CustomAttributes.js.map +1 -1
- package/lib/cjs/Editing/ECClasses.js.map +1 -1
- package/lib/cjs/Editing/Editor.js.map +1 -1
- package/lib/cjs/Editing/Entities.js.map +1 -1
- package/lib/cjs/Editing/Enumerations.js.map +1 -1
- package/lib/cjs/Editing/Exception.js.map +1 -1
- package/lib/cjs/Editing/Formats.js.map +1 -1
- package/lib/cjs/Editing/InvertedUnits.js.map +1 -1
- package/lib/cjs/Editing/KindOfQuantities.js.map +1 -1
- package/lib/cjs/Editing/Mixins.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableArrayProperty.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableCAClass.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableClass.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableConstant.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableEntityClass.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableEnumeration.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableFormat.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableInvertedUnit.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableKindOfQuantity.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableMixin.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableNavigationProperty.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutablePhenomenon.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutablePrimitiveOrEnumProperty.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableProperty.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutablePropertyCategory.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableRelationshipClass.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableSchema.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableSchemaItem.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableStructProperty.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableUnit.js.map +1 -1
- package/lib/cjs/Editing/Mutable/MutableUnitSystem.js.map +1 -1
- package/lib/cjs/Editing/Phenomena.js.map +1 -1
- package/lib/cjs/Editing/Properties.js.map +1 -1
- package/lib/cjs/Editing/PropertyCategories.js.map +1 -1
- package/lib/cjs/Editing/RelationshipClasses.js.map +1 -1
- package/lib/cjs/Editing/SchemaItems.js.map +1 -1
- package/lib/cjs/Editing/Structs.js.map +1 -1
- package/lib/cjs/Editing/UnitSystems.js.map +1 -1
- package/lib/cjs/Editing/Units.js.map +1 -1
- package/lib/cjs/Merging/ClassMerger.js.map +1 -1
- package/lib/cjs/Merging/ConstantMerger.js.map +1 -1
- package/lib/cjs/Merging/CustomAttributeClassMerger.js.map +1 -1
- package/lib/cjs/Merging/CustomAttributeMerger.js.map +1 -1
- package/lib/cjs/Merging/Edits/NameMapping.js.map +1 -1
- package/lib/cjs/Merging/Edits/RenameEditHandler.js.map +1 -1
- package/lib/cjs/Merging/Edits/SchemaEdits.js.map +1 -1
- package/lib/cjs/Merging/Edits/SkipEditHandler.js.map +1 -1
- package/lib/cjs/Merging/EntityClassMerger.js.map +1 -1
- package/lib/cjs/Merging/EnumerationMerger.js.map +1 -1
- package/lib/cjs/Merging/EnumeratorMerger.js.map +1 -1
- package/lib/cjs/Merging/FormatMerger.js.map +1 -1
- package/lib/cjs/Merging/InvertedUnitMerger.js.map +1 -1
- package/lib/cjs/Merging/KindOfQuantityMerger.js.map +1 -1
- package/lib/cjs/Merging/MixinMerger.js.map +1 -1
- package/lib/cjs/Merging/PhenomenonMerger.js.map +1 -1
- package/lib/cjs/Merging/PropertyCategoryMerger.js.map +1 -1
- package/lib/cjs/Merging/PropertyMerger.js.map +1 -1
- package/lib/cjs/Merging/RelationshipClassMerger.js.map +1 -1
- package/lib/cjs/Merging/SchemaMerger.js.map +1 -1
- package/lib/cjs/Merging/SchemaMergingVisitor.js.map +1 -1
- package/lib/cjs/Merging/SchemaMergingWalker.js.map +1 -1
- package/lib/cjs/Merging/SchemaReferenceMerger.js.map +1 -1
- package/lib/cjs/Merging/StructClassMerger.js.map +1 -1
- package/lib/cjs/Merging/UnitMerger.js.map +1 -1
- package/lib/cjs/Merging/UnitSystemMerger.js.map +1 -1
- package/lib/cjs/Merging/Utils.js.map +1 -1
- package/lib/cjs/Validation/Diagnostic.js.map +1 -1
- package/lib/cjs/Validation/DiagnosticReporter.js.map +1 -1
- package/lib/cjs/Validation/ECRules.js.map +1 -1
- package/lib/cjs/Validation/LoggingDiagnosticReporter.js.map +1 -1
- package/lib/cjs/Validation/RuleSuppressionSet.js.map +1 -1
- package/lib/cjs/Validation/Rules.js.map +1 -1
- package/lib/cjs/Validation/SchemaChanges.js.map +1 -1
- package/lib/cjs/Validation/SchemaCompareDiagnostics.js.map +1 -1
- package/lib/cjs/Validation/SchemaCompareReporter.js.map +1 -1
- package/lib/cjs/Validation/SchemaCompareResultDelegate.js.map +1 -1
- package/lib/cjs/Validation/SchemaCompareVisitor.js.map +1 -1
- package/lib/cjs/Validation/SchemaComparer.js.map +1 -1
- package/lib/cjs/Validation/SchemaValidater.js.map +1 -1
- package/lib/cjs/Validation/SchemaValidationVisitor.js.map +1 -1
- package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
- package/lib/cjs/ecschema-editing.js.map +1 -1
- package/lib/esm/Differencing/Errors.js.map +1 -1
- package/lib/esm/Differencing/SchemaConflicts.js.map +1 -1
- package/lib/esm/Differencing/SchemaDiagnosticVisitor.js.map +1 -1
- package/lib/esm/Differencing/SchemaDifference.js.map +1 -1
- package/lib/esm/Differencing/SchemaDifferenceValidator.js.map +1 -1
- package/lib/esm/Differencing/SchemaDifferenceVisitor.js.map +1 -1
- package/lib/esm/Differencing/Utils.js.map +1 -1
- package/lib/esm/Editing/Constants.js.map +1 -1
- package/lib/esm/Editing/CustomAttributes.js.map +1 -1
- package/lib/esm/Editing/ECClasses.js.map +1 -1
- package/lib/esm/Editing/Editor.js.map +1 -1
- package/lib/esm/Editing/Entities.js.map +1 -1
- package/lib/esm/Editing/Enumerations.js.map +1 -1
- package/lib/esm/Editing/Exception.js.map +1 -1
- package/lib/esm/Editing/Formats.js.map +1 -1
- package/lib/esm/Editing/InvertedUnits.js.map +1 -1
- package/lib/esm/Editing/KindOfQuantities.js.map +1 -1
- package/lib/esm/Editing/Mixins.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableArrayProperty.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableCAClass.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableClass.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableConstant.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableEntityClass.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableEnumeration.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableFormat.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableInvertedUnit.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableKindOfQuantity.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableMixin.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableNavigationProperty.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutablePhenomenon.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutablePrimitiveOrEnumProperty.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableProperty.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutablePropertyCategory.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableRelationshipClass.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableSchema.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableSchemaItem.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableStructProperty.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableUnit.js.map +1 -1
- package/lib/esm/Editing/Mutable/MutableUnitSystem.js.map +1 -1
- package/lib/esm/Editing/Phenomena.js.map +1 -1
- package/lib/esm/Editing/Properties.js.map +1 -1
- package/lib/esm/Editing/PropertyCategories.js.map +1 -1
- package/lib/esm/Editing/RelationshipClasses.js.map +1 -1
- package/lib/esm/Editing/SchemaItems.js.map +1 -1
- package/lib/esm/Editing/Structs.js.map +1 -1
- package/lib/esm/Editing/UnitSystems.js.map +1 -1
- package/lib/esm/Editing/Units.js.map +1 -1
- package/lib/esm/Merging/ClassMerger.js.map +1 -1
- package/lib/esm/Merging/ConstantMerger.js.map +1 -1
- package/lib/esm/Merging/CustomAttributeClassMerger.js.map +1 -1
- package/lib/esm/Merging/CustomAttributeMerger.js.map +1 -1
- package/lib/esm/Merging/Edits/NameMapping.js.map +1 -1
- package/lib/esm/Merging/Edits/RenameEditHandler.js.map +1 -1
- package/lib/esm/Merging/Edits/SchemaEdits.js.map +1 -1
- package/lib/esm/Merging/Edits/SkipEditHandler.js.map +1 -1
- package/lib/esm/Merging/EntityClassMerger.js.map +1 -1
- package/lib/esm/Merging/EnumerationMerger.js.map +1 -1
- package/lib/esm/Merging/EnumeratorMerger.js.map +1 -1
- package/lib/esm/Merging/FormatMerger.js.map +1 -1
- package/lib/esm/Merging/InvertedUnitMerger.js.map +1 -1
- package/lib/esm/Merging/KindOfQuantityMerger.js.map +1 -1
- package/lib/esm/Merging/MixinMerger.js.map +1 -1
- package/lib/esm/Merging/PhenomenonMerger.js.map +1 -1
- package/lib/esm/Merging/PropertyCategoryMerger.js.map +1 -1
- package/lib/esm/Merging/PropertyMerger.js.map +1 -1
- package/lib/esm/Merging/RelationshipClassMerger.js.map +1 -1
- package/lib/esm/Merging/SchemaMerger.js.map +1 -1
- package/lib/esm/Merging/SchemaMergingVisitor.js.map +1 -1
- package/lib/esm/Merging/SchemaMergingWalker.js.map +1 -1
- package/lib/esm/Merging/SchemaReferenceMerger.js.map +1 -1
- package/lib/esm/Merging/StructClassMerger.js.map +1 -1
- package/lib/esm/Merging/UnitMerger.js.map +1 -1
- package/lib/esm/Merging/UnitSystemMerger.js.map +1 -1
- package/lib/esm/Merging/Utils.js.map +1 -1
- package/lib/esm/Validation/Diagnostic.js.map +1 -1
- package/lib/esm/Validation/DiagnosticReporter.js.map +1 -1
- package/lib/esm/Validation/ECRules.js.map +1 -1
- package/lib/esm/Validation/LoggingDiagnosticReporter.js.map +1 -1
- package/lib/esm/Validation/RuleSuppressionSet.js.map +1 -1
- package/lib/esm/Validation/Rules.js.map +1 -1
- package/lib/esm/Validation/SchemaChanges.js.map +1 -1
- package/lib/esm/Validation/SchemaCompareDiagnostics.js.map +1 -1
- package/lib/esm/Validation/SchemaCompareReporter.js.map +1 -1
- package/lib/esm/Validation/SchemaCompareResultDelegate.js.map +1 -1
- package/lib/esm/Validation/SchemaCompareVisitor.js.map +1 -1
- package/lib/esm/Validation/SchemaComparer.js.map +1 -1
- package/lib/esm/Validation/SchemaValidater.js.map +1 -1
- package/lib/esm/Validation/SchemaValidationVisitor.js.map +1 -1
- package/lib/esm/Validation/SchemaWalker.js.map +1 -1
- package/lib/esm/ecschema-editing.js.map +1 -1
- package/package.json +9 -9
- package/public/locales/en/ECSchemaEditing.json +26 -26
|
@@ -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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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Validation\r\n */\r\n\r\nimport { AnyClass, AnyECType, AnyProperty, Constant, CustomAttribute, CustomAttributeClass, CustomAttributeContainerProps,\r\n EntityClass, Enumeration, Format, InvertedUnit, ISchemaPartVisitor, KindOfQuantity, Mixin,\r\n Phenomenon, PropertyCategory, RelationshipClass, RelationshipConstraint, Schema, SchemaItem,\r\n StructClass, Unit, UnitSystem,\r\n} from \"@itwin/ecschema-metadata\";\r\n\r\nimport { AnyDiagnostic, DiagnosticCategory } from \"./Diagnostic\";\r\nimport { IDiagnosticReporter } from \"./DiagnosticReporter\";\r\nimport { IRuleSet } from \"./Rules\";\r\nimport { IRuleSuppressionMap, IRuleSuppressionSet, ISuppressionRule } from \"./RuleSuppressionSet\";\r\n\r\ninterface RuleSetArray {\r\n [name: string]: IRuleSet;\r\n}\r\n\r\n/**\r\n * A SchemaWalkerVisitor interface implementation that is used to validate ECObjects schemas using\r\n * [[IRuleSet]] objects registered with the instance. Also allows for reporting of [[IDiagnostic]]\r\n * objects returned from failing rules using [[IDiagnosticReporter]] implementations registered\r\n * with an instance of this class.\r\n * @beta\r\n */\r\nexport class SchemaValidationVisitor implements ISchemaPartVisitor {\r\n private _reporters: IDiagnosticReporter[] = [];\r\n private _ruleSets: RuleSetArray = {};\r\n private _ruleSuppressionSet?: IRuleSuppressionSet;\r\n\r\n /** Gets the IRule<AnyClass> objects registered with the visitor. */\r\n public get ruleSets(): RuleSetArray {\r\n return this._ruleSets;\r\n }\r\n\r\n public get suppressionSet(): IRuleSuppressionSet | undefined {\r\n return this._ruleSuppressionSet;\r\n }\r\n\r\n /** Gets the IDiagnosticReporter objects registered with the visitor. */\r\n public get diagnosticReporters(): IDiagnosticReporter[] {\r\n return this._reporters;\r\n }\r\n\r\n /**\r\n * Registers a [[IDiagnosticReporter]] allowing the reporter to be\r\n * notified when a [[IDiagnostic]] is created due to a rule violation.\r\n * @param reporter The [[DiagnosticReporter]] to register.\r\n */\r\n public registerReporter(...reporters: IDiagnosticReporter[]) {\r\n for (const reporter of reporters)\r\n this._reporters.push(reporter);\r\n }\r\n\r\n /**\r\n * Registers a [[IRuleSet]] that will applied during schema traversal.\r\n * @param ruleSet The [[IRuleSet]] to register.\r\n */\r\n public registerRuleSet(ruleSet: IRuleSet) {\r\n if (undefined !== this.ruleSets[ruleSet.name])\r\n throw new Error(`A RuleSet with the name '${ruleSet.name}' has already been registered.`);\r\n\r\n this.ruleSets[ruleSet.name] = ruleSet;\r\n }\r\n\r\n /**\r\n * Registers a [[IRuleSuppressionSet]] that will be applied during schema traversal.\r\n * @param ruleSet The [[IRuleSuppressionSet]] to register.\r\n * Only supports one Rule Suppression Set, if you call it twice it will overwrite the\r\n * previous suppression set\r\n */\r\n public registerRuleSuppressionSet(suppressionSet: IRuleSuppressionSet) {\r\n this._ruleSuppressionSet = suppressionSet;\r\n }\r\n\r\n /**\r\n * Called before schema traversal.\r\n * @param schema a Schema object.\r\n */\r\n public async visitFullSchema(schema: Schema) {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applySchemaRules(schema, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [[SchemaItem]] instance found during schema traversal.\r\n * @param schemaItem a SchemaItem object.\r\n */\r\n public async visitSchemaItem(schemaItem: SchemaItem) {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applySchemaItemRules(schemaItem, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [AnyClass]($ecschema-metadata) instance found during schema traversal.\r\n * @param ecClass an ECClass object.\r\n */\r\n public async visitClass(ecClass: AnyClass): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyClassRules(ecClass, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [AnyProperty]($ecschema-metadata) instance of an ECClass.\r\n * @param property an AnyProperty object.\r\n */\r\n public async visitProperty(property: AnyProperty): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyPropertyRules(property, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [EntityClass]($ecschema-metadata) instance found during schema traversal.\r\n * @param entityClass an EntityClass object.\r\n */\r\n public async visitEntityClass(entity: EntityClass): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyEntityRules(entity, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [StructClass]($ecschema-metadata) instance found during schema traversal.\r\n * @param structClass a StructClass object.\r\n */\r\n public async visitStructClass(struct: StructClass): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyStructRules(struct, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [Mixin]($ecschema-metadata) instance found during schema traversal.\r\n * @param mixin a Mixin object.\r\n */\r\n public async visitMixin(mixin: Mixin): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyMixinRules(mixin, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [RelationshipClass]($ecschema-metadata) instance found during schema traversal.\r\n * @param relationshipClass a RelationshipClass object.\r\n */\r\n public async visitRelationshipClass(relationship: RelationshipClass): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyRelationshipRules(relationship, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [RelationshipConstraint]($ecschema-metadata) of each RelationshipClass found during schema traversal.\r\n * @param relationshipConstraint a RelationshipConstraint object.\r\n */\r\n public async visitRelationshipConstraint(constraint: RelationshipConstraint): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyRelationshipConstraintRules(constraint, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [CustomAttributeClass]($ecschema-metadata) instance found during schema traversal.\r\n * @param customAttributeClass a CustomAttributeClass object.\r\n */\r\n public async visitCustomAttributeClass(customAttribute: CustomAttributeClass): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyCustomAttributeRules(customAttribute, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [CustomAttribute]($ecschema-metadata) container in the schema.\r\n * @param customAttributeContainer a [[CustomAttributeContainerProps]] object.\r\n */\r\n public async visitCustomAttributeContainer(container: CustomAttributeContainerProps): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyCustomAttributeContainerRules(container, this._ruleSets[index]);\r\n\r\n if (undefined === container.customAttributes)\r\n return;\r\n\r\n for (const [, customAttribute] of container.customAttributes) {\r\n for (const index of Object.keys(this._ruleSets)) {\r\n await this.applyCustomAttributeInstanceRules(container, customAttribute, this._ruleSets[index]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Called for each [Enumeration]($ecschema-metadata) instance found during schema traversal.\r\n * @param enumeration an Enumeration object.\r\n */\r\n public async visitEnumeration(enumeration: Enumeration) {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyEnumerationRules(enumeration, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [KindOfQuantity]($ecschema-metadata) instance found during schema traversal.\r\n * @param koq a KindOfQuantity object.\r\n */\r\n public async visitKindOfQuantity(koq: KindOfQuantity) {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyKindOfQuantityRules(koq, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [PropertyCategory]($ecschema-metadata) instance found during schema traversal.\r\n * @param category a PropertyCategory object.\r\n */\r\n public async visitPropertyCategory(category: PropertyCategory) {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyPropertyCategoryRules(category, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [Format]($ecschema-metadata) instance found during schema traversal.\r\n * @param format a Format object.\r\n */\r\n public async visitFormat(format: Format): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyFormatRules(format, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [Unit]($ecschema-metadata) instance found during schema traversal.\r\n * @param unit a Unit object.\r\n */\r\n public async visitUnit(unit: Unit): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyUnitRules(unit, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [InvertedUnit]($ecschema-metadata) instance found during schema traversal.\r\n * @param invertedUnit an InvertedUnit object.\r\n */\r\n public async visitInvertedUnit(invertedUnit: InvertedUnit): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyInvertedUnitRules(invertedUnit, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [UnitSystem]($ecschema-metadata) instance found during schema traversal.\r\n * @param unitSystem a UnitSystem object.\r\n */\r\n public async visitUnitSystem(unitSystem: UnitSystem): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyUnitSystemRules(unitSystem, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [Phenomenon]($ecschema-metadata) instance found during schema traversal.\r\n * @param phenomena a Phenomenon object.\r\n */\r\n public async visitPhenomenon(phenomenon: Phenomenon): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyPhenomenonRules(phenomenon, this._ruleSets[index]);\r\n }\r\n\r\n /**\r\n * Called for each [Constant]($ecschema-metadata) instance found during schema traversal.\r\n * @param constant a Constant object.\r\n */\r\n public async visitConstant(constant: Constant): Promise<void> {\r\n for (const index of Object.keys(this._ruleSets))\r\n await this.applyConstantRules(constant, this._ruleSets[index]);\r\n }\r\n\r\n public async applySchemaRules(schema: Schema, ruleSet: IRuleSet) {\r\n if (!ruleSet.schemaRules || this.excludeSchemaFromRuleSet(schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.schemaRules) {\r\n const result = rule(schema);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.schemaRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, schema, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applySchemaItemRules(schemaItem: SchemaItem, ruleSet: IRuleSet) {\r\n if (!ruleSet.schemaItemRules || this.excludeSchemaFromRuleSet(schemaItem.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.schemaItemRules) {\r\n const result = rule(schemaItem);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.schemaItemRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, schemaItem, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyClassRules(ecClass: AnyClass, ruleSet: IRuleSet) {\r\n if (!ruleSet.classRules || this.excludeSchemaFromRuleSet(ecClass.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.classRules) {\r\n const result = rule(ecClass);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.classRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, ecClass, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyPropertyRules(property: AnyProperty, ruleSet: IRuleSet) {\r\n if (!ruleSet.propertyRules || this.excludeSchemaFromRuleSet(property.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.propertyRules) {\r\n const result = rule(property);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.propertyRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, property, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyEntityRules(entityClass: EntityClass, ruleSet: IRuleSet) {\r\n if (!ruleSet.entityClassRules || this.excludeSchemaFromRuleSet(entityClass.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.entityClassRules) {\r\n const result = rule(entityClass);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.entityRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, entityClass, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyStructRules(structClass: StructClass, ruleSet: IRuleSet) {\r\n if (!ruleSet.structClassRules || this.excludeSchemaFromRuleSet(structClass.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.structClassRules) {\r\n const result = rule(structClass);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.structRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, structClass, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyMixinRules(mixin: Mixin, ruleSet: IRuleSet) {\r\n if (!ruleSet.mixinRules || this.excludeSchemaFromRuleSet(mixin.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.mixinRules) {\r\n const result = rule(mixin);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.mixinRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, mixin, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyRelationshipRules(relationship: RelationshipClass, ruleSet: IRuleSet) {\r\n if (!ruleSet.relationshipRules || this.excludeSchemaFromRuleSet(relationship.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.relationshipRules) {\r\n const result = rule(relationship);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.relationshipRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, relationship, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyRelationshipConstraintRules(constraint: RelationshipConstraint, ruleSet: IRuleSet) {\r\n if (!ruleSet.relationshipConstraintRules || this.excludeSchemaFromRuleSet(constraint.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.relationshipConstraintRules) {\r\n const result = rule(constraint);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.relationshipConstraintRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, constraint, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyCustomAttributeRules(customAttribute: CustomAttributeClass, ruleSet: IRuleSet) {\r\n if (!ruleSet.customAttributeClassRules || this.excludeSchemaFromRuleSet(customAttribute.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.customAttributeClassRules) {\r\n const result = rule(customAttribute);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.customAttributeRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, customAttribute, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyCustomAttributeContainerRules(container: CustomAttributeContainerProps, ruleSet: IRuleSet) {\r\n if (!ruleSet.customAttributeContainerRules || this.excludeSchemaFromRuleSet(container.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.customAttributeContainerRules) {\r\n const result = rule(container);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.customAttributeContainerSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, container, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyCustomAttributeInstanceRules(container: CustomAttributeContainerProps, customAttribute: CustomAttribute, ruleSet: IRuleSet) {\r\n if (!ruleSet.customAttributeInstanceRules || this.excludeSchemaFromRuleSet(container.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.customAttributeInstanceRules) {\r\n const result = rule(container, customAttribute);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.customAttributeInstanceSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, container, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyEnumerationRules(enumeration: Enumeration, ruleSet: IRuleSet) {\r\n if (!ruleSet.enumerationRules || this.excludeSchemaFromRuleSet(enumeration.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.enumerationRules) {\r\n const result = rule(enumeration);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.enumerationRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, enumeration, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyKindOfQuantityRules(kindOfQuantity: KindOfQuantity, ruleSet: IRuleSet) {\r\n if (!ruleSet.kindOfQuantityRules || this.excludeSchemaFromRuleSet(kindOfQuantity.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.kindOfQuantityRules) {\r\n const result = rule(kindOfQuantity);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.koqRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, kindOfQuantity, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyPropertyCategoryRules(propertyCategory: PropertyCategory, ruleSet: IRuleSet) {\r\n if (!ruleSet.propertyCategoryRules || this.excludeSchemaFromRuleSet(propertyCategory.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.propertyCategoryRules) {\r\n const result = rule(propertyCategory);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.propertyCategoryRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, propertyCategory, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyFormatRules(format: Format, ruleSet: IRuleSet) {\r\n if (!ruleSet.formatRules || this.excludeSchemaFromRuleSet(format.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.formatRules) {\r\n const result = rule(format);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.formatRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, format, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyUnitRules(unit: Unit, ruleSet: IRuleSet) {\r\n if (!ruleSet.unitRules || this.excludeSchemaFromRuleSet(unit.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.unitRules) {\r\n const result = rule(unit);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.unitRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, unit, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyInvertedUnitRules(invertedUnit: InvertedUnit, ruleSet: IRuleSet) {\r\n if (!ruleSet.invertedUnitRules || this.excludeSchemaFromRuleSet(invertedUnit.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.invertedUnitRules) {\r\n const result = rule(invertedUnit);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.invertedUnitRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, invertedUnit, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyUnitSystemRules(unitSystem: UnitSystem, ruleSet: IRuleSet) {\r\n if (!ruleSet.unitSystemRules || this.excludeSchemaFromRuleSet(unitSystem.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.unitSystemRules) {\r\n const result = rule(unitSystem);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.unitSystemRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, unitSystem, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyPhenomenonRules(phenomenon: Phenomenon, ruleSet: IRuleSet) {\r\n if (!ruleSet.phenomenonRules || this.excludeSchemaFromRuleSet(phenomenon.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.phenomenonRules) {\r\n const result = rule(phenomenon);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.phenomenonRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, phenomenon, suppressions);\r\n }\r\n }\r\n }\r\n\r\n public async applyConstantRules(constant: Constant, ruleSet: IRuleSet) {\r\n if (!ruleSet.constantRules || this.excludeSchemaFromRuleSet(constant.schema, ruleSet))\r\n return;\r\n\r\n for (const rule of ruleSet.constantRules) {\r\n const result = rule(constant);\r\n for await (const diagnostic of result) {\r\n const suppressions = this._ruleSuppressionSet ? this._ruleSuppressionSet.constantRuleSuppressions : undefined;\r\n await this.reportDiagnostics(diagnostic, constant, suppressions);\r\n }\r\n }\r\n }\r\n\r\n private findSuppressionRule<T extends AnyECType, U = object>(suppressionSet: Array<IRuleSuppressionMap<T, U>>, code: string): ISuppressionRule<T, U> | undefined {\r\n if (!suppressionSet)\r\n return;\r\n\r\n for (const suppression of suppressionSet) {\r\n if (suppression.ruleCode === code) {\r\n return suppression.rule;\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n private excludeSchemaFromRuleSet(schema: Schema, ruleSet: IRuleSet): boolean {\r\n if (!ruleSet.schemaExclusionSet)\r\n return false;\r\n\r\n return ruleSet.schemaExclusionSet.includes(schema.name);\r\n }\r\n\r\n private async reportDiagnostics<T extends AnyECType, U = object>(diagnostic: AnyDiagnostic, ecType: T, suppressionMap: Array<IRuleSuppressionMap<T, U>> | undefined) {\r\n if (!diagnostic)\r\n return;\r\n\r\n if (suppressionMap) {\r\n const suppressRule = this.findSuppressionRule(suppressionMap, diagnostic.code);\r\n if (suppressRule) {\r\n const ecSuppression = await suppressRule(diagnostic, ecType);\r\n if (ecSuppression) {\r\n diagnostic.category = DiagnosticCategory.Warning;\r\n }\r\n }\r\n }\r\n\r\n this._reporters.forEach((reporter) => {\r\n reporter.report(diagnostic);\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaWalker.js","sourceRoot":"","sources":["../../../src/Validation/SchemaWalker.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,OAAO,EACd,cAAc,EAAE,yBAAyB,GAC1C,MAAM,0BAA0B,CAAC;AAElC;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACf,cAAc,CAA4B;IAElD,2GAA2G;IAC3G,sEAAsE;IAC9D,OAAO,CAAU;IAEzB;;;OAGG;IACH,YAAY,OAA2B;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc,CAAC,MAAc;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAElD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACxC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,UAAsB;QACrD,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;YAC/B,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAgB;QAC1C,KAAK,MAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,KAAK,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAChE,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAE,OAA6B,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAE,OAA6B,CAAC,MAAM,CAAC,CAAC;QACnF,CAAC;IACH,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\nimport { ECClass, ISchemaPartVisitor, RelationshipClass, Schema, SchemaItem,\n SchemaItemType, SchemaPartVisitorDelegate,\n} from \"@itwin/ecschema-metadata\";\n\n/**\n * The purpose of this class is to traverse a given schema, allowing clients to hook into\n * the traversal process via Visitors to allow for custom processing of the schema elements.\n * @internal\n */\nexport class SchemaWalker {\n private _visitorHelper: SchemaPartVisitorDelegate;\n\n // This is a cache of the schema we are traversing. The schema also exists within the _context but in order\n // to not have to go back to the context every time we use this cache.\n private _schema?: Schema;\n\n /**\n * Initializes a new SchemaWalker instance.\n * @param visitor An ISchemaWalkerVisitor implementation whose methods will be called during schema traversal.\n */\n constructor(visitor: ISchemaPartVisitor) {\n this._visitorHelper = new SchemaPartVisitorDelegate(visitor);\n }\n\n /**\n * Traverses the given Schema, calling ISchemaWalkerVisitor methods along the way.\n * @param schema The Schema to traverse.\n */\n public async traverseSchema(schema: Schema): Promise<Schema> {\n this._schema = schema;\n\n await this._visitorHelper.visitSchema(schema);\n await this._visitorHelper.visitSchemaPart(schema);\n\n for (const item of this._schema.getItems())\n await this.traverseSchemaItem(item);\n return schema;\n }\n\n private async traverseSchemaItem(schemaItem: SchemaItem): Promise<void> {\n await this._visitorHelper.visitSchemaPart(schemaItem);\n\n if (ECClass.isECClass(schemaItem))\n await this.traverseClass(schemaItem);\n }\n\n private async traverseClass(ecClass: ECClass): Promise<void> {\n for (const property of await ecClass.getProperties(true)) {\n await this._visitorHelper.visitSchemaPart(property);\n }\n\n if (ecClass.schemaItemType === SchemaItemType.RelationshipClass) {\n await this._visitorHelper.visitSchemaPart((ecClass as RelationshipClass).source);\n await this._visitorHelper.visitSchemaPart((ecClass as RelationshipClass).target);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SchemaWalker.js","sourceRoot":"","sources":["../../../src/Validation/SchemaWalker.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,OAAO,EACd,cAAc,EAAE,yBAAyB,GAC1C,MAAM,0BAA0B,CAAC;AAElC;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACf,cAAc,CAA4B;IAElD,2GAA2G;IAC3G,sEAAsE;IAC9D,OAAO,CAAU;IAEzB;;;OAGG;IACH,YAAY,OAA2B;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc,CAAC,MAAc;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAElD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACxC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,UAAsB;QACrD,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;YAC/B,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAgB;QAC1C,KAAK,MAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,KAAK,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAChE,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAE,OAA6B,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAE,OAA6B,CAAC,MAAM,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ECClass, ISchemaPartVisitor, RelationshipClass, Schema, SchemaItem,\r\n SchemaItemType, SchemaPartVisitorDelegate,\r\n} from \"@itwin/ecschema-metadata\";\r\n\r\n/**\r\n * The purpose of this class is to traverse a given schema, allowing clients to hook into\r\n * the traversal process via Visitors to allow for custom processing of the schema elements.\r\n * @internal\r\n */\r\nexport class SchemaWalker {\r\n private _visitorHelper: SchemaPartVisitorDelegate;\r\n\r\n // This is a cache of the schema we are traversing. The schema also exists within the _context but in order\r\n // to not have to go back to the context every time we use this cache.\r\n private _schema?: Schema;\r\n\r\n /**\r\n * Initializes a new SchemaWalker instance.\r\n * @param visitor An ISchemaWalkerVisitor implementation whose methods will be called during schema traversal.\r\n */\r\n constructor(visitor: ISchemaPartVisitor) {\r\n this._visitorHelper = new SchemaPartVisitorDelegate(visitor);\r\n }\r\n\r\n /**\r\n * Traverses the given Schema, calling ISchemaWalkerVisitor methods along the way.\r\n * @param schema The Schema to traverse.\r\n */\r\n public async traverseSchema(schema: Schema): Promise<Schema> {\r\n this._schema = schema;\r\n\r\n await this._visitorHelper.visitSchema(schema);\r\n await this._visitorHelper.visitSchemaPart(schema);\r\n\r\n for (const item of this._schema.getItems())\r\n await this.traverseSchemaItem(item);\r\n return schema;\r\n }\r\n\r\n private async traverseSchemaItem(schemaItem: SchemaItem): Promise<void> {\r\n await this._visitorHelper.visitSchemaPart(schemaItem);\r\n\r\n if (ECClass.isECClass(schemaItem))\r\n await this.traverseClass(schemaItem);\r\n }\r\n\r\n private async traverseClass(ecClass: ECClass): Promise<void> {\r\n for (const property of await ecClass.getProperties(true)) {\r\n await this._visitorHelper.visitSchemaPart(property);\r\n }\r\n\r\n if (ecClass.schemaItemType === SchemaItemType.RelationshipClass) {\r\n await this._visitorHelper.visitSchemaPart((ecClass as RelationshipClass).source);\r\n await this._visitorHelper.visitSchemaPart((ecClass as RelationshipClass).target);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecschema-editing.js","sourceRoot":"","sources":["../../src/ecschema-editing.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/E,cAAc,wCAAwC,CAAC;AACvD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAE5C;;GAEG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG","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\nexport * from \"./Validation/Diagnostic\";\nexport * from \"./Validation/DiagnosticReporter\";\nexport { DiagnosticCodes, Diagnostics, ECRuleSet } from \"./Validation/ECRules\";\nexport * from \"./Validation/LoggingDiagnosticReporter\";\nexport * from \"./Validation/Rules\";\nexport * from \"./Validation/SchemaValidationVisitor\";\nexport * from \"./Validation/SchemaWalker\";\nexport * from \"./Validation/SchemaCompareDiagnostics\";\nexport * from \"./Validation/SchemaChanges\";\nexport * from \"./Validation/SchemaComparer\";\nexport * from \"./Validation/SchemaCompareReporter\";\nexport * from \"./Editing/Editor\";\nexport * from \"./Editing/Exception\";\nexport { ISuppressionRule, IRuleSuppressionSet, IRuleSuppressionMap } from \"./Validation/RuleSuppressionSet\";\nexport { SchemaValidater } from \"./Validation/SchemaValidater\";\nexport * from \"./Differencing/SchemaDifference\";\nexport * from \"./Differencing/SchemaConflicts\";\nexport * from \"./Differencing/Errors\";\nexport * from \"./Differencing/Utils\";\nexport { SchemaMerger } from \"./Merging/SchemaMerger\";\nexport * from \"./Merging/Edits/SchemaEdits\";\n\n/** @docs-package-description\n * The ecschema-editing package contains classes for validating, and editing ECSchemas that can be used in both [frontend]($docs/learning/frontend/index.md) and [backend]($docs/learning/backend/index.md).\n */\n/**\n * @docs-group-description Editing\n * Set of classes used to perform editing of ECSchemas.\n */\n/**\n * @docs-group-description Diagnostic\n * Set of classes to categorize and manage ECSchema validation results.\n */\n/**\n * @docs-group-description Validation\n * Set of classes used to perform validation on ECSchemas.\n */\n/**\n * @docs-group-description Comparison\n * Set of classes to enable comparison of ECSchemas.\n */\n/**\n * @docs-group-description Merging\n * Set of classes used to merge schemas.\n */\n/**\n * @docs-group-description Differencing\n * Set of classes used to perform differences between ECSchemas.\n */\n"]}
|
|
1
|
+
{"version":3,"file":"ecschema-editing.js","sourceRoot":"","sources":["../../src/ecschema-editing.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/E,cAAc,wCAAwC,CAAC;AACvD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAE5C;;GAEG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nexport * from \"./Validation/Diagnostic\";\r\nexport * from \"./Validation/DiagnosticReporter\";\r\nexport { DiagnosticCodes, Diagnostics, ECRuleSet } from \"./Validation/ECRules\";\r\nexport * from \"./Validation/LoggingDiagnosticReporter\";\r\nexport * from \"./Validation/Rules\";\r\nexport * from \"./Validation/SchemaValidationVisitor\";\r\nexport * from \"./Validation/SchemaWalker\";\r\nexport * from \"./Validation/SchemaCompareDiagnostics\";\r\nexport * from \"./Validation/SchemaChanges\";\r\nexport * from \"./Validation/SchemaComparer\";\r\nexport * from \"./Validation/SchemaCompareReporter\";\r\nexport * from \"./Editing/Editor\";\r\nexport * from \"./Editing/Exception\";\r\nexport { ISuppressionRule, IRuleSuppressionSet, IRuleSuppressionMap } from \"./Validation/RuleSuppressionSet\";\r\nexport { SchemaValidater } from \"./Validation/SchemaValidater\";\r\nexport * from \"./Differencing/SchemaDifference\";\r\nexport * from \"./Differencing/SchemaConflicts\";\r\nexport * from \"./Differencing/Errors\";\r\nexport * from \"./Differencing/Utils\";\r\nexport { SchemaMerger } from \"./Merging/SchemaMerger\";\r\nexport * from \"./Merging/Edits/SchemaEdits\";\r\n\r\n/** @docs-package-description\r\n * The ecschema-editing package contains classes for validating, and editing ECSchemas that can be used in both [frontend]($docs/learning/frontend/index.md) and [backend]($docs/learning/backend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Editing\r\n * Set of classes used to perform editing of ECSchemas.\r\n */\r\n/**\r\n * @docs-group-description Diagnostic\r\n * Set of classes to categorize and manage ECSchema validation results.\r\n */\r\n/**\r\n * @docs-group-description Validation\r\n * Set of classes used to perform validation on ECSchemas.\r\n */\r\n/**\r\n * @docs-group-description Comparison\r\n * Set of classes to enable comparison of ECSchemas.\r\n */\r\n/**\r\n * @docs-group-description Merging\r\n * Set of classes used to merge schemas.\r\n */\r\n/**\r\n * @docs-group-description Differencing\r\n * Set of classes used to perform differences between ECSchemas.\r\n */\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/ecschema-editing",
|
|
3
|
-
"version": "5.4.0-dev.
|
|
3
|
+
"version": "5.4.0-dev.6",
|
|
4
4
|
"description": "ECSchema editing and validation API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "lib/cjs/ecschema-editing.js",
|
|
@@ -42,16 +42,16 @@
|
|
|
42
42
|
"rimraf": "^6.0.1",
|
|
43
43
|
"sinon": "^17.0.2",
|
|
44
44
|
"typescript": "~5.6.2",
|
|
45
|
-
"@itwin/
|
|
46
|
-
"@itwin/
|
|
47
|
-
"@itwin/
|
|
48
|
-
"@itwin/
|
|
49
|
-
"@itwin/core-
|
|
45
|
+
"@itwin/core-bentley": "5.4.0-dev.6",
|
|
46
|
+
"@itwin/build-tools": "5.4.0-dev.6",
|
|
47
|
+
"@itwin/core-quantity": "5.4.0-dev.6",
|
|
48
|
+
"@itwin/ecschema-metadata": "5.4.0-dev.6",
|
|
49
|
+
"@itwin/core-common": "5.4.0-dev.6"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@itwin/core-
|
|
53
|
-
"@itwin/core-
|
|
54
|
-
"@itwin/ecschema-metadata": "5.4.0-dev.
|
|
52
|
+
"@itwin/core-quantity": "5.4.0-dev.6",
|
|
53
|
+
"@itwin/core-bentley": "5.4.0-dev.6",
|
|
54
|
+
"@itwin/ecschema-metadata": "5.4.0-dev.6"
|
|
55
55
|
},
|
|
56
56
|
"nyc": {
|
|
57
57
|
"extends": "./node_modules/@itwin/build-tools/.nycrc"
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
{
|
|
2
|
-
"Diagnostics": {
|
|
3
|
-
"ECObjects-1": "Referenced schema '{1}' of schema '{0}' is a supplemental schema. Supplemental schemas are not allowed to be referenced.",
|
|
4
|
-
"ECObjects-2": "Schema '{0}' has multiple schema references ({2}, {3}) with the same alias '{1}', which is not allowed.",
|
|
5
|
-
"ECObjects-3": "Schema '{0}' has reference cycles: {1}",
|
|
6
|
-
"ECObjects-100": "Class '{0}' cannot derive from sealed base class '{1}'.",
|
|
7
|
-
"ECObjects-101": "Class '{0}' cannot derive from base class '{1}' of type '{2}'.",
|
|
8
|
-
"ECObjects-102": "Abstract Class '{0}' cannot derive from base class '{1}' because it is not an abstract class.",
|
|
9
|
-
"ECObjects-500": "The CustomAttribute container '{0}' has a CustomAttribute with the class '{1}' which is not a concrete class.",
|
|
10
|
-
"ECObjects-501": "The CustomAttribute container '{0}' has a CustomAttribute with the class '{1}' whose schema is not referenced by the container's Schema.",
|
|
11
|
-
"ECObjects-502": "The CustomAttribute container '{0}' has a CustomAttribute with the class '{1}' which cannot be found.",
|
|
12
|
-
"ECObjects-700": "Enumeration '{0}' has invalid primitive type.",
|
|
13
|
-
"ECObjects-1100": "Mixin '{0}' cannot be applied to the class '{1}' because it does not satisfy the applies to constraint '{2}'.",
|
|
14
|
-
"ECObjects-1300": "The ECProperty '{0}.{1}' has a base property '{2}.{1}' with a value type of {3} which is incompatible with the value type of {4}.",
|
|
15
|
-
"ECObjects-1301": "The ECProperty '{0}.{1}' has a base property '{2}.{1}' with a type of {3} which is incompatible with the type of {4}.",
|
|
16
|
-
"ECObjects-1302": "The ECProperty '{0}.{1}' has a base property '{2}.{1}' with KindOfQuantity '{3}' with persistence unit '{4}' which is not the same as the persistence unit '{5}' of the provided KindOfQuantity '{6}'.",
|
|
17
|
-
"ECObjects-1303": "The referenced relationship '{1}', used in NavigationProperty '{0}' is not the root relationship.",
|
|
18
|
-
"ECObjects-1304": "NavigationProperty '{0}' uses the relationship '{1}' that cannot be traversed in the '{2}' direction due to a max multiplicity greater than 1.",
|
|
19
|
-
"ECObjects-1305": "The NavigationProperty '{0}', using the relationship '{1}', points to a RelationshipClass, which is not allowed. NavigationProperties must point to an EntityClass or Mixin.",
|
|
20
|
-
"ECObjects-1306": "The class '{0}' of NavigationProperty '{1}' is not supported by the {3} constraint of the referenced relationship '{2}'.",
|
|
21
|
-
"ECObjects-1500": "The abstract constraint class '{0}' on the {1}-Constraint of '{2}' is not supported by the base class constraint in '{3}'.",
|
|
22
|
-
"ECObjects-1501": "The constraint class '{0}' on the {1}-Constraint of '{2}' is not supported by the base class constraint in '{3}'.",
|
|
23
|
-
"ECObjects-1502": "The constraint class '{0}' on the {1}-Constraint of '{2}' is not derived from the abstract constraint class '{3}'.",
|
|
24
|
-
"ECObjects-1600": "The {0}-Constraint of '{1}' does not contain any constraint classes.",
|
|
25
|
-
"ECObjects-1601": "The {0}-Constraint of '{1}' has multiple constraint classes which requires an abstract constraint to be defined."
|
|
26
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"Diagnostics": {
|
|
3
|
+
"ECObjects-1": "Referenced schema '{1}' of schema '{0}' is a supplemental schema. Supplemental schemas are not allowed to be referenced.",
|
|
4
|
+
"ECObjects-2": "Schema '{0}' has multiple schema references ({2}, {3}) with the same alias '{1}', which is not allowed.",
|
|
5
|
+
"ECObjects-3": "Schema '{0}' has reference cycles: {1}",
|
|
6
|
+
"ECObjects-100": "Class '{0}' cannot derive from sealed base class '{1}'.",
|
|
7
|
+
"ECObjects-101": "Class '{0}' cannot derive from base class '{1}' of type '{2}'.",
|
|
8
|
+
"ECObjects-102": "Abstract Class '{0}' cannot derive from base class '{1}' because it is not an abstract class.",
|
|
9
|
+
"ECObjects-500": "The CustomAttribute container '{0}' has a CustomAttribute with the class '{1}' which is not a concrete class.",
|
|
10
|
+
"ECObjects-501": "The CustomAttribute container '{0}' has a CustomAttribute with the class '{1}' whose schema is not referenced by the container's Schema.",
|
|
11
|
+
"ECObjects-502": "The CustomAttribute container '{0}' has a CustomAttribute with the class '{1}' which cannot be found.",
|
|
12
|
+
"ECObjects-700": "Enumeration '{0}' has invalid primitive type.",
|
|
13
|
+
"ECObjects-1100": "Mixin '{0}' cannot be applied to the class '{1}' because it does not satisfy the applies to constraint '{2}'.",
|
|
14
|
+
"ECObjects-1300": "The ECProperty '{0}.{1}' has a base property '{2}.{1}' with a value type of {3} which is incompatible with the value type of {4}.",
|
|
15
|
+
"ECObjects-1301": "The ECProperty '{0}.{1}' has a base property '{2}.{1}' with a type of {3} which is incompatible with the type of {4}.",
|
|
16
|
+
"ECObjects-1302": "The ECProperty '{0}.{1}' has a base property '{2}.{1}' with KindOfQuantity '{3}' with persistence unit '{4}' which is not the same as the persistence unit '{5}' of the provided KindOfQuantity '{6}'.",
|
|
17
|
+
"ECObjects-1303": "The referenced relationship '{1}', used in NavigationProperty '{0}' is not the root relationship.",
|
|
18
|
+
"ECObjects-1304": "NavigationProperty '{0}' uses the relationship '{1}' that cannot be traversed in the '{2}' direction due to a max multiplicity greater than 1.",
|
|
19
|
+
"ECObjects-1305": "The NavigationProperty '{0}', using the relationship '{1}', points to a RelationshipClass, which is not allowed. NavigationProperties must point to an EntityClass or Mixin.",
|
|
20
|
+
"ECObjects-1306": "The class '{0}' of NavigationProperty '{1}' is not supported by the {3} constraint of the referenced relationship '{2}'.",
|
|
21
|
+
"ECObjects-1500": "The abstract constraint class '{0}' on the {1}-Constraint of '{2}' is not supported by the base class constraint in '{3}'.",
|
|
22
|
+
"ECObjects-1501": "The constraint class '{0}' on the {1}-Constraint of '{2}' is not supported by the base class constraint in '{3}'.",
|
|
23
|
+
"ECObjects-1502": "The constraint class '{0}' on the {1}-Constraint of '{2}' is not derived from the abstract constraint class '{3}'.",
|
|
24
|
+
"ECObjects-1600": "The {0}-Constraint of '{1}' does not contain any constraint classes.",
|
|
25
|
+
"ECObjects-1601": "The {0}-Constraint of '{1}' has multiple constraint classes which requires an abstract constraint to be defined."
|
|
26
|
+
}
|
|
27
27
|
}
|