@itwin/ecschema-editing 4.9.0-dev.11 → 4.9.0-dev.13

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.
@@ -40,6 +40,7 @@ export declare enum ConflictCode {
40
40
  SealedBaseClass = "C-102",
41
41
  ConflictingEnumerationType = "C-700",
42
42
  ConflictingEnumeratorValue = "C-701",
43
+ ConflictingPersistenceUnit = "C-1010",
43
44
  MixinAppliedMustDeriveFromConstraint = "C-1100",
44
45
  ConflictingPropertyName = "C-1300",
45
46
  AbstractConstraintMustNarrowBaseConstraints = "C-1500",
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaConflicts.d.ts","sourceRoot":"","sources":["../../../src/Differencing/SchemaConflicts.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,oBAAY,YAAY;IAEtB,mBAAmB,UAAU;IAC7B,yBAAyB,UAAU;IAEnC,oBAAoB,UAAU;IAC9B,iBAAiB,UAAU;IAC3B,eAAe,UAAU;IAEzB,0BAA0B,UAAU;IACpC,0BAA0B,UAAU;IAEpC,oCAAoC,WAAW;IAE/C,uBAAuB,WAAW;IAElC,2CAA2C,WAAW;IACtD,2CAA2C,WAAW;IACtD,6CAA6C,WAAW;CACzD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B,qCAAqC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,iCAAiC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B"}
1
+ {"version":3,"file":"SchemaConflicts.d.ts","sourceRoot":"","sources":["../../../src/Differencing/SchemaConflicts.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,oBAAY,YAAY;IAEtB,mBAAmB,UAAU;IAC7B,yBAAyB,UAAU;IAEnC,oBAAoB,UAAU;IAC9B,iBAAiB,UAAU;IAC3B,eAAe,UAAU;IAEzB,0BAA0B,UAAU;IACpC,0BAA0B,UAAU;IAEpC,0BAA0B,WAAW;IACrC,oCAAoC,WAAW;IAE/C,uBAAuB,WAAW;IAElC,2CAA2C,WAAW;IACtD,2CAA2C,WAAW;IACtD,6CAA6C,WAAW;CACzD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B,qCAAqC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,iCAAiC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B"}
@@ -47,6 +47,7 @@ var ConflictCode;
47
47
  ConflictCode["SealedBaseClass"] = "C-102";
48
48
  ConflictCode["ConflictingEnumerationType"] = "C-700";
49
49
  ConflictCode["ConflictingEnumeratorValue"] = "C-701";
50
+ ConflictCode["ConflictingPersistenceUnit"] = "C-1010";
50
51
  ConflictCode["MixinAppliedMustDeriveFromConstraint"] = "C-1100";
51
52
  ConflictCode["ConflictingPropertyName"] = "C-1300";
52
53
  ConflictCode["AbstractConstraintMustNarrowBaseConstraints"] = "C-1500";
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaConflicts.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaConflicts.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,IAAY,YAmBX;AAnBD,WAAY,YAAY;IAEtB,6CAA6B,CAAA;IAC7B,mDAAmC,CAAA;IAEnC,8CAA8B,CAAA;IAC9B,2CAA2B,CAAA;IAC3B,yCAAyB,CAAA;IAEzB,oDAAoC,CAAA;IACpC,oDAAoC,CAAA;IAEpC,+DAA+C,CAAA;IAE/C,kDAAkC,CAAA;IAElC,sEAAsD,CAAA;IACtD,sEAAsD,CAAA;IACtD,wEAAwD,CAAA;AAC1D,CAAC,EAnBW,YAAY,4BAAZ,YAAY,QAmBvB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Differencing\r\n */\r\n\r\nimport type { SchemaType } from \"./SchemaDifference\";\r\n\r\n/**\r\n * The unique conflicts codes for Schema differencing.\r\n *\r\n * To provide meaning to code values, with anticipation\r\n * of future rules for all current EC Types, the following\r\n * value ranges should be used:\r\n *\r\n * - Schema: 000-099\r\n * - Class: 100-199\r\n * - Constant: 200-299\r\n * - CustomAttribute 300-399\r\n * - CustomAttributeClass: 400-499\r\n * - CustomAttributeContainer: 500-599\r\n * - EntityClass: 600-699\r\n * - Enumeration: 700-799\r\n * - Format: 800-899\r\n * - InvertedUnit: 900-999\r\n * - KindOfQuantity: 1000-1099\r\n * - Mixin: 1100-1199\r\n * - Phenomenon: 1200-1299\r\n * - Property: 1300-1399\r\n * - PropertyCategory: 1400-1499\r\n * - RelationshipClass: 1500-1599\r\n * - RelationshipConstraint: 1600-1699\r\n * - StructClass: 1700-1799\r\n * - Unit: 1800-1899\r\n * - UnitSystem: 1900-1999\r\n *\r\n * @alpha\r\n */\r\nexport enum ConflictCode {\r\n\r\n ConflictingItemName = \"C-001\",\r\n ConflictingReferenceAlias = \"C-002\",\r\n\r\n ConflictingBaseClass = \"C-100\",\r\n RemovingBaseClass = \"C-101\",\r\n SealedBaseClass = \"C-102\",\r\n\r\n ConflictingEnumerationType = \"C-700\",\r\n ConflictingEnumeratorValue = \"C-701\",\r\n\r\n MixinAppliedMustDeriveFromConstraint = \"C-1100\",\r\n\r\n ConflictingPropertyName = \"C-1300\",\r\n\r\n AbstractConstraintMustNarrowBaseConstraints = \"C-1500\",\r\n DerivedConstraintsMustNarrowBaseConstraints = \"C-1501\",\r\n ConstraintClassesDeriveFromAbstractConstraint = \"C-1502\",\r\n}\r\n\r\n/**\r\n * Defines the interface for a conflict during Schema Differencing. Conflicts were discovered\r\n * while comparing the changed elements. Conflicts in the whole schema context are not found\r\n * on that level.\r\n *\r\n * @alpha\r\n */\r\nexport interface SchemaDifferenceConflict {\r\n /**\r\n * The name of the schema type which is \"Schema\" for a conflict on the schema, on schema items\r\n * or objects that are related to schema items (properties, relationship constraints) it is the\r\n * name of the related schema item.\r\n */\r\n readonly schemaType: SchemaType;\r\n\r\n /** The name of the schema item the conflict appears on. */\r\n readonly itemName?: string;\r\n\r\n /** Optional path what on the item was conflicting. */\r\n readonly path?: string;\r\n\r\n /** The unique conflicting code. */\r\n readonly code: ConflictCode;\r\n\r\n /** A description of the conflict. */\r\n readonly description: string;\r\n\r\n /** The value in the source schema. */\r\n readonly source: unknown;\r\n\r\n /** The value in the target schema. */\r\n readonly target: unknown;\r\n\r\n /** The conflicting difference */\r\n readonly difference?: unknown;\r\n}\r\n"]}
1
+ {"version":3,"file":"SchemaConflicts.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaConflicts.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,IAAY,YAoBX;AApBD,WAAY,YAAY;IAEtB,6CAA6B,CAAA;IAC7B,mDAAmC,CAAA;IAEnC,8CAA8B,CAAA;IAC9B,2CAA2B,CAAA;IAC3B,yCAAyB,CAAA;IAEzB,oDAAoC,CAAA;IACpC,oDAAoC,CAAA;IAEpC,qDAAqC,CAAA;IACrC,+DAA+C,CAAA;IAE/C,kDAAkC,CAAA;IAElC,sEAAsD,CAAA;IACtD,sEAAsD,CAAA;IACtD,wEAAwD,CAAA;AAC1D,CAAC,EApBW,YAAY,4BAAZ,YAAY,QAoBvB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Differencing\r\n */\r\n\r\nimport type { SchemaType } from \"./SchemaDifference\";\r\n\r\n/**\r\n * The unique conflicts codes for Schema differencing.\r\n *\r\n * To provide meaning to code values, with anticipation\r\n * of future rules for all current EC Types, the following\r\n * value ranges should be used:\r\n *\r\n * - Schema: 000-099\r\n * - Class: 100-199\r\n * - Constant: 200-299\r\n * - CustomAttribute 300-399\r\n * - CustomAttributeClass: 400-499\r\n * - CustomAttributeContainer: 500-599\r\n * - EntityClass: 600-699\r\n * - Enumeration: 700-799\r\n * - Format: 800-899\r\n * - InvertedUnit: 900-999\r\n * - KindOfQuantity: 1000-1099\r\n * - Mixin: 1100-1199\r\n * - Phenomenon: 1200-1299\r\n * - Property: 1300-1399\r\n * - PropertyCategory: 1400-1499\r\n * - RelationshipClass: 1500-1599\r\n * - RelationshipConstraint: 1600-1699\r\n * - StructClass: 1700-1799\r\n * - Unit: 1800-1899\r\n * - UnitSystem: 1900-1999\r\n *\r\n * @alpha\r\n */\r\nexport enum ConflictCode {\r\n\r\n ConflictingItemName = \"C-001\",\r\n ConflictingReferenceAlias = \"C-002\",\r\n\r\n ConflictingBaseClass = \"C-100\",\r\n RemovingBaseClass = \"C-101\",\r\n SealedBaseClass = \"C-102\",\r\n\r\n ConflictingEnumerationType = \"C-700\",\r\n ConflictingEnumeratorValue = \"C-701\",\r\n\r\n ConflictingPersistenceUnit = \"C-1010\",\r\n MixinAppliedMustDeriveFromConstraint = \"C-1100\",\r\n\r\n ConflictingPropertyName = \"C-1300\",\r\n\r\n AbstractConstraintMustNarrowBaseConstraints = \"C-1500\",\r\n DerivedConstraintsMustNarrowBaseConstraints = \"C-1501\",\r\n ConstraintClassesDeriveFromAbstractConstraint = \"C-1502\",\r\n}\r\n\r\n/**\r\n * Defines the interface for a conflict during Schema Differencing. Conflicts were discovered\r\n * while comparing the changed elements. Conflicts in the whole schema context are not found\r\n * on that level.\r\n *\r\n * @alpha\r\n */\r\nexport interface SchemaDifferenceConflict {\r\n /**\r\n * The name of the schema type which is \"Schema\" for a conflict on the schema, on schema items\r\n * or objects that are related to schema items (properties, relationship constraints) it is the\r\n * name of the related schema item.\r\n */\r\n readonly schemaType: SchemaType;\r\n\r\n /** The name of the schema item the conflict appears on. */\r\n readonly itemName?: string;\r\n\r\n /** Optional path what on the item was conflicting. */\r\n readonly path?: string;\r\n\r\n /** The unique conflicting code. */\r\n readonly code: ConflictCode;\r\n\r\n /** A description of the conflict. */\r\n readonly description: string;\r\n\r\n /** The value in the source schema. */\r\n readonly source: unknown;\r\n\r\n /** The value in the target schema. */\r\n readonly target: unknown;\r\n\r\n /** The conflicting difference */\r\n readonly difference?: unknown;\r\n}\r\n"]}
@@ -26,6 +26,7 @@ export declare class SchemaDiagnosticVisitor {
26
26
  private visitChangedSchemaProperties;
27
27
  private visitMissingSchemaItem;
28
28
  private visitChangedSchemaItem;
29
+ private visitChangedKindOfQuantity;
29
30
  private visitChangedEnumeration;
30
31
  private visitMissingEnumerator;
31
32
  private lookupEnumeratorEntry;
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDiagnosticVisitor.d.ts","sourceRoot":"","sources":["../../../src/Differencing/SchemaDiagnosticVisitor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAO9D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAGhC,KAAK,yBAAyB,EAM9B,KAAK,gBAAgB,EAErB,KAAK,yBAAyB,EAE/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAgB,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAgB3E;;;;;GAKG;AACH,qBAAa,uBAAuB;IAElC,SAAgB,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,GAAG,yBAAyB,CAAC,CAAC;IACvF,SAAgB,qBAAqB,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtE,SAAgB,yBAAyB,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC9E,SAAgB,0BAA0B,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7E,SAAgB,SAAS,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;;IAU3D,OAAO,CAAC,WAAW;IAInB;;;OAGG;IACI,KAAK,CAAC,UAAU,EAAE,aAAa;IA6DtC,OAAO,CAAC,4BAA4B;IAiCpC,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,uBAAuB;IA0C/B,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,uCAAuC;IAwB/C,OAAO,CAAC,kCAAkC;IAsC1C,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,mCAAmC;CA6C5C"}
1
+ {"version":3,"file":"SchemaDiagnosticVisitor.d.ts","sourceRoot":"","sources":["../../../src/Differencing/SchemaDiagnosticVisitor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAO9D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAGhC,KAAK,yBAAyB,EAM9B,KAAK,gBAAgB,EAErB,KAAK,yBAAyB,EAE/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAgB,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAgB3E;;;;;GAKG;AACH,qBAAa,uBAAuB;IAElC,SAAgB,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,GAAG,yBAAyB,CAAC,CAAC;IACvF,SAAgB,qBAAqB,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtE,SAAgB,yBAAyB,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC9E,SAAgB,0BAA0B,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7E,SAAgB,SAAS,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;;IAU3D,OAAO,CAAC,WAAW;IAInB;;;OAGG;IACI,KAAK,CAAC,UAAU,EAAE,aAAa;IA8DtC,OAAO,CAAC,4BAA4B;IAiCpC,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,uBAAuB;IA0C/B,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,uCAAuC;IAwB/C,OAAO,CAAC,kCAAkC;IAsC1C,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,mCAAmC;CA6C5C"}
@@ -62,7 +62,6 @@ class SchemaDiagnosticVisitor {
62
62
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.CustomAttributeClassDelta:
63
63
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.FormatDelta:
64
64
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.InvertedUnitDelta:
65
- case SchemaCompareDiagnostics_1.SchemaCompareCodes.KoqDelta:
66
65
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.MixinDelta:
67
66
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.PhenomenonDelta:
68
67
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.PropertyCategoryDelta:
@@ -71,6 +70,8 @@ class SchemaDiagnosticVisitor {
71
70
  return this.visitChangedSchemaItem(diagnostic);
72
71
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.EnumerationDelta:
73
72
  return this.visitChangedEnumeration(diagnostic);
73
+ case SchemaCompareDiagnostics_1.SchemaCompareCodes.KoqDelta:
74
+ return this.visitChangedKindOfQuantity(diagnostic);
74
75
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.EnumeratorDelta:
75
76
  return this.visitChangedEnumerator(diagnostic);
76
77
  case SchemaCompareDiagnostics_1.SchemaCompareCodes.EnumeratorMissing:
@@ -169,6 +170,21 @@ class SchemaDiagnosticVisitor {
169
170
  // needs to be handled better in future.
170
171
  modifyEntry.difference[propertyName] = sourceValue;
171
172
  }
173
+ visitChangedKindOfQuantity(diagnostic) {
174
+ const kindOfQuantity = diagnostic.ecDefinition;
175
+ const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs;
176
+ if (propertyName === "persistenceUnit") {
177
+ return this.addConflict({
178
+ code: SchemaConflicts_1.ConflictCode.ConflictingPersistenceUnit,
179
+ schemaType: ecschema_metadata_1.SchemaItemType.KindOfQuantity,
180
+ itemName: kindOfQuantity.name,
181
+ source: sourceValue,
182
+ target: targetValue,
183
+ description: "Kind of Quantity has a different persistence unit.",
184
+ });
185
+ }
186
+ return this.visitChangedSchemaItem(diagnostic);
187
+ }
172
188
  visitChangedEnumeration(diagnostic) {
173
189
  const enumeration = diagnostic.ecDefinition;
174
190
  if (this.schemaItemPathDifferences.find((entry) => entry.changeType === "add" && entry.itemName === enumeration.name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDiagnosticVisitor.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDiagnosticVisitor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Differencing\r\n */\r\n\r\nimport type { AnyDiagnostic } from \"../Validation/Diagnostic\";\r\nimport { SchemaCompareCodes } from \"../Validation/SchemaCompareDiagnostics\";\r\nimport {\r\n AnyEnumerator, AnyPropertyProps, AnySchemaItem, CustomAttribute, ECClass, ECClassModifier,\r\n Enumeration, Mixin, Property, PropertyProps,\r\n RelationshipConstraint, RelationshipConstraintProps, Schema, SchemaItem, SchemaItemType,\r\n} from \"@itwin/ecschema-metadata\";\r\nimport {\r\n type AnySchemaItemDifference,\r\n type AnySchemaItemPathDifference,\r\n ClassItemDifference,\r\n ClassPropertyDifference,\r\n type CustomAttributeDifference,\r\n type DifferenceType,\r\n EntityClassMixinDifference,\r\n EnumeratorDifference,\r\n RelationshipConstraintClassDifference,\r\n RelationshipConstraintDifference,\r\n type SchemaDifference,\r\n SchemaOtherTypes,\r\n type SchemaReferenceDifference,\r\n type SchemaType,\r\n} from \"./SchemaDifference\";\r\nimport { ConflictCode, SchemaDifferenceConflict } from \"./SchemaConflicts\";\r\n\r\n/**\r\n * Recursive synchronous function to figure whether a given class derived from\r\n * a class with the given baseClassName.\r\n */\r\nfunction derivedFrom(ecClass: ECClass | undefined, baseClassName: string): boolean {\r\n if (ecClass === undefined) {\r\n return false;\r\n }\r\n if (ecClass && ecClass.name === baseClassName) {\r\n return true;\r\n }\r\n return derivedFrom(ecClass.getBaseClassSync(), baseClassName);\r\n}\r\n\r\n/**\r\n * The SchemaDiagnosticVisitor is a visitor implementation for diagnostic entries\r\n * from the schema comparer api. Depending on the diagnostic code, the difference\r\n * result is build together.\r\n * @internal\r\n */\r\nexport class SchemaDiagnosticVisitor {\r\n\r\n public readonly schemaDifferences: Array<SchemaDifference | SchemaReferenceDifference>;\r\n public readonly schemaItemDifferences: Array<AnySchemaItemDifference>;\r\n public readonly schemaItemPathDifferences: Array<AnySchemaItemPathDifference>;\r\n public readonly customAttributeDifferences: Array<CustomAttributeDifference>;\r\n public readonly conflicts: Array<SchemaDifferenceConflict>;\r\n\r\n constructor() {\r\n this.schemaDifferences = [];\r\n this.schemaItemDifferences = [];\r\n this.schemaItemPathDifferences = [];\r\n this.customAttributeDifferences = [];\r\n this.conflicts = [];\r\n }\r\n\r\n private addConflict(conflict: SchemaDifferenceConflict) {\r\n this.conflicts.push(conflict);\r\n }\r\n\r\n /**\r\n * Visitor function to process the schema change diagnostic object.\r\n * @internal\r\n */\r\n public visit(diagnostic: AnyDiagnostic) {\r\n switch (diagnostic.code) {\r\n case SchemaCompareCodes.SchemaDelta:\r\n return this.visitChangedSchemaProperties(diagnostic);\r\n\r\n case SchemaCompareCodes.SchemaReferenceMissing:\r\n return this.visitSchemaReference(diagnostic, \"add\");\r\n case SchemaCompareCodes.SchemaReferenceDelta:\r\n return this.visitSchemaReference(diagnostic, \"modify\");\r\n\r\n case SchemaCompareCodes.SchemaItemMissing:\r\n return this.visitMissingSchemaItem(diagnostic);\r\n\r\n case SchemaCompareCodes.SchemaItemDelta:\r\n case SchemaCompareCodes.ClassDelta:\r\n case SchemaCompareCodes.ConstantDelta:\r\n case SchemaCompareCodes.CustomAttributeClassDelta:\r\n case SchemaCompareCodes.FormatDelta:\r\n case SchemaCompareCodes.InvertedUnitDelta:\r\n case SchemaCompareCodes.KoqDelta:\r\n case SchemaCompareCodes.MixinDelta:\r\n case SchemaCompareCodes.PhenomenonDelta:\r\n case SchemaCompareCodes.PropertyCategoryDelta:\r\n case SchemaCompareCodes.RelationshipDelta:\r\n case SchemaCompareCodes.UnitDelta:\r\n return this.visitChangedSchemaItem(diagnostic);\r\n\r\n case SchemaCompareCodes.EnumerationDelta:\r\n return this.visitChangedEnumeration(diagnostic);\r\n\r\n case SchemaCompareCodes.EnumeratorDelta:\r\n return this.visitChangedEnumerator(diagnostic);\r\n case SchemaCompareCodes.EnumeratorMissing:\r\n return this.visitMissingEnumerator(diagnostic);\r\n\r\n case SchemaCompareCodes.BaseClassDelta:\r\n return this.visitMissingBaseClass(diagnostic);\r\n case SchemaCompareCodes.EntityMixinMissing:\r\n return this.visitMissingMixinOnClass(diagnostic);\r\n case SchemaCompareCodes.PropertyDelta:\r\n return this.visitChangedProperty(diagnostic);\r\n case SchemaCompareCodes.PropertyMissing:\r\n return this.visitMissingProperty(diagnostic);\r\n\r\n case SchemaCompareCodes.RelationshipConstraintClassMissing:\r\n return this.visitMissingRelationshipConstraintClass(diagnostic);\r\n case SchemaCompareCodes.RelationshipConstraintDelta:\r\n return this.visitChangedRelationshipConstraint(diagnostic);\r\n\r\n case SchemaCompareCodes.CustomAttributeInstanceClassMissing:\r\n return this.visitMissingCustomAttributeInstance(diagnostic);\r\n\r\n // Currently not handled...\r\n case SchemaCompareCodes.FormatUnitMissing:\r\n case SchemaCompareCodes.PresentationUnitMissing:\r\n case SchemaCompareCodes.UnitLabelOverrideDelta:\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n private visitChangedSchemaProperties(diagnostic: AnyDiagnostic) {\r\n let modifyEntry = this.schemaDifferences.find((entry): entry is SchemaDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Schema;\r\n });\r\n\r\n let hasChanges = false;\r\n let addEntry = false;\r\n if (modifyEntry === undefined) {\r\n addEntry = true;\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: SchemaOtherTypes.Schema,\r\n difference: {},\r\n };\r\n }\r\n\r\n // Only label and description are taken from the source schema. If the schema name or alias\r\n // differs, those are ignored for now.\r\n const [propertyName, propertyValue] = diagnostic.messageArgs as [string, any];\r\n if (propertyName === \"label\") {\r\n modifyEntry.difference.label = propertyValue;\r\n hasChanges = true;\r\n }\r\n if (propertyName === \"description\") {\r\n modifyEntry.difference.description = propertyValue;\r\n hasChanges = true;\r\n }\r\n\r\n if (addEntry && hasChanges) {\r\n this.schemaDifferences.push(modifyEntry);\r\n }\r\n }\r\n\r\n private visitMissingSchemaItem(diagnostic: AnyDiagnostic) {\r\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\r\n\r\n this.schemaItemDifferences.push({\r\n changeType: \"add\",\r\n schemaType: schemaItem.schemaItemType,\r\n itemName: schemaItem.name,\r\n difference: schemaItem.toJSON(),\r\n });\r\n }\r\n\r\n private visitChangedSchemaItem(diagnostic: AnyDiagnostic) {\r\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\r\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, unknown, unknown];\r\n if (propertyName === \"schemaItemType\") {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingItemName,\r\n schemaType: schemaItem.schemaItemType,\r\n itemName: schemaItem.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Target schema already contains a schema item with the name but different type.\",\r\n difference: schemaItem.toJSON(),\r\n });\r\n }\r\n\r\n if (sourceValue === undefined) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is AnySchemaItemDifference => {\r\n return entry.changeType === \"modify\" && entry.itemName === schemaItem.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: schemaItem.schemaItemType,\r\n itemName: schemaItem.name,\r\n difference: {},\r\n } as AnySchemaItemDifference;\r\n this.schemaItemDifferences.push(modifyEntry);\r\n }\r\n\r\n // TODO: Since propertyName is type of string, the compiler complains about accepting\r\n // an unspecific string as property indexer. Casted to any as short term fix but that\r\n // needs to be handled better in future.\r\n (modifyEntry.difference as any)[propertyName] = sourceValue;\r\n }\r\n\r\n private visitChangedEnumeration(diagnostic: AnyDiagnostic) {\r\n const enumeration = diagnostic.ecDefinition as Enumeration;\r\n if (this.schemaItemPathDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === enumeration.name)) {\r\n return;\r\n }\r\n\r\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, string, string];\r\n if (propertyName === \"type\") {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingEnumerationType,\r\n schemaType: SchemaItemType.Enumeration,\r\n itemName: enumeration.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Enumeration has a different primitive type.\",\r\n });\r\n }\r\n\r\n return this.visitChangedSchemaItem(diagnostic);\r\n }\r\n\r\n private visitMissingEnumerator(diagnostic: AnyDiagnostic) {\r\n const enumeration = diagnostic.ecDefinition as Enumeration;\r\n const [enumerator] = diagnostic.messageArgs as [AnyEnumerator];\r\n this.schemaItemPathDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.Enumerator,\r\n itemName: enumeration.name,\r\n path: \"$enumerators\",\r\n difference: enumerator,\r\n });\r\n }\r\n\r\n private lookupEnumeratorEntry(changeType: DifferenceType, item: string, enumeratorName: string) {\r\n return this.schemaItemPathDifferences.find((change) => {\r\n return change.changeType === changeType\r\n && change.schemaType === SchemaOtherTypes.Enumerator\r\n && change.itemName === item\r\n && change.path === \"$enumerators\"\r\n && change.difference.name === enumeratorName;\r\n });\r\n }\r\n\r\n private lookupConflictEntry(code: ConflictCode, schemaType: SchemaType, itemName: string, path: string) {\r\n return this.conflicts.find((change) => {\r\n return change.code === code\r\n && change.schemaType === schemaType\r\n && change.itemName === itemName\r\n && change.path === path;\r\n });\r\n }\r\n\r\n private visitChangedEnumerator(diagnostic: AnyDiagnostic) {\r\n const enumeration = diagnostic.ecDefinition as Enumeration;\r\n const [enumerator, propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [AnyEnumerator, keyof AnyEnumerator, any, any];\r\n if (this.lookupEnumeratorEntry(\"add\", enumeration.name, enumerator.name)) {\r\n return;\r\n }\r\n\r\n if (!this.validateEnumerator(enumeration, enumerator, propertyName, sourceValue, targetValue)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is EnumeratorDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Enumerator && entry.itemName === enumeration.name && entry.path === enumerator.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: SchemaOtherTypes.Enumerator,\r\n itemName: enumeration.name,\r\n path: enumerator.name,\r\n difference: {},\r\n };\r\n this.schemaItemPathDifferences.push(modifyEntry);\r\n }\r\n\r\n if (sourceValue !== undefined) {\r\n modifyEntry.difference[propertyName] = sourceValue;\r\n }\r\n }\r\n\r\n private validateEnumerator(enumeration: Enumeration, enumerator: AnyEnumerator, propertyName: string, sourceValue: unknown, targetValue: unknown) {\r\n if (propertyName === \"value\") {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingEnumeratorValue,\r\n schemaType: SchemaItemType.Enumeration,\r\n itemName: enumeration.name,\r\n path: enumerator.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Enumerator values must not differ.\",\r\n });\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private visitMissingProperty(diagnostic: AnyDiagnostic) {\r\n const property = diagnostic.ecDefinition as Property;\r\n this.schemaItemPathDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.Property,\r\n itemName: property.class.name,\r\n path: property.name,\r\n difference: property.toJSON() as AnyPropertyProps,\r\n });\r\n }\r\n\r\n private visitChangedProperty(diagnostic: AnyDiagnostic) {\r\n const property = diagnostic.ecDefinition as Property;\r\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [keyof PropertyProps, any, any];\r\n if (!this.validatePropertyChange(property, propertyName, sourceValue, targetValue)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is ClassPropertyDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Property && entry.itemName === property.class.name && entry.path === property.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: SchemaOtherTypes.Property,\r\n itemName: property.class.name,\r\n path: property.name,\r\n difference: {},\r\n };\r\n this.schemaItemPathDifferences.push(modifyEntry);\r\n }\r\n\r\n if (propertyName !== \"name\" && sourceValue !== undefined) {\r\n modifyEntry.difference[propertyName] = sourceValue;\r\n }\r\n }\r\n\r\n private validatePropertyChange(ecProperty: Property, propertyName: string, sourceValue: unknown, targetValue: unknown): boolean {\r\n if (propertyName === \"type\"\r\n || propertyName === \"primitiveType\"\r\n || (propertyName === \"enumeration\" && (sourceValue === undefined || targetValue === undefined))) {\r\n if (!this.lookupConflictEntry(ConflictCode.ConflictingPropertyName, ecProperty.class.schemaItemType,\r\n ecProperty.class.name, ecProperty.name)) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingPropertyName,\r\n schemaType: ecProperty.class.schemaItemType,\r\n itemName: ecProperty.class.name,\r\n path: ecProperty.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Target class already contains a property with a different type.\",\r\n difference: ecProperty.toJSON(),\r\n });\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private visitMissingBaseClass(diagnostic: AnyDiagnostic) {\r\n const ecClass = diagnostic.ecDefinition as ECClass;\r\n const [sourceBaseClass, targetBaseClass] = diagnostic.messageArgs as [ECClass, ECClass];\r\n if (!this.validateBaseClassChange(ecClass, sourceBaseClass, targetBaseClass)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is ClassItemDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === ecClass.schemaItemType && entry.itemName === ecClass.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: ecClass.schemaItemType,\r\n itemName: ecClass.name,\r\n difference: {},\r\n } as ClassItemDifference;\r\n this.schemaItemDifferences.push(modifyEntry);\r\n }\r\n\r\n modifyEntry.difference.baseClass = sourceBaseClass.fullName;\r\n }\r\n\r\n private validateBaseClassChange(targetClass: ECClass, sourceBaseClass?: ECClass, targetBaseClass?: ECClass): boolean {\r\n if (sourceBaseClass === undefined) {\r\n this.addConflict({\r\n code: ConflictCode.RemovingBaseClass,\r\n schemaType: targetClass.schemaItemType,\r\n itemName: targetClass.name,\r\n path: \"$baseClass\",\r\n source: undefined,\r\n target: targetBaseClass?.fullName,\r\n description: \"BaseClass cannot be set unset if there has been a baseClass before.\",\r\n });\r\n return false;\r\n }\r\n\r\n if (sourceBaseClass.modifier === ECClassModifier.Sealed) {\r\n this.addConflict({\r\n code: ConflictCode.SealedBaseClass,\r\n schemaType: targetClass.schemaItemType,\r\n itemName: targetClass.name,\r\n path: \"$baseClass\",\r\n source: sourceBaseClass.fullName,\r\n target: targetBaseClass?.fullName,\r\n description: \"BaseClass is sealed.\",\r\n });\r\n return false;\r\n }\r\n\r\n if (targetBaseClass && !derivedFrom(sourceBaseClass, targetBaseClass.name)) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingBaseClass,\r\n schemaType: targetClass.schemaItemType,\r\n itemName: targetClass.name,\r\n path: \"$baseClass\",\r\n source: sourceBaseClass.fullName,\r\n target: targetBaseClass.fullName,\r\n description: \"BaseClass is not valid, source class must derive from target.\",\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private visitMissingMixinOnClass(diagnostic: AnyDiagnostic) {\r\n const ecClass = diagnostic.ecDefinition as ECClass;\r\n const [mixin] = diagnostic.messageArgs as [Mixin];\r\n if (!this.validateMixin(ecClass, mixin)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is EntityClassMixinDifference => {\r\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.EntityClassMixin && entry.itemName === ecClass.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.EntityClassMixin,\r\n itemName: ecClass.name,\r\n difference: [],\r\n };\r\n this.schemaItemDifferences.push(modifyEntry);\r\n }\r\n modifyEntry.difference.push(mixin.fullName);\r\n }\r\n\r\n private validateMixin(targetClass: ECClass, mixin: Mixin): boolean {\r\n if (mixin.appliesTo && !derivedFrom(targetClass, mixin.appliesTo.name)) {\r\n this.addConflict({\r\n code: ConflictCode.MixinAppliedMustDeriveFromConstraint,\r\n schemaType: targetClass.schemaItemType,\r\n itemName: targetClass.name,\r\n path: \"$mixins\",\r\n source: mixin.fullName,\r\n target: undefined,\r\n description: \"Mixin cannot applied to this class.\",\r\n });\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private visitMissingRelationshipConstraintClass(diagnostic: AnyDiagnostic) {\r\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\r\n const className = constraint.relationshipClass.name;\r\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\r\n\r\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintClassDifference => {\r\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraintClass, entry.itemName === className && entry.path === constraintPath;\r\n });\r\n\r\n if (!modifyEntry) {\r\n modifyEntry = {\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.RelationshipConstraintClass,\r\n itemName: className,\r\n path: constraintPath,\r\n difference: [],\r\n };\r\n this.schemaItemPathDifferences.push(modifyEntry);\r\n }\r\n\r\n const [constraintClass] = diagnostic.messageArgs as [ECClass];\r\n modifyEntry.difference.push(constraintClass.fullName);\r\n }\r\n\r\n private visitChangedRelationshipConstraint(diagnostic: AnyDiagnostic) {\r\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\r\n const className = constraint.relationshipClass.name;\r\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\r\n if (this.schemaItemDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === className)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraint && entry.itemName === className && entry.path === constraintPath;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: SchemaOtherTypes.RelationshipConstraint,\r\n itemName: className,\r\n path: constraintPath,\r\n difference: {},\r\n };\r\n this.schemaItemPathDifferences.push(modifyEntry);\r\n }\r\n\r\n const [propertyName, propertyValue] = diagnostic.messageArgs as [keyof RelationshipConstraintProps, any];\r\n if (propertyName === \"abstractConstraint\" && propertyValue !== undefined) {\r\n modifyEntry.difference.abstractConstraint = propertyValue;\r\n }\r\n if (propertyName === \"multiplicity\" && propertyValue !== undefined) {\r\n modifyEntry.difference.multiplicity = propertyValue;\r\n }\r\n if (propertyName === \"polymorphic\" && propertyValue !== undefined) {\r\n modifyEntry.difference.polymorphic = propertyValue;\r\n }\r\n if (propertyName === \"roleLabel\" && propertyValue !== undefined) {\r\n modifyEntry.difference.roleLabel = propertyValue;\r\n }\r\n }\r\n\r\n private visitSchemaReference(diagnostic: AnyDiagnostic, changeType: DifferenceType) {\r\n const [referencedSchema] = diagnostic.messageArgs as [Schema];\r\n this.schemaDifferences.push({\r\n changeType,\r\n schemaType: SchemaOtherTypes.SchemaReference,\r\n difference: {\r\n name: referencedSchema.name,\r\n version: referencedSchema.schemaKey.version.toString(),\r\n },\r\n });\r\n }\r\n\r\n private visitMissingCustomAttributeInstance(diagnostic: AnyDiagnostic) {\r\n const [customAttribute] = diagnostic.messageArgs as [CustomAttribute];\r\n const ecType = diagnostic.ecDefinition;\r\n if (Schema.isSchema(ecType)) {\r\n return this.customAttributeDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\r\n appliedTo: \"Schema\",\r\n difference: customAttribute,\r\n });\r\n }\r\n\r\n if (SchemaItem.isSchemaItem(ecType)) {\r\n return this.customAttributeDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\r\n appliedTo: \"SchemaItem\",\r\n itemName: ecType.name,\r\n difference: customAttribute,\r\n });\r\n }\r\n\r\n if (Property.isProperty(ecType)) {\r\n return this.customAttributeDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\r\n appliedTo: \"Property\",\r\n itemName: ecType.class.name,\r\n path: ecType.name,\r\n difference: customAttribute,\r\n });\r\n }\r\n\r\n if (RelationshipConstraint.isRelationshipConstraint(ecType)) {\r\n return this.customAttributeDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\r\n appliedTo: \"RelationshipConstraint\",\r\n itemName: ecType.relationshipClass.name,\r\n path: ecType.isSource ? \"$source\" : \"$target\",\r\n difference: customAttribute,\r\n });\r\n }\r\n return;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SchemaDiagnosticVisitor.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDiagnosticVisitor.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,qFAA4E;AAC5E,gEAIkC;AAClC,yDAe4B;AAC5B,uDAA2E;AAE3E;;;GAGG;AACH,SAAS,WAAW,CAAC,OAA4B,EAAE,aAAqB;IACtE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,aAAa,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAa,uBAAuB;IAQlC;QACE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEO,WAAW,CAAC,QAAkC;QACpD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,UAAyB;QACpC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,6CAAkB,CAAC,WAAW;gBACjC,OAAO,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;YAEvD,KAAK,6CAAkB,CAAC,sBAAsB;gBAC5C,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACtD,KAAK,6CAAkB,CAAC,oBAAoB;gBAC1C,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEzD,KAAK,6CAAkB,CAAC,iBAAiB;gBACvC,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAEjD,KAAK,6CAAkB,CAAC,eAAe,CAAC;YACxC,KAAK,6CAAkB,CAAC,UAAU,CAAC;YACnC,KAAK,6CAAkB,CAAC,aAAa,CAAC;YACtC,KAAK,6CAAkB,CAAC,yBAAyB,CAAC;YAClD,KAAK,6CAAkB,CAAC,WAAW,CAAC;YACpC,KAAK,6CAAkB,CAAC,iBAAiB,CAAC;YAC1C,KAAK,6CAAkB,CAAC,UAAU,CAAC;YACnC,KAAK,6CAAkB,CAAC,eAAe,CAAC;YACxC,KAAK,6CAAkB,CAAC,qBAAqB,CAAC;YAC9C,KAAK,6CAAkB,CAAC,iBAAiB,CAAC;YAC1C,KAAK,6CAAkB,CAAC,SAAS;gBAC/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAEjD,KAAK,6CAAkB,CAAC,gBAAgB;gBACtC,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;YAClD,KAAK,6CAAkB,CAAC,QAAQ;gBAC9B,OAAO,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;YAErD,KAAK,6CAAkB,CAAC,eAAe;gBACrC,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YACjD,KAAK,6CAAkB,CAAC,iBAAiB;gBACvC,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAEjD,KAAK,6CAAkB,CAAC,cAAc;gBACpC,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;YAChD,KAAK,6CAAkB,CAAC,kBAAkB;gBACxC,OAAO,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;YACnD,KAAK,6CAAkB,CAAC,aAAa;gBACnC,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAC/C,KAAK,6CAAkB,CAAC,eAAe;gBACrC,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAE/C,KAAK,6CAAkB,CAAC,kCAAkC;gBACxD,OAAO,IAAI,CAAC,uCAAuC,CAAC,UAAU,CAAC,CAAC;YAClE,KAAK,6CAAkB,CAAC,2BAA2B;gBACjD,OAAO,IAAI,CAAC,kCAAkC,CAAC,UAAU,CAAC,CAAC;YAE7D,KAAK,6CAAkB,CAAC,mCAAmC;gBACzD,OAAO,IAAI,CAAC,mCAAmC,CAAC,UAAU,CAAC,CAAC;YAE9D,2BAA2B;YAC3B,KAAK,6CAAkB,CAAC,iBAAiB,CAAC;YAC1C,KAAK,6CAAkB,CAAC,uBAAuB,CAAC;YAChD,KAAK,6CAAkB,CAAC,sBAAsB;gBAC5C,MAAM;QACV,CAAC;QACD,OAAO;IACT,CAAC;IAEO,4BAA4B,CAAC,UAAyB;QAC5D,IAAI,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,EAA6B,EAAE;YACjF,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,mCAAgB,CAAC,MAAM,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,QAAQ,GAAG,IAAI,CAAC;YAChB,WAAW,GAAG;gBACZ,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,mCAAgB,CAAC,MAAM;gBACnC,UAAU,EAAE,EAAE;aACf,CAAC;QACJ,CAAC;QAED,2FAA2F;QAC3F,sCAAsC;QACtC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,UAAU,CAAC,WAA4B,CAAC;QAC9E,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;YAC7B,WAAW,CAAC,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC;YAC7C,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;YACnC,WAAW,CAAC,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC;YACnD,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,UAAyB;QACtD,MAAM,UAAU,GAAG,UAAU,CAAC,YAA6B,CAAC;QAE5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,UAAU,CAAC,cAAc;YACrC,QAAQ,EAAE,UAAU,CAAC,IAAI;YACzB,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,UAAyB;QACtD,MAAM,UAAU,GAAG,UAAU,CAAC,YAA6B,CAAC;QAC5D,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,WAAyC,CAAC;QACtG,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,8BAAY,CAAC,mBAAmB;gBACtC,UAAU,EAAE,UAAU,CAAC,cAAc;gBACrC,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,gFAAgF;gBAC7F,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE;aAChC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAoC,EAAE;YAC5F,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG;gBACZ,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,UAAU,CAAC,cAAc;gBACrC,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,UAAU,EAAE,EAAE;aACY,CAAC;YAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;QAED,qFAAqF;QACrF,qFAAqF;QACrF,wCAAwC;QACvC,WAAW,CAAC,UAAkB,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;IAC9D,CAAC;IAEO,0BAA0B,CAAC,UAAyB;QAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,YAA8B,CAAC;QACjE,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,WAAuC,CAAC;QAEpG,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,8BAAY,CAAC,0BAA0B;gBAC7C,UAAU,EAAE,kCAAc,CAAC,cAAc;gBACzC,QAAQ,EAAE,cAAc,CAAC,IAAI;gBAC7B,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,oDAAoD;aAClE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAEO,uBAAuB,CAAC,UAAyB;QACvD,MAAM,WAAW,GAAG,UAAU,CAAC,YAA2B,CAAC;QAC3D,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACtH,OAAO;QACT,CAAC;QAED,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,WAAuC,CAAC;QACpG,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,8BAAY,CAAC,0BAA0B;gBAC7C,UAAU,EAAE,kCAAc,CAAC,WAAW;gBACtC,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,6CAA6C;aAC3D,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAEO,sBAAsB,CAAC,UAAyB;QACtD,MAAM,WAAW,GAAG,UAAU,CAAC,YAA2B,CAAC;QAC3D,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,WAA8B,CAAC;QAC/D,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YAClC,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,mCAAgB,CAAC,UAAU;YACvC,QAAQ,EAAE,WAAW,CAAC,IAAI;YAC1B,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;IACL,CAAC;IAEO,qBAAqB,CAAC,UAA0B,EAAE,IAAY,EAAE,cAAsB;QAC5F,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACpD,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;mBAClC,MAAM,CAAC,UAAU,KAAK,mCAAgB,CAAC,UAAU;mBACjD,MAAM,CAAC,QAAQ,KAAK,IAAI;mBACxB,MAAM,CAAC,IAAI,KAAK,cAAc;mBAC9B,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,IAAkB,EAAE,UAAsB,EAAE,QAAgB,EAAE,IAAY;QACpG,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI;mBACtB,MAAM,CAAC,UAAU,KAAK,UAAU;mBAChC,MAAM,CAAC,QAAQ,KAAK,QAAQ;mBAC5B,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,UAAyB;QACtD,MAAM,WAAW,GAAG,UAAU,CAAC,YAA2B,CAAC;QAC3D,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,WAA6D,CAAC;QACtI,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9F,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAiC,EAAE;YAC7F,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,mCAAgB,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC;QACpK,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG;gBACZ,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,mCAAgB,CAAC,UAAU;gBACvC,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,UAAU,EAAE,EAAE;aACf,CAAC;YACF,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,WAAwB,EAAE,UAAyB,EAAE,YAAoB,EAAE,WAAoB,EAAE,WAAoB;QAC9I,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC;gBACf,IAAI,EAAE,8BAAY,CAAC,0BAA0B;gBAC7C,UAAU,EAAE,kCAAc,CAAC,WAAW;gBACtC,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,oCAAoC;aAClD,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAAC,UAAyB;QACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAwB,CAAC;QACrD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YAClC,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,mCAAgB,CAAC,QAAQ;YACrC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;YAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAsB;SAClD,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,UAAyB;QACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAwB,CAAC;QACrD,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,WAA8C,CAAC;QAC3G,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;YACnF,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAoC,EAAE;YAChG,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,mCAAgB,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;QACnK,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG;gBACZ,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,mCAAgB,CAAC,QAAQ;gBACrC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;gBAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,UAAU,EAAE,EAAE;aACf,CAAC;YACF,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,YAAY,KAAK,MAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YACzD,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,UAAoB,EAAE,YAAoB,EAAE,WAAoB,EAAE,WAAoB;QACnH,IAAI,YAAY,KAAK,MAAM;eACtB,YAAY,KAAK,eAAe;eAChC,CAAC,YAAY,KAAK,aAAa,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC;YAClG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,8BAAY,CAAC,uBAAuB,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc,EACjG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC;oBACf,IAAI,EAAE,8BAAY,CAAC,uBAAuB;oBAC1C,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc;oBAC3C,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;oBAC/B,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,WAAW;oBACnB,WAAW,EAAE,iEAAiE;oBAC9E,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE;iBAChC,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,qBAAqB,CAAC,UAAyB;QACrD,MAAM,OAAO,GAAG,UAAU,CAAC,YAAuB,CAAC;QACnD,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,WAAiC,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,EAAE,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAgC,EAAE;YACxF,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC;QACzH,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG;gBACZ,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,OAAO,CAAC,cAAc;gBAClC,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,UAAU,EAAE,EAAE;aACQ,CAAC;YACzB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;QAED,WAAW,CAAC,UAAU,CAAC,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC;IAC9D,CAAC;IAEO,uBAAuB,CAAC,WAAoB,EAAE,eAAyB,EAAE,eAAyB;QACxG,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC;gBACf,IAAI,EAAE,8BAAY,CAAC,iBAAiB;gBACpC,UAAU,EAAE,WAAW,CAAC,cAAc;gBACtC,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,eAAe,EAAE,QAAQ;gBACjC,WAAW,EAAE,qEAAqE;aACnF,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,KAAK,mCAAe,CAAC,MAAM,EAAE,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC;gBACf,IAAI,EAAE,8BAAY,CAAC,eAAe;gBAClC,UAAU,EAAE,WAAW,CAAC,cAAc;gBACtC,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,eAAe,CAAC,QAAQ;gBAChC,MAAM,EAAE,eAAe,EAAE,QAAQ;gBACjC,WAAW,EAAE,sBAAsB;aACpC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,eAAe,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,WAAW,CAAC;gBACf,IAAI,EAAE,8BAAY,CAAC,oBAAoB;gBACvC,UAAU,EAAE,WAAW,CAAC,cAAc;gBACtC,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,eAAe,CAAC,QAAQ;gBAChC,MAAM,EAAE,eAAe,CAAC,QAAQ;gBAChC,WAAW,EAAE,+DAA+D;aAC7E,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,wBAAwB,CAAC,UAAyB;QACxD,MAAM,OAAO,GAAG,UAAU,CAAC,YAAuB,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,WAAsB,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAuC,EAAE;YAC/F,OAAO,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,mCAAgB,CAAC,gBAAgB,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC;QACjI,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG;gBACZ,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,mCAAgB,CAAC,gBAAgB;gBAC7C,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,UAAU,EAAE,EAAE;aACf,CAAC;YACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;QACD,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEO,aAAa,CAAC,WAAoB,EAAE,KAAY;QACtD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,WAAW,CAAC;gBACf,IAAI,EAAE,8BAAY,CAAC,oCAAoC;gBACvD,UAAU,EAAE,WAAW,CAAC,cAAc;gBACtC,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,KAAK,CAAC,QAAQ;gBACtB,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,qCAAqC;aACnD,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,uCAAuC,CAAC,UAAyB;QACvE,MAAM,UAAU,GAAG,UAAU,CAAC,YAAsC,CAAC;QACrE,MAAM,SAAS,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACpD,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnE,IAAI,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAkD,EAAE;YAC9G,OAAO,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,mCAAgB,CAAC,2BAA2B,EAAE,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC;QACxK,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG;gBACZ,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,mCAAgB,CAAC,2BAA2B;gBACxD,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,EAAE;aACf,CAAC;YACF,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,WAAwB,CAAC;QAC9D,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEO,kCAAkC,CAAC,UAAyB;QAClE,MAAM,UAAU,GAAG,UAAU,CAAC,YAAsC,CAAC;QACrE,MAAM,SAAS,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACpD,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;YAC3G,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,KAAK,EAA6C,EAAE;YACzG,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,mCAAgB,CAAC,sBAAsB,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC;QACxK,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG;gBACZ,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,mCAAgB,CAAC,sBAAsB;gBACnD,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,EAAE;aACf,CAAC;YACF,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,UAAU,CAAC,WAAuD,CAAC;QACzG,IAAI,YAAY,KAAK,oBAAoB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YACzE,WAAW,CAAC,UAAU,CAAC,kBAAkB,GAAG,aAAa,CAAC;QAC5D,CAAC;QACD,IAAI,YAAY,KAAK,cAAc,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YACnE,WAAW,CAAC,UAAU,CAAC,YAAY,GAAG,aAAa,CAAC;QACtD,CAAC;QACD,IAAI,YAAY,KAAK,aAAa,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAClE,WAAW,CAAC,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC;QACrD,CAAC;QACD,IAAI,YAAY,KAAK,WAAW,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChE,WAAW,CAAC,UAAU,CAAC,SAAS,GAAG,aAAa,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,UAAyB,EAAE,UAA0B;QAChF,MAAM,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC,WAAuB,CAAC;QAC9D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC1B,UAAU;YACV,UAAU,EAAE,mCAAgB,CAAC,eAAe;YAC5C,UAAU,EAAE;gBACV,IAAI,EAAE,gBAAgB,CAAC,IAAI;gBAC3B,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;aACvD;SACF,CAAC,CAAC;IACL,CAAC;IAEO,mCAAmC,CAAC,UAAyB;QACnE,MAAM,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,WAAgC,CAAC;QACtE,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC;QACvC,IAAI,0BAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;gBAC1C,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,mCAAgB,CAAC,uBAAuB;gBACpD,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,8BAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;gBAC1C,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,mCAAgB,CAAC,uBAAuB;gBACpD,SAAS,EAAE,YAAY;gBACvB,QAAQ,EAAE,MAAM,CAAC,IAAI;gBACrB,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,4BAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;gBAC1C,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,mCAAgB,CAAC,uBAAuB;gBACpD,SAAS,EAAE,UAAU;gBACrB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,0CAAsB,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;gBAC1C,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,mCAAgB,CAAC,uBAAuB;gBACpD,SAAS,EAAE,wBAAwB;gBACnC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAAC,IAAI;gBACvC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBAC7C,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;CACF;AA5jBD,0DA4jBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Differencing\r\n */\r\n\r\nimport type { AnyDiagnostic } from \"../Validation/Diagnostic\";\r\nimport { SchemaCompareCodes } from \"../Validation/SchemaCompareDiagnostics\";\r\nimport {\r\n AnyEnumerator, AnyPropertyProps, AnySchemaItem, CustomAttribute, ECClass, ECClassModifier,\r\n Enumeration, KindOfQuantity, Mixin, Property, PropertyProps,\r\n RelationshipConstraint, RelationshipConstraintProps, Schema, SchemaItem, SchemaItemType,\r\n} from \"@itwin/ecschema-metadata\";\r\nimport {\r\n type AnySchemaItemDifference,\r\n type AnySchemaItemPathDifference,\r\n type ClassItemDifference,\r\n type ClassPropertyDifference,\r\n type CustomAttributeDifference,\r\n type DifferenceType,\r\n type EntityClassMixinDifference,\r\n type EnumeratorDifference,\r\n type RelationshipConstraintClassDifference,\r\n type RelationshipConstraintDifference,\r\n type SchemaDifference,\r\n SchemaOtherTypes,\r\n type SchemaReferenceDifference,\r\n type SchemaType,\r\n} from \"./SchemaDifference\";\r\nimport { ConflictCode, SchemaDifferenceConflict } from \"./SchemaConflicts\";\r\n\r\n/**\r\n * Recursive synchronous function to figure whether a given class derived from\r\n * a class with the given baseClassName.\r\n */\r\nfunction derivedFrom(ecClass: ECClass | undefined, baseClassName: string): boolean {\r\n if (ecClass === undefined) {\r\n return false;\r\n }\r\n if (ecClass && ecClass.name === baseClassName) {\r\n return true;\r\n }\r\n return derivedFrom(ecClass.getBaseClassSync(), baseClassName);\r\n}\r\n\r\n/**\r\n * The SchemaDiagnosticVisitor is a visitor implementation for diagnostic entries\r\n * from the schema comparer api. Depending on the diagnostic code, the difference\r\n * result is build together.\r\n * @internal\r\n */\r\nexport class SchemaDiagnosticVisitor {\r\n\r\n public readonly schemaDifferences: Array<SchemaDifference | SchemaReferenceDifference>;\r\n public readonly schemaItemDifferences: Array<AnySchemaItemDifference>;\r\n public readonly schemaItemPathDifferences: Array<AnySchemaItemPathDifference>;\r\n public readonly customAttributeDifferences: Array<CustomAttributeDifference>;\r\n public readonly conflicts: Array<SchemaDifferenceConflict>;\r\n\r\n constructor() {\r\n this.schemaDifferences = [];\r\n this.schemaItemDifferences = [];\r\n this.schemaItemPathDifferences = [];\r\n this.customAttributeDifferences = [];\r\n this.conflicts = [];\r\n }\r\n\r\n private addConflict(conflict: SchemaDifferenceConflict) {\r\n this.conflicts.push(conflict);\r\n }\r\n\r\n /**\r\n * Visitor function to process the schema change diagnostic object.\r\n * @internal\r\n */\r\n public visit(diagnostic: AnyDiagnostic) {\r\n switch (diagnostic.code) {\r\n case SchemaCompareCodes.SchemaDelta:\r\n return this.visitChangedSchemaProperties(diagnostic);\r\n\r\n case SchemaCompareCodes.SchemaReferenceMissing:\r\n return this.visitSchemaReference(diagnostic, \"add\");\r\n case SchemaCompareCodes.SchemaReferenceDelta:\r\n return this.visitSchemaReference(diagnostic, \"modify\");\r\n\r\n case SchemaCompareCodes.SchemaItemMissing:\r\n return this.visitMissingSchemaItem(diagnostic);\r\n\r\n case SchemaCompareCodes.SchemaItemDelta:\r\n case SchemaCompareCodes.ClassDelta:\r\n case SchemaCompareCodes.ConstantDelta:\r\n case SchemaCompareCodes.CustomAttributeClassDelta:\r\n case SchemaCompareCodes.FormatDelta:\r\n case SchemaCompareCodes.InvertedUnitDelta:\r\n case SchemaCompareCodes.MixinDelta:\r\n case SchemaCompareCodes.PhenomenonDelta:\r\n case SchemaCompareCodes.PropertyCategoryDelta:\r\n case SchemaCompareCodes.RelationshipDelta:\r\n case SchemaCompareCodes.UnitDelta:\r\n return this.visitChangedSchemaItem(diagnostic);\r\n\r\n case SchemaCompareCodes.EnumerationDelta:\r\n return this.visitChangedEnumeration(diagnostic);\r\n case SchemaCompareCodes.KoqDelta:\r\n return this.visitChangedKindOfQuantity(diagnostic);\r\n\r\n case SchemaCompareCodes.EnumeratorDelta:\r\n return this.visitChangedEnumerator(diagnostic);\r\n case SchemaCompareCodes.EnumeratorMissing:\r\n return this.visitMissingEnumerator(diagnostic);\r\n\r\n case SchemaCompareCodes.BaseClassDelta:\r\n return this.visitMissingBaseClass(diagnostic);\r\n case SchemaCompareCodes.EntityMixinMissing:\r\n return this.visitMissingMixinOnClass(diagnostic);\r\n case SchemaCompareCodes.PropertyDelta:\r\n return this.visitChangedProperty(diagnostic);\r\n case SchemaCompareCodes.PropertyMissing:\r\n return this.visitMissingProperty(diagnostic);\r\n\r\n case SchemaCompareCodes.RelationshipConstraintClassMissing:\r\n return this.visitMissingRelationshipConstraintClass(diagnostic);\r\n case SchemaCompareCodes.RelationshipConstraintDelta:\r\n return this.visitChangedRelationshipConstraint(diagnostic);\r\n\r\n case SchemaCompareCodes.CustomAttributeInstanceClassMissing:\r\n return this.visitMissingCustomAttributeInstance(diagnostic);\r\n\r\n // Currently not handled...\r\n case SchemaCompareCodes.FormatUnitMissing:\r\n case SchemaCompareCodes.PresentationUnitMissing:\r\n case SchemaCompareCodes.UnitLabelOverrideDelta:\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n private visitChangedSchemaProperties(diagnostic: AnyDiagnostic) {\r\n let modifyEntry = this.schemaDifferences.find((entry): entry is SchemaDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Schema;\r\n });\r\n\r\n let hasChanges = false;\r\n let addEntry = false;\r\n if (modifyEntry === undefined) {\r\n addEntry = true;\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: SchemaOtherTypes.Schema,\r\n difference: {},\r\n };\r\n }\r\n\r\n // Only label and description are taken from the source schema. If the schema name or alias\r\n // differs, those are ignored for now.\r\n const [propertyName, propertyValue] = diagnostic.messageArgs as [string, any];\r\n if (propertyName === \"label\") {\r\n modifyEntry.difference.label = propertyValue;\r\n hasChanges = true;\r\n }\r\n if (propertyName === \"description\") {\r\n modifyEntry.difference.description = propertyValue;\r\n hasChanges = true;\r\n }\r\n\r\n if (addEntry && hasChanges) {\r\n this.schemaDifferences.push(modifyEntry);\r\n }\r\n }\r\n\r\n private visitMissingSchemaItem(diagnostic: AnyDiagnostic) {\r\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\r\n\r\n this.schemaItemDifferences.push({\r\n changeType: \"add\",\r\n schemaType: schemaItem.schemaItemType,\r\n itemName: schemaItem.name,\r\n difference: schemaItem.toJSON(),\r\n });\r\n }\r\n\r\n private visitChangedSchemaItem(diagnostic: AnyDiagnostic) {\r\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\r\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, unknown, unknown];\r\n if (propertyName === \"schemaItemType\") {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingItemName,\r\n schemaType: schemaItem.schemaItemType,\r\n itemName: schemaItem.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Target schema already contains a schema item with the name but different type.\",\r\n difference: schemaItem.toJSON(),\r\n });\r\n }\r\n\r\n if (sourceValue === undefined) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is AnySchemaItemDifference => {\r\n return entry.changeType === \"modify\" && entry.itemName === schemaItem.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: schemaItem.schemaItemType,\r\n itemName: schemaItem.name,\r\n difference: {},\r\n } as AnySchemaItemDifference;\r\n this.schemaItemDifferences.push(modifyEntry);\r\n }\r\n\r\n // TODO: Since propertyName is type of string, the compiler complains about accepting\r\n // an unspecific string as property indexer. Casted to any as short term fix but that\r\n // needs to be handled better in future.\r\n (modifyEntry.difference as any)[propertyName] = sourceValue;\r\n }\r\n\r\n private visitChangedKindOfQuantity(diagnostic: AnyDiagnostic) {\r\n const kindOfQuantity = diagnostic.ecDefinition as KindOfQuantity;\r\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, string, string];\r\n\r\n if (propertyName === \"persistenceUnit\") {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingPersistenceUnit,\r\n schemaType: SchemaItemType.KindOfQuantity,\r\n itemName: kindOfQuantity.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Kind of Quantity has a different persistence unit.\",\r\n });\r\n }\r\n\r\n return this.visitChangedSchemaItem(diagnostic);\r\n }\r\n\r\n private visitChangedEnumeration(diagnostic: AnyDiagnostic) {\r\n const enumeration = diagnostic.ecDefinition as Enumeration;\r\n if (this.schemaItemPathDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === enumeration.name)) {\r\n return;\r\n }\r\n\r\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, string, string];\r\n if (propertyName === \"type\") {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingEnumerationType,\r\n schemaType: SchemaItemType.Enumeration,\r\n itemName: enumeration.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Enumeration has a different primitive type.\",\r\n });\r\n }\r\n\r\n return this.visitChangedSchemaItem(diagnostic);\r\n }\r\n\r\n private visitMissingEnumerator(diagnostic: AnyDiagnostic) {\r\n const enumeration = diagnostic.ecDefinition as Enumeration;\r\n const [enumerator] = diagnostic.messageArgs as [AnyEnumerator];\r\n this.schemaItemPathDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.Enumerator,\r\n itemName: enumeration.name,\r\n path: \"$enumerators\",\r\n difference: enumerator,\r\n });\r\n }\r\n\r\n private lookupEnumeratorEntry(changeType: DifferenceType, item: string, enumeratorName: string) {\r\n return this.schemaItemPathDifferences.find((change) => {\r\n return change.changeType === changeType\r\n && change.schemaType === SchemaOtherTypes.Enumerator\r\n && change.itemName === item\r\n && change.path === \"$enumerators\"\r\n && change.difference.name === enumeratorName;\r\n });\r\n }\r\n\r\n private lookupConflictEntry(code: ConflictCode, schemaType: SchemaType, itemName: string, path: string) {\r\n return this.conflicts.find((change) => {\r\n return change.code === code\r\n && change.schemaType === schemaType\r\n && change.itemName === itemName\r\n && change.path === path;\r\n });\r\n }\r\n\r\n private visitChangedEnumerator(diagnostic: AnyDiagnostic) {\r\n const enumeration = diagnostic.ecDefinition as Enumeration;\r\n const [enumerator, propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [AnyEnumerator, keyof AnyEnumerator, any, any];\r\n if (this.lookupEnumeratorEntry(\"add\", enumeration.name, enumerator.name)) {\r\n return;\r\n }\r\n\r\n if (!this.validateEnumerator(enumeration, enumerator, propertyName, sourceValue, targetValue)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is EnumeratorDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Enumerator && entry.itemName === enumeration.name && entry.path === enumerator.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: SchemaOtherTypes.Enumerator,\r\n itemName: enumeration.name,\r\n path: enumerator.name,\r\n difference: {},\r\n };\r\n this.schemaItemPathDifferences.push(modifyEntry);\r\n }\r\n\r\n if (sourceValue !== undefined) {\r\n modifyEntry.difference[propertyName] = sourceValue;\r\n }\r\n }\r\n\r\n private validateEnumerator(enumeration: Enumeration, enumerator: AnyEnumerator, propertyName: string, sourceValue: unknown, targetValue: unknown) {\r\n if (propertyName === \"value\") {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingEnumeratorValue,\r\n schemaType: SchemaItemType.Enumeration,\r\n itemName: enumeration.name,\r\n path: enumerator.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Enumerator values must not differ.\",\r\n });\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private visitMissingProperty(diagnostic: AnyDiagnostic) {\r\n const property = diagnostic.ecDefinition as Property;\r\n this.schemaItemPathDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.Property,\r\n itemName: property.class.name,\r\n path: property.name,\r\n difference: property.toJSON() as AnyPropertyProps,\r\n });\r\n }\r\n\r\n private visitChangedProperty(diagnostic: AnyDiagnostic) {\r\n const property = diagnostic.ecDefinition as Property;\r\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [keyof PropertyProps, any, any];\r\n if (!this.validatePropertyChange(property, propertyName, sourceValue, targetValue)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is ClassPropertyDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Property && entry.itemName === property.class.name && entry.path === property.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: SchemaOtherTypes.Property,\r\n itemName: property.class.name,\r\n path: property.name,\r\n difference: {},\r\n };\r\n this.schemaItemPathDifferences.push(modifyEntry);\r\n }\r\n\r\n if (propertyName !== \"name\" && sourceValue !== undefined) {\r\n modifyEntry.difference[propertyName] = sourceValue;\r\n }\r\n }\r\n\r\n private validatePropertyChange(ecProperty: Property, propertyName: string, sourceValue: unknown, targetValue: unknown): boolean {\r\n if (propertyName === \"type\"\r\n || propertyName === \"primitiveType\"\r\n || (propertyName === \"enumeration\" && (sourceValue === undefined || targetValue === undefined))) {\r\n if (!this.lookupConflictEntry(ConflictCode.ConflictingPropertyName, ecProperty.class.schemaItemType,\r\n ecProperty.class.name, ecProperty.name)) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingPropertyName,\r\n schemaType: ecProperty.class.schemaItemType,\r\n itemName: ecProperty.class.name,\r\n path: ecProperty.name,\r\n source: sourceValue,\r\n target: targetValue,\r\n description: \"Target class already contains a property with a different type.\",\r\n difference: ecProperty.toJSON(),\r\n });\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private visitMissingBaseClass(diagnostic: AnyDiagnostic) {\r\n const ecClass = diagnostic.ecDefinition as ECClass;\r\n const [sourceBaseClass, targetBaseClass] = diagnostic.messageArgs as [ECClass, ECClass];\r\n if (!this.validateBaseClassChange(ecClass, sourceBaseClass, targetBaseClass)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is ClassItemDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === ecClass.schemaItemType && entry.itemName === ecClass.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: ecClass.schemaItemType,\r\n itemName: ecClass.name,\r\n difference: {},\r\n } as ClassItemDifference;\r\n this.schemaItemDifferences.push(modifyEntry);\r\n }\r\n\r\n modifyEntry.difference.baseClass = sourceBaseClass.fullName;\r\n }\r\n\r\n private validateBaseClassChange(targetClass: ECClass, sourceBaseClass?: ECClass, targetBaseClass?: ECClass): boolean {\r\n if (sourceBaseClass === undefined) {\r\n this.addConflict({\r\n code: ConflictCode.RemovingBaseClass,\r\n schemaType: targetClass.schemaItemType,\r\n itemName: targetClass.name,\r\n path: \"$baseClass\",\r\n source: undefined,\r\n target: targetBaseClass?.fullName,\r\n description: \"BaseClass cannot be set unset if there has been a baseClass before.\",\r\n });\r\n return false;\r\n }\r\n\r\n if (sourceBaseClass.modifier === ECClassModifier.Sealed) {\r\n this.addConflict({\r\n code: ConflictCode.SealedBaseClass,\r\n schemaType: targetClass.schemaItemType,\r\n itemName: targetClass.name,\r\n path: \"$baseClass\",\r\n source: sourceBaseClass.fullName,\r\n target: targetBaseClass?.fullName,\r\n description: \"BaseClass is sealed.\",\r\n });\r\n return false;\r\n }\r\n\r\n if (targetBaseClass && !derivedFrom(sourceBaseClass, targetBaseClass.name)) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingBaseClass,\r\n schemaType: targetClass.schemaItemType,\r\n itemName: targetClass.name,\r\n path: \"$baseClass\",\r\n source: sourceBaseClass.fullName,\r\n target: targetBaseClass.fullName,\r\n description: \"BaseClass is not valid, source class must derive from target.\",\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private visitMissingMixinOnClass(diagnostic: AnyDiagnostic) {\r\n const ecClass = diagnostic.ecDefinition as ECClass;\r\n const [mixin] = diagnostic.messageArgs as [Mixin];\r\n if (!this.validateMixin(ecClass, mixin)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is EntityClassMixinDifference => {\r\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.EntityClassMixin && entry.itemName === ecClass.name;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.EntityClassMixin,\r\n itemName: ecClass.name,\r\n difference: [],\r\n };\r\n this.schemaItemDifferences.push(modifyEntry);\r\n }\r\n modifyEntry.difference.push(mixin.fullName);\r\n }\r\n\r\n private validateMixin(targetClass: ECClass, mixin: Mixin): boolean {\r\n if (mixin.appliesTo && !derivedFrom(targetClass, mixin.appliesTo.name)) {\r\n this.addConflict({\r\n code: ConflictCode.MixinAppliedMustDeriveFromConstraint,\r\n schemaType: targetClass.schemaItemType,\r\n itemName: targetClass.name,\r\n path: \"$mixins\",\r\n source: mixin.fullName,\r\n target: undefined,\r\n description: \"Mixin cannot applied to this class.\",\r\n });\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private visitMissingRelationshipConstraintClass(diagnostic: AnyDiagnostic) {\r\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\r\n const className = constraint.relationshipClass.name;\r\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\r\n\r\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintClassDifference => {\r\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraintClass, entry.itemName === className && entry.path === constraintPath;\r\n });\r\n\r\n if (!modifyEntry) {\r\n modifyEntry = {\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.RelationshipConstraintClass,\r\n itemName: className,\r\n path: constraintPath,\r\n difference: [],\r\n };\r\n this.schemaItemPathDifferences.push(modifyEntry);\r\n }\r\n\r\n const [constraintClass] = diagnostic.messageArgs as [ECClass];\r\n modifyEntry.difference.push(constraintClass.fullName);\r\n }\r\n\r\n private visitChangedRelationshipConstraint(diagnostic: AnyDiagnostic) {\r\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\r\n const className = constraint.relationshipClass.name;\r\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\r\n if (this.schemaItemDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === className)) {\r\n return;\r\n }\r\n\r\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintDifference => {\r\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraint && entry.itemName === className && entry.path === constraintPath;\r\n });\r\n\r\n if (modifyEntry === undefined) {\r\n modifyEntry = {\r\n changeType: \"modify\",\r\n schemaType: SchemaOtherTypes.RelationshipConstraint,\r\n itemName: className,\r\n path: constraintPath,\r\n difference: {},\r\n };\r\n this.schemaItemPathDifferences.push(modifyEntry);\r\n }\r\n\r\n const [propertyName, propertyValue] = diagnostic.messageArgs as [keyof RelationshipConstraintProps, any];\r\n if (propertyName === \"abstractConstraint\" && propertyValue !== undefined) {\r\n modifyEntry.difference.abstractConstraint = propertyValue;\r\n }\r\n if (propertyName === \"multiplicity\" && propertyValue !== undefined) {\r\n modifyEntry.difference.multiplicity = propertyValue;\r\n }\r\n if (propertyName === \"polymorphic\" && propertyValue !== undefined) {\r\n modifyEntry.difference.polymorphic = propertyValue;\r\n }\r\n if (propertyName === \"roleLabel\" && propertyValue !== undefined) {\r\n modifyEntry.difference.roleLabel = propertyValue;\r\n }\r\n }\r\n\r\n private visitSchemaReference(diagnostic: AnyDiagnostic, changeType: DifferenceType) {\r\n const [referencedSchema] = diagnostic.messageArgs as [Schema];\r\n this.schemaDifferences.push({\r\n changeType,\r\n schemaType: SchemaOtherTypes.SchemaReference,\r\n difference: {\r\n name: referencedSchema.name,\r\n version: referencedSchema.schemaKey.version.toString(),\r\n },\r\n });\r\n }\r\n\r\n private visitMissingCustomAttributeInstance(diagnostic: AnyDiagnostic) {\r\n const [customAttribute] = diagnostic.messageArgs as [CustomAttribute];\r\n const ecType = diagnostic.ecDefinition;\r\n if (Schema.isSchema(ecType)) {\r\n return this.customAttributeDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\r\n appliedTo: \"Schema\",\r\n difference: customAttribute,\r\n });\r\n }\r\n\r\n if (SchemaItem.isSchemaItem(ecType)) {\r\n return this.customAttributeDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\r\n appliedTo: \"SchemaItem\",\r\n itemName: ecType.name,\r\n difference: customAttribute,\r\n });\r\n }\r\n\r\n if (Property.isProperty(ecType)) {\r\n return this.customAttributeDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\r\n appliedTo: \"Property\",\r\n itemName: ecType.class.name,\r\n path: ecType.name,\r\n difference: customAttribute,\r\n });\r\n }\r\n\r\n if (RelationshipConstraint.isRelationshipConstraint(ecType)) {\r\n return this.customAttributeDifferences.push({\r\n changeType: \"add\",\r\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\r\n appliedTo: \"RelationshipConstraint\",\r\n itemName: ecType.relationshipClass.name,\r\n path: ecType.isSource ? \"$source\" : \"$target\",\r\n difference: customAttribute,\r\n });\r\n }\r\n return;\r\n }\r\n}\r\n"]}
@@ -48,40 +48,41 @@ export declare enum ECEditingStatus {
48
48
  SetIsReadOnly = 196647,
49
49
  SetPriority = 196648,
50
50
  SetCategory = 196649,
51
- SetMinOccurs = 196650,
52
- SetMaxOccurs = 196651,
53
- SetExtendedTypeName = 196652,
54
- SetMinLength = 196653,
55
- SetMaxLength = 196654,
56
- SetMinValue = 196655,
57
- SetMaxValue = 196656,
58
- SetPropertyName = 196657,
59
- AddMixin = 196658,
60
- AddEnumerator = 196659,
61
- SetEnumeratorLabel = 196660,
62
- SetEnumeratorDescription = 196661,
63
- AddPresentationUnit = 196662,
64
- AddPresentationOverride = 196663,
65
- CreateFormatOverride = 196664,
66
- SetPropertyCategoryPriority = 196665,
67
- CreatePrimitiveProperty = 196666,
68
- CreatePrimitivePropertyFromProps = 196667,
69
- CreateEnumerationProperty = 196668,
70
- CreateEnumerationPropertyFromProps = 196669,
71
- CreatePrimitiveArrayProperty = 196670,
72
- CreatePrimitiveArrayPropertyFromProps = 196671,
73
- CreateEnumerationArrayProperty = 196672,
74
- CreateEnumerationArrayPropertyFromProps = 196673,
75
- CreateStructProperty = 196674,
76
- CreateStructPropertyFromProps = 196675,
77
- CreateStructArrayProperty = 196676,
78
- CreateStructArrayPropertyFromProps = 196677,
79
- DeleteProperty = 196678,
80
- DeleteClass = 196679,
81
- SetClassName = 196680,
82
- AddSchemaReference = 196681,
83
- SetSchemaVersion = 196682,
84
- IncrementSchemaMinorVersion = 196683
51
+ SetKindOfQuantity = 196650,
52
+ SetMinOccurs = 196651,
53
+ SetMaxOccurs = 196652,
54
+ SetExtendedTypeName = 196653,
55
+ SetMinLength = 196654,
56
+ SetMaxLength = 196655,
57
+ SetMinValue = 196656,
58
+ SetMaxValue = 196657,
59
+ SetPropertyName = 196658,
60
+ AddMixin = 196659,
61
+ AddEnumerator = 196660,
62
+ SetEnumeratorLabel = 196661,
63
+ SetEnumeratorDescription = 196662,
64
+ AddPresentationUnit = 196663,
65
+ AddPresentationOverride = 196664,
66
+ CreateFormatOverride = 196665,
67
+ SetPropertyCategoryPriority = 196666,
68
+ CreatePrimitiveProperty = 196667,
69
+ CreatePrimitivePropertyFromProps = 196668,
70
+ CreateEnumerationProperty = 196669,
71
+ CreateEnumerationPropertyFromProps = 196670,
72
+ CreatePrimitiveArrayProperty = 196671,
73
+ CreatePrimitiveArrayPropertyFromProps = 196672,
74
+ CreateEnumerationArrayProperty = 196673,
75
+ CreateEnumerationArrayPropertyFromProps = 196674,
76
+ CreateStructProperty = 196675,
77
+ CreateStructPropertyFromProps = 196676,
78
+ CreateStructArrayProperty = 196677,
79
+ CreateStructArrayPropertyFromProps = 196678,
80
+ DeleteProperty = 196679,
81
+ DeleteClass = 196680,
82
+ SetClassName = 196681,
83
+ AddSchemaReference = 196682,
84
+ SetSchemaVersion = 196683,
85
+ IncrementSchemaMinorVersion = 196684
85
86
  }
86
87
  /**
87
88
  * A type that constrains the possible error types handled by SchemaEditingError
@@ -1 +1 @@
1
- {"version":3,"file":"Exception.d.ts","sourceRoot":"","sources":["../../../src/Editing/Exception.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,WAAW,EAAwC,QAAQ,EAAE,sBAAsB,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEvN,aAAa;AACb,oBAAY,eAAe;IACzB,qBAAqB,SAAU;IAC/B,OAAO,IAAI;IACX,aAAa,SAA4B;IACzC,cAAc,SAAA;IACd,kBAAkB,SAAA;IAClB,2BAA2B,SAAA;IAC3B,qBAAqB,SAAA;IACrB,gBAAgB,SAAA;IAChB,mBAAmB,SAAA;IACnB,qBAAqB,SAAA;IACrB,iCAAiC,SAAA;IACjC,gCAAgC,SAAA;IAChC,0BAA0B,SAAA;IAC1B,qBAAqB,SAAA;IACrB,2BAA2B,SAAA;IAC3B,qBAAqB,SAAA;IACrB,gBAAgB,SAAA;IAChB,sBAAsB,SAAA;IACtB,aAAa,SAAA;IACb,2BAA2B,SAAA;IAE3B,sBAAsB,SAAA;IACtB,yBAAyB,SAAA;IACzB,aAAa,SAAA;IACb,yBAAyB,SAAA;IACzB,wBAAwB,SAAA;IACxB,YAAY,SAAA;IACZ,mBAAmB,SAAA;IACnB,mBAAmB,SAAA;IACnB,kBAAkB,SAAA;IAClB,qBAAqB,SAAA;IACrB,qBAAqB,SAAA;IACrB,8BAA8B,SAAA;IAC9B,4BAA4B,SAAA;IAC5B,yBAAyB,SAAA;IACzB,wBAAwB,SAAA;IACxB,iCAAiC,SAAA;IACjC,cAAc,SAAA;IACd,aAAa,SAAA;IACb,cAAc,SAAA;IACd,QAAQ,SAAA;IACR,aAAa,SAAA;IACb,WAAW,SAAA;IACX,WAAW,SAAA;IACX,YAAY,SAAA;IACZ,YAAY,SAAA;IACZ,mBAAmB,SAAA;IACnB,YAAY,SAAA;IACZ,YAAY,SAAA;IACZ,WAAW,SAAA;IACX,WAAW,SAAA;IACX,eAAe,SAAA;IACf,QAAQ,SAAA;IACR,aAAa,SAAA;IACb,kBAAkB,SAAA;IAClB,wBAAwB,SAAA;IACxB,mBAAmB,SAAA;IACnB,uBAAuB,SAAA;IACvB,oBAAoB,SAAA;IACpB,2BAA2B,SAAA;IAC3B,uBAAuB,SAAA;IACvB,gCAAgC,SAAA;IAChC,yBAAyB,SAAA;IACzB,kCAAkC,SAAA;IAClC,4BAA4B,SAAA;IAC5B,qCAAqC,SAAA;IACrC,8BAA8B,SAAA;IAC9B,uCAAuC,SAAA;IACvC,oBAAoB,SAAA;IACpB,6BAA6B,SAAA;IAC7B,yBAAyB,SAAA;IACzB,kCAAkC,SAAA;IAClC,cAAc,SAAA;IACd,WAAW,SAAA;IACX,YAAY,SAAA;IACZ,kBAAkB,SAAA;IAClB,gBAAgB,SAAA;IAChB,2BAA2B,SAAA;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,KAAK,CAAC;AAEzD;;;GAGG;AACH,oBAAY,gBAAgB;IAC1B,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,cAAc,mBAAmB;CAClC;AAED;;;GAGG;AACH,oBAAY,qBAAqB;IAC/B,gBAAgB,WAAW;IAC3B,oBAAoB,eAAe;IACnC,eAAe,UAAU;IACzB,kBAAkB,aAAa;IAC/B,oBAAoB,eAAe;IACnC,yBAAyB,oBAAoB;IAC7C,gCAAgC,2BAA2B;CAC5D;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,iBAAiB,GAAG,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,oBAAoB,CAAC;AAEzL;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,qBAAqB,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,eAAe,CAAC;AAE7H;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,qBAAqB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,0BAA0B,GAAG,iCAAiC,GAAG,qBAAqB,CAAC;AAExM;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC,gBAAgB,CAAC;CACjE;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,2BAA2B,CAAC;CACtD;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC,eAAe,CAAC;CAChE;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC,kBAAkB,CAAC;CACnE;AAED;;;GAGG;AACH,UAAU,qBAAsB,SAAQ,qBAAqB;IAC3D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC,oBAAoB,CAAC;CACrE;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IACvE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC,yBAAyB,CAAC;CAC1E;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAkC,SAAQ,qBAAqB;IAC9E,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC,gCAAgC,CAAC;CACjF;AAED;;;GAGG;AACH,qBAAa,QAAS,YAAW,iBAAiB;IAChD,SAAgB,cAAc,0CAA0C;IACxE,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,SAAS,EAAE,SAAS,CAAC;gBACzB,SAAS,EAAE,SAAS;CAIjC;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,qBAAqB;IACxD,SAAgB,cAAc,EAAE,2BAA2B,CAAC;IAC5D,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,aAAa,EAAE,aAAa,CAAC;gBAEjC,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS;CAgB/G;AAED;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,YAAa,YAAW,gBAAgB;IACnE,SAAyB,cAAc,yCAAyC;IAChF,SAAyB,cAAc,EAAE,kBAAkB,CAAC;gBAChD,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS;CAInH;AAED;;;GAGG;AACH,qBAAa,UAAW,YAAW,mBAAmB;IACpD,SAAgB,cAAc,4CAA4C;IAC1E,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;gBAEhC,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB;CAOlI;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,qBAAqB;IACxD,SAAgB,cAAc,8CAA8C;IAC5E,SAAgB,WAAW,EAAE,aAAa,CAAC;IAC3C,SAAgB,eAAe,EAAE,MAAM,CAAC;IACxC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,SAAS,EAAE,SAAS,CAAC;gBAEzB,UAAU,EAAE,aAAa,GAAG,MAAM,EAAE,WAAW,EAAE,WAAW;CAOzE;AAED;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,0BAA0B;IAClE,SAAgB,cAAc,mDAAmD;IACjF,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;gBAC9B,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B;CAKnE;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,iCAAiC;IAChF,SAAgB,cAAc,0DAA0D;IACxF,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,eAAe,EAAE,aAAa,CAAC;IAC/C,SAAgB,SAAS,EAAE,SAAS,CAAC;gBACzB,UAAU,EAAE,sBAAsB;CAK/C;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAYR,WAAW,EAAE,eAAe;aAAkB,UAAU,EAAE,aAAa;aAAkB,UAAU,CAAC;IAXvI,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,UAAU,CAAY;IAE9B;;;;;;;OAOG;gBACgC,WAAW,EAAE,eAAe,EAAkB,UAAU,EAAE,aAAa,EAAkB,UAAU,CAAC,6BAAiB,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM;IAO5M;;;OAGG;IACH,OAAO,KAAK,SAAS,GAIpB;IAED;;;OAGG;IACH,OAAO,KAAK,aAAa,GAIxB;IAED;;;OAGG;IACH,OAAO,KAAK,QAAQ,GAInB;IAED;;;OAGG;IACH,OAAO,KAAK,WAAW,GAItB;IAED;;;OAGG;IACH,OAAO,KAAK,aAAa,GAIxB;IAED;;;OAGG;IACH,OAAO,KAAK,kBAAkB,GAI7B;IAED;;;OAGG;IACH,OAAO,KAAK,yBAAyB,GAIpC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,aAAa,EAAE,GAAG,SAAS,CAEvD;IAED;;;;OAIG;IACI,aAAa,IAAI,MAAM;IAW9B,OAAO,CAAC,eAAe;IA6DvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,sBAAsB;CAO/B"}
1
+ {"version":3,"file":"Exception.d.ts","sourceRoot":"","sources":["../../../src/Editing/Exception.ts"],"names":[],"mappings":"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"}
@@ -56,40 +56,41 @@ var ECEditingStatus;
56
56
  ECEditingStatus[ECEditingStatus["SetIsReadOnly"] = 196647] = "SetIsReadOnly";
57
57
  ECEditingStatus[ECEditingStatus["SetPriority"] = 196648] = "SetPriority";
58
58
  ECEditingStatus[ECEditingStatus["SetCategory"] = 196649] = "SetCategory";
59
- ECEditingStatus[ECEditingStatus["SetMinOccurs"] = 196650] = "SetMinOccurs";
60
- ECEditingStatus[ECEditingStatus["SetMaxOccurs"] = 196651] = "SetMaxOccurs";
61
- ECEditingStatus[ECEditingStatus["SetExtendedTypeName"] = 196652] = "SetExtendedTypeName";
62
- ECEditingStatus[ECEditingStatus["SetMinLength"] = 196653] = "SetMinLength";
63
- ECEditingStatus[ECEditingStatus["SetMaxLength"] = 196654] = "SetMaxLength";
64
- ECEditingStatus[ECEditingStatus["SetMinValue"] = 196655] = "SetMinValue";
65
- ECEditingStatus[ECEditingStatus["SetMaxValue"] = 196656] = "SetMaxValue";
66
- ECEditingStatus[ECEditingStatus["SetPropertyName"] = 196657] = "SetPropertyName";
67
- ECEditingStatus[ECEditingStatus["AddMixin"] = 196658] = "AddMixin";
68
- ECEditingStatus[ECEditingStatus["AddEnumerator"] = 196659] = "AddEnumerator";
69
- ECEditingStatus[ECEditingStatus["SetEnumeratorLabel"] = 196660] = "SetEnumeratorLabel";
70
- ECEditingStatus[ECEditingStatus["SetEnumeratorDescription"] = 196661] = "SetEnumeratorDescription";
71
- ECEditingStatus[ECEditingStatus["AddPresentationUnit"] = 196662] = "AddPresentationUnit";
72
- ECEditingStatus[ECEditingStatus["AddPresentationOverride"] = 196663] = "AddPresentationOverride";
73
- ECEditingStatus[ECEditingStatus["CreateFormatOverride"] = 196664] = "CreateFormatOverride";
74
- ECEditingStatus[ECEditingStatus["SetPropertyCategoryPriority"] = 196665] = "SetPropertyCategoryPriority";
75
- ECEditingStatus[ECEditingStatus["CreatePrimitiveProperty"] = 196666] = "CreatePrimitiveProperty";
76
- ECEditingStatus[ECEditingStatus["CreatePrimitivePropertyFromProps"] = 196667] = "CreatePrimitivePropertyFromProps";
77
- ECEditingStatus[ECEditingStatus["CreateEnumerationProperty"] = 196668] = "CreateEnumerationProperty";
78
- ECEditingStatus[ECEditingStatus["CreateEnumerationPropertyFromProps"] = 196669] = "CreateEnumerationPropertyFromProps";
79
- ECEditingStatus[ECEditingStatus["CreatePrimitiveArrayProperty"] = 196670] = "CreatePrimitiveArrayProperty";
80
- ECEditingStatus[ECEditingStatus["CreatePrimitiveArrayPropertyFromProps"] = 196671] = "CreatePrimitiveArrayPropertyFromProps";
81
- ECEditingStatus[ECEditingStatus["CreateEnumerationArrayProperty"] = 196672] = "CreateEnumerationArrayProperty";
82
- ECEditingStatus[ECEditingStatus["CreateEnumerationArrayPropertyFromProps"] = 196673] = "CreateEnumerationArrayPropertyFromProps";
83
- ECEditingStatus[ECEditingStatus["CreateStructProperty"] = 196674] = "CreateStructProperty";
84
- ECEditingStatus[ECEditingStatus["CreateStructPropertyFromProps"] = 196675] = "CreateStructPropertyFromProps";
85
- ECEditingStatus[ECEditingStatus["CreateStructArrayProperty"] = 196676] = "CreateStructArrayProperty";
86
- ECEditingStatus[ECEditingStatus["CreateStructArrayPropertyFromProps"] = 196677] = "CreateStructArrayPropertyFromProps";
87
- ECEditingStatus[ECEditingStatus["DeleteProperty"] = 196678] = "DeleteProperty";
88
- ECEditingStatus[ECEditingStatus["DeleteClass"] = 196679] = "DeleteClass";
89
- ECEditingStatus[ECEditingStatus["SetClassName"] = 196680] = "SetClassName";
90
- ECEditingStatus[ECEditingStatus["AddSchemaReference"] = 196681] = "AddSchemaReference";
91
- ECEditingStatus[ECEditingStatus["SetSchemaVersion"] = 196682] = "SetSchemaVersion";
92
- ECEditingStatus[ECEditingStatus["IncrementSchemaMinorVersion"] = 196683] = "IncrementSchemaMinorVersion";
59
+ ECEditingStatus[ECEditingStatus["SetKindOfQuantity"] = 196650] = "SetKindOfQuantity";
60
+ ECEditingStatus[ECEditingStatus["SetMinOccurs"] = 196651] = "SetMinOccurs";
61
+ ECEditingStatus[ECEditingStatus["SetMaxOccurs"] = 196652] = "SetMaxOccurs";
62
+ ECEditingStatus[ECEditingStatus["SetExtendedTypeName"] = 196653] = "SetExtendedTypeName";
63
+ ECEditingStatus[ECEditingStatus["SetMinLength"] = 196654] = "SetMinLength";
64
+ ECEditingStatus[ECEditingStatus["SetMaxLength"] = 196655] = "SetMaxLength";
65
+ ECEditingStatus[ECEditingStatus["SetMinValue"] = 196656] = "SetMinValue";
66
+ ECEditingStatus[ECEditingStatus["SetMaxValue"] = 196657] = "SetMaxValue";
67
+ ECEditingStatus[ECEditingStatus["SetPropertyName"] = 196658] = "SetPropertyName";
68
+ ECEditingStatus[ECEditingStatus["AddMixin"] = 196659] = "AddMixin";
69
+ ECEditingStatus[ECEditingStatus["AddEnumerator"] = 196660] = "AddEnumerator";
70
+ ECEditingStatus[ECEditingStatus["SetEnumeratorLabel"] = 196661] = "SetEnumeratorLabel";
71
+ ECEditingStatus[ECEditingStatus["SetEnumeratorDescription"] = 196662] = "SetEnumeratorDescription";
72
+ ECEditingStatus[ECEditingStatus["AddPresentationUnit"] = 196663] = "AddPresentationUnit";
73
+ ECEditingStatus[ECEditingStatus["AddPresentationOverride"] = 196664] = "AddPresentationOverride";
74
+ ECEditingStatus[ECEditingStatus["CreateFormatOverride"] = 196665] = "CreateFormatOverride";
75
+ ECEditingStatus[ECEditingStatus["SetPropertyCategoryPriority"] = 196666] = "SetPropertyCategoryPriority";
76
+ ECEditingStatus[ECEditingStatus["CreatePrimitiveProperty"] = 196667] = "CreatePrimitiveProperty";
77
+ ECEditingStatus[ECEditingStatus["CreatePrimitivePropertyFromProps"] = 196668] = "CreatePrimitivePropertyFromProps";
78
+ ECEditingStatus[ECEditingStatus["CreateEnumerationProperty"] = 196669] = "CreateEnumerationProperty";
79
+ ECEditingStatus[ECEditingStatus["CreateEnumerationPropertyFromProps"] = 196670] = "CreateEnumerationPropertyFromProps";
80
+ ECEditingStatus[ECEditingStatus["CreatePrimitiveArrayProperty"] = 196671] = "CreatePrimitiveArrayProperty";
81
+ ECEditingStatus[ECEditingStatus["CreatePrimitiveArrayPropertyFromProps"] = 196672] = "CreatePrimitiveArrayPropertyFromProps";
82
+ ECEditingStatus[ECEditingStatus["CreateEnumerationArrayProperty"] = 196673] = "CreateEnumerationArrayProperty";
83
+ ECEditingStatus[ECEditingStatus["CreateEnumerationArrayPropertyFromProps"] = 196674] = "CreateEnumerationArrayPropertyFromProps";
84
+ ECEditingStatus[ECEditingStatus["CreateStructProperty"] = 196675] = "CreateStructProperty";
85
+ ECEditingStatus[ECEditingStatus["CreateStructPropertyFromProps"] = 196676] = "CreateStructPropertyFromProps";
86
+ ECEditingStatus[ECEditingStatus["CreateStructArrayProperty"] = 196677] = "CreateStructArrayProperty";
87
+ ECEditingStatus[ECEditingStatus["CreateStructArrayPropertyFromProps"] = 196678] = "CreateStructArrayPropertyFromProps";
88
+ ECEditingStatus[ECEditingStatus["DeleteProperty"] = 196679] = "DeleteProperty";
89
+ ECEditingStatus[ECEditingStatus["DeleteClass"] = 196680] = "DeleteClass";
90
+ ECEditingStatus[ECEditingStatus["SetClassName"] = 196681] = "SetClassName";
91
+ ECEditingStatus[ECEditingStatus["AddSchemaReference"] = 196682] = "AddSchemaReference";
92
+ ECEditingStatus[ECEditingStatus["SetSchemaVersion"] = 196683] = "SetSchemaVersion";
93
+ ECEditingStatus[ECEditingStatus["IncrementSchemaMinorVersion"] = 196684] = "IncrementSchemaMinorVersion";
93
94
  })(ECEditingStatus || (exports.ECEditingStatus = ECEditingStatus = {}));
94
95
  /**
95
96
  * Defines the possible property type names.
@@ -1 +1 @@
1
- {"version":3,"file":"Exception.js","sourceRoot":"","sources":["../../../src/Editing/Exception.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Editing\r\n */\r\n\r\nimport { AnyDiagnostic } from \"../Validation/Diagnostic\";\r\nimport { AnyEnumerator, CustomAttributeContainerProps, Enumeration, PrimitiveType, primitiveTypeToString, Property, RelationshipConstraint, SchemaItemKey, SchemaItemType, SchemaKey } from \"@itwin/ecschema-metadata\";\r\n\r\n/** @alpha */\r\nexport enum ECEditingStatus {\r\n EC_EDITING_ERROR_BASE = 0x30000,\r\n Unknown = 0,\r\n RuleViolation = EC_EDITING_ERROR_BASE + 1,\r\n SchemaNotFound,\r\n SchemaItemNotFound,\r\n SchemaItemNotFoundInContext,\r\n PropertyAlreadyExists,\r\n PropertyNotFound,\r\n InvalidPropertyType,\r\n BaseClassIsNotElement,\r\n BaseClassIsNotElementUniqueAspect,\r\n BaseClassIsNotElementMultiAspect,\r\n SchemaItemNameNotSpecified,\r\n InvalidSchemaItemType,\r\n SchemaItemNameAlreadyExists,\r\n InvalidEnumeratorType,\r\n InvalidBaseClass,\r\n EnumeratorDoesNotExist,\r\n InvalidECName,\r\n InvalidFormatUnitsSpecified,\r\n // Outer Errors\r\n CreateSchemaItemFailed,\r\n CreateSchemaItemFromProps,\r\n CreateElement,\r\n CreateElementUniqueAspect,\r\n CreateElementMultiAspect,\r\n SetBaseClass,\r\n SetSourceConstraint,\r\n SetTargetConstraint,\r\n AddConstraintClass,\r\n RemoveConstraintClass,\r\n SetAbstractConstraint,\r\n AddCustomAttributeToConstraint,\r\n AddCustomAttributeToProperty,\r\n AddCustomAttributeToClass,\r\n CreateNavigationProperty,\r\n CreateNavigationPropertyFromProps,\r\n SetInvertsUnit,\r\n SetUnitSystem,\r\n SetDescription,\r\n SetLabel,\r\n SetIsReadOnly,\r\n SetPriority,\r\n SetCategory,\r\n SetMinOccurs,\r\n SetMaxOccurs,\r\n SetExtendedTypeName,\r\n SetMinLength,\r\n SetMaxLength,\r\n SetMinValue,\r\n SetMaxValue,\r\n SetPropertyName,\r\n AddMixin,\r\n AddEnumerator,\r\n SetEnumeratorLabel,\r\n SetEnumeratorDescription,\r\n AddPresentationUnit,\r\n AddPresentationOverride,\r\n CreateFormatOverride,\r\n SetPropertyCategoryPriority,\r\n CreatePrimitiveProperty,\r\n CreatePrimitivePropertyFromProps,\r\n CreateEnumerationProperty,\r\n CreateEnumerationPropertyFromProps,\r\n CreatePrimitiveArrayProperty,\r\n CreatePrimitiveArrayPropertyFromProps,\r\n CreateEnumerationArrayProperty,\r\n CreateEnumerationArrayPropertyFromProps,\r\n CreateStructProperty,\r\n CreateStructPropertyFromProps,\r\n CreateStructArrayProperty,\r\n CreateStructArrayPropertyFromProps,\r\n DeleteProperty,\r\n DeleteClass,\r\n SetClassName,\r\n AddSchemaReference,\r\n SetSchemaVersion,\r\n IncrementSchemaMinorVersion,\r\n}\r\n\r\n/**\r\n * A type that constrains the possible error types handled by SchemaEditingError\r\n * @alpha\r\n */\r\nexport type AnyEditingError = SchemaEditingError | Error;\r\n\r\n/**\r\n * Defines the possible property type names.\r\n * @alpha\r\n */\r\nexport enum PropertyTypeName {\r\n ArrayProperty = \"ArrayProperty\",\r\n PrimitiveProperty = \"PrimitiveProperty\",\r\n EnumerationProperty = \"EnumerationProperty\",\r\n NavigationProperty = \"NavigationProperty\",\r\n StructProperty = \"StructProperty\"\r\n}\r\n\r\n/**\r\n * Defines the possible schema type identifiers.\r\n * @alpha\r\n */\r\nexport enum SchemaTypeIdentifiers {\r\n SchemaIdentifier = \"Schema\",\r\n SchemaItemIdentifier = \"SchemaItem\",\r\n ClassIdentifier = \"Class\",\r\n PropertyIdentifier = \"Property\",\r\n EnumeratorIdentifier = \"Enumerator\",\r\n CustomAttributeIdentifier = \"CustomAttribute\",\r\n RelationshipConstraintIdentifier = \"RelationshipConstraint\"\r\n}\r\n\r\n/**\r\n * Type that constrains SchemaItemType enum to those used by EC Class types.\r\n * @alpha\r\n */\r\nexport type ECClassSchemaItems = SchemaItemType.EntityClass | SchemaItemType.StructClass | SchemaItemType.RelationshipClass | SchemaItemType.Mixin | SchemaItemType.CustomAttributeClass;\r\n\r\n/**\r\n * Type that defines the possible SchemaTypeIdentifiers for SchemaItemId classes.\r\n * @alpha\r\n */\r\nexport type AnySchemaItemTypeIdentifier = SchemaTypeIdentifiers.SchemaItemIdentifier | SchemaTypeIdentifiers.ClassIdentifier;\r\n\r\n/**\r\n * Type that encompasses all ISchemaTypeIdentifier interfaces\r\n * @alpha\r\n */\r\nexport type AnyIdentifier = ISchemaIdentifier | ISchemaItemIdentifier | IClassIdentifier | IPropertyIdentifier | ICustomAttributeIdentifier | IRelationshipConstraintIdentifier | IEnumeratorIdentifier;\r\n\r\n/**\r\n * A base interface that defines what is needed to identity any schema type.\r\n * @alpha\r\n */\r\nexport interface ISchemaTypeIdentifier {\r\n readonly name: string;\r\n readonly schemaKey: SchemaKey;\r\n readonly typeIdentifier: SchemaTypeIdentifiers;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify a Schema.\r\n * @alpha\r\n */\r\nexport interface ISchemaIdentifier extends ISchemaTypeIdentifier {\r\n readonly typeIdentifier: SchemaTypeIdentifiers.SchemaIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify a SchemaItem.\r\n * @alpha\r\n */\r\nexport interface ISchemaItemIdentifier extends ISchemaTypeIdentifier {\r\n readonly schemaItemType: SchemaItemType;\r\n readonly schemaItemKey: SchemaItemKey;\r\n readonly typeIdentifier: AnySchemaItemTypeIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify an EC Class.\r\n * @alpha\r\n */\r\nexport interface IClassIdentifier extends ISchemaTypeIdentifier {\r\n readonly schemaItemType: ECClassSchemaItems;\r\n readonly schemaItemKey: SchemaItemKey;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.ClassIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify an EC Property.\r\n * @alpha\r\n */\r\nexport interface IPropertyIdentifier extends ISchemaTypeIdentifier {\r\n readonly fullName: string;\r\n readonly ecClass: ClassId;\r\n readonly typeName?: PropertyTypeName;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.PropertyIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify an Enumerator.\r\n * @alpha\r\n */\r\ninterface IEnumeratorIdentifier extends ISchemaTypeIdentifier {\r\n readonly enumeratorType: string;\r\n readonly enumeration: SchemaItemKey;\r\n readonly enumerationType: string;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.EnumeratorIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify a CustomAttribute.\r\n * @alpha\r\n */\r\nexport interface ICustomAttributeIdentifier extends ISchemaTypeIdentifier {\r\n readonly containerFullName: string;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.CustomAttributeIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify a RelationshipConstraint.\r\n * @alpha\r\n */\r\nexport interface IRelationshipConstraintIdentifier extends ISchemaTypeIdentifier {\r\n readonly relationshipKey: SchemaItemKey;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.RelationshipConstraintIdentifier;\r\n}\r\n\r\n/**\r\n * An ISchemaIdentifier implementation to identify Schemas\r\n * @alpha\r\n */\r\nexport class SchemaId implements ISchemaIdentifier {\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.SchemaIdentifier;\r\n public readonly name: string;\r\n public readonly schemaKey: SchemaKey;\r\n constructor(schemaKey: SchemaKey) {\r\n this.name = schemaKey.name;\r\n this.schemaKey = schemaKey;\r\n }\r\n}\r\n\r\n/**\r\n * An ISchemItemIdentifier implementation to identify SchemaItems\r\n * @alpha\r\n */\r\nexport class SchemaItemId implements ISchemaItemIdentifier {\r\n public readonly typeIdentifier: AnySchemaItemTypeIdentifier;\r\n public readonly name: string;\r\n public readonly schemaKey: SchemaKey;\r\n public readonly schemaItemType: SchemaItemType;\r\n public readonly schemaItemKey: SchemaItemKey;\r\n\r\n constructor(schemaItemType: SchemaItemType, schemaItemKeyOrName: SchemaItemKey | string, schemaKey?: SchemaKey) {\r\n if (typeof(schemaItemKeyOrName) === \"string\") {\r\n if (!schemaKey)\r\n throw new Error(\"schemaKey if required if the specified schemaItem the name of the schema item.\");\r\n\r\n this.schemaKey = schemaKey!;\r\n this.schemaItemKey = new SchemaItemKey(schemaItemKeyOrName, schemaKey);\r\n } else {\r\n this.schemaKey = schemaItemKeyOrName.schemaKey;\r\n this.schemaItemKey = schemaItemKeyOrName;\r\n }\r\n\r\n this.schemaItemType = schemaItemType;\r\n this.name = this.schemaItemKey.fullName;\r\n this.typeIdentifier = SchemaTypeIdentifiers.SchemaItemIdentifier;\r\n }\r\n}\r\n\r\n/**\r\n * An IClassIdentifier implementation to identify Class instances.\r\n * @alpha\r\n */\r\nexport class ClassId extends SchemaItemId implements IClassIdentifier {\r\n public override readonly typeIdentifier = SchemaTypeIdentifiers.ClassIdentifier;\r\n public override readonly schemaItemType: ECClassSchemaItems;\r\n constructor(schemaItemType: ECClassSchemaItems, schemaItemKeyOrName: SchemaItemKey | string, schemaKey?: SchemaKey) {\r\n super(schemaItemType, schemaItemKeyOrName, schemaKey);\r\n this.schemaItemType = schemaItemType;\r\n }\r\n}\r\n\r\n/**\r\n * An IPropertyIdentifier implementation to identify Property instances.\r\n * @alpha\r\n */\r\nexport class PropertyId implements IPropertyIdentifier {\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.PropertyIdentifier;\r\n public readonly name: string;\r\n public readonly fullName: string;\r\n public readonly ecClass: ClassId;\r\n public readonly schemaKey: SchemaKey;\r\n public readonly typeName?: PropertyTypeName;\r\n\r\n constructor(schemaItemType: ECClassSchemaItems, classKey: SchemaItemKey, property: Property | string, typeName?: PropertyTypeName) {\r\n this.name = property instanceof Property ? property.name : property;\r\n this.fullName = property instanceof Property ? property.fullName : `${classKey.name}.${property}`;\r\n this.ecClass = new ClassId(schemaItemType, classKey);\r\n this.schemaKey = classKey.schemaKey;\r\n this.typeName = typeName;\r\n }\r\n}\r\n\r\n/**\r\n * An IEnumeratorIdentifier implementation to identify Enumerator instances.\r\n * @alpha\r\n */\r\nexport class EnumeratorId implements IEnumeratorIdentifier{\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.EnumeratorIdentifier;\r\n public readonly enumeration: SchemaItemKey;\r\n public readonly enumerationType: string;\r\n public readonly enumeratorType: string;\r\n public readonly name: string;\r\n public readonly schemaKey: SchemaKey;\r\n\r\n constructor(enumerator: AnyEnumerator | string, enumeration: Enumeration) {\r\n this.enumeration = enumeration.key;\r\n this.enumerationType = enumeration.type ? primitiveTypeToString(enumeration.type): \"string\";\r\n this.enumeratorType = getEnumeratorType(enumeration ?? PrimitiveType.String, enumerator);\r\n this.name = typeof(enumerator) === \"string\" ? enumerator : enumerator.name;\r\n this.schemaKey = enumeration.schema.schemaKey;\r\n }\r\n}\r\n\r\n/**\r\n * An ICustomAttributeIdentifier implementation to identify CustomAttribute instances.\r\n * @alpha\r\n */\r\nexport class CustomAttributeId implements ICustomAttributeIdentifier {\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.CustomAttributeIdentifier;\r\n public readonly name: string;\r\n public readonly schemaKey: SchemaKey;\r\n public readonly containerFullName: string;\r\n constructor(name: string, container: CustomAttributeContainerProps) {\r\n this.name = name;\r\n this.schemaKey = container.schema.schemaKey;\r\n this.containerFullName = container.fullName;\r\n }\r\n}\r\n\r\n/**\r\n * An IRelationshipConstraintIdentifier implementation to identify RelationshipConstraints.\r\n * @alpha\r\n */\r\nexport class RelationshipConstraintId implements IRelationshipConstraintIdentifier {\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.RelationshipConstraintIdentifier;\r\n public readonly name: string;\r\n public readonly relationshipKey: SchemaItemKey;\r\n public readonly schemaKey: SchemaKey;\r\n constructor(constraint: RelationshipConstraint) {\r\n this.name = constraint.isSource ? \"Source\" : \"Target\";\r\n this.relationshipKey = constraint.relationshipClass.key;\r\n this.schemaKey = this.relationshipKey.schemaKey;\r\n }\r\n}\r\n\r\n/**\r\n * An exception class for the ecschema-editing API. Contains identifiers for schema types involved in the\r\n * exception. An example being SchemaItemId which contains the name of the SchemaItem, SchemaItemKey, SchemaItemType, etc.\r\n * Typically will contain an innerError of type SchemaEditingError containing the identifier of the schema item that\r\n * caused the exception. The containing error instance will identify the method called (identified by the errorNumber)\r\n * and the identifier of the schema item being modified/created.\r\n * @alpha\r\n */\r\nexport class SchemaEditingError extends Error {\r\n private _ruleViolations?: AnyDiagnostic[];\r\n private _schemaKey: SchemaKey;\r\n\r\n /**\r\n * Constructs a new SchemaEditingError instance.\r\n * @param errorNumber The unique ECEditingStatus code identifying the error.\r\n * @param identifier The identifier instance containing information about the EC object involved with the exception.\r\n * @param innerError The SchemaEditingError containing the identifier of the EC object that caused the initial exception.\r\n * @param ruleViolations Will contain EC rule violations of type [[AnyDiagnostic]] for exceptions with the error code ECEditingStatus.RuleViolation.\r\n * @param message Optional error message. Most messages on automatically generated by this class based on the ECEditingStatus code.\r\n */\r\n public constructor(public readonly errorNumber: ECEditingStatus, public readonly identifier: AnyIdentifier, public readonly innerError?: AnyEditingError, ruleViolations?: AnyDiagnostic[], message?: string) {\r\n super(message);\r\n this._ruleViolations = ruleViolations;\r\n this._schemaKey = identifier.schemaKey,\r\n this.generateMessage();\r\n }\r\n\r\n /**\r\n * Gets the SchemaId instance.\r\n * @throws Error if the identifier is not an instance of SchemaId.\r\n */\r\n private get _schemaId(): SchemaId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.SchemaIdentifier)\r\n throw new Error(\"identifier is not a SchemaId.\");\r\n return this.identifier as SchemaId;\r\n }\r\n\r\n /**\r\n * Gets the SchemaItemId instance.\r\n * @throws Error if the identifier is not an instance of SchemaItemId.\r\n */\r\n private get _schemaItemId(): SchemaItemId {\r\n if (this.isSchemaItemIdentifier(this.identifier))\r\n throw new Error(\"identifier is not a SchemaItemId.\");\r\n return this.identifier as SchemaItemId;\r\n }\r\n\r\n /**\r\n * Gets the ClassId instance.\r\n * @throws Error if the identifier is not an instance of ClassId.\r\n */\r\n private get _classId(): ClassId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.ClassIdentifier)\r\n throw new Error(\"identifier is not a ClassId.\");\r\n return this.identifier as ClassId;\r\n }\r\n\r\n /**\r\n * Gets the PropertyId instance.\r\n * @throws Error if the identifier is not an instance of PropertyId.\r\n */\r\n private get _propertyId(): PropertyId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.PropertyIdentifier)\r\n throw new Error(\"identifier is not a PropertyId.\");\r\n return this.identifier;\r\n }\r\n\r\n /**\r\n * Gets the EnumeratorId instance.\r\n * @throws Error if the identifier is not an instance of EnumeratorId.\r\n */\r\n private get _enumeratorId(): EnumeratorId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.EnumeratorIdentifier)\r\n throw new Error(\"identifier is not a EnumerationId.\");\r\n return this.identifier as EnumeratorId;\r\n }\r\n\r\n /**\r\n * Gets the CustomAttributeId instance.\r\n * @throws Error if the identifier is not an instance of CustomAttributeId.\r\n */\r\n private get _customAttributeId(): CustomAttributeId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.CustomAttributeIdentifier)\r\n throw new Error(\"identifier is not a CustomAttributeId.\");\r\n return this.identifier;\r\n }\r\n\r\n /**\r\n * Gets the RelationshipConstraintId instance.\r\n * @throws Error if the identifier is not an instance of RelationshipConstraintId.\r\n */\r\n private get _relationshipConstraintId(): RelationshipConstraintId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.RelationshipConstraintIdentifier)\r\n throw new Error(\"identifier is not a RelationshipConstraintId.\");\r\n return this.identifier;\r\n }\r\n\r\n /** Gets rule violations that were reported during validation. Returns an array of [[AnyDiagnostic]] if\r\n * the errorNumber is ECEditingStatus.RuleViolation, otherwise undefined.\r\n */\r\n public get ruleViolations(): AnyDiagnostic[] | undefined {\r\n return this._ruleViolations;\r\n }\r\n\r\n /**\r\n * Returns a readable string containing the ECEditingStatus along with the error message. Any\r\n * innerError will also be appended.\r\n * @returns\r\n */\r\n public toDebugString(): string {\r\n let innerMessage = \"\";\r\n if (this.innerError) {\r\n if (this.innerError instanceof SchemaEditingError)\r\n innerMessage = ` Inner error: ${this.innerError.toDebugString()}`;\r\n else\r\n innerMessage = ` Inner error: ${this.innerError.message}`;\r\n }\r\n return this._appendMessage(`ECEditingStatus.${ECEditingStatus[this.errorNumber]}`) + innerMessage;\r\n }\r\n\r\n private generateMessage() {\r\n if (this.message)\r\n return;\r\n\r\n switch(this.errorNumber) {\r\n case ECEditingStatus.SchemaNotFound:\r\n this.message = `Schema Key ${this._schemaKey.toString(true)} could not be found in the context.`;\r\n return;\r\n case ECEditingStatus.SchemaItemNotFound:\r\n this.message = `${this._schemaItemId.schemaItemType} ${this._schemaItemId.name} could not be found in the schema ${this._schemaKey.name}.`;\r\n return;\r\n case ECEditingStatus.SchemaItemNotFoundInContext:\r\n this.message = `${this._schemaItemId.schemaItemType} ${this._schemaItemId.name} could not be found in the schema context.`;\r\n return;\r\n case ECEditingStatus.InvalidSchemaItemType:\r\n this.message = `Expected ${this._schemaItemId.name} to be of type ${this._schemaItemId.schemaItemType}.`;\r\n return;\r\n case ECEditingStatus.SchemaItemNameNotSpecified:\r\n this.message = `Could not create a new ${this._schemaItemId.schemaItemType} in schema ${this._schemaKey.name}. No name was supplied within props.`;\r\n return;\r\n case ECEditingStatus.SchemaItemNameAlreadyExists:\r\n this.message = `${this._schemaItemId.schemaItemType} ${this._schemaItemId.name} already exists in the schema ${this._schemaKey.name}.`;\r\n return;\r\n case ECEditingStatus.RuleViolation:\r\n this.message = this._getRuleViolationMessage();\r\n return;\r\n case ECEditingStatus.PropertyNotFound:\r\n this.message = `An ECProperty with the name ${this._propertyId.name} could not be found in the class ${this._propertyId.ecClass.name}.`;\r\n return;\r\n case ECEditingStatus.PropertyAlreadyExists:\r\n this.message = `An ECProperty with the name ${this._propertyId.name} already exists in the class ${this._propertyId.ecClass.name}.`;\r\n return;\r\n case ECEditingStatus.InvalidPropertyType:\r\n this.message = `Expected property ${this._propertyId.name} to be of type ${this._propertyId.typeName}.`;\r\n return;\r\n case ECEditingStatus.BaseClassIsNotElement:\r\n this.message = `Expected base class ${this._schemaItemId.name} to derive from BisCore.Element.`;\r\n return;\r\n case ECEditingStatus.BaseClassIsNotElementUniqueAspect:\r\n this.message = `Expected base class ${this._schemaItemId.name} to derive from BisCore.ElementUniqueAspect.`;\r\n return;\r\n case ECEditingStatus.BaseClassIsNotElementMultiAspect:\r\n this.message = `Expected base class ${this._schemaItemId.name} to derive from BisCore.ElementMultiAspect.`;\r\n return;\r\n case ECEditingStatus.InvalidFormatUnitsSpecified:\r\n this.message = `The specified Format unit ${this._schemaItemId.name} is not of type Unit or InvertedUnit`;\r\n return;\r\n case ECEditingStatus.InvalidEnumeratorType:\r\n this.message = `The Enumeration ${this._enumeratorId.enumeration.fullName} has type ${this._enumeratorId.enumerationType}, while Enumerator ${this._enumeratorId.name} has type ${this._enumeratorId.enumeratorType}.`;\r\n return;\r\n case ECEditingStatus.EnumeratorDoesNotExist:\r\n this.message = `Enumerator ${this._enumeratorId.name} does not exists in Enumeration ${this._enumeratorId.enumeration.name}.`;\r\n return;\r\n case ECEditingStatus.InvalidECName:\r\n this.message = `Could not rename class ${this._schemaItemId.name} because the specified name is not a valid ECName.`;\r\n return;\r\n default:\r\n this.message = this._createTaskErrorMessage();\r\n }\r\n }\r\n\r\n private _appendMessage(e: string) {\r\n return this.message ? `${e}: ${this.message}` : e;\r\n }\r\n\r\n private _getRuleViolationMessage(): string {\r\n if (!this._ruleViolations)\r\n return \"\";\r\n\r\n let violations = \"\";\r\n for (const diagnostic of this._ruleViolations) {\r\n violations += `${diagnostic.code}: ${diagnostic.messageText}\\r\\n`;\r\n }\r\n\r\n switch (this.identifier.typeIdentifier) {\r\n case SchemaTypeIdentifiers.SchemaIdentifier:\r\n return `Rule violations occurred from Schema ${this._schemaId.name}: ${violations}`;\r\n case SchemaTypeIdentifiers.SchemaItemIdentifier:\r\n return `Rule violations occurred from ${this._schemaItemId.schemaItemType} ${this._schemaItemId.name}: ${violations}`;\r\n case SchemaTypeIdentifiers.ClassIdentifier:\r\n return `Rule violations occurred from ${this._schemaItemId.schemaItemType} ${this._schemaItemId.name}: ${violations}`;\r\n case SchemaTypeIdentifiers.CustomAttributeIdentifier:\r\n return `Rule violations occurred from CustomAttribute ${this._customAttributeId.name}, container ${this._customAttributeId.containerFullName}: ${violations}`;\r\n case SchemaTypeIdentifiers.RelationshipConstraintIdentifier:\r\n return `Rule violations occurred from ${this._relationshipConstraintId.name} constraint of RelationshipClass ${this._relationshipConstraintId.relationshipKey.fullName}: ${violations}`;\r\n default:\r\n throw new Error (\"Invalid identifier.\");\r\n }\r\n }\r\n\r\n private _createTaskErrorMessage() {\r\n // Make sure we have an inner error or else it is not a task error\r\n if (!this.innerError)\r\n return \"\";\r\n\r\n switch (this.identifier.typeIdentifier) {\r\n case SchemaTypeIdentifiers.SchemaIdentifier:\r\n case SchemaTypeIdentifiers.SchemaItemIdentifier:\r\n case SchemaTypeIdentifiers.ClassIdentifier:\r\n case SchemaTypeIdentifiers.RelationshipConstraintIdentifier:\r\n return `While performing task '${ECEditingStatus[this.errorNumber]}' an error occurred editing ${this.identifier.typeIdentifier} ${this.identifier.name}.`;\r\n case SchemaTypeIdentifiers.PropertyIdentifier:\r\n return `While performing task '${ECEditingStatus[this.errorNumber]}' an error occurred editing ${this.identifier.typeIdentifier} ${this.identifier.fullName}.`;\r\n default:\r\n throw new Error (\"Invalid identifier.\");\r\n }\r\n }\r\n\r\n private isSchemaItemIdentifier(identifier: AnyIdentifier) {\r\n if (identifier.typeIdentifier !== SchemaTypeIdentifiers.SchemaItemIdentifier &&\r\n identifier.typeIdentifier !== SchemaTypeIdentifiers.ClassIdentifier)\r\n return true;\r\n\r\n return false;\r\n }\r\n}\r\n\r\nfunction getEnumeratorType(enumeration: Enumeration, enumerator: AnyEnumerator | string) {\r\n if (typeof(enumerator) === \"string\") {\r\n return enumeration.type ? primitiveTypeToString(enumeration.type) : \"string\";\r\n }\r\n\r\n return typeof(enumerator.value) === \"string\" ? \"string\" : \"int\";\r\n}\r\n"]}
1
+ {"version":3,"file":"Exception.js","sourceRoot":"","sources":["../../../src/Editing/Exception.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Editing\r\n */\r\n\r\nimport { AnyDiagnostic } from \"../Validation/Diagnostic\";\r\nimport { AnyEnumerator, CustomAttributeContainerProps, Enumeration, PrimitiveType, primitiveTypeToString, Property, RelationshipConstraint, SchemaItemKey, SchemaItemType, SchemaKey } from \"@itwin/ecschema-metadata\";\r\n\r\n/** @alpha */\r\nexport enum ECEditingStatus {\r\n EC_EDITING_ERROR_BASE = 0x30000,\r\n Unknown = 0,\r\n RuleViolation = EC_EDITING_ERROR_BASE + 1,\r\n SchemaNotFound,\r\n SchemaItemNotFound,\r\n SchemaItemNotFoundInContext,\r\n PropertyAlreadyExists,\r\n PropertyNotFound,\r\n InvalidPropertyType,\r\n BaseClassIsNotElement,\r\n BaseClassIsNotElementUniqueAspect,\r\n BaseClassIsNotElementMultiAspect,\r\n SchemaItemNameNotSpecified,\r\n InvalidSchemaItemType,\r\n SchemaItemNameAlreadyExists,\r\n InvalidEnumeratorType,\r\n InvalidBaseClass,\r\n EnumeratorDoesNotExist,\r\n InvalidECName,\r\n InvalidFormatUnitsSpecified,\r\n // Outer Errors\r\n CreateSchemaItemFailed,\r\n CreateSchemaItemFromProps,\r\n CreateElement,\r\n CreateElementUniqueAspect,\r\n CreateElementMultiAspect,\r\n SetBaseClass,\r\n SetSourceConstraint,\r\n SetTargetConstraint,\r\n AddConstraintClass,\r\n RemoveConstraintClass,\r\n SetAbstractConstraint,\r\n AddCustomAttributeToConstraint,\r\n AddCustomAttributeToProperty,\r\n AddCustomAttributeToClass,\r\n CreateNavigationProperty,\r\n CreateNavigationPropertyFromProps,\r\n SetInvertsUnit,\r\n SetUnitSystem,\r\n SetDescription,\r\n SetLabel,\r\n SetIsReadOnly,\r\n SetPriority,\r\n SetCategory,\r\n SetKindOfQuantity,\r\n SetMinOccurs,\r\n SetMaxOccurs,\r\n SetExtendedTypeName,\r\n SetMinLength,\r\n SetMaxLength,\r\n SetMinValue,\r\n SetMaxValue,\r\n SetPropertyName,\r\n AddMixin,\r\n AddEnumerator,\r\n SetEnumeratorLabel,\r\n SetEnumeratorDescription,\r\n AddPresentationUnit,\r\n AddPresentationOverride,\r\n CreateFormatOverride,\r\n SetPropertyCategoryPriority,\r\n CreatePrimitiveProperty,\r\n CreatePrimitivePropertyFromProps,\r\n CreateEnumerationProperty,\r\n CreateEnumerationPropertyFromProps,\r\n CreatePrimitiveArrayProperty,\r\n CreatePrimitiveArrayPropertyFromProps,\r\n CreateEnumerationArrayProperty,\r\n CreateEnumerationArrayPropertyFromProps,\r\n CreateStructProperty,\r\n CreateStructPropertyFromProps,\r\n CreateStructArrayProperty,\r\n CreateStructArrayPropertyFromProps,\r\n DeleteProperty,\r\n DeleteClass,\r\n SetClassName,\r\n AddSchemaReference,\r\n SetSchemaVersion,\r\n IncrementSchemaMinorVersion,\r\n}\r\n\r\n/**\r\n * A type that constrains the possible error types handled by SchemaEditingError\r\n * @alpha\r\n */\r\nexport type AnyEditingError = SchemaEditingError | Error;\r\n\r\n/**\r\n * Defines the possible property type names.\r\n * @alpha\r\n */\r\nexport enum PropertyTypeName {\r\n ArrayProperty = \"ArrayProperty\",\r\n PrimitiveProperty = \"PrimitiveProperty\",\r\n EnumerationProperty = \"EnumerationProperty\",\r\n NavigationProperty = \"NavigationProperty\",\r\n StructProperty = \"StructProperty\"\r\n}\r\n\r\n/**\r\n * Defines the possible schema type identifiers.\r\n * @alpha\r\n */\r\nexport enum SchemaTypeIdentifiers {\r\n SchemaIdentifier = \"Schema\",\r\n SchemaItemIdentifier = \"SchemaItem\",\r\n ClassIdentifier = \"Class\",\r\n PropertyIdentifier = \"Property\",\r\n EnumeratorIdentifier = \"Enumerator\",\r\n CustomAttributeIdentifier = \"CustomAttribute\",\r\n RelationshipConstraintIdentifier = \"RelationshipConstraint\"\r\n}\r\n\r\n/**\r\n * Type that constrains SchemaItemType enum to those used by EC Class types.\r\n * @alpha\r\n */\r\nexport type ECClassSchemaItems = SchemaItemType.EntityClass | SchemaItemType.StructClass | SchemaItemType.RelationshipClass | SchemaItemType.Mixin | SchemaItemType.CustomAttributeClass;\r\n\r\n/**\r\n * Type that defines the possible SchemaTypeIdentifiers for SchemaItemId classes.\r\n * @alpha\r\n */\r\nexport type AnySchemaItemTypeIdentifier = SchemaTypeIdentifiers.SchemaItemIdentifier | SchemaTypeIdentifiers.ClassIdentifier;\r\n\r\n/**\r\n * Type that encompasses all ISchemaTypeIdentifier interfaces\r\n * @alpha\r\n */\r\nexport type AnyIdentifier = ISchemaIdentifier | ISchemaItemIdentifier | IClassIdentifier | IPropertyIdentifier | ICustomAttributeIdentifier | IRelationshipConstraintIdentifier | IEnumeratorIdentifier;\r\n\r\n/**\r\n * A base interface that defines what is needed to identity any schema type.\r\n * @alpha\r\n */\r\nexport interface ISchemaTypeIdentifier {\r\n readonly name: string;\r\n readonly schemaKey: SchemaKey;\r\n readonly typeIdentifier: SchemaTypeIdentifiers;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify a Schema.\r\n * @alpha\r\n */\r\nexport interface ISchemaIdentifier extends ISchemaTypeIdentifier {\r\n readonly typeIdentifier: SchemaTypeIdentifiers.SchemaIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify a SchemaItem.\r\n * @alpha\r\n */\r\nexport interface ISchemaItemIdentifier extends ISchemaTypeIdentifier {\r\n readonly schemaItemType: SchemaItemType;\r\n readonly schemaItemKey: SchemaItemKey;\r\n readonly typeIdentifier: AnySchemaItemTypeIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify an EC Class.\r\n * @alpha\r\n */\r\nexport interface IClassIdentifier extends ISchemaTypeIdentifier {\r\n readonly schemaItemType: ECClassSchemaItems;\r\n readonly schemaItemKey: SchemaItemKey;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.ClassIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify an EC Property.\r\n * @alpha\r\n */\r\nexport interface IPropertyIdentifier extends ISchemaTypeIdentifier {\r\n readonly fullName: string;\r\n readonly ecClass: ClassId;\r\n readonly typeName?: PropertyTypeName;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.PropertyIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify an Enumerator.\r\n * @alpha\r\n */\r\ninterface IEnumeratorIdentifier extends ISchemaTypeIdentifier {\r\n readonly enumeratorType: string;\r\n readonly enumeration: SchemaItemKey;\r\n readonly enumerationType: string;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.EnumeratorIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify a CustomAttribute.\r\n * @alpha\r\n */\r\nexport interface ICustomAttributeIdentifier extends ISchemaTypeIdentifier {\r\n readonly containerFullName: string;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.CustomAttributeIdentifier;\r\n}\r\n\r\n/**\r\n * Interface that defines the data needed to identify a RelationshipConstraint.\r\n * @alpha\r\n */\r\nexport interface IRelationshipConstraintIdentifier extends ISchemaTypeIdentifier {\r\n readonly relationshipKey: SchemaItemKey;\r\n readonly typeIdentifier: SchemaTypeIdentifiers.RelationshipConstraintIdentifier;\r\n}\r\n\r\n/**\r\n * An ISchemaIdentifier implementation to identify Schemas\r\n * @alpha\r\n */\r\nexport class SchemaId implements ISchemaIdentifier {\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.SchemaIdentifier;\r\n public readonly name: string;\r\n public readonly schemaKey: SchemaKey;\r\n constructor(schemaKey: SchemaKey) {\r\n this.name = schemaKey.name;\r\n this.schemaKey = schemaKey;\r\n }\r\n}\r\n\r\n/**\r\n * An ISchemItemIdentifier implementation to identify SchemaItems\r\n * @alpha\r\n */\r\nexport class SchemaItemId implements ISchemaItemIdentifier {\r\n public readonly typeIdentifier: AnySchemaItemTypeIdentifier;\r\n public readonly name: string;\r\n public readonly schemaKey: SchemaKey;\r\n public readonly schemaItemType: SchemaItemType;\r\n public readonly schemaItemKey: SchemaItemKey;\r\n\r\n constructor(schemaItemType: SchemaItemType, schemaItemKeyOrName: SchemaItemKey | string, schemaKey?: SchemaKey) {\r\n if (typeof(schemaItemKeyOrName) === \"string\") {\r\n if (!schemaKey)\r\n throw new Error(\"schemaKey if required if the specified schemaItem the name of the schema item.\");\r\n\r\n this.schemaKey = schemaKey!;\r\n this.schemaItemKey = new SchemaItemKey(schemaItemKeyOrName, schemaKey);\r\n } else {\r\n this.schemaKey = schemaItemKeyOrName.schemaKey;\r\n this.schemaItemKey = schemaItemKeyOrName;\r\n }\r\n\r\n this.schemaItemType = schemaItemType;\r\n this.name = this.schemaItemKey.fullName;\r\n this.typeIdentifier = SchemaTypeIdentifiers.SchemaItemIdentifier;\r\n }\r\n}\r\n\r\n/**\r\n * An IClassIdentifier implementation to identify Class instances.\r\n * @alpha\r\n */\r\nexport class ClassId extends SchemaItemId implements IClassIdentifier {\r\n public override readonly typeIdentifier = SchemaTypeIdentifiers.ClassIdentifier;\r\n public override readonly schemaItemType: ECClassSchemaItems;\r\n constructor(schemaItemType: ECClassSchemaItems, schemaItemKeyOrName: SchemaItemKey | string, schemaKey?: SchemaKey) {\r\n super(schemaItemType, schemaItemKeyOrName, schemaKey);\r\n this.schemaItemType = schemaItemType;\r\n }\r\n}\r\n\r\n/**\r\n * An IPropertyIdentifier implementation to identify Property instances.\r\n * @alpha\r\n */\r\nexport class PropertyId implements IPropertyIdentifier {\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.PropertyIdentifier;\r\n public readonly name: string;\r\n public readonly fullName: string;\r\n public readonly ecClass: ClassId;\r\n public readonly schemaKey: SchemaKey;\r\n public readonly typeName?: PropertyTypeName;\r\n\r\n constructor(schemaItemType: ECClassSchemaItems, classKey: SchemaItemKey, property: Property | string, typeName?: PropertyTypeName) {\r\n this.name = property instanceof Property ? property.name : property;\r\n this.fullName = property instanceof Property ? property.fullName : `${classKey.name}.${property}`;\r\n this.ecClass = new ClassId(schemaItemType, classKey);\r\n this.schemaKey = classKey.schemaKey;\r\n this.typeName = typeName;\r\n }\r\n}\r\n\r\n/**\r\n * An IEnumeratorIdentifier implementation to identify Enumerator instances.\r\n * @alpha\r\n */\r\nexport class EnumeratorId implements IEnumeratorIdentifier{\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.EnumeratorIdentifier;\r\n public readonly enumeration: SchemaItemKey;\r\n public readonly enumerationType: string;\r\n public readonly enumeratorType: string;\r\n public readonly name: string;\r\n public readonly schemaKey: SchemaKey;\r\n\r\n constructor(enumerator: AnyEnumerator | string, enumeration: Enumeration) {\r\n this.enumeration = enumeration.key;\r\n this.enumerationType = enumeration.type ? primitiveTypeToString(enumeration.type): \"string\";\r\n this.enumeratorType = getEnumeratorType(enumeration ?? PrimitiveType.String, enumerator);\r\n this.name = typeof(enumerator) === \"string\" ? enumerator : enumerator.name;\r\n this.schemaKey = enumeration.schema.schemaKey;\r\n }\r\n}\r\n\r\n/**\r\n * An ICustomAttributeIdentifier implementation to identify CustomAttribute instances.\r\n * @alpha\r\n */\r\nexport class CustomAttributeId implements ICustomAttributeIdentifier {\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.CustomAttributeIdentifier;\r\n public readonly name: string;\r\n public readonly schemaKey: SchemaKey;\r\n public readonly containerFullName: string;\r\n constructor(name: string, container: CustomAttributeContainerProps) {\r\n this.name = name;\r\n this.schemaKey = container.schema.schemaKey;\r\n this.containerFullName = container.fullName;\r\n }\r\n}\r\n\r\n/**\r\n * An IRelationshipConstraintIdentifier implementation to identify RelationshipConstraints.\r\n * @alpha\r\n */\r\nexport class RelationshipConstraintId implements IRelationshipConstraintIdentifier {\r\n public readonly typeIdentifier = SchemaTypeIdentifiers.RelationshipConstraintIdentifier;\r\n public readonly name: string;\r\n public readonly relationshipKey: SchemaItemKey;\r\n public readonly schemaKey: SchemaKey;\r\n constructor(constraint: RelationshipConstraint) {\r\n this.name = constraint.isSource ? \"Source\" : \"Target\";\r\n this.relationshipKey = constraint.relationshipClass.key;\r\n this.schemaKey = this.relationshipKey.schemaKey;\r\n }\r\n}\r\n\r\n/**\r\n * An exception class for the ecschema-editing API. Contains identifiers for schema types involved in the\r\n * exception. An example being SchemaItemId which contains the name of the SchemaItem, SchemaItemKey, SchemaItemType, etc.\r\n * Typically will contain an innerError of type SchemaEditingError containing the identifier of the schema item that\r\n * caused the exception. The containing error instance will identify the method called (identified by the errorNumber)\r\n * and the identifier of the schema item being modified/created.\r\n * @alpha\r\n */\r\nexport class SchemaEditingError extends Error {\r\n private _ruleViolations?: AnyDiagnostic[];\r\n private _schemaKey: SchemaKey;\r\n\r\n /**\r\n * Constructs a new SchemaEditingError instance.\r\n * @param errorNumber The unique ECEditingStatus code identifying the error.\r\n * @param identifier The identifier instance containing information about the EC object involved with the exception.\r\n * @param innerError The SchemaEditingError containing the identifier of the EC object that caused the initial exception.\r\n * @param ruleViolations Will contain EC rule violations of type [[AnyDiagnostic]] for exceptions with the error code ECEditingStatus.RuleViolation.\r\n * @param message Optional error message. Most messages on automatically generated by this class based on the ECEditingStatus code.\r\n */\r\n public constructor(public readonly errorNumber: ECEditingStatus, public readonly identifier: AnyIdentifier, public readonly innerError?: AnyEditingError, ruleViolations?: AnyDiagnostic[], message?: string) {\r\n super(message);\r\n this._ruleViolations = ruleViolations;\r\n this._schemaKey = identifier.schemaKey,\r\n this.generateMessage();\r\n }\r\n\r\n /**\r\n * Gets the SchemaId instance.\r\n * @throws Error if the identifier is not an instance of SchemaId.\r\n */\r\n private get _schemaId(): SchemaId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.SchemaIdentifier)\r\n throw new Error(\"identifier is not a SchemaId.\");\r\n return this.identifier as SchemaId;\r\n }\r\n\r\n /**\r\n * Gets the SchemaItemId instance.\r\n * @throws Error if the identifier is not an instance of SchemaItemId.\r\n */\r\n private get _schemaItemId(): SchemaItemId {\r\n if (this.isSchemaItemIdentifier(this.identifier))\r\n throw new Error(\"identifier is not a SchemaItemId.\");\r\n return this.identifier as SchemaItemId;\r\n }\r\n\r\n /**\r\n * Gets the ClassId instance.\r\n * @throws Error if the identifier is not an instance of ClassId.\r\n */\r\n private get _classId(): ClassId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.ClassIdentifier)\r\n throw new Error(\"identifier is not a ClassId.\");\r\n return this.identifier as ClassId;\r\n }\r\n\r\n /**\r\n * Gets the PropertyId instance.\r\n * @throws Error if the identifier is not an instance of PropertyId.\r\n */\r\n private get _propertyId(): PropertyId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.PropertyIdentifier)\r\n throw new Error(\"identifier is not a PropertyId.\");\r\n return this.identifier;\r\n }\r\n\r\n /**\r\n * Gets the EnumeratorId instance.\r\n * @throws Error if the identifier is not an instance of EnumeratorId.\r\n */\r\n private get _enumeratorId(): EnumeratorId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.EnumeratorIdentifier)\r\n throw new Error(\"identifier is not a EnumerationId.\");\r\n return this.identifier as EnumeratorId;\r\n }\r\n\r\n /**\r\n * Gets the CustomAttributeId instance.\r\n * @throws Error if the identifier is not an instance of CustomAttributeId.\r\n */\r\n private get _customAttributeId(): CustomAttributeId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.CustomAttributeIdentifier)\r\n throw new Error(\"identifier is not a CustomAttributeId.\");\r\n return this.identifier;\r\n }\r\n\r\n /**\r\n * Gets the RelationshipConstraintId instance.\r\n * @throws Error if the identifier is not an instance of RelationshipConstraintId.\r\n */\r\n private get _relationshipConstraintId(): RelationshipConstraintId {\r\n if (this.identifier.typeIdentifier !== SchemaTypeIdentifiers.RelationshipConstraintIdentifier)\r\n throw new Error(\"identifier is not a RelationshipConstraintId.\");\r\n return this.identifier;\r\n }\r\n\r\n /** Gets rule violations that were reported during validation. Returns an array of [[AnyDiagnostic]] if\r\n * the errorNumber is ECEditingStatus.RuleViolation, otherwise undefined.\r\n */\r\n public get ruleViolations(): AnyDiagnostic[] | undefined {\r\n return this._ruleViolations;\r\n }\r\n\r\n /**\r\n * Returns a readable string containing the ECEditingStatus along with the error message. Any\r\n * innerError will also be appended.\r\n * @returns\r\n */\r\n public toDebugString(): string {\r\n let innerMessage = \"\";\r\n if (this.innerError) {\r\n if (this.innerError instanceof SchemaEditingError)\r\n innerMessage = ` Inner error: ${this.innerError.toDebugString()}`;\r\n else\r\n innerMessage = ` Inner error: ${this.innerError.message}`;\r\n }\r\n return this._appendMessage(`ECEditingStatus.${ECEditingStatus[this.errorNumber]}`) + innerMessage;\r\n }\r\n\r\n private generateMessage() {\r\n if (this.message)\r\n return;\r\n\r\n switch(this.errorNumber) {\r\n case ECEditingStatus.SchemaNotFound:\r\n this.message = `Schema Key ${this._schemaKey.toString(true)} could not be found in the context.`;\r\n return;\r\n case ECEditingStatus.SchemaItemNotFound:\r\n this.message = `${this._schemaItemId.schemaItemType} ${this._schemaItemId.name} could not be found in the schema ${this._schemaKey.name}.`;\r\n return;\r\n case ECEditingStatus.SchemaItemNotFoundInContext:\r\n this.message = `${this._schemaItemId.schemaItemType} ${this._schemaItemId.name} could not be found in the schema context.`;\r\n return;\r\n case ECEditingStatus.InvalidSchemaItemType:\r\n this.message = `Expected ${this._schemaItemId.name} to be of type ${this._schemaItemId.schemaItemType}.`;\r\n return;\r\n case ECEditingStatus.SchemaItemNameNotSpecified:\r\n this.message = `Could not create a new ${this._schemaItemId.schemaItemType} in schema ${this._schemaKey.name}. No name was supplied within props.`;\r\n return;\r\n case ECEditingStatus.SchemaItemNameAlreadyExists:\r\n this.message = `${this._schemaItemId.schemaItemType} ${this._schemaItemId.name} already exists in the schema ${this._schemaKey.name}.`;\r\n return;\r\n case ECEditingStatus.RuleViolation:\r\n this.message = this._getRuleViolationMessage();\r\n return;\r\n case ECEditingStatus.PropertyNotFound:\r\n this.message = `An ECProperty with the name ${this._propertyId.name} could not be found in the class ${this._propertyId.ecClass.name}.`;\r\n return;\r\n case ECEditingStatus.PropertyAlreadyExists:\r\n this.message = `An ECProperty with the name ${this._propertyId.name} already exists in the class ${this._propertyId.ecClass.name}.`;\r\n return;\r\n case ECEditingStatus.InvalidPropertyType:\r\n this.message = `Expected property ${this._propertyId.name} to be of type ${this._propertyId.typeName}.`;\r\n return;\r\n case ECEditingStatus.BaseClassIsNotElement:\r\n this.message = `Expected base class ${this._schemaItemId.name} to derive from BisCore.Element.`;\r\n return;\r\n case ECEditingStatus.BaseClassIsNotElementUniqueAspect:\r\n this.message = `Expected base class ${this._schemaItemId.name} to derive from BisCore.ElementUniqueAspect.`;\r\n return;\r\n case ECEditingStatus.BaseClassIsNotElementMultiAspect:\r\n this.message = `Expected base class ${this._schemaItemId.name} to derive from BisCore.ElementMultiAspect.`;\r\n return;\r\n case ECEditingStatus.InvalidFormatUnitsSpecified:\r\n this.message = `The specified Format unit ${this._schemaItemId.name} is not of type Unit or InvertedUnit`;\r\n return;\r\n case ECEditingStatus.InvalidEnumeratorType:\r\n this.message = `The Enumeration ${this._enumeratorId.enumeration.fullName} has type ${this._enumeratorId.enumerationType}, while Enumerator ${this._enumeratorId.name} has type ${this._enumeratorId.enumeratorType}.`;\r\n return;\r\n case ECEditingStatus.EnumeratorDoesNotExist:\r\n this.message = `Enumerator ${this._enumeratorId.name} does not exists in Enumeration ${this._enumeratorId.enumeration.name}.`;\r\n return;\r\n case ECEditingStatus.InvalidECName:\r\n this.message = `Could not rename class ${this._schemaItemId.name} because the specified name is not a valid ECName.`;\r\n return;\r\n default:\r\n this.message = this._createTaskErrorMessage();\r\n }\r\n }\r\n\r\n private _appendMessage(e: string) {\r\n return this.message ? `${e}: ${this.message}` : e;\r\n }\r\n\r\n private _getRuleViolationMessage(): string {\r\n if (!this._ruleViolations)\r\n return \"\";\r\n\r\n let violations = \"\";\r\n for (const diagnostic of this._ruleViolations) {\r\n violations += `${diagnostic.code}: ${diagnostic.messageText}\\r\\n`;\r\n }\r\n\r\n switch (this.identifier.typeIdentifier) {\r\n case SchemaTypeIdentifiers.SchemaIdentifier:\r\n return `Rule violations occurred from Schema ${this._schemaId.name}: ${violations}`;\r\n case SchemaTypeIdentifiers.SchemaItemIdentifier:\r\n return `Rule violations occurred from ${this._schemaItemId.schemaItemType} ${this._schemaItemId.name}: ${violations}`;\r\n case SchemaTypeIdentifiers.ClassIdentifier:\r\n return `Rule violations occurred from ${this._schemaItemId.schemaItemType} ${this._schemaItemId.name}: ${violations}`;\r\n case SchemaTypeIdentifiers.CustomAttributeIdentifier:\r\n return `Rule violations occurred from CustomAttribute ${this._customAttributeId.name}, container ${this._customAttributeId.containerFullName}: ${violations}`;\r\n case SchemaTypeIdentifiers.RelationshipConstraintIdentifier:\r\n return `Rule violations occurred from ${this._relationshipConstraintId.name} constraint of RelationshipClass ${this._relationshipConstraintId.relationshipKey.fullName}: ${violations}`;\r\n default:\r\n throw new Error (\"Invalid identifier.\");\r\n }\r\n }\r\n\r\n private _createTaskErrorMessage() {\r\n // Make sure we have an inner error or else it is not a task error\r\n if (!this.innerError)\r\n return \"\";\r\n\r\n switch (this.identifier.typeIdentifier) {\r\n case SchemaTypeIdentifiers.SchemaIdentifier:\r\n case SchemaTypeIdentifiers.SchemaItemIdentifier:\r\n case SchemaTypeIdentifiers.ClassIdentifier:\r\n case SchemaTypeIdentifiers.RelationshipConstraintIdentifier:\r\n return `While performing task '${ECEditingStatus[this.errorNumber]}' an error occurred editing ${this.identifier.typeIdentifier} ${this.identifier.name}.`;\r\n case SchemaTypeIdentifiers.PropertyIdentifier:\r\n return `While performing task '${ECEditingStatus[this.errorNumber]}' an error occurred editing ${this.identifier.typeIdentifier} ${this.identifier.fullName}.`;\r\n default:\r\n throw new Error (\"Invalid identifier.\");\r\n }\r\n }\r\n\r\n private isSchemaItemIdentifier(identifier: AnyIdentifier) {\r\n if (identifier.typeIdentifier !== SchemaTypeIdentifiers.SchemaItemIdentifier &&\r\n identifier.typeIdentifier !== SchemaTypeIdentifiers.ClassIdentifier)\r\n return true;\r\n\r\n return false;\r\n }\r\n}\r\n\r\nfunction getEnumeratorType(enumeration: Enumeration, enumerator: AnyEnumerator | string) {\r\n if (typeof(enumerator) === \"string\") {\r\n return enumeration.type ? primitiveTypeToString(enumeration.type) : \"string\";\r\n }\r\n\r\n return typeof(enumerator.value) === \"string\" ? \"string\" : \"int\";\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { CustomAttribute, ECName, LazyLoadedPropertyCategory, Property } from "@itwin/ecschema-metadata";
1
+ import { CustomAttribute, ECName, LazyLoadedKindOfQuantity, LazyLoadedPropertyCategory, Property } from "@itwin/ecschema-metadata";
2
2
  /**
3
3
  * @internal
4
4
  * An abstract class used for schema editing.
@@ -11,5 +11,6 @@ export declare abstract class MutableProperty extends Property {
11
11
  abstract setPriority(priority: number): void;
12
12
  abstract setCategory(category: LazyLoadedPropertyCategory): void;
13
13
  abstract addCustomAttribute(customAttribute: CustomAttribute): void;
14
+ abstract setKindOfQuantity(kindOfQuantity: LazyLoadedKindOfQuantity): void;
14
15
  }
15
16
  //# sourceMappingURL=MutableProperty.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MutableProperty.d.ts","sourceRoot":"","sources":["../../../../src/Editing/Mutable/MutableProperty.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzG;;;GAGG;AACH,8BAAsB,eAAgB,SAAQ,QAAQ;aAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;aAC3B,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;aACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;aAC7B,aAAa,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;aACxC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;aACnC,WAAW,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;aACvD,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CACpF"}
1
+ {"version":3,"file":"MutableProperty.d.ts","sourceRoot":"","sources":["../../../../src/Editing/Mutable/MutableProperty.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEnI;;;GAGG;AACH,8BAAsB,eAAgB,SAAQ,QAAQ;aAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;aAC3B,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;aACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;aAC7B,aAAa,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;aACxC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;aACnC,WAAW,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;aACvD,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;aAC1D,iBAAiB,CAAC,cAAc,EAAE,wBAAwB,GAAG,IAAI;CAC3F"}
@@ -1 +1 @@
1
- {"version":3,"file":"MutableProperty.js","sourceRoot":"","sources":["../../../../src/Editing/Mutable/MutableProperty.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,gEAAyG;AAEzG;;;GAGG;AACH,MAAsB,eAAgB,SAAQ,4BAAQ;CAQrD;AARD,0CAQC","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 { CustomAttribute, ECName, LazyLoadedPropertyCategory, Property } from \"@itwin/ecschema-metadata\";\r\n\r\n/**\r\n * @internal\r\n * An abstract class used for schema editing.\r\n */\r\nexport abstract class MutableProperty extends Property {\r\n public abstract override setName(name: ECName): void;\r\n public abstract override setDescription(description: string): void;\r\n public abstract override setLabel(label: string): void;\r\n public abstract override setIsReadOnly(isReadOnly: boolean): void;\r\n public abstract override setPriority(priority: number): void;\r\n public abstract override setCategory(category: LazyLoadedPropertyCategory): void;\r\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\r\n}\r\n"]}
1
+ {"version":3,"file":"MutableProperty.js","sourceRoot":"","sources":["../../../../src/Editing/Mutable/MutableProperty.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,gEAAmI;AAEnI;;;GAGG;AACH,MAAsB,eAAgB,SAAQ,4BAAQ;CASrD;AATD,0CASC","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 { CustomAttribute, ECName, LazyLoadedKindOfQuantity, LazyLoadedPropertyCategory, Property } from \"@itwin/ecschema-metadata\";\r\n\r\n/**\r\n * @internal\r\n * An abstract class used for schema editing.\r\n */\r\nexport abstract class MutableProperty extends Property {\r\n public abstract override setName(name: ECName): void;\r\n public abstract override setDescription(description: string): void;\r\n public abstract override setLabel(label: string): void;\r\n public abstract override setIsReadOnly(isReadOnly: boolean): void;\r\n public abstract override setPriority(priority: number): void;\r\n public abstract override setCategory(category: LazyLoadedPropertyCategory): void;\r\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\r\n public abstract override setKindOfQuantity(kindOfQuantity: LazyLoadedKindOfQuantity): void;\r\n}\r\n"]}
@@ -51,6 +51,13 @@ export declare class Properties {
51
51
  * @param categoryKey The SchemaItemKey of the property category.
52
52
  */
53
53
  setCategory(classKey: SchemaItemKey, propertyName: string, categoryKey: SchemaItemKey): Promise<void>;
54
+ /**
55
+ * Sets the KindOfQuantity of a property.
56
+ * @param classKey The SchemaItemKey of the class.
57
+ * @param propertyName The name of the property.
58
+ * @param kindOfQuantityKey The SchemaItemKey of the KindOfQuantity.
59
+ */
60
+ setKindOfQuantity(classKey: SchemaItemKey, propertyName: string, kindOfQuantityKey: SchemaItemKey): Promise<void>;
54
61
  /**
55
62
  * Adds a CustomAttribute instance to the Property identified by the given SchemaItemKey and property name.
56
63
  * @param classKey The SchemaItemKey identifying the class.
@@ -1 +1 @@
1
- {"version":3,"file":"Properties.d.ts","sourceRoot":"","sources":["../../../src/Editing/Properties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAEnC,aAAa,EAAkC,MAAM,0BAA0B,CAAC;AAEpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAE9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD,KAAK,mBAAmB,GAAG,eAAe,GAAG,oBAAoB,GAAG,kCAAkC,GAAG,yBAAyB,GAAG,qBAAqB,CAAC;AAE3J;;;GAGG;AACH,qBAAa,UAAU;IACF,SAAS,CAAC,WAAW,EAAE,kBAAkB;IAAE,SAAS,CAAC,aAAa,EAAE,mBAAmB;gBAA7E,WAAW,EAAE,kBAAkB,EAAY,aAAa,EAAE,mBAAmB;IAG7F,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;IA2C3F;;;;;OAKG;IACU,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAQ9F;;;;;OAKG;IACU,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAQlF;;;;;OAKG;IACU,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IAQ7F;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAQxF;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa;IAclG;;;;;OAKG;IACU,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;IAsB/G;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,6BAA6B,EAAE,eAAe,EAAE,eAAe;IAM1G;;;;OAIG;cACa,WAAW,CAAC,CAAC,SAAS,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAWvG,kBAAkB;YAclB,QAAQ;CAevB;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,UAAU;gBAC1B,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB;IAItF;;;;;OAKG;IACU,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAQ1F;;;;;OAKG;IACU,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAQ1F;;;;OAIG;cACsB,WAAW,CAAC,CAAC,SAAS,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAO/H;AAED;;;GAGG;AACH,cAAM,yBAA0B,SAAQ,UAAU;gBAC7B,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB;IAItF;;;;;OAKG;IACU,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAQxG;;;;;OAKG;IACU,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAQ1F;;;;;OAKG;IACU,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAQ1F;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAQxF;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAOzF;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,yBAAyB;gBAC7C,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB;IAItF;;;;OAIG;cACsB,WAAW,CAAC,CAAC,SAAS,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAO/H;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,yBAAyB;gBAC/C,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB;IAItF;;;;OAIG;cACsB,WAAW,CAAC,CAAC,SAAS,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAO/H;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,UAAU;gBAC/B,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB;IAItF;;;;OAIG;cACsB,WAAW,CAAC,CAAC,SAAS,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAO/H;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;gBAC3B,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB;IAItF;;;;OAIG;cACsB,WAAW,CAAC,CAAC,SAAS,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAO/H"}
1
+ {"version":3,"file":"Properties.d.ts","sourceRoot":"","sources":["../../../src/Editing/Properties.ts"],"names":[],"mappings":"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"}
@@ -117,6 +117,23 @@ class Properties {
117
117
  });
118
118
  property.setCategory(new ecschema_metadata_1.DelayedPromiseWithProps(categoryKey, async () => category));
119
119
  }
120
+ /**
121
+ * Sets the KindOfQuantity of a property.
122
+ * @param classKey The SchemaItemKey of the class.
123
+ * @param propertyName The name of the property.
124
+ * @param kindOfQuantityKey The SchemaItemKey of the KindOfQuantity.
125
+ */
126
+ async setKindOfQuantity(classKey, propertyName, kindOfQuantityKey) {
127
+ const property = await this.getProperty(classKey, propertyName)
128
+ .catch((e) => {
129
+ throw new Exception_1.SchemaEditingError(Exception_1.ECEditingStatus.SetKindOfQuantity, new Exception_1.PropertyId(this.ecClassType, classKey, propertyName), e);
130
+ });
131
+ const koq = await this._schemaEditor.lookupSchemaItem(property.class.schema, kindOfQuantityKey, ecschema_metadata_1.SchemaItemType.KindOfQuantity)
132
+ .catch((e) => {
133
+ throw new Exception_1.SchemaEditingError(Exception_1.ECEditingStatus.SetKindOfQuantity, new Exception_1.PropertyId(this.ecClassType, classKey, propertyName), e);
134
+ });
135
+ property.setKindOfQuantity(new ecschema_metadata_1.DelayedPromiseWithProps(kindOfQuantityKey, async () => koq));
136
+ }
120
137
  /**
121
138
  * Adds a CustomAttribute instance to the Property identified by the given SchemaItemKey and property name.
122
139
  * @param classKey The SchemaItemKey identifying the class.
@@ -1 +1 @@
1
- {"version":3,"file":"Properties.js","sourceRoot":"","sources":["../../../src/Editing/Properties.ts"],"names":[],"mappings":";;;AAAA,gEAEoG;AACpG,sDAA6C;AAE7C,+CAA+C;AAQ/C,2CAAsI;AAKtI;;;GAGG;AACH,MAAa,UAAU;IACrB,YAA6B,WAA+B,EAAY,aAAkC;QAA7E,gBAAW,GAAX,WAAW,CAAoB;QAAY,kBAAa,GAAb,aAAa,CAAqB;IAC1G,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAuB,EAAE,YAAoB,EAAE,eAAuB;QACzF,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,0BAAM,CAAC,eAAe,CAAC,CAAC;QACxC,CAAC;QAAC,OAAM,CAAM,EAAE,CAAC;YACf,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,eAAe,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EACpH,IAAI,8BAAkB,CAAC,2BAAe,CAAC,aAAa,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QACxH,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAkB,QAAQ,EAAE,YAAY,CAAC;aACrF,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,eAAe,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7H,CAAC,CAAC,CAAC;QAEL,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAoB,CAAC;QACxG,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,eAAe,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EACpH,IAAI,8BAAkB,CAAC,2BAAe,CAAC,qBAAqB,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9I,CAAC;QAED,yBAAyB;QACzB,MAAM,iBAAiB,GAA2B,EAAE,CAAC;QACrD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAqB,CAAC,CAAC;QAC7F,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;YAC1C,IAAI,MAAM,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,eAAe,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EACpH,IAAI,8BAAkB,CAAC,2BAAe,CAAC,qBAAqB,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;YACxI,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,YAAY,CAAoB,CAAC;YACzF,4DAA4D;YAC5D,IAAI,gBAAgB;gBAClB,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7C,CAAC;QAED,yDAAyD;QACzD,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAqB,EAAE,EAAE;YAClD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,QAAuB,EAAE,YAAoB,EAAE,WAAmB;QAC5F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAkB,QAAQ,EAAE,YAAY,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,cAAc,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5H,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,QAAQ,CAAC,QAAuB,EAAE,YAAoB,EAAE,KAAa;QAChF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAkB,QAAQ,EAAE,YAAY,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,QAAQ,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACtH,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CAAC,QAAuB,EAAE,YAAoB,EAAE,UAAmB;QAC3F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAkB,QAAQ,EAAE,YAAY,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,aAAa,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3H,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,QAAuB,EAAE,YAAoB,EAAE,QAAgB;QACtF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAkB,QAAQ,EAAE,YAAY,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,WAAW,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACzH,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,QAAuB,EAAE,YAAoB,EAAE,WAA0B;QAChG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAkB,QAAQ,EAAE,YAAY,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,WAAW,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACzH,CAAC,CAAC,CAAC;QAEL,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAmB,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,kCAAc,CAAC,gBAAgB,CAAC;aAC9I,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,WAAW,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACzH,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,WAAW,CAAC,IAAI,2CAAuB,CAAkC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAAC,QAAuB,EAAE,YAAoB,EAAE,eAAgC;QAC7G,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAkB,QAAQ,EAAE,YAAY,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,4BAA4B,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1I,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAE7C,MAAM,mBAAmB,GAAG,KAAK,CAAC,+BAA+B,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAE7F,MAAM,WAAW,GAAoB,EAAE,CAAC;QACxC,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;YACnD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YACtD,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,4BAA4B,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EACjI,IAAI,8BAAkB,CAAC,2BAAe,CAAC,aAAa,EAAE,IAAI,6BAAiB,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACO,qBAAqB,CAAC,SAAwC,EAAE,eAAgC;QACxG,IAAA,qBAAM,EAAC,SAAS,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,gBAAgD,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,WAAW,CAAgC,QAAuB,EAAE,YAAoB;QACtG,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,YAAY,CAAM,CAAC;QACnE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,gBAAgB,EAAE,IAAI,sBAAU,CAAC,YAAY,CAAC,cAAoC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5J,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,YAA0B;QACzD,MAAM,cAAc,GAAwB,EAAE,CAAC;QAE/C,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;YACjF,IAAG,2BAAO,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,MAAM,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9C,cAAc,CAAC,IAAI,CAAC,UAA0B,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,QAAuB;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,MAAM,KAAK,SAAS;YACtB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,cAAc,EAAE,IAAI,oBAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAEjG,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,OAAO,KAAK,SAAS;YACvB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,kBAAkB,EAAE,IAAI,mBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE5G,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,CAAC,WAAW,EAAC,CAAC;YAC/C,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,qBAAqB,EAAE,IAAI,mBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/G,CAAC;QAED,OAAO,OAAuB,CAAC;IACjC,CAAC;CACF;AA/MD,gCA+MC;AAED;;;;GAIG;AACH,MAAa,eAAgB,SAAQ,UAAU;IAC7C,YAAmB,WAA+B,EAAE,aAAkC;QACpF,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CAAC,QAAuB,EAAE,YAAoB,EAAE,SAAiB;QACxF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAuB,QAAQ,EAAE,YAAY,CAAC;aAClF,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,YAAY,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1H,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CAAC,QAAuB,EAAE,YAAoB,EAAE,SAAiB;QACxF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAuB,QAAQ,EAAE,YAAY,CAAC;aAClF,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,YAAY,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1H,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACgB,KAAK,CAAC,WAAW,CAAgC,QAAuB,EAAE,YAAoB;QAC/G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAuB,QAAQ,EAAE,YAAY,CAAM,CAAC;QAC5F,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAC,CAAC;YACvB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,mBAAmB,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,4BAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9J,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA7CD,0CA6CC;AAED;;;GAGG;AACH,MAAM,yBAA0B,SAAQ,UAAU;IAChD,YAAmB,WAA+B,EAAE,aAAkC;QACpF,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAAC,QAAuB,EAAE,YAAoB,EAAE,gBAAwB;QACtG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqC,QAAQ,EAAE,YAAY,CAAC;aAChG,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,mBAAmB,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACjI,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CAAC,QAAuB,EAAE,YAAoB,EAAE,SAAiB;QACxF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqC,QAAQ,EAAE,YAAY,CAAC;aAChG,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,YAAY,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1H,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CAAC,QAAuB,EAAE,YAAoB,EAAE,SAAiB;QACxF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqC,QAAQ,EAAE,YAAY,CAAC;aAChG,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,YAAY,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1H,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,QAAuB,EAAE,YAAoB,EAAE,QAAgB;QACtF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqC,QAAQ,EAAE,YAAY,CAAC;aAChG,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,WAAW,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACzH,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,QAAuB,EAAE,YAAoB,EAAE,QAAgB;QACtF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqC,QAAQ,EAAE,YAAY,CAAC;aAChG,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,WAAW,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACzH,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CACF;AAED;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,yBAAyB;IAChE,YAAmB,WAA+B,EAAE,aAAkC;QACpF,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACgB,KAAK,CAAC,WAAW,CAAgC,QAAuB,EAAE,YAAoB;QAC/G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAqC,QAAQ,EAAE,YAAY,CAAM,CAAC;QAC1G,IAAI,CAAC,CAAC,QAAQ,YAAY,qCAAiB,CAAC,EAAC,CAAC;YAC5C,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,mBAAmB,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,4BAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAClK,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAjBD,kDAiBC;AAED;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,yBAAyB;IAClE,YAAmB,WAA+B,EAAE,aAAkC;QACpF,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACgB,KAAK,CAAC,WAAW,CAAgC,QAAuB,EAAE,YAAoB;QAC/G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAqC,QAAQ,EAAE,YAAY,CAAM,CAAC;QAC1G,IAAI,CAAC,CAAC,QAAQ,YAAY,uCAAmB,CAAC,EAAC,CAAC;YAC9C,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,mBAAmB,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,4BAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACpK,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAjBD,sDAiBC;AAED;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,UAAU;IAClD,YAAmB,WAA+B,EAAE,aAAkC;QACpF,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACgB,KAAK,CAAC,WAAW,CAAgC,QAAuB,EAAE,YAAoB;QAC/G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAA4B,QAAQ,EAAE,YAAY,CAAM,CAAC;QACjG,IAAI,CAAC,CAAC,QAAQ,YAAY,sCAAkB,CAAC,EAAC,CAAC;YAC7C,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,mBAAmB,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,4BAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACnK,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAjBD,oDAiBC;AAED;;;GAGG;AACH,MAAa,gBAAiB,SAAQ,UAAU;IAC9C,YAAmB,WAA+B,EAAE,aAAkC;QACpF,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACgB,KAAK,CAAC,WAAW,CAAgC,QAAuB,EAAE,YAAoB;QAC/G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAwB,QAAQ,EAAE,YAAY,CAAM,CAAC;QAC7F,IAAI,CAAC,CAAC,QAAQ,YAAY,kCAAc,CAAC,EAAC,CAAC;YACzC,MAAM,IAAI,8BAAkB,CAAC,2BAAe,CAAC,mBAAmB,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,4BAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/J,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAjBD,4CAiBC","sourcesContent":["import { CustomAttribute, CustomAttributeContainerProps, DelayedPromiseWithProps, ECClass, ECName,\r\n EnumerationProperty, NavigationProperty, PrimitiveProperty,\r\n PropertyCategory, SchemaItemKey, SchemaItemType, StructProperty } from \"@itwin/ecschema-metadata\";\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { SchemaContextEditor } from \"./Editor\";\r\nimport * as Rules from \"../Validation/ECRules\";\r\nimport { MutableArrayProperty } from \"./Mutable/MutableArrayProperty\";\r\nimport { MutableProperty } from \"./Mutable/MutableProperty\";\r\nimport { MutablePrimitiveOrEnumPropertyBase } from \"./Mutable/MutablePrimitiveOrEnumProperty\";\r\nimport { MutableClass } from \"./Mutable/MutableClass\";\r\nimport { MutableStructProperty } from \"./Mutable/MutableStructProperty\";\r\nimport { MutableNavigationProperty } from \"./Mutable/MutableNavigationProperty\";\r\nimport { ECClassSchemaItems } from \"./ECClasses\";\r\nimport { ClassId, CustomAttributeId, ECEditingStatus, PropertyId, PropertyTypeName, SchemaEditingError, SchemaId } from \"./Exception\";\r\nimport { AnyDiagnostic } from \"../Validation/Diagnostic\";\r\n\r\ntype MutablePropertyType = MutableProperty | MutableArrayProperty | MutablePrimitiveOrEnumPropertyBase | MutableNavigationProperty | MutableStructProperty;\r\n\r\n/**\r\n * @alpha\r\n * A class allowing editing of attributes of the base Property class.\r\n */\r\nexport class Properties {\r\n public constructor(protected ecClassType: ECClassSchemaItems, protected _schemaEditor: SchemaContextEditor) {\r\n }\r\n\r\n public async setName(classKey: SchemaItemKey, propertyName: string, newPropertyName: string) {\r\n let newName: ECName;\r\n try {\r\n newName = new ECName(newPropertyName);\r\n } catch(e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.SetPropertyName, new PropertyId(this.ecClassType, classKey, propertyName),\r\n new SchemaEditingError(ECEditingStatus.InvalidECName, new PropertyId(this.ecClassType, classKey, newPropertyName)));\r\n }\r\n\r\n const existingProperty = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetPropertyName, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n const baseProperty = await existingProperty.class.getProperty(newPropertyName, true) as MutableProperty;\r\n if (baseProperty) {\r\n throw new SchemaEditingError(ECEditingStatus.SetPropertyName, new PropertyId(this.ecClassType, classKey, propertyName),\r\n new SchemaEditingError(ECEditingStatus.PropertyAlreadyExists, new PropertyId(this.ecClassType, baseProperty.class.key, newPropertyName)));\r\n }\r\n\r\n // Handle derived classes\r\n const derivedProperties: Array<MutableProperty> = [];\r\n const derivedClasses = await this.findDerivedClasses(existingProperty.class as MutableClass);\r\n for (const derivedClass of derivedClasses) {\r\n if (await derivedClass.getProperty(newPropertyName)) {\r\n throw new SchemaEditingError(ECEditingStatus.SetPropertyName, new PropertyId(this.ecClassType, classKey, propertyName),\r\n new SchemaEditingError(ECEditingStatus.PropertyAlreadyExists, new PropertyId(this.ecClassType, derivedClass.key, newPropertyName)));\r\n }\r\n\r\n const propertyOverride = await derivedClass.getProperty(propertyName) as MutableProperty;\r\n // If found the property is overridden in the derived class.\r\n if (propertyOverride)\r\n derivedProperties.push(propertyOverride);\r\n }\r\n\r\n // Re-name the overridden property in all derived classes\r\n derivedProperties.forEach((prop: MutableProperty) => {\r\n prop.setName(newName);\r\n });\r\n\r\n existingProperty.setName(newName);\r\n }\r\n\r\n /**\r\n * Sets the property description.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param description The new description to set.\r\n */\r\n public async setDescription(classKey: SchemaItemKey, propertyName: string, description: string) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetDescription, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setDescription(description);\r\n }\r\n\r\n /**\r\n * Sets the property label.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param label The new label to set.\r\n */\r\n public async setLabel(classKey: SchemaItemKey, propertyName: string, label: string) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetLabel, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setLabel(label);\r\n }\r\n\r\n /**\r\n * Sets the property isReadOnly attribute.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param isReadOnly The new isReadOnly value.\r\n */\r\n public async setIsReadOnly(classKey: SchemaItemKey, propertyName: string, isReadOnly: boolean) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetIsReadOnly, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setIsReadOnly(isReadOnly);\r\n }\r\n\r\n /**\r\n * Sets the property priority.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param priority The new priority.\r\n */\r\n public async setPriority(classKey: SchemaItemKey, propertyName: string, priority: number) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetPriority, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setPriority(priority);\r\n }\r\n\r\n /**\r\n * Sets the property category.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param categoryKey The SchemaItemKey of the property category.\r\n */\r\n public async setCategory(classKey: SchemaItemKey, propertyName: string, categoryKey: SchemaItemKey) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetCategory, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n const category = await this._schemaEditor.lookupSchemaItem<PropertyCategory>(property.class.schema, categoryKey, SchemaItemType.PropertyCategory)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetCategory, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n property.setCategory(new DelayedPromiseWithProps<SchemaItemKey, PropertyCategory>(categoryKey, async () => category));\r\n }\r\n\r\n /**\r\n * Adds a CustomAttribute instance to the Property identified by the given SchemaItemKey and property name.\r\n * @param classKey The SchemaItemKey identifying the class.\r\n * @param propertyName The name of the property.\r\n * @param customAttribute The CustomAttribute instance to add.\r\n */\r\n public async addCustomAttribute(classKey: SchemaItemKey, propertyName: string, customAttribute: CustomAttribute) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.AddCustomAttributeToProperty, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n property.addCustomAttribute(customAttribute);\r\n\r\n const diagnosticsIterable = Rules.validateCustomAttributeInstance(property, customAttribute);\r\n\r\n const diagnostics: AnyDiagnostic[] = [];\r\n for await (const diagnostic of diagnosticsIterable) {\r\n diagnostics.push(diagnostic);\r\n }\r\n\r\n if (diagnostics.length > 0) {\r\n this.removeCustomAttribute(property, customAttribute);\r\n throw new SchemaEditingError(ECEditingStatus.AddCustomAttributeToProperty, new PropertyId(this.ecClassType, classKey, propertyName),\r\n new SchemaEditingError(ECEditingStatus.RuleViolation, new CustomAttributeId(customAttribute.className, property)));\r\n }\r\n }\r\n\r\n /**\r\n * Removes a CustomAttribute from a property.\r\n * @param container\r\n * @param customAttribute\r\n */\r\n protected removeCustomAttribute(container: CustomAttributeContainerProps, customAttribute: CustomAttribute) {\r\n assert(container.customAttributes !== undefined);\r\n const map = container.customAttributes as Map<string, CustomAttribute>;\r\n map.delete(customAttribute.className);\r\n }\r\n\r\n /**\r\n * Gets the property with the specified name from the class identified by the given key.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property to retrieve.\r\n */\r\n protected async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const mutableClass = await this.getClass(classKey);\r\n\r\n const property = await mutableClass.getProperty(propertyName) as T;\r\n if (property === undefined) {\r\n throw new SchemaEditingError(ECEditingStatus.PropertyNotFound, new PropertyId(mutableClass.schemaItemType as ECClassSchemaItems, classKey, propertyName));\r\n }\r\n\r\n return property;\r\n }\r\n\r\n private async findDerivedClasses(mutableClass: MutableClass): Promise<Array<MutableClass>>{\r\n const derivedClasses: Array<MutableClass> = [];\r\n\r\n for await (const schemaItem of this._schemaEditor.schemaContext.getSchemaItems()) {\r\n if(ECClass.isECClass(schemaItem) && await schemaItem.is(mutableClass)) {\r\n if (!mutableClass.key.matches(schemaItem.key)) {\r\n derivedClasses.push(schemaItem as MutableClass);\r\n }\r\n }\r\n }\r\n\r\n return derivedClasses;\r\n }\r\n\r\n private async getClass(classKey: SchemaItemKey): Promise<MutableClass> {\r\n const schema = await this._schemaEditor.getSchema(classKey.schemaKey);\r\n if (schema === undefined)\r\n throw new SchemaEditingError(ECEditingStatus.SchemaNotFound, new SchemaId(classKey.schemaKey));\r\n\r\n const ecClass = await schema.getItem(classKey.name);\r\n if (ecClass === undefined)\r\n throw new SchemaEditingError(ECEditingStatus.SchemaItemNotFound, new ClassId(this.ecClassType, classKey));\r\n\r\n if (ecClass.schemaItemType !== this.ecClassType){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidSchemaItemType, new ClassId(this.ecClassType, classKey));\r\n }\r\n\r\n return ecClass as MutableClass;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of attributes of PrimitiveArrayProperty,\r\n * EnumerationArrayProperty and StructArrayProperty.\r\n */\r\nexport class ArrayProperties extends Properties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Sets the array property minOccurs attribute.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param minOccurs The new minOccurs value.\r\n */\r\n public async setMinOccurs(classKey: SchemaItemKey, propertyName: string, minOccurs: number) {\r\n const property = await this.getProperty<MutableArrayProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMinOccurs, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMinOccurs(minOccurs);\r\n }\r\n\r\n /**\r\n * Sets the array property maxOccurs attribute.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param maxOccurs The new maxOccurs value.\r\n */\r\n public async setMaxOccurs(classKey: SchemaItemKey, propertyName: string, maxOccurs: number) {\r\n const property = await this.getProperty<MutableArrayProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMaxOccurs, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMaxOccurs(maxOccurs);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is an ArrayProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutableArrayProperty>(classKey, propertyName) as T;\r\n if (!property.isArray()){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.ArrayProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of attributes of PrimitiveProperty and EnumerationProperty.\r\n */\r\nclass PrimitiveOrEnumProperties extends Properties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Sets the extendTypeName attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param extendTypeName The extended type name of the property.\r\n */\r\n public async setExtendedTypeName(classKey: SchemaItemKey, propertyName: string, extendedTypeName: string) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetExtendedTypeName, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setExtendedTypeName(extendedTypeName);\r\n }\r\n\r\n /**\r\n * Sets the minLength attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param minLength The minimum length of the property.\r\n */\r\n public async setMinLength(classKey: SchemaItemKey, propertyName: string, minLength: number) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMinLength, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMinLength(minLength);\r\n }\r\n\r\n /**\r\n * Sets the maxLength attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param maxLength The maximum length of the property.\r\n */\r\n public async setMaxLength(classKey: SchemaItemKey, propertyName: string, maxLength: number) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMaxLength, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMaxLength(maxLength);\r\n }\r\n\r\n /**\r\n * Sets the minValue attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param minValue The minimum value of the property.\r\n */\r\n public async setMinValue(classKey: SchemaItemKey, propertyName: string, minValue: number) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMinValue, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMinValue(minValue);\r\n }\r\n\r\n /**\r\n * Sets the maxValue attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param maxValue The maximum value of the property.\r\n */\r\n public async setMaxValue(classKey: SchemaItemKey, propertyName: string, maxValue: number) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMaxValue, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMaxValue(maxValue);\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of PrimitiveProperty attributes.\r\n */\r\nexport class PrimitiveProperties extends PrimitiveOrEnumProperties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is a PrimitiveProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName) as T;\r\n if (!(property instanceof PrimitiveProperty)){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.PrimitiveProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of EnumerationProperty attributes.\r\n */\r\nexport class EnumerationProperties extends PrimitiveOrEnumProperties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is a EnumerationProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName) as T;\r\n if (!(property instanceof EnumerationProperty)){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.EnumerationProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of NavigationProperties attributes.\r\n */\r\nexport class NavigationProperties extends Properties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is a NavigationProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutableNavigationProperty>(classKey, propertyName) as T;\r\n if (!(property instanceof NavigationProperty)){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.NavigationProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of StructProperty attributes.\r\n */\r\nexport class StructProperties extends Properties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is a StructProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutableStructProperty>(classKey, propertyName) as T;\r\n if (!(property instanceof StructProperty)){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.StructProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"Properties.js","sourceRoot":"","sources":["../../../src/Editing/Properties.ts"],"names":[],"mappings":"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","sourcesContent":["import { CustomAttribute, CustomAttributeContainerProps, DelayedPromiseWithProps, ECClass, ECName,\r\n EnumerationProperty, KindOfQuantity, NavigationProperty, PrimitiveProperty,\r\n PropertyCategory, SchemaItemKey, SchemaItemType, StructProperty } from \"@itwin/ecschema-metadata\";\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { SchemaContextEditor } from \"./Editor\";\r\nimport * as Rules from \"../Validation/ECRules\";\r\nimport { MutableArrayProperty } from \"./Mutable/MutableArrayProperty\";\r\nimport { MutableProperty } from \"./Mutable/MutableProperty\";\r\nimport { MutablePrimitiveOrEnumPropertyBase } from \"./Mutable/MutablePrimitiveOrEnumProperty\";\r\nimport { MutableClass } from \"./Mutable/MutableClass\";\r\nimport { MutableStructProperty } from \"./Mutable/MutableStructProperty\";\r\nimport { MutableNavigationProperty } from \"./Mutable/MutableNavigationProperty\";\r\nimport { ECClassSchemaItems } from \"./ECClasses\";\r\nimport { ClassId, CustomAttributeId, ECEditingStatus, PropertyId, PropertyTypeName, SchemaEditingError, SchemaId } from \"./Exception\";\r\nimport { AnyDiagnostic } from \"../Validation/Diagnostic\";\r\n\r\ntype MutablePropertyType = MutableProperty | MutableArrayProperty | MutablePrimitiveOrEnumPropertyBase | MutableNavigationProperty | MutableStructProperty;\r\n\r\n/**\r\n * @alpha\r\n * A class allowing editing of attributes of the base Property class.\r\n */\r\nexport class Properties {\r\n public constructor(protected ecClassType: ECClassSchemaItems, protected _schemaEditor: SchemaContextEditor) {\r\n }\r\n\r\n public async setName(classKey: SchemaItemKey, propertyName: string, newPropertyName: string) {\r\n let newName: ECName;\r\n try {\r\n newName = new ECName(newPropertyName);\r\n } catch(e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.SetPropertyName, new PropertyId(this.ecClassType, classKey, propertyName),\r\n new SchemaEditingError(ECEditingStatus.InvalidECName, new PropertyId(this.ecClassType, classKey, newPropertyName)));\r\n }\r\n\r\n const existingProperty = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetPropertyName, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n const baseProperty = await existingProperty.class.getProperty(newPropertyName, true) as MutableProperty;\r\n if (baseProperty) {\r\n throw new SchemaEditingError(ECEditingStatus.SetPropertyName, new PropertyId(this.ecClassType, classKey, propertyName),\r\n new SchemaEditingError(ECEditingStatus.PropertyAlreadyExists, new PropertyId(this.ecClassType, baseProperty.class.key, newPropertyName)));\r\n }\r\n\r\n // Handle derived classes\r\n const derivedProperties: Array<MutableProperty> = [];\r\n const derivedClasses = await this.findDerivedClasses(existingProperty.class as MutableClass);\r\n for (const derivedClass of derivedClasses) {\r\n if (await derivedClass.getProperty(newPropertyName)) {\r\n throw new SchemaEditingError(ECEditingStatus.SetPropertyName, new PropertyId(this.ecClassType, classKey, propertyName),\r\n new SchemaEditingError(ECEditingStatus.PropertyAlreadyExists, new PropertyId(this.ecClassType, derivedClass.key, newPropertyName)));\r\n }\r\n\r\n const propertyOverride = await derivedClass.getProperty(propertyName) as MutableProperty;\r\n // If found the property is overridden in the derived class.\r\n if (propertyOverride)\r\n derivedProperties.push(propertyOverride);\r\n }\r\n\r\n // Re-name the overridden property in all derived classes\r\n derivedProperties.forEach((prop: MutableProperty) => {\r\n prop.setName(newName);\r\n });\r\n\r\n existingProperty.setName(newName);\r\n }\r\n\r\n /**\r\n * Sets the property description.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param description The new description to set.\r\n */\r\n public async setDescription(classKey: SchemaItemKey, propertyName: string, description: string) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetDescription, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setDescription(description);\r\n }\r\n\r\n /**\r\n * Sets the property label.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param label The new label to set.\r\n */\r\n public async setLabel(classKey: SchemaItemKey, propertyName: string, label: string) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetLabel, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setLabel(label);\r\n }\r\n\r\n /**\r\n * Sets the property isReadOnly attribute.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param isReadOnly The new isReadOnly value.\r\n */\r\n public async setIsReadOnly(classKey: SchemaItemKey, propertyName: string, isReadOnly: boolean) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetIsReadOnly, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setIsReadOnly(isReadOnly);\r\n }\r\n\r\n /**\r\n * Sets the property priority.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param priority The new priority.\r\n */\r\n public async setPriority(classKey: SchemaItemKey, propertyName: string, priority: number) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetPriority, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setPriority(priority);\r\n }\r\n\r\n /**\r\n * Sets the property category.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param categoryKey The SchemaItemKey of the property category.\r\n */\r\n public async setCategory(classKey: SchemaItemKey, propertyName: string, categoryKey: SchemaItemKey) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetCategory, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n const category = await this._schemaEditor.lookupSchemaItem<PropertyCategory>(property.class.schema, categoryKey, SchemaItemType.PropertyCategory)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetCategory, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n property.setCategory(new DelayedPromiseWithProps<SchemaItemKey, PropertyCategory>(categoryKey, async () => category));\r\n }\r\n\r\n /**\r\n * Sets the KindOfQuantity of a property.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param kindOfQuantityKey The SchemaItemKey of the KindOfQuantity.\r\n */\r\n public async setKindOfQuantity(classKey: SchemaItemKey, propertyName: string, kindOfQuantityKey: SchemaItemKey) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetKindOfQuantity, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n const koq = await this._schemaEditor.lookupSchemaItem<KindOfQuantity>(property.class.schema, kindOfQuantityKey, SchemaItemType.KindOfQuantity)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetKindOfQuantity, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n property.setKindOfQuantity(new DelayedPromiseWithProps<SchemaItemKey, KindOfQuantity>(kindOfQuantityKey, async () => koq));\r\n }\r\n\r\n /**\r\n * Adds a CustomAttribute instance to the Property identified by the given SchemaItemKey and property name.\r\n * @param classKey The SchemaItemKey identifying the class.\r\n * @param propertyName The name of the property.\r\n * @param customAttribute The CustomAttribute instance to add.\r\n */\r\n public async addCustomAttribute(classKey: SchemaItemKey, propertyName: string, customAttribute: CustomAttribute) {\r\n const property = await this.getProperty<MutableProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.AddCustomAttributeToProperty, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n\r\n property.addCustomAttribute(customAttribute);\r\n\r\n const diagnosticsIterable = Rules.validateCustomAttributeInstance(property, customAttribute);\r\n\r\n const diagnostics: AnyDiagnostic[] = [];\r\n for await (const diagnostic of diagnosticsIterable) {\r\n diagnostics.push(diagnostic);\r\n }\r\n\r\n if (diagnostics.length > 0) {\r\n this.removeCustomAttribute(property, customAttribute);\r\n throw new SchemaEditingError(ECEditingStatus.AddCustomAttributeToProperty, new PropertyId(this.ecClassType, classKey, propertyName),\r\n new SchemaEditingError(ECEditingStatus.RuleViolation, new CustomAttributeId(customAttribute.className, property)));\r\n }\r\n }\r\n\r\n /**\r\n * Removes a CustomAttribute from a property.\r\n * @param container\r\n * @param customAttribute\r\n */\r\n protected removeCustomAttribute(container: CustomAttributeContainerProps, customAttribute: CustomAttribute) {\r\n assert(container.customAttributes !== undefined);\r\n const map = container.customAttributes as Map<string, CustomAttribute>;\r\n map.delete(customAttribute.className);\r\n }\r\n\r\n /**\r\n * Gets the property with the specified name from the class identified by the given key.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property to retrieve.\r\n */\r\n protected async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const mutableClass = await this.getClass(classKey);\r\n\r\n const property = await mutableClass.getProperty(propertyName) as T;\r\n if (property === undefined) {\r\n throw new SchemaEditingError(ECEditingStatus.PropertyNotFound, new PropertyId(mutableClass.schemaItemType as ECClassSchemaItems, classKey, propertyName));\r\n }\r\n\r\n return property;\r\n }\r\n\r\n private async findDerivedClasses(mutableClass: MutableClass): Promise<Array<MutableClass>>{\r\n const derivedClasses: Array<MutableClass> = [];\r\n\r\n for await (const schemaItem of this._schemaEditor.schemaContext.getSchemaItems()) {\r\n if(ECClass.isECClass(schemaItem) && await schemaItem.is(mutableClass)) {\r\n if (!mutableClass.key.matches(schemaItem.key)) {\r\n derivedClasses.push(schemaItem as MutableClass);\r\n }\r\n }\r\n }\r\n\r\n return derivedClasses;\r\n }\r\n\r\n private async getClass(classKey: SchemaItemKey): Promise<MutableClass> {\r\n const schema = await this._schemaEditor.getSchema(classKey.schemaKey);\r\n if (schema === undefined)\r\n throw new SchemaEditingError(ECEditingStatus.SchemaNotFound, new SchemaId(classKey.schemaKey));\r\n\r\n const ecClass = await schema.getItem(classKey.name);\r\n if (ecClass === undefined)\r\n throw new SchemaEditingError(ECEditingStatus.SchemaItemNotFound, new ClassId(this.ecClassType, classKey));\r\n\r\n if (ecClass.schemaItemType !== this.ecClassType){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidSchemaItemType, new ClassId(this.ecClassType, classKey));\r\n }\r\n\r\n return ecClass as MutableClass;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of attributes of PrimitiveArrayProperty,\r\n * EnumerationArrayProperty and StructArrayProperty.\r\n */\r\nexport class ArrayProperties extends Properties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Sets the array property minOccurs attribute.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param minOccurs The new minOccurs value.\r\n */\r\n public async setMinOccurs(classKey: SchemaItemKey, propertyName: string, minOccurs: number) {\r\n const property = await this.getProperty<MutableArrayProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMinOccurs, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMinOccurs(minOccurs);\r\n }\r\n\r\n /**\r\n * Sets the array property maxOccurs attribute.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param maxOccurs The new maxOccurs value.\r\n */\r\n public async setMaxOccurs(classKey: SchemaItemKey, propertyName: string, maxOccurs: number) {\r\n const property = await this.getProperty<MutableArrayProperty>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMaxOccurs, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMaxOccurs(maxOccurs);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is an ArrayProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutableArrayProperty>(classKey, propertyName) as T;\r\n if (!property.isArray()){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.ArrayProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of attributes of PrimitiveProperty and EnumerationProperty.\r\n */\r\nclass PrimitiveOrEnumProperties extends Properties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Sets the extendTypeName attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param extendTypeName The extended type name of the property.\r\n */\r\n public async setExtendedTypeName(classKey: SchemaItemKey, propertyName: string, extendedTypeName: string) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetExtendedTypeName, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setExtendedTypeName(extendedTypeName);\r\n }\r\n\r\n /**\r\n * Sets the minLength attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param minLength The minimum length of the property.\r\n */\r\n public async setMinLength(classKey: SchemaItemKey, propertyName: string, minLength: number) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMinLength, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMinLength(minLength);\r\n }\r\n\r\n /**\r\n * Sets the maxLength attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param maxLength The maximum length of the property.\r\n */\r\n public async setMaxLength(classKey: SchemaItemKey, propertyName: string, maxLength: number) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMaxLength, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMaxLength(maxLength);\r\n }\r\n\r\n /**\r\n * Sets the minValue attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param minValue The minimum value of the property.\r\n */\r\n public async setMinValue(classKey: SchemaItemKey, propertyName: string, minValue: number) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMinValue, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMinValue(minValue);\r\n }\r\n\r\n /**\r\n * Sets the maxValue attribute value.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n * @param maxValue The maximum value of the property.\r\n */\r\n public async setMaxValue(classKey: SchemaItemKey, propertyName: string, maxValue: number) {\r\n const property = await this.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName)\r\n .catch((e: any) => {\r\n throw new SchemaEditingError(ECEditingStatus.SetMaxValue, new PropertyId(this.ecClassType, classKey, propertyName), e);\r\n });\r\n property.setMaxValue(maxValue);\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of PrimitiveProperty attributes.\r\n */\r\nexport class PrimitiveProperties extends PrimitiveOrEnumProperties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is a PrimitiveProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName) as T;\r\n if (!(property instanceof PrimitiveProperty)){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.PrimitiveProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of EnumerationProperty attributes.\r\n */\r\nexport class EnumerationProperties extends PrimitiveOrEnumProperties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is a EnumerationProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutablePrimitiveOrEnumPropertyBase>(classKey, propertyName) as T;\r\n if (!(property instanceof EnumerationProperty)){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.EnumerationProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of NavigationProperties attributes.\r\n */\r\nexport class NavigationProperties extends Properties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is a NavigationProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutableNavigationProperty>(classKey, propertyName) as T;\r\n if (!(property instanceof NavigationProperty)){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.NavigationProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n * A class extending Properties allowing editing of StructProperty attributes.\r\n */\r\nexport class StructProperties extends Properties {\r\n public constructor(ecClassType: ECClassSchemaItems, _schemaEditor: SchemaContextEditor) {\r\n super(ecClassType, _schemaEditor);\r\n }\r\n\r\n /**\r\n * Override to validate that the found property is a StructProperty.\r\n * @param classKey The SchemaItemKey of the class.\r\n * @param propertyName The name of the property.\r\n */\r\n protected override async getProperty<T extends MutablePropertyType>(classKey: SchemaItemKey, propertyName: string): Promise<T> {\r\n const property = await super.getProperty<MutableStructProperty>(classKey, propertyName) as T;\r\n if (!(property instanceof StructProperty)){\r\n throw new SchemaEditingError(ECEditingStatus.InvalidPropertyType, new PropertyId(this.ecClassType, classKey, propertyName, PropertyTypeName.StructProperty));\r\n }\r\n return property;\r\n }\r\n}\r\n\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/ecschema-editing",
3
- "version": "4.9.0-dev.11",
3
+ "version": "4.9.0-dev.13",
4
4
  "description": "ECSchema editing and validation API",
5
5
  "license": "MIT",
6
6
  "main": "lib/cjs/ecschema-editing.js",
@@ -42,16 +42,16 @@
42
42
  "rimraf": "^3.0.2",
43
43
  "sinon": "^17.0.1",
44
44
  "typescript": "~5.3.3",
45
- "@itwin/build-tools": "4.9.0-dev.11",
46
- "@itwin/core-bentley": "4.9.0-dev.11",
47
- "@itwin/core-quantity": "4.9.0-dev.11",
48
- "@itwin/core-common": "4.9.0-dev.11",
49
- "@itwin/ecschema-metadata": "4.9.0-dev.11"
45
+ "@itwin/core-bentley": "4.9.0-dev.13",
46
+ "@itwin/build-tools": "4.9.0-dev.13",
47
+ "@itwin/core-common": "4.9.0-dev.13",
48
+ "@itwin/core-quantity": "4.9.0-dev.13",
49
+ "@itwin/ecschema-metadata": "4.9.0-dev.13"
50
50
  },
51
51
  "peerDependencies": {
52
- "@itwin/core-bentley": "^4.9.0-dev.11",
53
- "@itwin/core-quantity": "^4.9.0-dev.11",
54
- "@itwin/ecschema-metadata": "^4.9.0-dev.11"
52
+ "@itwin/core-bentley": "^4.9.0-dev.13",
53
+ "@itwin/core-quantity": "^4.9.0-dev.13",
54
+ "@itwin/ecschema-metadata": "^4.9.0-dev.13"
55
55
  },
56
56
  "nyc": {
57
57
  "extends": "./node_modules/@itwin/build-tools/.nycrc"