@itwin/ecschema-editing 4.5.0-dev.23 → 4.5.0-dev.26
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/CHANGELOG.md +6 -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/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/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/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/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/CAClassMerger.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/CustomAttributeMerger.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/KindOfQuantityMerger.js.map +1 -1
- package/lib/cjs/Merging/MixinMerger.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/SchemaItemFactory.js.map +1 -1
- package/lib/cjs/Merging/SchemaItemMerger.js.map +1 -1
- package/lib/cjs/Merging/SchemaMerger.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/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/package.json +10 -10
- package/public/locales/en/ECSchemaEditing.json +26 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CAClassMerger.js","sourceRoot":"","sources":["../../../src/Merging/CAClassMerger.ts"],"names":[],"mappings":";;AAAA;;;+FAG+F;AAC/F,gEAA8G;AAC9G,+CAA4C;AAI5C;;GAEG;AACH,MAAqB,aAAc,SAAQ,yBAAiC;IAEvD,KAAK,CAAC,MAAM,CAAC,SAAoB,EAAE,OAA6B;QACjF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrG,CAAC;IAEkB,KAAK,CAAC,eAAe,CAAC,OAA6B,EAAE,aAAqB,EAAE,iBAAsB,EAAE,iBAAsB;QAC3I,MAAM,cAAc,GAAG,OAAoC,CAAC;QAC5D,QAAO,aAAa,EAAE;YACpB,KAAK,WAAW;gBACd,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,iBAAiB,EAAE;oBAC9E,MAAM,aAAa,GAAG,IAAA,qDAAiC,EAAC,GAAG,iBAAiB,KAAK,iBAAiB,EAAE,CAAC,CAAC;oBACtG,IAAI,aAAa,KAAK,SAAS,EAAE;wBAC/B,OAAO,EAAE,YAAY,EAAE,oEAAoE,EAAC,CAAC;qBAC9F;oBACD,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;iBAChD;gBACD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,CAAC;CACF;AArBD,gCAqBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"CAClassMerger.js","sourceRoot":"","sources":["../../../src/Merging/CAClassMerger.ts"],"names":[],"mappings":";;AAAA;;;+FAG+F;AAC/F,gEAA8G;AAC9G,+CAA4C;AAI5C;;GAEG;AACH,MAAqB,aAAc,SAAQ,yBAAiC;IAEvD,KAAK,CAAC,MAAM,CAAC,SAAoB,EAAE,OAA6B;QACjF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrG,CAAC;IAEkB,KAAK,CAAC,eAAe,CAAC,OAA6B,EAAE,aAAqB,EAAE,iBAAsB,EAAE,iBAAsB;QAC3I,MAAM,cAAc,GAAG,OAAoC,CAAC;QAC5D,QAAO,aAAa,EAAE;YACpB,KAAK,WAAW;gBACd,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,iBAAiB,EAAE;oBAC9E,MAAM,aAAa,GAAG,IAAA,qDAAiC,EAAC,GAAG,iBAAiB,KAAK,iBAAiB,EAAE,CAAC,CAAC;oBACtG,IAAI,aAAa,KAAK,SAAS,EAAE;wBAC/B,OAAO,EAAE,YAAY,EAAE,oEAAoE,EAAC,CAAC;qBAC9F;oBACD,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;iBAChD;gBACD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,CAAC;CACF;AArBD,gCAqBC","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*--------------------------------------------------------------------------------------------*/\nimport { CustomAttributeClass, parseCustomAttributeContainerType, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { ClassMerger } from \"./ClassMerger\";\nimport { SchemaItemEditResults } from \"../Editing/Editor\";\nimport { MutableCAClass } from \"../Editing/Mutable/MutableCAClass\";\n\n/**\n * @internal\n */\nexport default class CAClassMerger extends ClassMerger<CustomAttributeClass> {\n\n protected override async create(schemaKey: SchemaKey, ecClass: CustomAttributeClass): Promise<SchemaItemEditResults> {\n return this.context.editor.customAttributes.create(schemaKey, ecClass.name, ecClass.containerType);\n }\n\n protected override async mergeAttributes(ecClass: CustomAttributeClass, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<SchemaItemEditResults | boolean> {\n const mutableCAClass = ecClass as unknown as MutableCAClass;\n switch(attributeName) {\n case \"appliesTo\":\n if (attributeOldValue !== undefined && attributeOldValue !== attributeNewValue) {\n const containerType = parseCustomAttributeContainerType(`${attributeOldValue}, ${attributeNewValue}`);\n if (containerType === undefined) {\n return { errorMessage: \"An invalid custom attribute class containerType has been provided.\"};\n }\n mutableCAClass.setContainerType(containerType);\n }\n return true;\n }\n return super.mergeAttributes(ecClass, attributeName, attributeNewValue, attributeOldValue);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassMerger.js","sourceRoot":"","sources":["../../../src/Merging/ClassMerger.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\nimport { ECClass, ECClassModifier, parseClassModifier, Property, SchemaItemKey, SchemaItemType, schemaItemTypeToString, SchemaKey } from \"@itwin/ecschema-metadata\";\r\nimport { SchemaItemEditResults } from \"../Editing/Editor\";\r\nimport { MutableClass } from \"../Editing/Mutable/MutableClass\";\r\nimport { SchemaMergeContext } from \"./SchemaMerger\";\r\nimport { BaseClassDelta, ChangeType, ClassChanges, PropertyChanges, PropertyValueChange } from \"../Validation/SchemaChanges\";\r\nimport { mergeCustomAttributes } from \"./CustomAttributeMerger\";\r\nimport { createPropertyFromProps, mergePropertyAttributeValueChanges } from \"./PropertyMerger\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ClassMerger<TClass extends ECClass> {\r\n protected readonly context: SchemaMergeContext;\r\n\r\n constructor(context: SchemaMergeContext) {\r\n this.context = context;\r\n }\r\n\r\n protected async create(_schemaKey: SchemaKey, ecClass: TClass): Promise<SchemaItemEditResults> {\r\n return { errorMessage: `${schemaItemTypeToString(ecClass.schemaItemType)} class type is not implemented.`};\r\n }\r\n\r\n protected async merge(itemKey: SchemaItemKey, _change: ClassChanges): Promise<SchemaItemEditResults> {\r\n return { itemKey };\r\n }\r\n\r\n protected async mergeAttributes(ecClass: TClass, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<SchemaItemEditResults | boolean> {\r\n const mutableClass = ecClass as unknown as MutableClass;\r\n switch(attributeName) {\r\n case \"schemaItemType\":\r\n if (attributeOldValue !== undefined && attributeOldValue !== attributeNewValue) {\r\n return { errorMessage: `Changing the class '${ecClass.name}' type is not supported.` };\r\n }\r\n return true;\r\n\r\n case \"label\":\r\n mutableClass.setDisplayLabel(attributeNewValue);\r\n return true;\r\n\r\n case \"description\":\r\n mutableClass.setDescription(attributeNewValue);\r\n return true;\r\n\r\n case \"modifier\":\r\n const modifier = parseClassModifier(attributeNewValue);\r\n if (modifier === undefined) {\r\n return { errorMessage: \"An invalid class modifier has been provided.\" };\r\n }\r\n\r\n if (attributeOldValue === undefined || modifier === ECClassModifier.None) {\r\n mutableClass.setModifier(modifier);\r\n return true;\r\n }\r\n return { errorMessage: `Changing the class '${ecClass.name}' modifier is not supported.` };\r\n }\r\n return false;\r\n }\r\n\r\n protected isSchemaItemEditResults(obj: any): obj is SchemaItemEditResults {\r\n return typeof obj === \"object\" && \"errorMessage\" in obj;\r\n }\r\n\r\n private async setBaseClass(itemKey: SchemaItemKey, baseClassDelta: BaseClassDelta, changeType?: ChangeType): Promise<SchemaItemEditResults> {\r\n const [sourceBaseClass, targetBaseClass] = baseClassDelta.diagnostic.messageArgs! as [ECClass, ECClass];\r\n if (sourceBaseClass !== undefined) {\r\n const baseClassKey = new SchemaItemKey(sourceBaseClass.name, sourceBaseClass.schema.schemaKey.matches(this.context.sourceSchema.schemaKey)\r\n ? this.context.targetSchema.schemaKey\r\n : sourceBaseClass.schema.schemaKey);\r\n\r\n if (changeType === ChangeType.Missing && targetBaseClass === undefined) {\r\n if (sourceBaseClass.schemaItemType === SchemaItemType.EntityClass) {\r\n return this.context.editor.entities.setBaseClass(itemKey, baseClassKey);\r\n } else if (sourceBaseClass.schemaItemType === SchemaItemType.Mixin) {\r\n return this.context.editor.mixins.setMixinBaseClass(itemKey, baseClassKey);\r\n }\r\n }\r\n\r\n if (targetBaseClass !== undefined) {\r\n const baseClass = await this.context.targetSchema.lookupItem<ECClass>(baseClassKey);\r\n if (baseClass === undefined) {\r\n return { errorMessage: `'${baseClassKey.name}' class could not be located in the merged schema.`};\r\n }\r\n if (await baseClass.is(targetBaseClass)) {\r\n if (baseClass.schemaItemType === SchemaItemType.EntityClass) {\r\n return this.context.editor.entities.setBaseClass(itemKey, baseClassKey);\r\n } else if (baseClass.schemaItemType === SchemaItemType.Mixin) {\r\n return this.context.editor.mixins.setMixinBaseClass(itemKey, baseClassKey);\r\n }\r\n }\r\n }\r\n }\r\n return { errorMessage: `Changing the class '${itemKey.name}' baseClass is not supported.`};\r\n }\r\n\r\n private async mergeAttributeValueChanges(itemKey: SchemaItemKey, propertyValueChanges: PropertyValueChange[]): Promise<SchemaItemEditResults> {\r\n if (propertyValueChanges.length > 0) {\r\n\r\n const targetItem = await this.context.targetSchema.lookupItem<TClass>(itemKey);\r\n if (targetItem === undefined) {\r\n return { errorMessage: `'${itemKey.name}' class could not be located in the merged schema.` };\r\n }\r\n\r\n for (const change of propertyValueChanges) {\r\n const [attributeName, attributeNewValue, attributeOldValue] = change.diagnostic.messageArgs!;\r\n const results = await this.mergeAttributes(targetItem, attributeName, attributeNewValue, attributeOldValue);\r\n if (this.isSchemaItemEditResults(results) && results.errorMessage !== undefined) {\r\n return results;\r\n }\r\n }\r\n }\r\n\r\n return { itemKey };\r\n }\r\n\r\n private async handleError(callback: Promise<SchemaItemEditResults>) {\r\n const result = await callback;\r\n if (result.errorMessage) {\r\n throw new Error(result.errorMessage);\r\n }\r\n }\r\n\r\n private async mergePropertyChanges(itemKey: SchemaItemKey, propertyChanges: Iterable<PropertyChanges>): Promise<SchemaItemEditResults> {\r\n const targetItem = await this.context.targetSchema.lookupItem<TClass>(itemKey);\r\n if (targetItem === undefined) {\r\n return { itemKey, errorMessage: `'${itemKey.name}' class could not be located in the merged schema.`};\r\n }\r\n\r\n for (const change of propertyChanges) {\r\n if (change.propertyMissing?.changeType === ChangeType.Missing) {\r\n if (await targetItem.getProperty(change.ecTypeName) !== undefined) {\r\n return { itemKey, errorMessage: `Merged schema already contains a class '${itemKey.name}' property '${change.ecTypeName}'.`};\r\n }\r\n\r\n const sourceProperty = change.propertyMissing.diagnostic.ecDefinition as unknown as Property;\r\n const results = await createPropertyFromProps(this.context, itemKey, sourceProperty);\r\n if (results.errorMessage !== undefined) {\r\n return { itemKey, errorMessage: results.errorMessage };\r\n }\r\n } else {\r\n const targetProperty = (await targetItem.getProperty(change.ecTypeName))!;\r\n const results = await mergePropertyAttributeValueChanges(this.context, targetProperty, change.propertyValueChanges);\r\n if (results.errorMessage !== undefined) {\r\n return { itemKey, errorMessage: results.errorMessage };\r\n }\r\n }\r\n\r\n const mergeResults = await mergeCustomAttributes(this.context, change.customAttributeChanges.values(), async (ca) => {\r\n return this.context.editor.entities.addCustomAttributeToProperty(itemKey, change.ecTypeName, ca);\r\n });\r\n\r\n if (mergeResults.errorMessage !== undefined) {\r\n return { itemKey, errorMessage: mergeResults.errorMessage};\r\n }\r\n }\r\n return { itemKey };\r\n }\r\n\r\n // First pass to create missing changes\r\n public static async mergeItemStubChanges(context: SchemaMergeContext, classChanges: Iterable<ClassChanges>) {\r\n const merger = new this(context);\r\n\r\n for (const change of classChanges) {\r\n const sourceItem = (await change.schema.getItem<ECClass>(change.ecTypeName))!;\r\n const targetItemKey = new SchemaItemKey(change.ecTypeName, context.targetSchema.schemaKey);\r\n const changeType = change.schemaItemMissing?.changeType;\r\n\r\n if (changeType === ChangeType.Missing) {\r\n\r\n if (await context.targetSchema.lookupItem<ECClass>(targetItemKey) !== undefined) {\r\n throw new Error(`Merged schema already contains a class '${change.ecTypeName}'.`);\r\n }\r\n\r\n await merger.handleError(merger.create(context.targetSchema.schemaKey, sourceItem));\r\n }\r\n }\r\n }\r\n\r\n // 2nd pass to merge baseClass, properties, mixins and CA.\r\n public static async mergeItemContentChanges(context: SchemaMergeContext, classChanges: Iterable<ClassChanges>){\r\n const merger = new this(context);\r\n for (const change of classChanges) {\r\n const targetItemKey = new SchemaItemKey(change.ecTypeName, context.targetSchema.schemaKey);\r\n const changeType = change.schemaItemMissing?.changeType;\r\n\r\n if (change.baseClassDelta !== undefined) {\r\n await merger.handleError(merger.setBaseClass(targetItemKey, change.baseClassDelta, changeType));\r\n }\r\n\r\n // merge class attributes\r\n await merger.handleError(merger.mergeAttributeValueChanges(targetItemKey, change.propertyValueChanges));\r\n\r\n // merge class mixins/constraints/etc\r\n await merger.handleError(merger.merge(targetItemKey, change));\r\n\r\n // merge class property attribute values\r\n if (change.propertyChanges.size > 0) {\r\n await merger.handleError(merger.mergePropertyChanges(targetItemKey, change.propertyChanges.values()));\r\n }\r\n\r\n // merge custom attributes\r\n await merger.handleError(mergeCustomAttributes(merger.context, change.customAttributeChanges.values(), async (ca) => {\r\n return merger.context.editor.entities.addCustomAttribute(targetItemKey, ca);\r\n }));\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ClassMerger.js","sourceRoot":"","sources":["../../../src/Merging/ClassMerger.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*--------------------------------------------------------------------------------------------*/\nimport { ECClass, ECClassModifier, parseClassModifier, Property, SchemaItemKey, SchemaItemType, schemaItemTypeToString, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { SchemaItemEditResults } from \"../Editing/Editor\";\nimport { MutableClass } from \"../Editing/Mutable/MutableClass\";\nimport { SchemaMergeContext } from \"./SchemaMerger\";\nimport { BaseClassDelta, ChangeType, ClassChanges, PropertyChanges, PropertyValueChange } from \"../Validation/SchemaChanges\";\nimport { mergeCustomAttributes } from \"./CustomAttributeMerger\";\nimport { createPropertyFromProps, mergePropertyAttributeValueChanges } from \"./PropertyMerger\";\n\n/**\n * @internal\n */\nexport class ClassMerger<TClass extends ECClass> {\n protected readonly context: SchemaMergeContext;\n\n constructor(context: SchemaMergeContext) {\n this.context = context;\n }\n\n protected async create(_schemaKey: SchemaKey, ecClass: TClass): Promise<SchemaItemEditResults> {\n return { errorMessage: `${schemaItemTypeToString(ecClass.schemaItemType)} class type is not implemented.`};\n }\n\n protected async merge(itemKey: SchemaItemKey, _change: ClassChanges): Promise<SchemaItemEditResults> {\n return { itemKey };\n }\n\n protected async mergeAttributes(ecClass: TClass, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<SchemaItemEditResults | boolean> {\n const mutableClass = ecClass as unknown as MutableClass;\n switch(attributeName) {\n case \"schemaItemType\":\n if (attributeOldValue !== undefined && attributeOldValue !== attributeNewValue) {\n return { errorMessage: `Changing the class '${ecClass.name}' type is not supported.` };\n }\n return true;\n\n case \"label\":\n mutableClass.setDisplayLabel(attributeNewValue);\n return true;\n\n case \"description\":\n mutableClass.setDescription(attributeNewValue);\n return true;\n\n case \"modifier\":\n const modifier = parseClassModifier(attributeNewValue);\n if (modifier === undefined) {\n return { errorMessage: \"An invalid class modifier has been provided.\" };\n }\n\n if (attributeOldValue === undefined || modifier === ECClassModifier.None) {\n mutableClass.setModifier(modifier);\n return true;\n }\n return { errorMessage: `Changing the class '${ecClass.name}' modifier is not supported.` };\n }\n return false;\n }\n\n protected isSchemaItemEditResults(obj: any): obj is SchemaItemEditResults {\n return typeof obj === \"object\" && \"errorMessage\" in obj;\n }\n\n private async setBaseClass(itemKey: SchemaItemKey, baseClassDelta: BaseClassDelta, changeType?: ChangeType): Promise<SchemaItemEditResults> {\n const [sourceBaseClass, targetBaseClass] = baseClassDelta.diagnostic.messageArgs! as [ECClass, ECClass];\n if (sourceBaseClass !== undefined) {\n const baseClassKey = new SchemaItemKey(sourceBaseClass.name, sourceBaseClass.schema.schemaKey.matches(this.context.sourceSchema.schemaKey)\n ? this.context.targetSchema.schemaKey\n : sourceBaseClass.schema.schemaKey);\n\n if (changeType === ChangeType.Missing && targetBaseClass === undefined) {\n if (sourceBaseClass.schemaItemType === SchemaItemType.EntityClass) {\n return this.context.editor.entities.setBaseClass(itemKey, baseClassKey);\n } else if (sourceBaseClass.schemaItemType === SchemaItemType.Mixin) {\n return this.context.editor.mixins.setMixinBaseClass(itemKey, baseClassKey);\n }\n }\n\n if (targetBaseClass !== undefined) {\n const baseClass = await this.context.targetSchema.lookupItem<ECClass>(baseClassKey);\n if (baseClass === undefined) {\n return { errorMessage: `'${baseClassKey.name}' class could not be located in the merged schema.`};\n }\n if (await baseClass.is(targetBaseClass)) {\n if (baseClass.schemaItemType === SchemaItemType.EntityClass) {\n return this.context.editor.entities.setBaseClass(itemKey, baseClassKey);\n } else if (baseClass.schemaItemType === SchemaItemType.Mixin) {\n return this.context.editor.mixins.setMixinBaseClass(itemKey, baseClassKey);\n }\n }\n }\n }\n return { errorMessage: `Changing the class '${itemKey.name}' baseClass is not supported.`};\n }\n\n private async mergeAttributeValueChanges(itemKey: SchemaItemKey, propertyValueChanges: PropertyValueChange[]): Promise<SchemaItemEditResults> {\n if (propertyValueChanges.length > 0) {\n\n const targetItem = await this.context.targetSchema.lookupItem<TClass>(itemKey);\n if (targetItem === undefined) {\n return { errorMessage: `'${itemKey.name}' class could not be located in the merged schema.` };\n }\n\n for (const change of propertyValueChanges) {\n const [attributeName, attributeNewValue, attributeOldValue] = change.diagnostic.messageArgs!;\n const results = await this.mergeAttributes(targetItem, attributeName, attributeNewValue, attributeOldValue);\n if (this.isSchemaItemEditResults(results) && results.errorMessage !== undefined) {\n return results;\n }\n }\n }\n\n return { itemKey };\n }\n\n private async handleError(callback: Promise<SchemaItemEditResults>) {\n const result = await callback;\n if (result.errorMessage) {\n throw new Error(result.errorMessage);\n }\n }\n\n private async mergePropertyChanges(itemKey: SchemaItemKey, propertyChanges: Iterable<PropertyChanges>): Promise<SchemaItemEditResults> {\n const targetItem = await this.context.targetSchema.lookupItem<TClass>(itemKey);\n if (targetItem === undefined) {\n return { itemKey, errorMessage: `'${itemKey.name}' class could not be located in the merged schema.`};\n }\n\n for (const change of propertyChanges) {\n if (change.propertyMissing?.changeType === ChangeType.Missing) {\n if (await targetItem.getProperty(change.ecTypeName) !== undefined) {\n return { itemKey, errorMessage: `Merged schema already contains a class '${itemKey.name}' property '${change.ecTypeName}'.`};\n }\n\n const sourceProperty = change.propertyMissing.diagnostic.ecDefinition as unknown as Property;\n const results = await createPropertyFromProps(this.context, itemKey, sourceProperty);\n if (results.errorMessage !== undefined) {\n return { itemKey, errorMessage: results.errorMessage };\n }\n } else {\n const targetProperty = (await targetItem.getProperty(change.ecTypeName))!;\n const results = await mergePropertyAttributeValueChanges(this.context, targetProperty, change.propertyValueChanges);\n if (results.errorMessage !== undefined) {\n return { itemKey, errorMessage: results.errorMessage };\n }\n }\n\n const mergeResults = await mergeCustomAttributes(this.context, change.customAttributeChanges.values(), async (ca) => {\n return this.context.editor.entities.addCustomAttributeToProperty(itemKey, change.ecTypeName, ca);\n });\n\n if (mergeResults.errorMessage !== undefined) {\n return { itemKey, errorMessage: mergeResults.errorMessage};\n }\n }\n return { itemKey };\n }\n\n // First pass to create missing changes\n public static async mergeItemStubChanges(context: SchemaMergeContext, classChanges: Iterable<ClassChanges>) {\n const merger = new this(context);\n\n for (const change of classChanges) {\n const sourceItem = (await change.schema.getItem<ECClass>(change.ecTypeName))!;\n const targetItemKey = new SchemaItemKey(change.ecTypeName, context.targetSchema.schemaKey);\n const changeType = change.schemaItemMissing?.changeType;\n\n if (changeType === ChangeType.Missing) {\n\n if (await context.targetSchema.lookupItem<ECClass>(targetItemKey) !== undefined) {\n throw new Error(`Merged schema already contains a class '${change.ecTypeName}'.`);\n }\n\n await merger.handleError(merger.create(context.targetSchema.schemaKey, sourceItem));\n }\n }\n }\n\n // 2nd pass to merge baseClass, properties, mixins and CA.\n public static async mergeItemContentChanges(context: SchemaMergeContext, classChanges: Iterable<ClassChanges>){\n const merger = new this(context);\n for (const change of classChanges) {\n const targetItemKey = new SchemaItemKey(change.ecTypeName, context.targetSchema.schemaKey);\n const changeType = change.schemaItemMissing?.changeType;\n\n if (change.baseClassDelta !== undefined) {\n await merger.handleError(merger.setBaseClass(targetItemKey, change.baseClassDelta, changeType));\n }\n\n // merge class attributes\n await merger.handleError(merger.mergeAttributeValueChanges(targetItemKey, change.propertyValueChanges));\n\n // merge class mixins/constraints/etc\n await merger.handleError(merger.merge(targetItemKey, change));\n\n // merge class property attribute values\n if (change.propertyChanges.size > 0) {\n await merger.handleError(merger.mergePropertyChanges(targetItemKey, change.propertyChanges.values()));\n }\n\n // merge custom attributes\n await merger.handleError(mergeCustomAttributes(merger.context, change.customAttributeChanges.values(), async (ca) => {\n return merger.context.editor.entities.addCustomAttribute(targetItemKey, ca);\n }));\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConstantMerger.js","sourceRoot":"","sources":["../../../src/Merging/ConstantMerger.ts"],"names":[],"mappings":";;AAAA,kGAAkG;AAClG,sEAAsE;AACtE,oFAAoF;AACpF,kGAAkG;AAClG,gEAAgE;AAChE,yDAA6E;AAE7E;;GAEG;AACH,MAAqB,eAAgB,SAAQ,mCAA0B;IACrE;;OAEG;IACgB,KAAK,CAAC,2BAA2B;QAClD,OAAO;YACL,UAAU,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,EAAE;gBAChD,2EAA2E;gBAC3E,2EAA2E;gBAC3E,+EAA+E;gBAC/E,iEAAiE;gBACjE,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,8BAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;gBAClF,IAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;oBACvE,OAAO,GAAG,aAAa,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;iBACxD;gBACD,OAAO,kBAAkB,CAAC;YAC5B,CAAC;YACD,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAW,aAAa,CAAC,CAAC;gBAC/E,IAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;oBACtE,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;iBACjG;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,WAAW,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAW,aAAa,CAAC,CAAC;gBAC/E,IAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;oBAC1E,MAAM,IAAI,KAAK,CAAC,oDAAoD,KAAK,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;iBACrG;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAjCD,kCAiCC","sourcesContent":["// /*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"ConstantMerger.js","sourceRoot":"","sources":["../../../src/Merging/ConstantMerger.ts"],"names":[],"mappings":";;AAAA,kGAAkG;AAClG,sEAAsE;AACtE,oFAAoF;AACpF,kGAAkG;AAClG,gEAAgE;AAChE,yDAA6E;AAE7E;;GAEG;AACH,MAAqB,eAAgB,SAAQ,mCAA0B;IACrE;;OAEG;IACgB,KAAK,CAAC,2BAA2B;QAClD,OAAO;YACL,UAAU,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,EAAE;gBAChD,2EAA2E;gBAC3E,2EAA2E;gBAC3E,+EAA+E;gBAC/E,iEAAiE;gBACjE,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,8BAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;gBAClF,IAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;oBACvE,OAAO,GAAG,aAAa,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;iBACxD;gBACD,OAAO,kBAAkB,CAAC;YAC5B,CAAC;YACD,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAW,aAAa,CAAC,CAAC;gBAC/E,IAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;oBACtE,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;iBACjG;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,WAAW,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAW,aAAa,CAAC,CAAC;gBAC/E,IAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;oBAC1E,MAAM,IAAI,KAAK,CAAC,oDAAoD,KAAK,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;iBACrG;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAjCD,kCAiCC","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// *--------------------------------------------------------------------------------------------*/\nimport { Constant, SchemaItem } from \"@itwin/ecschema-metadata\";\nimport { PropertyValueResolver, SchemaItemMerger } from \"./SchemaItemMerger\";\n\n/**\n * @internal\n */\nexport default class ConstantsMerger extends SchemaItemMerger<Constant> {\n /**\n * Creates the property value resolver for [[Constant]] items.\n */\n protected override async createPropertyValueResolver(): Promise<PropertyValueResolver<Constant>> {\n return {\n phenomenon: (phenomenonFullName, targetItemKey) => {\n // There are two options, either the phenomenon was referenced from another\n // schema or it is defined in the same schema as the constant to be merged.\n // In the latter case, the changes would report a different property value that\n // refers to the source schema. So that needs to be changed here.\n const [schemaName, phenomenonName] = SchemaItem.parseFullName(phenomenonFullName);\n if(this.context.targetSchema.getReferenceSync(schemaName) === undefined) {\n return `${targetItemKey.schemaName}.${phenomenonName}`;\n }\n return phenomenonFullName;\n },\n numerator: (value, targetItemKey) => {\n const item = this.context.targetSchema.lookupItemSync<Constant>(targetItemKey);\n if(item !== undefined && item.hasNumerator && item.numerator !== value) {\n throw new Error(`Failed to merged, constant numerator conflict: ${value} -> ${item.numerator}`);\n }\n return value;\n },\n denominator: (value, targetItemKey) => {\n const item = this.context.targetSchema.lookupItemSync<Constant>(targetItemKey);\n if(item !== undefined && item.hasDenominator && item.denominator !== value) {\n throw new Error(`Failed to merged, constant denominator conflict: ${value} -> ${item.denominator}`);\n }\n return value;\n },\n };\n }\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomAttributeMerger.js","sourceRoot":"","sources":["../../../src/Merging/CustomAttributeMerger.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,gEAAuH;AACvH,+DAA0F;AAO1F;;;;;;;;GAQG;AACI,KAAK,UAAU,qBAAqB,CAAC,YAAgC,EAAE,OAAkD,EAAE,QAAoE;IACpM,KAAK,MAAM,8BAA8B,IAAI,OAAO,EAAE;QACpD,KAAK,MAAM,MAAM,IAAI,8BAA8B,CAAC,sBAAsB,EAAE;YAC1E,IAAI,MAAM,CAAC,UAAU,KAAK,0BAAU,CAAC,OAAO,EAAE;gBAC5C,MAAM,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,WAAgC,CAAC;gBACnF,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAI,8BAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;gBAC1F,MAAM,aAAa,GAAG,IAAI,iCAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;oBAC7G,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS;oBACrC,CAAC,CAAC,IAAI,6BAAS,CAAC,UAAU,CAAC,CAC5B,CAAC;gBACF,MAAM,qBAAqB,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,UAAU,CAAuB,aAAa,CAAC,CAAC;gBAC9G,IAAI,qBAAqB,KAAK,SAAS,EAAE;oBACvC,OAAO,EAAE,YAAY,EAAE,+CAA+C,aAAa,CAAC,IAAI,wBAAwB,EAAC,CAAC;iBACnH;gBAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC;oBAC7B,GAAG,qBAAqB;oBACxB,SAAS,EAAE,qBAAqB,CAAC,QAAQ;iBAC1C,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;oBACtC,OAAO,EAAG,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;iBAChD;aACF;iBAAM;gBACL,OAAO,EAAE,YAAY,EAAE,+BAA+B,8BAA8B,CAAC,UAAU,OAAO,YAAY,CAAC,YAAY,CAAC,IAAI,4BAA4B,EAAC,CAAC;aACnK;SACF;KACF;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AA7BD,sDA6BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"CustomAttributeMerger.js","sourceRoot":"","sources":["../../../src/Merging/CustomAttributeMerger.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,gEAAuH;AACvH,+DAA0F;AAO1F;;;;;;;;GAQG;AACI,KAAK,UAAU,qBAAqB,CAAC,YAAgC,EAAE,OAAkD,EAAE,QAAoE;IACpM,KAAK,MAAM,8BAA8B,IAAI,OAAO,EAAE;QACpD,KAAK,MAAM,MAAM,IAAI,8BAA8B,CAAC,sBAAsB,EAAE;YAC1E,IAAI,MAAM,CAAC,UAAU,KAAK,0BAAU,CAAC,OAAO,EAAE;gBAC5C,MAAM,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,WAAgC,CAAC;gBACnF,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAI,8BAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;gBAC1F,MAAM,aAAa,GAAG,IAAI,iCAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;oBAC7G,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS;oBACrC,CAAC,CAAC,IAAI,6BAAS,CAAC,UAAU,CAAC,CAC5B,CAAC;gBACF,MAAM,qBAAqB,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,UAAU,CAAuB,aAAa,CAAC,CAAC;gBAC9G,IAAI,qBAAqB,KAAK,SAAS,EAAE;oBACvC,OAAO,EAAE,YAAY,EAAE,+CAA+C,aAAa,CAAC,IAAI,wBAAwB,EAAC,CAAC;iBACnH;gBAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC;oBAC7B,GAAG,qBAAqB;oBACxB,SAAS,EAAE,qBAAqB,CAAC,QAAQ;iBAC1C,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;oBACtC,OAAO,EAAG,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;iBAChD;aACF;iBAAM;gBACL,OAAO,EAAE,YAAY,EAAE,+BAA+B,8BAA8B,CAAC,UAAU,OAAO,YAAY,CAAC,YAAY,CAAC,IAAI,4BAA4B,EAAC,CAAC;aACnK;SACF;KACF;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AA7BD,sDA6BC","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 Merging\n */\n\nimport { CustomAttribute, CustomAttributeClass, SchemaItem, SchemaItemKey, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { ChangeType, CustomAttributeContainerChanges } from \"../Validation/SchemaChanges\";\nimport { SchemaMergeContext } from \"./SchemaMerger\";\n\ninterface EditResults {\n errorMessage?: string;\n}\n\n/**\n * Merges the custom attributes of the given changes iterable. The third parameter is a callback to pass\n * a scope (Class, Property, Schema) specific handler.\n * @param mergeContext The current schema merging context.\n * @param changes An iterable with custom attribute changes.\n * @param callback The callback to add the custom attribute with a scope specific editor.\n * @returns A EditResults object.\n * @internal\n */\nexport async function mergeCustomAttributes(mergeContext: SchemaMergeContext, changes: Iterable<CustomAttributeContainerChanges>, callback: (customAttribute: CustomAttribute) => Promise<EditResults>): Promise<EditResults> {\n for (const customAttributeContainerChange of changes) {\n for (const change of customAttributeContainerChange.customAttributeChanges) {\n if (change.changeType === ChangeType.Missing) {\n const [sourceCustomAttribute] = change.diagnostic.messageArgs as [CustomAttribute];\n const [schemaName, itemName] = SchemaItem.parseFullName(sourceCustomAttribute.className);\n const schemaItemKey = new SchemaItemKey(itemName, mergeContext.sourceSchema.schemaKey.compareByName(schemaName)\n ? mergeContext.targetSchema.schemaKey\n : new SchemaKey(schemaName),\n );\n const targetCustomAttribute = await mergeContext.targetSchema.lookupItem<CustomAttributeClass>(schemaItemKey);\n if (targetCustomAttribute === undefined) {\n return { errorMessage: `Unable to locate the custom attribute class ${schemaItemKey.name} in the merged schema.`};\n }\n\n const results = await callback({\n ...sourceCustomAttribute,\n className: targetCustomAttribute.fullName,\n });\n\n if (results.errorMessage !== undefined) {\n return { errorMessage: results.errorMessage };\n }\n } else {\n return { errorMessage: `Changes of Custom Attribute ${customAttributeContainerChange.ecTypeName} on ${mergeContext.targetSchema.name} merge is not implemented.`};\n }\n }\n }\n return {};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityClassMerger.js","sourceRoot":"","sources":["../../../src/Merging/EntityClassMerger.ts"],"names":[],"mappings":";;AAAA;;;+FAG+F;AAC/F,gEAAwF;AACxF,+CAA4C;AAE5C,+DAAuE;AAEvE;;GAEG;AACH,MAAqB,iBAAkB,SAAQ,yBAAwB;IAClD,KAAK,CAAC,MAAM,CAAC,SAAoB,EAAE,OAAoB;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxF,CAAC;IAEkB,KAAK,CAAC,KAAK,CAAC,OAAsB,EAAE,OAAqB;QAC1E,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;YACvC,IAAI,OAAO,CAAC,iBAAiB,EAAE,UAAU,KAAK,0BAAU,CAAC,OAAO,EAAE;gBAChE,OAAO,EAAE,YAAY,EAAE,8BAA8B,OAAO,CAAC,IAAI,4BAA4B,EAAC,CAAC;aAChG;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE;gBACxD,KAAK,MAAM,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,EAAE;oBACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,WAAkC,CAAC;oBAC/E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;wBAC1B,MAAM,QAAQ,GAAG,IAAI,iCAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;4BAChH,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS;4BACrC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;wBAC9E,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;4BACrC,OAAO,MAAM,CAAC;yBACf;qBACF;iBACF;aACF;SACF;QACD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;CACF;AA5BD,oCA4BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"EntityClassMerger.js","sourceRoot":"","sources":["../../../src/Merging/EntityClassMerger.ts"],"names":[],"mappings":";;AAAA;;;+FAG+F;AAC/F,gEAAwF;AACxF,+CAA4C;AAE5C,+DAAuE;AAEvE;;GAEG;AACH,MAAqB,iBAAkB,SAAQ,yBAAwB;IAClD,KAAK,CAAC,MAAM,CAAC,SAAoB,EAAE,OAAoB;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxF,CAAC;IAEkB,KAAK,CAAC,KAAK,CAAC,OAAsB,EAAE,OAAqB;QAC1E,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;YACvC,IAAI,OAAO,CAAC,iBAAiB,EAAE,UAAU,KAAK,0BAAU,CAAC,OAAO,EAAE;gBAChE,OAAO,EAAE,YAAY,EAAE,8BAA8B,OAAO,CAAC,IAAI,4BAA4B,EAAC,CAAC;aAChG;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE;gBACxD,KAAK,MAAM,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,EAAE;oBACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,WAAkC,CAAC;oBAC/E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;wBAC1B,MAAM,QAAQ,GAAG,IAAI,iCAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;4BAChH,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS;4BACrC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;wBAC9E,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;4BACrC,OAAO,MAAM,CAAC;yBACf;qBACF;iBACF;aACF;SACF;QACD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;CACF;AA5BD,oCA4BC","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*--------------------------------------------------------------------------------------------*/\nimport { EntityClass, Mixin, SchemaItemKey, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { ClassMerger } from \"./ClassMerger\";\nimport { SchemaItemEditResults } from \"../Editing/Editor\";\nimport { ChangeType, ClassChanges } from \"../Validation/SchemaChanges\";\n\n/**\n * @internal\n */\nexport default class EntityClassMerger extends ClassMerger<EntityClass> {\n protected override async create(schemaKey: SchemaKey, ecClass: EntityClass): Promise<SchemaItemEditResults> {\n return this.context.editor.entities.create(schemaKey, ecClass.name, ecClass.modifier);\n }\n\n protected override async merge(itemKey: SchemaItemKey, changes: ClassChanges): Promise<SchemaItemEditResults> {\n if (changes.entityMixinChanges.size > 0) {\n if (changes.schemaItemMissing?.changeType !== ChangeType.Missing) {\n return { errorMessage: `Changing the entity class '${itemKey.name}' mixins is not supported.`};\n }\n\n for (const change of changes.entityMixinChanges.values()) {\n for (const entityMixinChange of change.entityMixinChange) {\n const mixins = entityMixinChange.diagnostic.messageArgs! as unknown as [Mixin];\n for (const mixin of mixins) {\n const mixinKey = new SchemaItemKey(mixin.name, mixin.schema.schemaKey.matches(this.context.sourceSchema.schemaKey)\n ? this.context.targetSchema.schemaKey\n : mixin.schema.schemaKey);\n const result = await this.context.editor.entities.addMixin(itemKey, mixinKey);\n if (result.errorMessage !== undefined) {\n return result;\n }\n }\n }\n }\n }\n return { itemKey };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumerationMerger.js","sourceRoot":"","sources":["../../../src/Merging/EnumerationMerger.ts"],"names":[],"mappings":";;AAKA,+DAA6E;AAC7E,yDAAsD;AAItD;;GAEG;AACH,MAAqB,iBAAkB,SAAQ,mCAA6B;IAE1E,qDAAqD;IACrD,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;IAC1C,CAAC;IAEkB,KAAK,CAAC,KAAK,CAAC,OAAsB,EAAE,MAAmB,EAAE,OAA2B;QACrG,KAAK,MAAM,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE;YACjE,4EAA4E;YAC5E,wCAAwC;YACxC,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,KAAK,0BAAU,CAAC,OAAO,EAAE;gBAEzE,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC3E,IAAI,UAAU,KAAK,SAAS,EAAE;oBAC5B,MAAM,KAAK,CAAC,eAAe,gBAAgB,CAAC,UAAU,wBAAwB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAClG;gBAED,4EAA4E;gBAC5E,+DAA+D;gBAC/D,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAEtD,8EAA8E;gBAC9E,gFAAgF;gBAChF,SAAS;aACV;YAED,6EAA6E;YAC7E,4EAA4E;YAC5E,8EAA8E;YAC9E,KAAI,MAAM,eAAe,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;gBAC9D,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,WAAmC,CAAC,CAAC;aAC5G;SACF;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,OAAsB,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAsB;QACjH,8EAA8E;QAC9E,oEAAoE;QACpE,IAAG,YAAY,KAAK,OAAO,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,UAAU,CAAC,IAAI,yBAAyB,CAAC,CAAC;SAChH;QAED,gFAAgF;QAChF,iFAAiF;QACjF,IAAG,YAAY,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE;YAClD,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACxE;QACD,IAAG,YAAY,KAAK,aAAa,IAAI,KAAK,KAAK,SAAS,EAAE;YACxD,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC9E;IACH,CAAC;CACF;AApDD,oCAoDC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"EnumerationMerger.js","sourceRoot":"","sources":["../../../src/Merging/EnumerationMerger.ts"],"names":[],"mappings":";;AAKA,+DAA6E;AAC7E,yDAAsD;AAItD;;GAEG;AACH,MAAqB,iBAAkB,SAAQ,mCAA6B;IAE1E,qDAAqD;IACrD,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;IAC1C,CAAC;IAEkB,KAAK,CAAC,KAAK,CAAC,OAAsB,EAAE,MAAmB,EAAE,OAA2B;QACrG,KAAK,MAAM,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE;YACjE,4EAA4E;YAC5E,wCAAwC;YACxC,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,KAAK,0BAAU,CAAC,OAAO,EAAE;gBAEzE,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC3E,IAAI,UAAU,KAAK,SAAS,EAAE;oBAC5B,MAAM,KAAK,CAAC,eAAe,gBAAgB,CAAC,UAAU,wBAAwB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAClG;gBAED,4EAA4E;gBAC5E,+DAA+D;gBAC/D,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAEtD,8EAA8E;gBAC9E,gFAAgF;gBAChF,SAAS;aACV;YAED,6EAA6E;YAC7E,4EAA4E;YAC5E,8EAA8E;YAC9E,KAAI,MAAM,eAAe,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;gBAC9D,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,WAAmC,CAAC,CAAC;aAC5G;SACF;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,OAAsB,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAsB;QACjH,8EAA8E;QAC9E,oEAAoE;QACpE,IAAG,YAAY,KAAK,OAAO,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,UAAU,CAAC,IAAI,yBAAyB,CAAC,CAAC;SAChH;QAED,gFAAgF;QAChF,iFAAiF;QACjF,IAAG,YAAY,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE;YAClD,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACxE;QACD,IAAG,YAAY,KAAK,aAAa,IAAI,KAAK,KAAK,SAAS,EAAE;YACxD,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC9E;IACH,CAAC;CACF;AApDD,oCAoDC","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*--------------------------------------------------------------------------------------------*/\nimport { AnyEnumerator, Enumeration, SchemaItemKey} from \"@itwin/ecschema-metadata\";\nimport { ChangeType, EnumerationChanges } from \"../Validation/SchemaChanges\";\nimport { SchemaItemMerger } from \"./SchemaItemMerger\";\n\ntype EnumeratorDeltaArgs = [AnyEnumerator, keyof AnyEnumerator, string | undefined];\n\n/**\n * @internal\n */\nexport default class EnumerationMerger extends SchemaItemMerger<Enumeration> {\n\n /** Shorthand property to the enumerations editor. */\n private get _editor() {\n return this.context.editor.enumerations;\n }\n\n protected override async merge(itemKey: SchemaItemKey, source: Enumeration, changes: EnumerationChanges) {\n for (const enumeratorChange of changes.enumeratorChanges.values()) {\n // In case the enumerator entry does not exist in the target enumeration the\n // enumeratorMissing property is set and\n if (enumeratorChange.enumeratorMissing?.changeType === ChangeType.Missing) {\n\n const enumerator = source.getEnumeratorByName(enumeratorChange.ecTypeName);\n if (enumerator === undefined) {\n throw Error(`Enumerator '${enumeratorChange.ecTypeName}' not found in class ${source.fullName}`);\n }\n\n // Enumerators are plain javascript objects with out any references to other\n // instances or a schema. That allows to simply copy them over.\n await this._editor.addEnumerator(itemKey, enumerator);\n\n // Since every missing enumerator has delta changes for ech property, the loop\n // must call continue here to avoid having all properties checked and set again.\n continue;\n }\n\n // For changes where the enumerators differ, the enumeratorDeltas property is\n // filled. This allows to change individual enumerator entries. This is only\n // allowed for labels and descriptions, all other deltas would throw an error.\n for(const enumeratorDelta of enumeratorChange.enumeratorDeltas) {\n await this.mergeEnumeratorChanges(itemKey, enumeratorDelta.diagnostic.messageArgs! as EnumeratorDeltaArgs);\n }\n }\n }\n\n private async mergeEnumeratorChanges(itemKey: SchemaItemKey, [enumerator, propertyName, value]: EnumeratorDeltaArgs) {\n // In case an enumerator has the same name but different value, the enumerator\n // cannot be merged to keep integrity for the existing schema users.\n if(propertyName === \"value\") {\n throw new Error(`Failed to merge enumerator attribute, Enumerator \"${enumerator.name}\" has different values.`);\n }\n\n // For the other two properties they shall only be merged if the source value is\n // set. In case they'd be undefined, the current enumerators value shall be kept.\n if(propertyName === \"label\" && value !== undefined) {\n await this._editor.setEnumeratorLabel(itemKey, enumerator.name, value);\n }\n if(propertyName === \"description\" && value !== undefined) {\n await this._editor.setEnumeratorDescription(itemKey, enumerator.name, value);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KindOfQuantityMerger.js","sourceRoot":"","sources":["../../../src/Merging/KindOfQuantityMerger.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"KindOfQuantityMerger.js","sourceRoot":"","sources":["../../../src/Merging/KindOfQuantityMerger.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*--------------------------------------------------------------------------------------------*/\nimport { Format, InvertedUnit, KindOfQuantity, OverrideFormat, SchemaItem, SchemaItemKey, Unit } from \"@itwin/ecschema-metadata\";\nimport { PropertyValueResolver, SchemaItemMerger } from \"./SchemaItemMerger\";\nimport { KindOfQuantityChanges } from \"../Validation/SchemaChanges\";\n\n/**\n * @internal\n */\nexport default class KindOfQuantityMerger extends SchemaItemMerger<KindOfQuantity> {\n\n protected override async merge(itemKey: SchemaItemKey, source: KindOfQuantity, changes: KindOfQuantityChanges) {\n for (const presentationUnitChange of changes.presentationUnitChanges.values()) {\n for (const change of presentationUnitChange.presentationUnitChange) {\n const format = change.diagnostic.messageArgs![0];\n const isDefault = source.defaultPresentationFormat === format;\n\n if (OverrideFormat.isOverrideFormat(format)) {\n const parentFormat = await this.lookup<Format>(format.parent);\n if (parentFormat === undefined) {\n throw new Error(`Unable to locate the format class ${format.parent.name} in the merged schema.`);\n }\n\n const unitAndLabels: Array<[Unit | InvertedUnit, string | undefined]> | undefined = [];\n if (format.units !== undefined) {\n for (const [unit, label] of format.units) {\n const targetUnit = await this.lookup<Unit | InvertedUnit>(unit);\n if (targetUnit === undefined) {\n throw new Error(`Unable to locate the unit class ${unit.name} in the merged schema.`);\n }\n unitAndLabels.push([targetUnit, label]);\n }\n }\n const overrideFormat = await this.context.editor.kindOfQuantities.createFormatOverride(itemKey, parentFormat.key, format.precision, unitAndLabels);\n await this.context.editor.kindOfQuantities.addPresentationOverrideFormat(itemKey, overrideFormat, isDefault);\n } else {\n const targetFormat = await this.lookup<Format>(format);\n if (targetFormat === undefined) {\n throw new Error(`Unable to locate the format class ${format.name} in the merged schema.`);\n }\n await this.context.editor.kindOfQuantities.addPresentationFormat(itemKey, targetFormat.key, isDefault);\n }\n }\n }\n }\n\n /**\n *\n * Creates the property value resolver for [[KindOfQuantity]] items.\n */\n protected override async createPropertyValueResolver(): Promise<PropertyValueResolver<KindOfQuantity>> {\n return {\n persistenceUnit: (newValue, targetItemKey, oldValue) => {\n if (oldValue !== undefined && oldValue !== newValue) {\n throw new Error(`Changing the kind of quantity '${targetItemKey.name}' persistenceUnit is not supported.`);\n }\n const [schemaName, itemName] = SchemaItem.parseFullName(newValue);\n if (this.context.targetSchema.getReferenceSync(schemaName) === undefined) {\n return `${targetItemKey.schemaName}.${itemName}`;\n }\n return newValue;\n },\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MixinMerger.js","sourceRoot":"","sources":["../../../src/Merging/MixinMerger.ts"],"names":[],"mappings":";;AAAA;;;+FAG+F;AAC/F,gEAA2E;AAE3E,+CAA4C;AAE5C;;GAEG;AACH,MAAqB,WAAY,SAAQ,yBAAkB;IAEtC,KAAK,CAAC,MAAM,CAAC,SAAoB,EAAE,OAAc;QAClE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;YACnC,OAAO,EAAE,YAAY,EAAE,aAAa,OAAO,CAAC,QAAQ,iDAAiD,EAAE,CAAC;SACzG;QAED,MAAM,SAAS,GAAG,IAAI,iCAAa,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;YAClI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS;YACrC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;IAEkB,KAAK,CAAC,eAAe,CAAC,OAAc,EAAE,aAAqB,EAAE,iBAAsB,EAAE,iBAAsB;QAC5H,QAAO,aAAa,EAAE;YACpB,KAAK,WAAW;gBACd,IAAI,iBAAiB,KAAK,SAAS,EAAE;oBACnC,OAAO,EAAE,YAAY,EAAE,uBAAuB,OAAO,CAAC,IAAI,+BAA+B,EAAE,CAAC;iBAC7F;gBACD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,CAAC;CACF;AAvBD,8BAuBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"MixinMerger.js","sourceRoot":"","sources":["../../../src/Merging/MixinMerger.ts"],"names":[],"mappings":";;AAAA;;;+FAG+F;AAC/F,gEAA2E;AAE3E,+CAA4C;AAE5C;;GAEG;AACH,MAAqB,WAAY,SAAQ,yBAAkB;IAEtC,KAAK,CAAC,MAAM,CAAC,SAAoB,EAAE,OAAc;QAClE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;YACnC,OAAO,EAAE,YAAY,EAAE,aAAa,OAAO,CAAC,QAAQ,iDAAiD,EAAE,CAAC;SACzG;QAED,MAAM,SAAS,GAAG,IAAI,iCAAa,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;YAClI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS;YACrC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;IAEkB,KAAK,CAAC,eAAe,CAAC,OAAc,EAAE,aAAqB,EAAE,iBAAsB,EAAE,iBAAsB;QAC5H,QAAO,aAAa,EAAE;YACpB,KAAK,WAAW;gBACd,IAAI,iBAAiB,KAAK,SAAS,EAAE;oBACnC,OAAO,EAAE,YAAY,EAAE,uBAAuB,OAAO,CAAC,IAAI,+BAA+B,EAAE,CAAC;iBAC7F;gBACD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,CAAC;CACF;AAvBD,8BAuBC","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*--------------------------------------------------------------------------------------------*/\nimport { Mixin, SchemaItemKey, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { SchemaItemEditResults } from \"../Editing/Editor\";\nimport { ClassMerger } from \"./ClassMerger\";\n\n/**\n * @internal\n */\nexport default class MixinMerger extends ClassMerger<Mixin> {\n\n protected override async create(schemaKey: SchemaKey, ecClass: Mixin): Promise<SchemaItemEditResults> {\n if (ecClass.appliesTo === undefined) {\n return { errorMessage: `The Mixin ${ecClass.fullName} is missing the required 'appliesTo' attribute.` };\n }\n\n const appliesTo = new SchemaItemKey(ecClass.appliesTo.name, this.context.sourceSchema.schemaKey.matches(ecClass.appliesTo.schemaKey)\n ? this.context.targetSchema.schemaKey\n : ecClass.appliesTo.schemaKey);\n return this.context.editor.mixins.create(schemaKey, ecClass.name, appliesTo);\n }\n\n protected override async mergeAttributes(ecClass: Mixin, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<SchemaItemEditResults | boolean> {\n switch(attributeName) {\n case \"appliesTo\":\n if (attributeOldValue !== undefined) {\n return { errorMessage: `Changing the mixin '${ecClass.name}' appliesTo is not supported.` };\n }\n return true;\n }\n return super.mergeAttributes(ecClass, attributeName, attributeNewValue, attributeOldValue);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyMerger.js","sourceRoot":"","sources":["../../../src/Merging/PropertyMerger.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\nimport { AnyArrayProperty, AnyEnumerationProperty, AnyPrimitiveProperty, AnyStructProperty, Enumeration, KindOfQuantity, NavigationProperty, Property, PropertyCategory, PropertyProps, propertyTypeToString, RelationshipClass, SchemaItem, SchemaItemKey, SchemaItemType, schemaItemTypeToString, SchemaKey, StructClass } from \"@itwin/ecschema-metadata\";\r\nimport { SchemaMergeContext } from \"./SchemaMerger\";\r\nimport { PropertyEditResults } from \"../Editing/Editor\";\r\nimport { MutableProperty } from \"../Editing/Mutable/MutableProperty\";\r\nimport { MutableArrayProperty } from \"../Editing/Mutable/MutableArrayProperty\";\r\nimport { MutablePrimitiveOrEnumPropertyBase } from \"../Editing/Mutable/MutablePrimitiveOrEnumProperty\";\r\nimport { PropertyValueChange } from \"../Validation/SchemaChanges\";\r\n\r\nasync function mergePropertyAttributes(context: SchemaMergeContext, property: Property, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\r\n if (property.isEnumeration()) {\r\n return EnumPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n if (property.isPrimitive()) {\r\n return PrimitivePropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n if (property.isStruct()) {\r\n return StructPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n if (property.isNavigation()) {\r\n return NavigationPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Updates property with attribute value changes.\r\n * @param context The current merging context.\r\n * @param property The Property object to be changed.\r\n * @param propertyValueChanges The changes to be applied to the property.\r\n * @internal\r\n */\r\nexport async function mergePropertyAttributeValueChanges(context: SchemaMergeContext, property: Property, propertyValueChanges: PropertyValueChange[]): Promise<PropertyEditResults> {\r\n for (const change of propertyValueChanges) {\r\n const [attributeName, attributeNewValue, attributeOldValue] = change.diagnostic.messageArgs!;\r\n const results = await mergePropertyAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n if (!results) {\r\n return { errorMessage: `Property ${property.fullName} attribute ${attributeName} change is not implemented.` };\r\n }\r\n if (typeof results === \"object\" && \"errorMessage\" in results && results.errorMessage !== undefined) {\r\n return results;\r\n }\r\n }\r\n return { itemKey: property.class.key, propertyName: property.name };\r\n}\r\n\r\n/**\r\n * Creates a Property through a PropertyProps.\r\n * @param context The current merging context.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param property The Property object to be cloned.\r\n * @internal\r\n */\r\nexport async function createPropertyFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: Property): Promise<PropertyEditResults> {\r\n let props = {} as PropertyProps;\r\n\r\n if (property.category !== undefined) {\r\n const sourceCategory = await property.category;\r\n const itemKey = new SchemaItemKey(sourceCategory.name, context.sourceSchema.schemaKey.matches(sourceCategory.schema.schemaKey)\r\n ? context.targetSchema.schemaKey\r\n : sourceCategory.schema.schemaKey,\r\n );\r\n const targetCategory = await context.targetSchema.lookupItem<PropertyCategory>(itemKey);\r\n if (targetCategory === undefined) {\r\n return { errorMessage: `Unable to locate the property category class ${sourceCategory.name} in the context schema.` };\r\n }\r\n props = {...props, category: targetCategory.fullName};\r\n }\r\n\r\n if (property.kindOfQuantity !== undefined) {\r\n const sourceKoq = await property.kindOfQuantity;\r\n const itemKey = new SchemaItemKey(sourceKoq.name, context.sourceSchema.schemaKey.matches(sourceKoq.schema.schemaKey)\r\n ? context.targetSchema.schemaKey\r\n : sourceKoq.schema.schemaKey,\r\n );\r\n const targetKoq = await context.targetSchema.lookupItem<KindOfQuantity>(itemKey);\r\n if (targetKoq === undefined) {\r\n return { errorMessage: `Unable to locate the property kind of quantity class ${sourceKoq.name} in the context schema.` };\r\n }\r\n props = {...props, kindOfQuantity: targetKoq.fullName};\r\n }\r\n if (property.isEnumeration())\r\n return EnumPropertyMerger.createFromProps(context, classKey, property, props);\r\n if (property.isPrimitive())\r\n return PrimitivePropertyMerger.createFromProps(context, classKey, property, props);\r\n if (property.isStruct())\r\n return StructPropertyMerger.createFromProps(context, classKey, property, props);\r\n if (property.isNavigation())\r\n return NavigationPropertyMerger.createFromProps(context, classKey, property, props);\r\n\r\n return { errorMessage: `Unsupported Property Type: ${propertyTypeToString(property.propertyType)}` };\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nnamespace PropertyMerger {\r\n export async function mergeAttributes(context: SchemaMergeContext, property: Property, attributeName: string, attributeNewValue: any, _attributeOldValue: any): Promise<PropertyEditResults | boolean> {\r\n const mutableProperty = property as unknown as MutableProperty;\r\n switch(attributeName) {\r\n case \"type\":\r\n return { errorMessage: `Changing the property '${property.fullName}' type is not supported.` };\r\n case \"description\":\r\n mutableProperty.setDescription(attributeNewValue);\r\n return true;\r\n case \"label\":\r\n mutableProperty.setLabel(attributeNewValue);\r\n return true;\r\n case \"isReadOnly\":\r\n mutableProperty.setIsReadOnly(attributeNewValue);\r\n return true;\r\n case \"priority\":\r\n mutableProperty.setPriority(attributeNewValue);\r\n return true;\r\n case \"category\":\r\n const [schemaName, itemName] = SchemaItem.parseFullName(attributeNewValue);\r\n const itemKey = new SchemaItemKey(itemName, context.sourceSchema.schemaKey.compareByName(schemaName)\r\n ? context.targetSchema.schemaKey\r\n : new SchemaKey(schemaName),\r\n );\r\n return context.editor.entities.setPropertyCategory(property.class.key, property.name, itemKey);\r\n case \"kindOfQuantity\":\r\n return { errorMessage: `Changing the property '${property.fullName}' kind of quantity is not supported.` };\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nnamespace ArrayPropertyMerger {\r\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyArrayProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\r\n const mutableProperty = property as unknown as MutableArrayProperty;\r\n switch (attributeName) {\r\n case \"minOccurs\":\r\n mutableProperty.setMinOccurs(attributeNewValue);\r\n return true;\r\n\r\n case \"maxOccurs\":\r\n mutableProperty.setMaxOccurs(attributeNewValue);\r\n return true;\r\n }\r\n return PropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nnamespace PrimitiveOrEnumPropertyMerger {\r\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyPrimitiveProperty | AnyEnumerationProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\r\n const mutableProperty = property as unknown as MutablePrimitiveOrEnumPropertyBase;\r\n switch (attributeName) {\r\n case \"extendedTypeName\": {\r\n mutableProperty.setExtendedTypeName(attributeNewValue);\r\n return true;\r\n }\r\n case \"minLength\": {\r\n mutableProperty.setMinLength(attributeNewValue);\r\n return true;\r\n }\r\n case \"maxLength\": {\r\n mutableProperty.setMaxLength(attributeNewValue);\r\n return true;\r\n }\r\n case \"minValue\": {\r\n mutableProperty.setMinValue(attributeNewValue);\r\n return true;\r\n }\r\n case \"maxValue\": {\r\n mutableProperty.setMaxValue(attributeNewValue);\r\n return true;\r\n }\r\n }\r\n if (property.isArray()) {\r\n return ArrayPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n return PropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nnamespace EnumPropertyMerger {\r\n export async function createFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: AnyEnumerationProperty, props: PropertyProps): Promise<PropertyEditResults> {\r\n if (property.enumeration === undefined) {\r\n return { errorMessage: `Property ${property.fullName} is missing the required 'enumeration' attribute.` };\r\n }\r\n\r\n const enumeration = await property.enumeration;\r\n const itemKey = new SchemaItemKey(enumeration.name, context.sourceSchema.schemaKey.matches(enumeration.schema.schemaKey)\r\n ? context.targetSchema.schemaKey\r\n : enumeration.schema.schemaKey,\r\n );\r\n const type = await context.targetSchema.lookupItem<Enumeration>(itemKey);\r\n if (type === undefined) {\r\n return { errorMessage: `Unable to locate the enumeration class ${enumeration.name} in the context schema.` };\r\n }\r\n\r\n const enumProps = {\r\n ...property.toJSON(),\r\n ...props,\r\n typeName: type.fullName,\r\n };\r\n\r\n if (property.isArray()) {\r\n return context.editor.entities.createEnumerationArrayPropertyFromProps(classKey, property.name, type, enumProps);\r\n }\r\n return context.editor.entities.createEnumerationPropertyFromProps(classKey, property.name, type, enumProps);\r\n }\r\n\r\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyEnumerationProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\r\n switch (attributeName) {\r\n case \"enumeration\":\r\n return { errorMessage: `Changing the property '${property.fullName}' enumeration is not supported.` };\r\n }\r\n return PrimitiveOrEnumPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nnamespace PrimitivePropertyMerger {\r\n export async function createFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: AnyPrimitiveProperty, props: PropertyProps): Promise<PropertyEditResults> {\r\n const primitiveProps = {\r\n ...property.toJSON(),\r\n ...props,\r\n };\r\n\r\n if (property.isArray()) {\r\n return context.editor.entities.createPrimitiveArrayPropertyFromProps(classKey, property.name, property.primitiveType, primitiveProps);\r\n }\r\n return context.editor.entities.createPrimitivePropertyFromProps(classKey, property.name, property.primitiveType, primitiveProps);\r\n }\r\n\r\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyPrimitiveProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\r\n switch (attributeName) {\r\n case \"primitiveType\":\r\n return { errorMessage: `Changing the property '${property.fullName}' primitiveType is not supported.` };\r\n }\r\n return PrimitiveOrEnumPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nnamespace StructPropertyMerger {\r\n export async function createFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: AnyStructProperty, props: PropertyProps): Promise<PropertyEditResults> {\r\n const itemKey = new SchemaItemKey(property.structClass.name, context.sourceSchema.schemaKey.matches(property.structClass.schema.schemaKey)\r\n ? context.targetSchema.schemaKey\r\n : property.structClass.schema.schemaKey,\r\n );\r\n const type = await context.targetSchema.lookupItem<StructClass>(itemKey);\r\n if (type === undefined) {\r\n return { errorMessage: `Unable to locate the struct class ${property.structClass.name} in the context schema.` };\r\n }\r\n\r\n const structProps = {\r\n ...property.toJSON(),\r\n ...props,\r\n typeName: type.fullName,\r\n };\r\n\r\n if (property.isArray()) {\r\n return context.editor.entities.createStructArrayPropertyFromProps(classKey, property.name, type, structProps);\r\n }\r\n return context.editor.entities.createStructPropertyFromProps(classKey, property.name, type, structProps);\r\n }\r\n\r\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyStructProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\r\n switch (attributeName) {\r\n case \"structClass\":\r\n return { errorMessage: `Changing the property '${property.fullName}' structClass is not supported.` };\r\n }\r\n if (property.isArray()) {\r\n return ArrayPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n return PropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nnamespace NavigationPropertyMerger {\r\n export async function createFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: NavigationProperty, props: PropertyProps): Promise<PropertyEditResults> {\r\n const itemKey = new SchemaItemKey(property.relationshipClass.name, context.sourceSchema.schemaKey.matches(property.relationshipClass.schemaKey)\r\n ? context.targetSchema.schemaKey\r\n : property.relationshipClass.schemaKey,\r\n );\r\n const type = await context.targetSchema.lookupItem<RelationshipClass>(itemKey);\r\n if (type === undefined) {\r\n return { errorMessage: `Unable to locate the relationship class ${property.relationshipClass.name} in the context schema.` };\r\n }\r\n\r\n const navigationProps = {\r\n ...property.toJSON(),\r\n ...props,\r\n relationshipName: type.fullName,\r\n };\r\n\r\n if (property.class.schemaItemType === SchemaItemType.EntityClass)\r\n return context.editor.entities.createNavigationPropertyFromProps(classKey, navigationProps);\r\n if (property.class.schemaItemType === SchemaItemType.Mixin)\r\n return context.editor.mixins.createNavigationPropertyFromProps(classKey, navigationProps);\r\n if (property.class.schemaItemType === SchemaItemType.RelationshipClass)\r\n return context.editor.relationships.createNavigationPropertyFromProps(classKey, navigationProps);\r\n return { errorMessage: `Navigation property can't be added to ${schemaItemTypeToString(property.class.schemaItemType)}.` };\r\n }\r\n\r\n export async function mergeAttributes(context: SchemaMergeContext, property: NavigationProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\r\n switch (attributeName) {\r\n case \"direction\": {\r\n return { errorMessage: `Changing the property '${property.fullName}' direction is not supported.` };\r\n }\r\n case \"relationshipClass\": {\r\n return { errorMessage: `Changing the property '${property.fullName}' relationship class is not supported.` };\r\n }\r\n }\r\n return PropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PropertyMerger.js","sourceRoot":"","sources":["../../../src/Merging/PropertyMerger.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*--------------------------------------------------------------------------------------------*/\nimport { AnyArrayProperty, AnyEnumerationProperty, AnyPrimitiveProperty, AnyStructProperty, Enumeration, KindOfQuantity, NavigationProperty, Property, PropertyCategory, PropertyProps, propertyTypeToString, RelationshipClass, SchemaItem, SchemaItemKey, SchemaItemType, schemaItemTypeToString, SchemaKey, StructClass } from \"@itwin/ecschema-metadata\";\nimport { SchemaMergeContext } from \"./SchemaMerger\";\nimport { PropertyEditResults } from \"../Editing/Editor\";\nimport { MutableProperty } from \"../Editing/Mutable/MutableProperty\";\nimport { MutableArrayProperty } from \"../Editing/Mutable/MutableArrayProperty\";\nimport { MutablePrimitiveOrEnumPropertyBase } from \"../Editing/Mutable/MutablePrimitiveOrEnumProperty\";\nimport { PropertyValueChange } from \"../Validation/SchemaChanges\";\n\nasync function mergePropertyAttributes(context: SchemaMergeContext, property: Property, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\n if (property.isEnumeration()) {\n return EnumPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n if (property.isPrimitive()) {\n return PrimitivePropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n if (property.isStruct()) {\n return StructPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n if (property.isNavigation()) {\n return NavigationPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n return false;\n}\n\n/**\n * Updates property with attribute value changes.\n * @param context The current merging context.\n * @param property The Property object to be changed.\n * @param propertyValueChanges The changes to be applied to the property.\n * @internal\n */\nexport async function mergePropertyAttributeValueChanges(context: SchemaMergeContext, property: Property, propertyValueChanges: PropertyValueChange[]): Promise<PropertyEditResults> {\n for (const change of propertyValueChanges) {\n const [attributeName, attributeNewValue, attributeOldValue] = change.diagnostic.messageArgs!;\n const results = await mergePropertyAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n if (!results) {\n return { errorMessage: `Property ${property.fullName} attribute ${attributeName} change is not implemented.` };\n }\n if (typeof results === \"object\" && \"errorMessage\" in results && results.errorMessage !== undefined) {\n return results;\n }\n }\n return { itemKey: property.class.key, propertyName: property.name };\n}\n\n/**\n * Creates a Property through a PropertyProps.\n * @param context The current merging context.\n * @param classKey The SchemaItemKey of the class.\n * @param property The Property object to be cloned.\n * @internal\n */\nexport async function createPropertyFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: Property): Promise<PropertyEditResults> {\n let props = {} as PropertyProps;\n\n if (property.category !== undefined) {\n const sourceCategory = await property.category;\n const itemKey = new SchemaItemKey(sourceCategory.name, context.sourceSchema.schemaKey.matches(sourceCategory.schema.schemaKey)\n ? context.targetSchema.schemaKey\n : sourceCategory.schema.schemaKey,\n );\n const targetCategory = await context.targetSchema.lookupItem<PropertyCategory>(itemKey);\n if (targetCategory === undefined) {\n return { errorMessage: `Unable to locate the property category class ${sourceCategory.name} in the context schema.` };\n }\n props = {...props, category: targetCategory.fullName};\n }\n\n if (property.kindOfQuantity !== undefined) {\n const sourceKoq = await property.kindOfQuantity;\n const itemKey = new SchemaItemKey(sourceKoq.name, context.sourceSchema.schemaKey.matches(sourceKoq.schema.schemaKey)\n ? context.targetSchema.schemaKey\n : sourceKoq.schema.schemaKey,\n );\n const targetKoq = await context.targetSchema.lookupItem<KindOfQuantity>(itemKey);\n if (targetKoq === undefined) {\n return { errorMessage: `Unable to locate the property kind of quantity class ${sourceKoq.name} in the context schema.` };\n }\n props = {...props, kindOfQuantity: targetKoq.fullName};\n }\n if (property.isEnumeration())\n return EnumPropertyMerger.createFromProps(context, classKey, property, props);\n if (property.isPrimitive())\n return PrimitivePropertyMerger.createFromProps(context, classKey, property, props);\n if (property.isStruct())\n return StructPropertyMerger.createFromProps(context, classKey, property, props);\n if (property.isNavigation())\n return NavigationPropertyMerger.createFromProps(context, classKey, property, props);\n\n return { errorMessage: `Unsupported Property Type: ${propertyTypeToString(property.propertyType)}` };\n}\n\n/**\n * @internal\n */\nnamespace PropertyMerger {\n export async function mergeAttributes(context: SchemaMergeContext, property: Property, attributeName: string, attributeNewValue: any, _attributeOldValue: any): Promise<PropertyEditResults | boolean> {\n const mutableProperty = property as unknown as MutableProperty;\n switch(attributeName) {\n case \"type\":\n return { errorMessage: `Changing the property '${property.fullName}' type is not supported.` };\n case \"description\":\n mutableProperty.setDescription(attributeNewValue);\n return true;\n case \"label\":\n mutableProperty.setLabel(attributeNewValue);\n return true;\n case \"isReadOnly\":\n mutableProperty.setIsReadOnly(attributeNewValue);\n return true;\n case \"priority\":\n mutableProperty.setPriority(attributeNewValue);\n return true;\n case \"category\":\n const [schemaName, itemName] = SchemaItem.parseFullName(attributeNewValue);\n const itemKey = new SchemaItemKey(itemName, context.sourceSchema.schemaKey.compareByName(schemaName)\n ? context.targetSchema.schemaKey\n : new SchemaKey(schemaName),\n );\n return context.editor.entities.setPropertyCategory(property.class.key, property.name, itemKey);\n case \"kindOfQuantity\":\n return { errorMessage: `Changing the property '${property.fullName}' kind of quantity is not supported.` };\n }\n return false;\n }\n}\n\n/**\n * @internal\n */\nnamespace ArrayPropertyMerger {\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyArrayProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\n const mutableProperty = property as unknown as MutableArrayProperty;\n switch (attributeName) {\n case \"minOccurs\":\n mutableProperty.setMinOccurs(attributeNewValue);\n return true;\n\n case \"maxOccurs\":\n mutableProperty.setMaxOccurs(attributeNewValue);\n return true;\n }\n return PropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n}\n\n/**\n * @internal\n */\nnamespace PrimitiveOrEnumPropertyMerger {\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyPrimitiveProperty | AnyEnumerationProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\n const mutableProperty = property as unknown as MutablePrimitiveOrEnumPropertyBase;\n switch (attributeName) {\n case \"extendedTypeName\": {\n mutableProperty.setExtendedTypeName(attributeNewValue);\n return true;\n }\n case \"minLength\": {\n mutableProperty.setMinLength(attributeNewValue);\n return true;\n }\n case \"maxLength\": {\n mutableProperty.setMaxLength(attributeNewValue);\n return true;\n }\n case \"minValue\": {\n mutableProperty.setMinValue(attributeNewValue);\n return true;\n }\n case \"maxValue\": {\n mutableProperty.setMaxValue(attributeNewValue);\n return true;\n }\n }\n if (property.isArray()) {\n return ArrayPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n return PropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n}\n\n/**\n * @internal\n */\nnamespace EnumPropertyMerger {\n export async function createFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: AnyEnumerationProperty, props: PropertyProps): Promise<PropertyEditResults> {\n if (property.enumeration === undefined) {\n return { errorMessage: `Property ${property.fullName} is missing the required 'enumeration' attribute.` };\n }\n\n const enumeration = await property.enumeration;\n const itemKey = new SchemaItemKey(enumeration.name, context.sourceSchema.schemaKey.matches(enumeration.schema.schemaKey)\n ? context.targetSchema.schemaKey\n : enumeration.schema.schemaKey,\n );\n const type = await context.targetSchema.lookupItem<Enumeration>(itemKey);\n if (type === undefined) {\n return { errorMessage: `Unable to locate the enumeration class ${enumeration.name} in the context schema.` };\n }\n\n const enumProps = {\n ...property.toJSON(),\n ...props,\n typeName: type.fullName,\n };\n\n if (property.isArray()) {\n return context.editor.entities.createEnumerationArrayPropertyFromProps(classKey, property.name, type, enumProps);\n }\n return context.editor.entities.createEnumerationPropertyFromProps(classKey, property.name, type, enumProps);\n }\n\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyEnumerationProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\n switch (attributeName) {\n case \"enumeration\":\n return { errorMessage: `Changing the property '${property.fullName}' enumeration is not supported.` };\n }\n return PrimitiveOrEnumPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n}\n\n/**\n * @internal\n */\nnamespace PrimitivePropertyMerger {\n export async function createFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: AnyPrimitiveProperty, props: PropertyProps): Promise<PropertyEditResults> {\n const primitiveProps = {\n ...property.toJSON(),\n ...props,\n };\n\n if (property.isArray()) {\n return context.editor.entities.createPrimitiveArrayPropertyFromProps(classKey, property.name, property.primitiveType, primitiveProps);\n }\n return context.editor.entities.createPrimitivePropertyFromProps(classKey, property.name, property.primitiveType, primitiveProps);\n }\n\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyPrimitiveProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\n switch (attributeName) {\n case \"primitiveType\":\n return { errorMessage: `Changing the property '${property.fullName}' primitiveType is not supported.` };\n }\n return PrimitiveOrEnumPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n}\n\n/**\n * @internal\n */\nnamespace StructPropertyMerger {\n export async function createFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: AnyStructProperty, props: PropertyProps): Promise<PropertyEditResults> {\n const itemKey = new SchemaItemKey(property.structClass.name, context.sourceSchema.schemaKey.matches(property.structClass.schema.schemaKey)\n ? context.targetSchema.schemaKey\n : property.structClass.schema.schemaKey,\n );\n const type = await context.targetSchema.lookupItem<StructClass>(itemKey);\n if (type === undefined) {\n return { errorMessage: `Unable to locate the struct class ${property.structClass.name} in the context schema.` };\n }\n\n const structProps = {\n ...property.toJSON(),\n ...props,\n typeName: type.fullName,\n };\n\n if (property.isArray()) {\n return context.editor.entities.createStructArrayPropertyFromProps(classKey, property.name, type, structProps);\n }\n return context.editor.entities.createStructPropertyFromProps(classKey, property.name, type, structProps);\n }\n\n export async function mergeAttributes(context: SchemaMergeContext, property: AnyStructProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\n switch (attributeName) {\n case \"structClass\":\n return { errorMessage: `Changing the property '${property.fullName}' structClass is not supported.` };\n }\n if (property.isArray()) {\n return ArrayPropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n return PropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n}\n\n/**\n * @internal\n */\nnamespace NavigationPropertyMerger {\n export async function createFromProps(context: SchemaMergeContext, classKey: SchemaItemKey, property: NavigationProperty, props: PropertyProps): Promise<PropertyEditResults> {\n const itemKey = new SchemaItemKey(property.relationshipClass.name, context.sourceSchema.schemaKey.matches(property.relationshipClass.schemaKey)\n ? context.targetSchema.schemaKey\n : property.relationshipClass.schemaKey,\n );\n const type = await context.targetSchema.lookupItem<RelationshipClass>(itemKey);\n if (type === undefined) {\n return { errorMessage: `Unable to locate the relationship class ${property.relationshipClass.name} in the context schema.` };\n }\n\n const navigationProps = {\n ...property.toJSON(),\n ...props,\n relationshipName: type.fullName,\n };\n\n if (property.class.schemaItemType === SchemaItemType.EntityClass)\n return context.editor.entities.createNavigationPropertyFromProps(classKey, navigationProps);\n if (property.class.schemaItemType === SchemaItemType.Mixin)\n return context.editor.mixins.createNavigationPropertyFromProps(classKey, navigationProps);\n if (property.class.schemaItemType === SchemaItemType.RelationshipClass)\n return context.editor.relationships.createNavigationPropertyFromProps(classKey, navigationProps);\n return { errorMessage: `Navigation property can't be added to ${schemaItemTypeToString(property.class.schemaItemType)}.` };\n }\n\n export async function mergeAttributes(context: SchemaMergeContext, property: NavigationProperty, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<PropertyEditResults | boolean> {\n switch (attributeName) {\n case \"direction\": {\n return { errorMessage: `Changing the property '${property.fullName}' direction is not supported.` };\n }\n case \"relationshipClass\": {\n return { errorMessage: `Changing the property '${property.fullName}' relationship class is not supported.` };\n }\n }\n return PropertyMerger.mergeAttributes(context, property, attributeName, attributeNewValue, attributeOldValue);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationshipClassMerger.js","sourceRoot":"","sources":["../../../src/Merging/RelationshipClassMerger.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\nimport { EntityClass, Mixin, parseStrength, parseStrengthDirection, RelationshipClass, RelationshipConstraint, RelationshipMultiplicity, SchemaItem, SchemaItemKey, SchemaKey } from \"@itwin/ecschema-metadata\";\r\nimport { ClassMerger } from \"./ClassMerger\";\r\nimport { SchemaItemEditResults } from \"../Editing/Editor\";\r\nimport { ClassChanges, RelationshipConstraintChanges } from \"../Validation/SchemaChanges\";\r\nimport { MutableRelationshipClass } from \"@itwin/ecschema-metadata/src/Metadata/RelationshipClass\";\r\nimport { MutableRelationshipConstraint } from \"../Editing/Mutable/MutableRelationshipClass\";\r\nimport { mergeCustomAttributes } from \"./CustomAttributeMerger\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport default class RelationshipClassMerger extends ClassMerger<RelationshipClass> {\r\n\r\n protected override async create(schemaKey: SchemaKey, ecClass: RelationshipClass): Promise<SchemaItemEditResults> {\r\n return this.context.editor.relationships.create(schemaKey, ecClass.name, ecClass.modifier, ecClass.strength, ecClass.strengthDirection);\r\n }\r\n\r\n protected override async mergeAttributes(ecClass: RelationshipClass, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<SchemaItemEditResults | boolean> {\r\n const mutableRelationship = ecClass as unknown as MutableRelationshipClass;\r\n switch(attributeName) {\r\n case \"strength\":\r\n if (attributeOldValue === undefined) {\r\n const strength = parseStrength(attributeNewValue);\r\n if (strength === undefined) {\r\n return { itemKey: ecClass.key, errorMessage: `An invalid relationship class strength value '${attributeNewValue}' has been provided.` };\r\n }\r\n mutableRelationship.setStrength(strength);\r\n return true;\r\n }\r\n return { errorMessage: `Changing the relationship '${ecClass.name}' strength is not supported.` };\r\n\r\n case \"strengthDirection\":\r\n if (attributeOldValue === undefined) {\r\n const strengthDirection = parseStrengthDirection(attributeNewValue);\r\n if (strengthDirection === undefined) {\r\n return { itemKey: ecClass.key, errorMessage: `An invalid relationship class strengthDirection value '${attributeNewValue}' has been provided.` };\r\n }\r\n mutableRelationship.setStrengthDirection(strengthDirection);\r\n return true;\r\n }\r\n return { errorMessage: `Changing the relationship '${ecClass.name}' strengthDirection is not supported.` };\r\n }\r\n return super.mergeAttributes(ecClass, attributeName, attributeNewValue, attributeOldValue);\r\n }\r\n\r\n private async mergeConstraintAttributes(constraint: RelationshipConstraint, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<SchemaItemEditResults | boolean> {\r\n switch(attributeName) {\r\n case \"multiplicity\":\r\n if (attributeOldValue === undefined) {\r\n const multiplicity = RelationshipMultiplicity.fromString(attributeNewValue);\r\n if (multiplicity === undefined) {\r\n return { errorMessage: `An invalid relationship constraint multiplicity value '${attributeNewValue}' has been provided.` };\r\n }\r\n return this.context.editor.relationships.setConstraintMultiplicity(constraint, multiplicity);\r\n }\r\n return { errorMessage: `Changing the relationship constraint '${constraint.fullName}' multiplicity is not supported.` };\r\n\r\n case \"polymorphic\":\r\n if (attributeOldValue === undefined || attributeNewValue === true) {\r\n return this.context.editor.relationships.setConstraintPolymorphic(constraint, attributeNewValue);\r\n }\r\n return { errorMessage: `Changing the relationship constraint '${constraint.fullName}' polymorphic is not supported.` };\r\n\r\n case \"roleLabel\":\r\n (constraint as MutableRelationshipConstraint).roleLabel = attributeNewValue;\r\n return true;\r\n\r\n case \"abstractConstraint\":\r\n const [schemaName, itemName] = SchemaItem.parseFullName(attributeNewValue);\r\n const itemKey = new SchemaItemKey(itemName, this.context.sourceSchema.schemaKey.compareByName(schemaName)\r\n ? this.context.targetSchema.schemaKey\r\n : new SchemaKey(schemaName));\r\n\r\n const abstractConstraint = await this.context.targetSchema.lookupItem<Mixin | EntityClass | RelationshipClass>(itemKey);\r\n if (abstractConstraint === undefined) {\r\n return { itemKey: constraint.relationshipClass.key, errorMessage: `Unable to locate the abstract constraint class ${attributeNewValue} in the context schema.`};\r\n }\r\n return this.context.editor.relationships.setAbstractConstraint(constraint, abstractConstraint);\r\n }\r\n return false;\r\n }\r\n\r\n private async mergeConstraintChanges(constraint: RelationshipConstraint, constraintChanges: IterableIterator<RelationshipConstraintChanges>): Promise<SchemaItemEditResults> {\r\n for (const change of constraintChanges) {\r\n\r\n for (const constraintClassChange of change.constraintClassChanges) {\r\n const ecClass = constraintClassChange.diagnostic.messageArgs![0];\r\n const itemKey = new SchemaItemKey(ecClass.name, this.context.sourceSchema.schemaKey.matches(ecClass.schema.schemaKey)\r\n ? this.context.targetSchema.schemaKey\r\n : ecClass.schema.schemaKey);\r\n\r\n const constaintClass = await this.context.targetSchema.lookupItem<Mixin | EntityClass | RelationshipClass>(itemKey);\r\n if (constaintClass === undefined) {\r\n return { itemKey: constraint.relationshipClass.key, errorMessage: `Unable to locate the constraint class ${itemKey.fullName} in the context schema.` };\r\n }\r\n const results = await this.context.editor.relationships.addConstraintClass(constraint, constaintClass);\r\n if (results.errorMessage !== undefined) {\r\n return results;\r\n }\r\n }\r\n\r\n for (const propertyValueChange of change.propertyValueChanges) {\r\n const [attributeName, attributeNewValue, attributeOldValue] = propertyValueChange.diagnostic.messageArgs!;\r\n const results = await this.mergeConstraintAttributes(constraint, attributeName, attributeNewValue, attributeOldValue);\r\n if (this.isSchemaItemEditResults(results) && results.errorMessage !== undefined) {\r\n return results;\r\n }\r\n }\r\n\r\n if (change.customAttributeChanges.size > 0) {\r\n const results = await mergeCustomAttributes(this.context, change.customAttributeChanges.values(), async (ca) => {\r\n return this.context.editor.relationships.addCustomAttributeToConstraint(constraint, ca);\r\n });\r\n if (results.errorMessage !== undefined) {\r\n return results;\r\n }\r\n }\r\n }\r\n\r\n return { itemKey: constraint.relationshipClass.key };\r\n }\r\n\r\n protected override async merge(itemKey: SchemaItemKey, changes: ClassChanges): Promise<SchemaItemEditResults> {\r\n if (changes.sourceConstraintChanges.size > 0 || changes.targetConstraintChanges.size > 0) {\r\n\r\n const relationshipClass = await this.context.targetSchema.lookupItem<RelationshipClass>(itemKey);\r\n if (relationshipClass === undefined) {\r\n return { itemKey, errorMessage: `Unable to locate the relationship class ${itemKey.name} in the context schema.` };\r\n }\r\n\r\n if (changes.sourceConstraintChanges.size > 0) {\r\n const result = await this.mergeConstraintChanges(relationshipClass.source, changes.sourceConstraintChanges.values());\r\n if (result.errorMessage !== undefined) {\r\n return result;\r\n }\r\n }\r\n\r\n if (changes.targetConstraintChanges.size > 0) {\r\n const result = await this.mergeConstraintChanges(relationshipClass.target, changes.targetConstraintChanges.values());\r\n if (result.errorMessage !== undefined) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return { itemKey };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RelationshipClassMerger.js","sourceRoot":"","sources":["../../../src/Merging/RelationshipClassMerger.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*--------------------------------------------------------------------------------------------*/\nimport { EntityClass, Mixin, parseStrength, parseStrengthDirection, RelationshipClass, RelationshipConstraint, RelationshipMultiplicity, SchemaItem, SchemaItemKey, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { ClassMerger } from \"./ClassMerger\";\nimport { SchemaItemEditResults } from \"../Editing/Editor\";\nimport { ClassChanges, RelationshipConstraintChanges } from \"../Validation/SchemaChanges\";\nimport { MutableRelationshipClass } from \"@itwin/ecschema-metadata/src/Metadata/RelationshipClass\";\nimport { MutableRelationshipConstraint } from \"../Editing/Mutable/MutableRelationshipClass\";\nimport { mergeCustomAttributes } from \"./CustomAttributeMerger\";\n\n/**\n * @internal\n */\nexport default class RelationshipClassMerger extends ClassMerger<RelationshipClass> {\n\n protected override async create(schemaKey: SchemaKey, ecClass: RelationshipClass): Promise<SchemaItemEditResults> {\n return this.context.editor.relationships.create(schemaKey, ecClass.name, ecClass.modifier, ecClass.strength, ecClass.strengthDirection);\n }\n\n protected override async mergeAttributes(ecClass: RelationshipClass, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<SchemaItemEditResults | boolean> {\n const mutableRelationship = ecClass as unknown as MutableRelationshipClass;\n switch(attributeName) {\n case \"strength\":\n if (attributeOldValue === undefined) {\n const strength = parseStrength(attributeNewValue);\n if (strength === undefined) {\n return { itemKey: ecClass.key, errorMessage: `An invalid relationship class strength value '${attributeNewValue}' has been provided.` };\n }\n mutableRelationship.setStrength(strength);\n return true;\n }\n return { errorMessage: `Changing the relationship '${ecClass.name}' strength is not supported.` };\n\n case \"strengthDirection\":\n if (attributeOldValue === undefined) {\n const strengthDirection = parseStrengthDirection(attributeNewValue);\n if (strengthDirection === undefined) {\n return { itemKey: ecClass.key, errorMessage: `An invalid relationship class strengthDirection value '${attributeNewValue}' has been provided.` };\n }\n mutableRelationship.setStrengthDirection(strengthDirection);\n return true;\n }\n return { errorMessage: `Changing the relationship '${ecClass.name}' strengthDirection is not supported.` };\n }\n return super.mergeAttributes(ecClass, attributeName, attributeNewValue, attributeOldValue);\n }\n\n private async mergeConstraintAttributes(constraint: RelationshipConstraint, attributeName: string, attributeNewValue: any, attributeOldValue: any): Promise<SchemaItemEditResults | boolean> {\n switch(attributeName) {\n case \"multiplicity\":\n if (attributeOldValue === undefined) {\n const multiplicity = RelationshipMultiplicity.fromString(attributeNewValue);\n if (multiplicity === undefined) {\n return { errorMessage: `An invalid relationship constraint multiplicity value '${attributeNewValue}' has been provided.` };\n }\n return this.context.editor.relationships.setConstraintMultiplicity(constraint, multiplicity);\n }\n return { errorMessage: `Changing the relationship constraint '${constraint.fullName}' multiplicity is not supported.` };\n\n case \"polymorphic\":\n if (attributeOldValue === undefined || attributeNewValue === true) {\n return this.context.editor.relationships.setConstraintPolymorphic(constraint, attributeNewValue);\n }\n return { errorMessage: `Changing the relationship constraint '${constraint.fullName}' polymorphic is not supported.` };\n\n case \"roleLabel\":\n (constraint as MutableRelationshipConstraint).roleLabel = attributeNewValue;\n return true;\n\n case \"abstractConstraint\":\n const [schemaName, itemName] = SchemaItem.parseFullName(attributeNewValue);\n const itemKey = new SchemaItemKey(itemName, this.context.sourceSchema.schemaKey.compareByName(schemaName)\n ? this.context.targetSchema.schemaKey\n : new SchemaKey(schemaName));\n\n const abstractConstraint = await this.context.targetSchema.lookupItem<Mixin | EntityClass | RelationshipClass>(itemKey);\n if (abstractConstraint === undefined) {\n return { itemKey: constraint.relationshipClass.key, errorMessage: `Unable to locate the abstract constraint class ${attributeNewValue} in the context schema.`};\n }\n return this.context.editor.relationships.setAbstractConstraint(constraint, abstractConstraint);\n }\n return false;\n }\n\n private async mergeConstraintChanges(constraint: RelationshipConstraint, constraintChanges: IterableIterator<RelationshipConstraintChanges>): Promise<SchemaItemEditResults> {\n for (const change of constraintChanges) {\n\n for (const constraintClassChange of change.constraintClassChanges) {\n const ecClass = constraintClassChange.diagnostic.messageArgs![0];\n const itemKey = new SchemaItemKey(ecClass.name, this.context.sourceSchema.schemaKey.matches(ecClass.schema.schemaKey)\n ? this.context.targetSchema.schemaKey\n : ecClass.schema.schemaKey);\n\n const constaintClass = await this.context.targetSchema.lookupItem<Mixin | EntityClass | RelationshipClass>(itemKey);\n if (constaintClass === undefined) {\n return { itemKey: constraint.relationshipClass.key, errorMessage: `Unable to locate the constraint class ${itemKey.fullName} in the context schema.` };\n }\n const results = await this.context.editor.relationships.addConstraintClass(constraint, constaintClass);\n if (results.errorMessage !== undefined) {\n return results;\n }\n }\n\n for (const propertyValueChange of change.propertyValueChanges) {\n const [attributeName, attributeNewValue, attributeOldValue] = propertyValueChange.diagnostic.messageArgs!;\n const results = await this.mergeConstraintAttributes(constraint, attributeName, attributeNewValue, attributeOldValue);\n if (this.isSchemaItemEditResults(results) && results.errorMessage !== undefined) {\n return results;\n }\n }\n\n if (change.customAttributeChanges.size > 0) {\n const results = await mergeCustomAttributes(this.context, change.customAttributeChanges.values(), async (ca) => {\n return this.context.editor.relationships.addCustomAttributeToConstraint(constraint, ca);\n });\n if (results.errorMessage !== undefined) {\n return results;\n }\n }\n }\n\n return { itemKey: constraint.relationshipClass.key };\n }\n\n protected override async merge(itemKey: SchemaItemKey, changes: ClassChanges): Promise<SchemaItemEditResults> {\n if (changes.sourceConstraintChanges.size > 0 || changes.targetConstraintChanges.size > 0) {\n\n const relationshipClass = await this.context.targetSchema.lookupItem<RelationshipClass>(itemKey);\n if (relationshipClass === undefined) {\n return { itemKey, errorMessage: `Unable to locate the relationship class ${itemKey.name} in the context schema.` };\n }\n\n if (changes.sourceConstraintChanges.size > 0) {\n const result = await this.mergeConstraintChanges(relationshipClass.source, changes.sourceConstraintChanges.values());\n if (result.errorMessage !== undefined) {\n return result;\n }\n }\n\n if (changes.targetConstraintChanges.size > 0) {\n const result = await this.mergeConstraintChanges(relationshipClass.target, changes.targetConstraintChanges.values());\n if (result.errorMessage !== undefined) {\n return result;\n }\n }\n }\n\n return { itemKey };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaItemFactory.js","sourceRoot":"","sources":["../../../src/Merging/SchemaItemFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"SchemaItemFactory.js","sourceRoot":"","sources":["../../../src/Merging/SchemaItemFactory.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*--------------------------------------------------------------------------------------------*/\nimport { Constant, CustomAttributeClass, EntityClass, Enumeration, KindOfQuantity, Phenomenon, PrimitiveType, PropertyCategory, SchemaItem, SchemaItemKey, SchemaKey, StructClass, UnitSystem } from \"@itwin/ecschema-metadata\";\nimport { SchemaContextEditor, SchemaItemEditResults } from \"../Editing/Editor\";\nimport { SchemaMergeContext } from \"./SchemaMerger\";\n\n/**\n * @internal\n */\nexport namespace SchemaItemFactory {\n\n /**\n * Creates a new Schema Item based on the given template instance.\n * @param context The current merging context.\n * @param template The Schema Items Template\n * @returns The SchemaItemKey of the created item.\n */\n export async function create(context: SchemaMergeContext, template: SchemaItem): Promise<SchemaItemKey> {\n const result = await createItem(context.editor, context.targetSchema.schemaKey, template);\n if(result.errorMessage) {\n throw new Error(result.errorMessage);\n }\n return result.itemKey!;\n }\n\n /**\n * Creates a new Schema Item in the SchemaContextEditor.\n * @param editor The SchemaContextEditor\n * @param targetSchemaKey The key of the target schema the item shall be created in.\n * @param template The Schema Items Template\n * @returns A SchemaItemEditResults with a schema key if the item could be created.\n */\n async function createItem(editor: SchemaContextEditor, targetSchemaKey: SchemaKey, template: SchemaItem): Promise<SchemaItemEditResults> {\n if (is(template, Enumeration))\n return editor.enumerations.create(targetSchemaKey, template.name, template.isInt ? PrimitiveType.Integer : PrimitiveType.String, template.label, template.isStrict);\n if (is(template, EntityClass))\n return editor.entities.create(targetSchemaKey, template.name, template.modifier);\n if (is(template, StructClass))\n return editor.structs.create(targetSchemaKey, template.name);\n if (is(template, CustomAttributeClass))\n return editor.customAttributes.create(targetSchemaKey, template.name, template.containerType);\n if(is(template, PropertyCategory))\n return editor.propertyCategories.create(targetSchemaKey, template.name, template.priority);\n if (is(template, Phenomenon))\n return editor.phenomenons.create(targetSchemaKey, template.name, template.definition);\n if (is(template, Constant)) {\n if(template.phenomenon === undefined) {\n throw new Error(`Invalid Constant ${template.name} has no phenomenon defined`);\n }\n const phenomenon = await template.phenomenon;\n const itemKey = phenomenon.key.schemaKey.matches(template.key.schemaKey)\n ? new SchemaItemKey(phenomenon.name, targetSchemaKey)\n : phenomenon.key;\n\n return editor.constants.create(targetSchemaKey, template.name, itemKey, template.definition);\n }\n if (is(template, KindOfQuantity)) {\n if(template.persistenceUnit === undefined) {\n throw new Error(`Invalid KindOfQuantity ${template.name} has no persistenceUnit defined`);\n }\n const persistenceUnit = await template.persistenceUnit;\n const itemKey = persistenceUnit.key.schemaKey.matches(template.key.schemaKey)\n ? new SchemaItemKey(persistenceUnit.name, targetSchemaKey)\n : persistenceUnit.key;\n return editor.kindOfQuantities.create(targetSchemaKey, template.name, itemKey);\n }\n if (is(template, UnitSystem))\n return editor.unitSystems.create(targetSchemaKey, template.name);\n\n throw new Error(`Unsupported Schema Item Type: ${template.constructor.name}`);\n }\n\n /**\n * Type Guard to \"cast\" a given schema item into an implementation\n * @param item Item to be checked\n * @param type The desired implementation.\n * @returns true if the item could be casted, otherwise false.\n */\n function is<T extends SchemaItem>(item: SchemaItem, type: new (...args: any) => T ): item is T {\n return item instanceof type;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaItemMerger.js","sourceRoot":"","sources":["../../../src/Merging/SchemaItemMerger.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"SchemaItemMerger.js","sourceRoot":"","sources":["../../../src/Merging/SchemaItemMerger.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*--------------------------------------------------------------------------------------------*/\nimport { SchemaItem, SchemaItemKey } from \"@itwin/ecschema-metadata\";\nimport { ChangeType, PropertyValueChange, SchemaItemChanges } from \"../Validation/SchemaChanges\";\nimport { SchemaItemFactory } from \"./SchemaItemFactory\";\nimport { SchemaMergeContext } from \"./SchemaMerger\";\n\n/**\n * Defines a type-safe interface of Property Value resolver.\n * @internal\n */\nexport type PropertyValueResolver<T extends SchemaItem, TProps=MutableSchemaItemProps<T>> = {\n [P in keyof TProps]?: (newValue: any, item: SchemaItemKey, oldValue?: any) => any;\n};\n\n/**\n * Defines a Mutable Schema Props interface.\n */\ntype MutableSchemaItemProps<T extends SchemaItem> = {\n -readonly [key in keyof ReturnType<T[\"toJSON\"]>]: ReturnType<T[\"toJSON\"]>[key];\n};\n\n/**\n * The SchemaItemMerger is an base class for several other mergers with the actual logic\n * to perform merging for a certain schema item type. The class provides the shared logics\n * that is shared for all schema item mergers and custom logic can be applied by overriding\n * the protected class members.\n * @internal\n */\nexport class SchemaItemMerger<TItem extends SchemaItem> {\n\n protected readonly context: SchemaMergeContext;\n\n /**\n * Constructor of the SchemaItemMerger class. This should not be overriden or extended\n * by sub-implementations.\n * @param context The current merging context.\n */\n constructor(context: SchemaMergeContext) {\n this.context = context;\n }\n\n /**\n * This overridable method allows to create a property value resolver that gets defines\n * a handler function for every possible property change. This allows adding complex handing\n * if a property value requires complicated merging.\n * @returns A resolver map with resolvers for the property.\n */\n protected async createPropertyValueResolver(): Promise<PropertyValueResolver<TItem>> {\n // Can be overriden for complex property value merging\n return {};\n }\n\n /**\n * This overridable method gets called for more complex merging.\n * @param _itemKey The key of the current schema item.\n * @param _source The source item that shall gets merged into.\n * @param _change The schema item change to be applied.\n */\n protected async merge(_itemKey: SchemaItemKey, _source: TItem, _change: SchemaItemChanges) {\n // Can be overriden for complex merging\n }\n\n protected async lookup<T extends SchemaItem>(schemaItem: T): Promise<T | undefined>{\n const itemKey = new SchemaItemKey(schemaItem.name, this.context.sourceSchema.schemaKey.matches(schemaItem.schema.schemaKey)\n ? this.context.targetSchema.schemaKey\n : schemaItem.schema.schemaKey,\n );\n return this.context.targetSchema.lookupItem<T>(itemKey);\n }\n\n /**\n * Merges the given schema item changes in the current context.\n * @param context The merging context\n * @param schemaItemChanges An iterable of item changes.\n */\n public static async mergeChanges<TChange extends SchemaItemChanges>(context: SchemaMergeContext, schemaItemChanges: Iterable<TChange>) {\n const merger = new this(context);\n for(const change of schemaItemChanges) {\n\n // Gets the source and the target item. The target item could be undefined at that point.\n const sourceItem = (await context.sourceSchema.getItem<SchemaItem>(change.ecTypeName))!;\n let targetItemKey = new SchemaItemKey(change.ecTypeName, context.targetSchema.schemaKey);\n\n // In case the schema item does not exists in the target schema, an instance for\n // this schema item is created. It's properties get set by the merger then.\n if(change.schemaItemMissing?.changeType === ChangeType.Missing) {\n // Check for name to make sure there is no collision for items with the same name\n // but different type.\n if(await context.targetSchema.lookupItem(targetItemKey) !== undefined) {\n throw new Error(`Schema ${context.targetSchema.name} already contains a Schema Item ${change.ecTypeName}.`);\n }\n\n // TODO: Think about renaming the Schema Item. This could be controlled though a flag.\n targetItemKey = await SchemaItemFactory.create(context, sourceItem);\n }\n\n await merger.mergeItemPropertyValues(targetItemKey, change.propertyValueChanges);\n await merger.merge(targetItemKey, sourceItem, change);\n }\n }\n /**\n * Merges the property values.\n * @param targetItem The current schema item\n * @param changes The property changes.\n */\n private async mergeItemPropertyValues(targetItemKey: SchemaItemKey, changes: PropertyValueChange[]) {\n // No need to process anything if no properties differ.\n if(changes.length === 0) {\n return;\n }\n\n const targetItem = (await this.context.targetSchema.lookupItem<SchemaItem>(targetItemKey));\n const jsonProps = (targetItem?.toJSON() ?? {}) as MutableSchemaItemProps<TItem>;\n const propertyResolver = await this.createPropertyValueResolver();\n\n for(const change of changes) {\n const [propertyName, propertyNewValue, propertyOldValue] = change.diagnostic.messageArgs! as [keyof typeof jsonProps, any, any];\n const resolver = propertyResolver[propertyName];\n jsonProps[propertyName] = resolver !== undefined\n ? resolver(propertyNewValue, targetItemKey, propertyOldValue)\n : propertyNewValue;\n }\n\n await this.context.editor.schemaItems.applyProps(targetItemKey, jsonProps);\n }\n}\n"]}
|