UNPKG

@itwin/ecschema-metadata

Version:

ECObjects core concepts in typescript

275 lines • 10.8 kB
import { AnyClass, AnyECType } from "./Interfaces"; import { StructClass } from "./Metadata/Class"; import { Constant } from "./Metadata/Constant"; import { CustomAttributeContainerProps } from "./Metadata/CustomAttribute"; import { CustomAttributeClass } from "./Metadata/CustomAttributeClass"; import { EntityClass } from "./Metadata/EntityClass"; import { Enumeration } from "./Metadata/Enumeration"; import { Format } from "./Metadata/Format"; import { InvertedUnit } from "./Metadata/InvertedUnit"; import { KindOfQuantity } from "./Metadata/KindOfQuantity"; import { Mixin } from "./Metadata/Mixin"; import { Phenomenon } from "./Metadata/Phenomenon"; import { AnyProperty } from "./Metadata/Property"; import { PropertyCategory } from "./Metadata/PropertyCategory"; import { RelationshipClass, RelationshipConstraint } from "./Metadata/RelationshipClass"; import { Schema } from "./Metadata/Schema"; import { SchemaItem } from "./Metadata/SchemaItem"; import { Unit } from "./Metadata/Unit"; import { UnitSystem } from "./Metadata/UnitSystem"; /** * Interface to allow schema traversal/deserialization workflows to visit * each part, item, class, etc. that exists in a given schema. * @public @preview */ export interface ISchemaPartVisitor { /** * Called for a partially loaded schema. During deserialization, this would * be after a schema and all its references are deserialized, but _before_ * any of its items or custom attributes have been deserialized. * @param schema A partially-loaded Schema. */ visitEmptySchema?: (schema: Schema) => Promise<void>; /** * Called for a partially loaded schema. During deserialization, this would * be after a schema and all its references are deserialized, but _before_ * any of its items or custom attributes have been deserialized. * @param schema A partially-loaded Schema. */ visitEmptySchemaSync?: (schema: Schema) => void; /** * Called for a fully loaded schema. * @param schema A fully-loaded Schema. */ visitFullSchema?: (schema: Schema) => Promise<void>; /** * Called for a fully loaded schema. * @param schema A fully-loaded Schema. */ visitFullSchemaSync?: (schema: Schema) => void; /** * Called for each [[SchemaItem]] instance. * @param schemaItem a SchemaItem object. */ visitSchemaItem?: (schemaItem: SchemaItem) => Promise<void>; /** * Called for each [[SchemaItem]] instance. * @param schemaItem a SchemaItem object. */ visitSchemaItemSync?: (schemaItem: SchemaItem) => void; /** * Called for each [[AnyClass]] instance. * @param ecClass an ECClass object. */ visitClass?: (ecClass: AnyClass) => Promise<void>; /** * Called for each [[AnyClass]] instance. * @param ecClass an ECClass object. */ visitClassSync?: (ecClass: AnyClass) => void; /** * Called for each [[AnyProperty]] instance of an ECClass. * @param property an AnyProperty object. */ visitProperty?: (property: AnyProperty) => Promise<void>; /** * Called for each [[AnyProperty]] instance of an ECClass. * @param property an AnyProperty object. */ visitPropertySync?: (property: AnyProperty) => void; /** * Called for each [[EntityClass]] instance. * @param entityClass an EntityClass object. */ visitEntityClass?: (entityClass: EntityClass) => Promise<void>; /** * Called for each [[EntityClass]] instance. * @param entityClass an EntityClass object. */ visitEntityClassSync?: (entityClass: EntityClass) => void; /** * Called for each [[StructClass]] instance. * @param structClass a StructClass object. */ visitStructClass?: (structClass: StructClass) => Promise<void>; /** * Called for each [[StructClass]] instance. * @param structClass a StructClass object. */ visitStructClassSync?: (structClass: StructClass) => void; /** * Called for each [[Mixin]] instance. * @param mixin a Mixin object. */ visitMixin?: (mixin: Mixin) => Promise<void>; /** * Called for each [[Mixin]] instance. * @param mixin a Mixin object. */ visitMixinSync?: (mixin: Mixin) => void; /** * Called for each [[RelationshipClass]] instance. * @param relationshipClass a RelationshipClass object. */ visitRelationshipClass?: (relationshipClass: RelationshipClass) => Promise<void>; /** * Called for each [[RelationshipClass]] instance. * @param relationshipClass a RelationshipClass object. */ visitRelationshipClassSync?: (relationshipClass: RelationshipClass) => void; /** * Called for each [[RelationshipConstraint]] of each RelationshipClass. * @param relationshipConstraint a RelationshipConstraint object. */ visitRelationshipConstraint?: (relationshipConstraint: RelationshipConstraint) => Promise<void>; /** * Called for each [[RelationshipConstraint]] of each RelationshipClass. * @param relationshipConstraint a RelationshipConstraint object. */ visitRelationshipConstraintSync?: (relationshipConstraint: RelationshipConstraint) => void; /** * Called for each [[CustomAttributeClass]] instance. * @param customAttributeClass a CustomAttributeClass object. */ visitCustomAttributeClass?: (customAttributeClass: CustomAttributeClass) => Promise<void>; /** * Called for each [[CustomAttributeClass]] instance. * @param customAttributeClass a CustomAttributeClass object. */ visitCustomAttributeClassSync?: (customAttributeClass: CustomAttributeClass) => void; /** * Called for each CustomAttribute container in the schema. * @param customAttributeContainer a CustomAttributeContainerProps object. */ visitCustomAttributeContainer?: (customAttributeContainer: CustomAttributeContainerProps) => Promise<void>; /** * Called for each CustomAttribute container in the schema. * @param customAttributeContainer a CustomAttributeContainerProps object. */ visitCustomAttributeContainerSync?: (customAttributeContainer: CustomAttributeContainerProps) => void; /** * Called for each [[Enumeration]] instance. * @param enumeration an Enumeration object. */ visitEnumeration?: (enumeration: Enumeration) => Promise<void>; /** * Called for each [[Enumeration]] instance. * @param enumeration an Enumeration object. */ visitEnumerationSync?: (enumeration: Enumeration) => void; /** * Called for each [[KindOfQuantity]] instance. * @param koq a KindOfQuantity object. */ visitKindOfQuantity?: (koq: KindOfQuantity) => Promise<void>; /** * Called for each [[KindOfQuantity]] instance. * @param koq a KindOfQuantity object. */ visitKindOfQuantitySync?: (koq: KindOfQuantity) => void; /** * Called for each [[PropertyCategory]] instance. * @param category a PropertyCategory object. */ visitPropertyCategory?: (category: PropertyCategory) => Promise<void>; /** * Called for each [[PropertyCategory]] instance. * @param category a PropertyCategory object. */ visitPropertyCategorySync?: (category: PropertyCategory) => void; /** * Called for each [[Format]] instance. * @param format a Format object. */ visitFormat?: (format: Format) => Promise<void>; /** * Called for each [[Format]] instance. * @param format a Format object. */ visitFormatSync?: (format: Format) => void; /** * Called for each [[Unit]] instance. * @param unit a Unit object. */ visitUnit?: (unit: Unit) => Promise<void>; /** * Called for each [[Unit]] instance. * @param unit a Unit object. */ visitUnitSync?: (unit: Unit) => void; /** * Called for each [[InvertedUnit]] instance. * @param invertedUnit an InvertedUnit object. */ visitInvertedUnit?: (invertedUnit: InvertedUnit) => Promise<void>; /** * Called for each [[InvertedUnit]] instance. * @param invertedUnit an InvertedUnit object. */ visitInvertedUnitSync?: (invertedUnit: InvertedUnit) => void; /** * Called for each [[UnitSystem]] instance. * @param unitSystem a UnitSystem object. */ visitUnitSystem?: (unitSystem: UnitSystem) => Promise<void>; /** * Called for each [[UnitSystem]] instance. * @param unitSystem a UnitSystem object. */ visitUnitSystemSync?: (unitSystem: UnitSystem) => void; /** * Called for each [[Phenomenon]] instance. * @param phenomena a Phenomenon object. */ visitPhenomenon?: (phenomena: Phenomenon) => Promise<void>; /** * Called for each [[Phenomenon]] instance. * @param phenomena a Phenomenon object. */ visitPhenomenonSync?: (phenomena: Phenomenon) => void; /** * Called for each [[Constant]] instance. * @param constant a Constant object. */ visitConstant?: (constant: Constant) => Promise<void>; /** * Called for each [[Constant]] instance. * @param constant a Constant object. */ visitConstantSync?: (constant: Constant) => void; } /** * A helper class to call methods on the provided [[ISchemaPartVisitor]]. * @public @preview */ export declare class SchemaPartVisitorDelegate { private _visitor; constructor(visitor: ISchemaPartVisitor); /** * Calls (async) visitEmptySchema or visitFullSchema on the configured [[ISchemaPartVisitor]]. * @param schema The schema to pass to the visitor. * @param fullSchema Indicates if the schema is partially or fully-loaded. */ visitSchema(schema: Schema, fullSchema?: boolean): Promise<void>; /** * Calls (synchronously) visitEmptySchema or visitFullSchema on the configured [[ISchemaPartVisitor]]. * @param schema The schema to pass to the visitor. * @param fullSchema Indicates if the schema is partially or fully-loaded. */ visitSchemaSync(schema: Schema, fullSchema?: boolean): void; /** * Calls (async) the appropriate visit methods on the configured [[ISchemaPartVisitor]] * based on the type of the part specified. * @param schemaPart The schema part to pass to the visitor methods. */ visitSchemaPart(schemaPart: AnyECType): Promise<void>; /** * Calls (synchronously) the appropriate visit methods on the configured [[ISchemaPartVisitor]] * based on the type of the part specified. * @param schemaPart The schema part to pass to the visitor methods. */ visitSchemaPartSync(schemaPart: AnyECType): void; private visitSchemaItem; private visitSchemaItemSync; } //# sourceMappingURL=SchemaPartVisitorDelegate.d.ts.map