@itwin/ecschema-editing 4.8.0-dev.37 → 4.8.0-dev.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/Differencing/SchemaConflicts.d.ts +2 -0
  3. package/lib/cjs/Differencing/SchemaConflicts.d.ts.map +1 -1
  4. package/lib/cjs/Differencing/SchemaConflicts.js.map +1 -1
  5. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.d.ts.map +1 -1
  6. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.js +2 -0
  7. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.js.map +1 -1
  8. package/lib/cjs/Differencing/Utils.d.ts +11 -1
  9. package/lib/cjs/Differencing/Utils.d.ts.map +1 -1
  10. package/lib/cjs/Differencing/Utils.js +21 -1
  11. package/lib/cjs/Differencing/Utils.js.map +1 -1
  12. package/lib/cjs/Merging/Edits/RenameEditHandler.d.ts +14 -0
  13. package/lib/cjs/Merging/Edits/RenameEditHandler.d.ts.map +1 -0
  14. package/lib/cjs/Merging/Edits/RenameEditHandler.js +344 -0
  15. package/lib/cjs/Merging/Edits/RenameEditHandler.js.map +1 -0
  16. package/lib/cjs/Merging/Edits/SchemaEdits.d.ts +78 -0
  17. package/lib/cjs/Merging/Edits/SchemaEdits.d.ts.map +1 -0
  18. package/lib/cjs/Merging/Edits/SchemaEdits.js +111 -0
  19. package/lib/cjs/Merging/Edits/SchemaEdits.js.map +1 -0
  20. package/lib/cjs/Merging/Edits/SkipEditHandler.d.ts +14 -0
  21. package/lib/cjs/Merging/Edits/SkipEditHandler.d.ts.map +1 -0
  22. package/lib/cjs/Merging/Edits/SkipEditHandler.js +60 -0
  23. package/lib/cjs/Merging/Edits/SkipEditHandler.js.map +1 -0
  24. package/lib/cjs/Merging/SchemaMerger.d.ts +9 -12
  25. package/lib/cjs/Merging/SchemaMerger.d.ts.map +1 -1
  26. package/lib/cjs/Merging/SchemaMerger.js +40 -37
  27. package/lib/cjs/Merging/SchemaMerger.js.map +1 -1
  28. package/lib/cjs/ecschema-editing.d.ts +1 -0
  29. package/lib/cjs/ecschema-editing.d.ts.map +1 -1
  30. package/lib/cjs/ecschema-editing.js +1 -0
  31. package/lib/cjs/ecschema-editing.js.map +1 -1
  32. package/package.json +9 -9
package/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Change Log - @itwin/ecschema-editing
2
2
 
3
- This log was last generated on Fri, 19 Jul 2024 14:54:06 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 31 Jul 2024 13:39:32 GMT and should not be manually modified.
4
+
5
+ ## 4.7.8
6
+ Wed, 31 Jul 2024 13:38:04 GMT
7
+
8
+ _Version update only_
4
9
 
5
10
  ## 4.7.7
6
11
  Fri, 19 Jul 2024 14:52:42 GMT
@@ -72,5 +72,7 @@ export interface SchemaDifferenceConflict {
72
72
  readonly source: unknown;
73
73
  /** The value in the target schema. */
74
74
  readonly target: unknown;
75
+ /** The conflicting difference */
76
+ readonly difference?: unknown;
75
77
  }
76
78
  //# sourceMappingURL=SchemaConflicts.d.ts.map
@@ -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;CAC1B"}
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 +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":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Differencing\n */\n\nimport type { SchemaType } from \"./SchemaDifference\";\n\n/**\n * The unique conflicts codes for Schema differencing.\n *\n * To provide meaning to code values, with anticipation\n * of future rules for all current EC Types, the following\n * value ranges should be used:\n *\n * - Schema: 000-099\n * - Class: 100-199\n * - Constant: 200-299\n * - CustomAttribute 300-399\n * - CustomAttributeClass: 400-499\n * - CustomAttributeContainer: 500-599\n * - EntityClass: 600-699\n * - Enumeration: 700-799\n * - Format: 800-899\n * - InvertedUnit: 900-999\n * - KindOfQuantity: 1000-1099\n * - Mixin: 1100-1199\n * - Phenomenon: 1200-1299\n * - Property: 1300-1399\n * - PropertyCategory: 1400-1499\n * - RelationshipClass: 1500-1599\n * - RelationshipConstraint: 1600-1699\n * - StructClass: 1700-1799\n * - Unit: 1800-1899\n * - UnitSystem: 1900-1999\n *\n * @alpha\n */\nexport enum ConflictCode {\n\n ConflictingItemName = \"C-001\",\n ConflictingReferenceAlias = \"C-002\",\n\n ConflictingBaseClass = \"C-100\",\n RemovingBaseClass = \"C-101\",\n SealedBaseClass = \"C-102\",\n\n ConflictingEnumerationType = \"C-700\",\n ConflictingEnumeratorValue = \"C-701\",\n\n MixinAppliedMustDeriveFromConstraint = \"C-1100\",\n\n ConflictingPropertyName = \"C-1300\",\n\n AbstractConstraintMustNarrowBaseConstraints = \"C-1500\",\n DerivedConstraintsMustNarrowBaseConstraints = \"C-1501\",\n ConstraintClassesDeriveFromAbstractConstraint = \"C-1502\",\n}\n\n/**\n * Defines the interface for a conflict during Schema Differencing. Conflicts were discovered\n * while comparing the changed elements. Conflicts in the whole schema context are not found\n * on that level.\n *\n * @alpha\n */\nexport interface SchemaDifferenceConflict {\n /**\n * The name of the schema type which is \"Schema\" for a conflict on the schema, on schema items\n * or objects that are related to schema items (properties, relationship constraints) it is the\n * name of the related schema item.\n */\n readonly schemaType: SchemaType;\n\n /** The name of the schema item the conflict appears on. */\n readonly itemName?: string;\n\n /** Optional path what on the item was conflicting. */\n readonly path?: string;\n\n /** The unique conflicting code. */\n readonly code: ConflictCode;\n\n /** A description of the conflict. */\n readonly description: string;\n\n /** The value in the source schema. */\n readonly source: unknown;\n\n /** The value in the target schema. */\n readonly target: unknown;\n}\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,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":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Differencing\n */\n\nimport type { SchemaType } from \"./SchemaDifference\";\n\n/**\n * The unique conflicts codes for Schema differencing.\n *\n * To provide meaning to code values, with anticipation\n * of future rules for all current EC Types, the following\n * value ranges should be used:\n *\n * - Schema: 000-099\n * - Class: 100-199\n * - Constant: 200-299\n * - CustomAttribute 300-399\n * - CustomAttributeClass: 400-499\n * - CustomAttributeContainer: 500-599\n * - EntityClass: 600-699\n * - Enumeration: 700-799\n * - Format: 800-899\n * - InvertedUnit: 900-999\n * - KindOfQuantity: 1000-1099\n * - Mixin: 1100-1199\n * - Phenomenon: 1200-1299\n * - Property: 1300-1399\n * - PropertyCategory: 1400-1499\n * - RelationshipClass: 1500-1599\n * - RelationshipConstraint: 1600-1699\n * - StructClass: 1700-1799\n * - Unit: 1800-1899\n * - UnitSystem: 1900-1999\n *\n * @alpha\n */\nexport enum ConflictCode {\n\n ConflictingItemName = \"C-001\",\n ConflictingReferenceAlias = \"C-002\",\n\n ConflictingBaseClass = \"C-100\",\n RemovingBaseClass = \"C-101\",\n SealedBaseClass = \"C-102\",\n\n ConflictingEnumerationType = \"C-700\",\n ConflictingEnumeratorValue = \"C-701\",\n\n MixinAppliedMustDeriveFromConstraint = \"C-1100\",\n\n ConflictingPropertyName = \"C-1300\",\n\n AbstractConstraintMustNarrowBaseConstraints = \"C-1500\",\n DerivedConstraintsMustNarrowBaseConstraints = \"C-1501\",\n ConstraintClassesDeriveFromAbstractConstraint = \"C-1502\",\n}\n\n/**\n * Defines the interface for a conflict during Schema Differencing. Conflicts were discovered\n * while comparing the changed elements. Conflicts in the whole schema context are not found\n * on that level.\n *\n * @alpha\n */\nexport interface SchemaDifferenceConflict {\n /**\n * The name of the schema type which is \"Schema\" for a conflict on the schema, on schema items\n * or objects that are related to schema items (properties, relationship constraints) it is the\n * name of the related schema item.\n */\n readonly schemaType: SchemaType;\n\n /** The name of the schema item the conflict appears on. */\n readonly itemName?: string;\n\n /** Optional path what on the item was conflicting. */\n readonly path?: string;\n\n /** The unique conflicting code. */\n readonly code: ConflictCode;\n\n /** A description of the conflict. */\n readonly description: string;\n\n /** The value in the source schema. */\n readonly source: unknown;\n\n /** The value in the target schema. */\n readonly target: unknown;\n\n /** The conflicting difference */\n readonly difference?: unknown;\n}\n"]}
@@ -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,GAAC,yBAAyB,CAAC,CAAC;IACrF,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;IAsC9B,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;IAqB9B,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;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"}
@@ -146,6 +146,7 @@ class SchemaDiagnosticVisitor {
146
146
  source: sourceValue,
147
147
  target: targetValue,
148
148
  description: "Target schema already contains a schema item with the name but different type.",
149
+ difference: schemaItem.toJSON(),
149
150
  });
150
151
  }
151
152
  if (sourceValue === undefined) {
@@ -301,6 +302,7 @@ class SchemaDiagnosticVisitor {
301
302
  source: sourceValue,
302
303
  target: targetValue,
303
304
  description: "Target class already contains a property with a different type.",
305
+ difference: ecProperty.toJSON(),
304
306
  });
305
307
  return false;
306
308
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDiagnosticVisitor.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDiagnosticVisitor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Differencing\n */\n\nimport type { AnyDiagnostic } from \"../Validation/Diagnostic\";\nimport { SchemaCompareCodes } from \"../Validation/SchemaCompareDiagnostics\";\nimport {\n AnyEnumerator, AnyPropertyProps, AnySchemaItem, CustomAttribute, ECClass, ECClassModifier,\n Enumeration, Mixin, Property, PropertyProps,\n RelationshipConstraint, RelationshipConstraintProps, Schema, SchemaItem, SchemaItemType,\n} from \"@itwin/ecschema-metadata\";\nimport {\n type AnySchemaItemDifference,\n type AnySchemaItemPathDifference,\n ClassItemDifference,\n ClassPropertyDifference,\n type CustomAttributeDifference,\n type DifferenceType,\n EntityClassMixinDifference,\n EnumeratorDifference,\n RelationshipConstraintClassDifference,\n RelationshipConstraintDifference,\n type SchemaDifference,\n SchemaOtherTypes,\n type SchemaReferenceDifference,\n type SchemaType,\n} from \"./SchemaDifference\";\nimport { ConflictCode, SchemaDifferenceConflict } from \"./SchemaConflicts\";\n\n/**\n * Recursive synchronous function to figure whether a given class derived from\n * a class with the given baseClassName.\n */\nfunction derivedFrom(ecClass: ECClass | undefined, baseClassName: string): boolean {\n if (ecClass === undefined) {\n return false;\n }\n if (ecClass && ecClass.name === baseClassName) {\n return true;\n }\n return derivedFrom(ecClass.getBaseClassSync(), baseClassName);\n}\n\n/**\n * The SchemaDiagnosticVisitor is a visitor implementation for diagnostic entries\n * from the schema comparer api. Depending on the diagnostic code, the difference\n * result is build together.\n * @internal\n */\nexport class SchemaDiagnosticVisitor {\n\n public readonly schemaDifferences: Array<SchemaDifference|SchemaReferenceDifference>;\n public readonly schemaItemDifferences: Array<AnySchemaItemDifference>;\n public readonly schemaItemPathDifferences: Array<AnySchemaItemPathDifference>;\n public readonly customAttributeDifferences: Array<CustomAttributeDifference>;\n public readonly conflicts: Array<SchemaDifferenceConflict>;\n\n constructor() {\n this.schemaDifferences = [];\n this.schemaItemDifferences = [];\n this.schemaItemPathDifferences = [];\n this.customAttributeDifferences = [];\n this.conflicts = [];\n }\n\n private addConflict(conflict: SchemaDifferenceConflict) {\n this.conflicts.push(conflict);\n }\n\n /**\n * Visitor function to process the schema change diagnostic object.\n * @internal\n */\n public visit(diagnostic: AnyDiagnostic) {\n switch (diagnostic.code) {\n case SchemaCompareCodes.SchemaDelta:\n return this.visitChangedSchemaProperties(diagnostic);\n\n case SchemaCompareCodes.SchemaReferenceMissing:\n return this.visitSchemaReference(diagnostic, \"add\");\n case SchemaCompareCodes.SchemaReferenceDelta:\n return this.visitSchemaReference(diagnostic, \"modify\");\n\n case SchemaCompareCodes.SchemaItemMissing:\n return this.visitMissingSchemaItem(diagnostic);\n\n case SchemaCompareCodes.SchemaItemDelta:\n case SchemaCompareCodes.ClassDelta:\n case SchemaCompareCodes.ConstantDelta:\n case SchemaCompareCodes.CustomAttributeClassDelta:\n case SchemaCompareCodes.FormatDelta:\n case SchemaCompareCodes.InvertedUnitDelta:\n case SchemaCompareCodes.KoqDelta:\n case SchemaCompareCodes.MixinDelta:\n case SchemaCompareCodes.PhenomenonDelta:\n case SchemaCompareCodes.PropertyCategoryDelta:\n case SchemaCompareCodes.RelationshipDelta:\n case SchemaCompareCodes.UnitDelta:\n return this.visitChangedSchemaItem(diagnostic);\n\n case SchemaCompareCodes.EnumerationDelta:\n return this.visitChangedEnumeration(diagnostic);\n\n case SchemaCompareCodes.EnumeratorDelta:\n return this.visitChangedEnumerator(diagnostic);\n case SchemaCompareCodes.EnumeratorMissing:\n return this.visitMissingEnumerator(diagnostic);\n\n case SchemaCompareCodes.BaseClassDelta:\n return this.visitMissingBaseClass(diagnostic);\n case SchemaCompareCodes.EntityMixinMissing:\n return this.visitMissingMixinOnClass(diagnostic);\n case SchemaCompareCodes.PropertyDelta:\n return this.visitChangedProperty(diagnostic);\n case SchemaCompareCodes.PropertyMissing:\n return this.visitMissingProperty(diagnostic);\n\n case SchemaCompareCodes.RelationshipConstraintClassMissing:\n return this.visitMissingRelationshipConstraintClass(diagnostic);\n case SchemaCompareCodes.RelationshipConstraintDelta:\n return this.visitChangedRelationshipConstraint(diagnostic);\n\n case SchemaCompareCodes.CustomAttributeInstanceClassMissing:\n return this.visitMissingCustomAttributeInstance(diagnostic);\n\n // Currently not handled...\n case SchemaCompareCodes.FormatUnitMissing:\n case SchemaCompareCodes.PresentationUnitMissing:\n case SchemaCompareCodes.UnitLabelOverrideDelta:\n break;\n }\n return;\n }\n\n private visitChangedSchemaProperties(diagnostic: AnyDiagnostic) {\n let modifyEntry = this.schemaDifferences.find((entry): entry is SchemaDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Schema;\n });\n\n let hasChanges = false;\n let addEntry = false;\n if (modifyEntry === undefined) {\n addEntry = true;\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Schema,\n difference: {},\n };\n }\n\n // Only label and description are taken from the source schema. If the schema name or alias\n // differs, those are ignored for now.\n const [propertyName, propertyValue] = diagnostic.messageArgs as [string, any];\n if (propertyName === \"label\") {\n modifyEntry.difference.label = propertyValue;\n hasChanges = true;\n }\n if (propertyName === \"description\") {\n modifyEntry.difference.description = propertyValue;\n hasChanges = true;\n }\n\n if (addEntry && hasChanges) {\n this.schemaDifferences.push(modifyEntry);\n }\n }\n\n private visitMissingSchemaItem(diagnostic: AnyDiagnostic) {\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\n\n this.schemaItemDifferences.push({\n changeType: \"add\",\n schemaType: schemaItem.schemaItemType,\n itemName: schemaItem.name,\n difference: schemaItem.toJSON(),\n });\n }\n\n private visitChangedSchemaItem(diagnostic: AnyDiagnostic) {\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, unknown, unknown];\n if (propertyName === \"schemaItemType\") {\n return this.addConflict({\n code: ConflictCode.ConflictingItemName,\n schemaType: schemaItem.schemaItemType,\n itemName: schemaItem.name,\n source: sourceValue,\n target: targetValue,\n description: \"Target schema already contains a schema item with the name but different type.\",\n });\n }\n\n if (sourceValue === undefined) {\n return;\n }\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is AnySchemaItemDifference => {\n return entry.changeType === \"modify\" && entry.itemName === schemaItem.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: schemaItem.schemaItemType,\n itemName: schemaItem.name,\n difference: {},\n } as AnySchemaItemDifference;\n this.schemaItemDifferences.push(modifyEntry);\n }\n\n // TODO: Since propertyName is type of string, the compiler complains about accepting\n // an unspecific string as property indexer. Casted to any as short term fix but that\n // needs to be handled better in future.\n (modifyEntry.difference as any)[propertyName] = sourceValue;\n }\n\n private visitChangedEnumeration(diagnostic: AnyDiagnostic) {\n const enumeration = diagnostic.ecDefinition as Enumeration;\n if (this.schemaItemPathDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === enumeration.name)) {\n return;\n }\n\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, string, string];\n if (propertyName === \"type\") {\n return this.addConflict({\n code: ConflictCode.ConflictingEnumerationType,\n schemaType: SchemaItemType.Enumeration,\n itemName: enumeration.name,\n source: sourceValue,\n target: targetValue,\n description: \"Enumeration has a different primitive type.\",\n });\n }\n\n return this.visitChangedSchemaItem(diagnostic);\n }\n\n private visitMissingEnumerator(diagnostic: AnyDiagnostic) {\n const enumeration = diagnostic.ecDefinition as Enumeration;\n const [enumerator] = diagnostic.messageArgs as [AnyEnumerator];\n this.schemaItemPathDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.Enumerator,\n itemName: enumeration.name,\n path: \"$enumerators\",\n difference: enumerator,\n });\n }\n\n private lookupEnumeratorEntry(changeType: DifferenceType, item: string, enumeratorName: string) {\n return this.schemaItemPathDifferences.find((change) => {\n return change.changeType === changeType\n && change.schemaType === SchemaOtherTypes.Enumerator\n && change.itemName === item\n && change.path === \"$enumerators\"\n && change.difference.name === enumeratorName;\n });\n }\n\n private lookupConflictEntry(code: ConflictCode, schemaType: SchemaType, itemName: string, path: string) {\n return this.conflicts.find((change) => {\n return change.code === code\n && change.schemaType === schemaType\n && change.itemName === itemName\n && change.path === path;\n });\n }\n\n private visitChangedEnumerator(diagnostic: AnyDiagnostic) {\n const enumeration = diagnostic.ecDefinition as Enumeration;\n const [enumerator, propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [AnyEnumerator, keyof AnyEnumerator, any, any];\n if (this.lookupEnumeratorEntry(\"add\", enumeration.name, enumerator.name)) {\n return;\n }\n\n if (!this.validateEnumerator(enumeration, enumerator, propertyName, sourceValue, targetValue)) {\n return;\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is EnumeratorDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Enumerator && entry.itemName === enumeration.name && entry.path === enumerator.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Enumerator,\n itemName: enumeration.name,\n path: enumerator.name,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n if (sourceValue !== undefined) {\n modifyEntry.difference[propertyName] = sourceValue;\n }\n }\n\n private validateEnumerator(enumeration: Enumeration, enumerator: AnyEnumerator, propertyName: string, sourceValue: unknown, targetValue: unknown) {\n if (propertyName === \"value\") {\n this.addConflict({\n code: ConflictCode.ConflictingEnumeratorValue,\n schemaType: SchemaItemType.Enumeration,\n itemName: enumeration.name,\n path: enumerator.name,\n source: sourceValue,\n target: targetValue,\n description: \"Enumerator values must not differ.\",\n });\n return false;\n }\n\n return true;\n }\n\n private visitMissingProperty(diagnostic: AnyDiagnostic) {\n const property = diagnostic.ecDefinition as Property;\n this.schemaItemPathDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.Property,\n itemName: property.class.name,\n path: property.name,\n difference: property.toJSON() as AnyPropertyProps,\n });\n }\n\n private visitChangedProperty(diagnostic: AnyDiagnostic) {\n const property = diagnostic.ecDefinition as Property;\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [keyof PropertyProps, any, any];\n if (!this.validatePropertyChange(property, propertyName, sourceValue, targetValue)) {\n return;\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is ClassPropertyDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Property && entry.itemName === property.class.name && entry.path === property.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Property,\n itemName: property.class.name,\n path: property.name,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n if (propertyName !== \"name\" && sourceValue !== undefined) {\n modifyEntry.difference[propertyName] = sourceValue;\n }\n }\n\n private validatePropertyChange(ecProperty: Property, propertyName: string, sourceValue: unknown, targetValue: unknown): boolean {\n if (propertyName === \"type\"\n || propertyName === \"primitiveType\"\n || (propertyName === \"enumeration\" && (sourceValue === undefined || targetValue === undefined))) {\n if (!this.lookupConflictEntry(ConflictCode.ConflictingPropertyName, ecProperty.class.schemaItemType,\n ecProperty.class.name, ecProperty.name)) {\n this.addConflict({\n code: ConflictCode.ConflictingPropertyName,\n schemaType: ecProperty.class.schemaItemType,\n itemName: ecProperty.class.name,\n path: ecProperty.name,\n source: sourceValue,\n target: targetValue,\n description: \"Target class already contains a property with a different type.\",\n });\n return false;\n }\n }\n return true;\n }\n\n private visitMissingBaseClass(diagnostic: AnyDiagnostic) {\n const ecClass = diagnostic.ecDefinition as ECClass;\n const [sourceBaseClass, targetBaseClass] = diagnostic.messageArgs as [ECClass, ECClass];\n if (!this.validateBaseClassChange(ecClass, sourceBaseClass, targetBaseClass)) {\n return;\n }\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is ClassItemDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === ecClass.schemaItemType && entry.itemName === ecClass.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: ecClass.schemaItemType,\n itemName: ecClass.name,\n difference: {},\n } as ClassItemDifference;\n this.schemaItemDifferences.push(modifyEntry);\n }\n\n modifyEntry.difference.baseClass = sourceBaseClass.fullName;\n }\n\n private validateBaseClassChange(targetClass: ECClass, sourceBaseClass?: ECClass, targetBaseClass?: ECClass): boolean {\n if (sourceBaseClass === undefined) {\n this.addConflict({\n code: ConflictCode.RemovingBaseClass,\n schemaType: targetClass.schemaItemType,\n itemName: targetClass.name,\n path: \"$baseClass\",\n source: undefined,\n target: targetBaseClass?.fullName,\n description: \"BaseClass cannot be set unset if there has been a baseClass before.\",\n });\n return false;\n }\n\n if (sourceBaseClass.modifier === ECClassModifier.Sealed) {\n this.addConflict({\n code: ConflictCode.SealedBaseClass,\n schemaType: targetClass.schemaItemType,\n itemName: targetClass.name,\n path: \"$baseClass\",\n source: sourceBaseClass.fullName,\n target: targetBaseClass?.fullName,\n description: \"BaseClass is sealed.\",\n });\n return false;\n }\n\n if (targetBaseClass && !derivedFrom(sourceBaseClass, targetBaseClass.name)) {\n this.addConflict({\n code: ConflictCode.ConflictingBaseClass,\n schemaType: targetClass.schemaItemType,\n itemName: targetClass.name,\n path: \"$baseClass\",\n source: sourceBaseClass.fullName,\n target: targetBaseClass.fullName,\n description: \"BaseClass is not valid, source class must derive from target.\",\n });\n return false;\n }\n return true;\n }\n\n private visitMissingMixinOnClass(diagnostic: AnyDiagnostic) {\n const ecClass = diagnostic.ecDefinition as ECClass;\n const [mixin] = diagnostic.messageArgs as [Mixin];\n if (!this.validateMixin(ecClass, mixin)) {\n return;\n }\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is EntityClassMixinDifference => {\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.EntityClassMixin && entry.itemName === ecClass.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"add\",\n schemaType: SchemaOtherTypes.EntityClassMixin,\n itemName: ecClass.name,\n difference: [],\n };\n this.schemaItemDifferences.push(modifyEntry);\n }\n modifyEntry.difference.push(mixin.fullName);\n }\n\n private validateMixin(targetClass: ECClass, mixin: Mixin): boolean {\n if (mixin.appliesTo && !derivedFrom(targetClass, mixin.appliesTo.name)) {\n this.addConflict({\n code: ConflictCode.MixinAppliedMustDeriveFromConstraint,\n schemaType: targetClass.schemaItemType,\n itemName: targetClass.name,\n path: \"$mixins\",\n source: mixin.fullName,\n target: undefined,\n description: \"Mixin cannot applied to this class.\",\n });\n return false;\n }\n\n return true;\n }\n\n private visitMissingRelationshipConstraintClass(diagnostic: AnyDiagnostic) {\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\n const className = constraint.relationshipClass.name;\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintClassDifference => {\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraintClass, entry.itemName === className && entry.path === constraintPath;\n });\n\n if (!modifyEntry) {\n modifyEntry = {\n changeType: \"add\",\n schemaType: SchemaOtherTypes.RelationshipConstraintClass,\n itemName: className,\n path: constraintPath,\n difference: [],\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n const [constraintClass] = diagnostic.messageArgs as [ECClass];\n modifyEntry.difference.push(constraintClass.fullName);\n }\n\n private visitChangedRelationshipConstraint(diagnostic: AnyDiagnostic) {\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\n const className = constraint.relationshipClass.name;\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\n if (this.schemaItemDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === className)) {\n return;\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraint && entry.itemName === className && entry.path === constraintPath;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.RelationshipConstraint,\n itemName: className,\n path: constraintPath,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n const [propertyName, propertyValue] = diagnostic.messageArgs as [keyof RelationshipConstraintProps, any];\n if (propertyName === \"abstractConstraint\" && propertyValue !== undefined) {\n modifyEntry.difference.abstractConstraint = propertyValue;\n }\n if (propertyName === \"multiplicity\" && propertyValue !== undefined) {\n modifyEntry.difference.multiplicity = propertyValue;\n }\n if (propertyName === \"polymorphic\" && propertyValue !== undefined) {\n modifyEntry.difference.polymorphic = propertyValue;\n }\n if (propertyName === \"roleLabel\" && propertyValue !== undefined) {\n modifyEntry.difference.roleLabel = propertyValue;\n }\n }\n\n private visitSchemaReference(diagnostic: AnyDiagnostic, changeType: DifferenceType) {\n const [referencedSchema] = diagnostic.messageArgs as [Schema];\n this.schemaDifferences.push({\n changeType,\n schemaType: SchemaOtherTypes.SchemaReference,\n difference: {\n name: referencedSchema.name,\n version: referencedSchema.schemaKey.version.toString(),\n },\n });\n }\n\n private visitMissingCustomAttributeInstance(diagnostic: AnyDiagnostic) {\n const [customAttribute] = diagnostic.messageArgs as [CustomAttribute];\n const ecType = diagnostic.ecDefinition;\n if (Schema.isSchema(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"Schema\",\n difference: customAttribute,\n });\n }\n\n if (SchemaItem.isSchemaItem(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"SchemaItem\",\n itemName: ecType.name,\n difference: customAttribute,\n });\n }\n\n if (Property.isProperty(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"Property\",\n itemName: ecType.class.name,\n path: ecType.name,\n difference: customAttribute,\n });\n }\n\n if (RelationshipConstraint.isRelationshipConstraint(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"RelationshipConstraint\",\n itemName: ecType.relationshipClass.name,\n path: ecType.isSource ? \"$source\" : \"$target\",\n difference: customAttribute,\n });\n }\n return;\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaDiagnosticVisitor.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDiagnosticVisitor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Differencing\n */\n\nimport type { AnyDiagnostic } from \"../Validation/Diagnostic\";\nimport { SchemaCompareCodes } from \"../Validation/SchemaCompareDiagnostics\";\nimport {\n AnyEnumerator, AnyPropertyProps, AnySchemaItem, CustomAttribute, ECClass, ECClassModifier,\n Enumeration, Mixin, Property, PropertyProps,\n RelationshipConstraint, RelationshipConstraintProps, Schema, SchemaItem, SchemaItemType,\n} from \"@itwin/ecschema-metadata\";\nimport {\n type AnySchemaItemDifference,\n type AnySchemaItemPathDifference,\n ClassItemDifference,\n ClassPropertyDifference,\n type CustomAttributeDifference,\n type DifferenceType,\n EntityClassMixinDifference,\n EnumeratorDifference,\n RelationshipConstraintClassDifference,\n RelationshipConstraintDifference,\n type SchemaDifference,\n SchemaOtherTypes,\n type SchemaReferenceDifference,\n type SchemaType,\n} from \"./SchemaDifference\";\nimport { ConflictCode, SchemaDifferenceConflict } from \"./SchemaConflicts\";\n\n/**\n * Recursive synchronous function to figure whether a given class derived from\n * a class with the given baseClassName.\n */\nfunction derivedFrom(ecClass: ECClass | undefined, baseClassName: string): boolean {\n if (ecClass === undefined) {\n return false;\n }\n if (ecClass && ecClass.name === baseClassName) {\n return true;\n }\n return derivedFrom(ecClass.getBaseClassSync(), baseClassName);\n}\n\n/**\n * The SchemaDiagnosticVisitor is a visitor implementation for diagnostic entries\n * from the schema comparer api. Depending on the diagnostic code, the difference\n * result is build together.\n * @internal\n */\nexport class SchemaDiagnosticVisitor {\n\n public readonly schemaDifferences: Array<SchemaDifference | SchemaReferenceDifference>;\n public readonly schemaItemDifferences: Array<AnySchemaItemDifference>;\n public readonly schemaItemPathDifferences: Array<AnySchemaItemPathDifference>;\n public readonly customAttributeDifferences: Array<CustomAttributeDifference>;\n public readonly conflicts: Array<SchemaDifferenceConflict>;\n\n constructor() {\n this.schemaDifferences = [];\n this.schemaItemDifferences = [];\n this.schemaItemPathDifferences = [];\n this.customAttributeDifferences = [];\n this.conflicts = [];\n }\n\n private addConflict(conflict: SchemaDifferenceConflict) {\n this.conflicts.push(conflict);\n }\n\n /**\n * Visitor function to process the schema change diagnostic object.\n * @internal\n */\n public visit(diagnostic: AnyDiagnostic) {\n switch (diagnostic.code) {\n case SchemaCompareCodes.SchemaDelta:\n return this.visitChangedSchemaProperties(diagnostic);\n\n case SchemaCompareCodes.SchemaReferenceMissing:\n return this.visitSchemaReference(diagnostic, \"add\");\n case SchemaCompareCodes.SchemaReferenceDelta:\n return this.visitSchemaReference(diagnostic, \"modify\");\n\n case SchemaCompareCodes.SchemaItemMissing:\n return this.visitMissingSchemaItem(diagnostic);\n\n case SchemaCompareCodes.SchemaItemDelta:\n case SchemaCompareCodes.ClassDelta:\n case SchemaCompareCodes.ConstantDelta:\n case SchemaCompareCodes.CustomAttributeClassDelta:\n case SchemaCompareCodes.FormatDelta:\n case SchemaCompareCodes.InvertedUnitDelta:\n case SchemaCompareCodes.KoqDelta:\n case SchemaCompareCodes.MixinDelta:\n case SchemaCompareCodes.PhenomenonDelta:\n case SchemaCompareCodes.PropertyCategoryDelta:\n case SchemaCompareCodes.RelationshipDelta:\n case SchemaCompareCodes.UnitDelta:\n return this.visitChangedSchemaItem(diagnostic);\n\n case SchemaCompareCodes.EnumerationDelta:\n return this.visitChangedEnumeration(diagnostic);\n\n case SchemaCompareCodes.EnumeratorDelta:\n return this.visitChangedEnumerator(diagnostic);\n case SchemaCompareCodes.EnumeratorMissing:\n return this.visitMissingEnumerator(diagnostic);\n\n case SchemaCompareCodes.BaseClassDelta:\n return this.visitMissingBaseClass(diagnostic);\n case SchemaCompareCodes.EntityMixinMissing:\n return this.visitMissingMixinOnClass(diagnostic);\n case SchemaCompareCodes.PropertyDelta:\n return this.visitChangedProperty(diagnostic);\n case SchemaCompareCodes.PropertyMissing:\n return this.visitMissingProperty(diagnostic);\n\n case SchemaCompareCodes.RelationshipConstraintClassMissing:\n return this.visitMissingRelationshipConstraintClass(diagnostic);\n case SchemaCompareCodes.RelationshipConstraintDelta:\n return this.visitChangedRelationshipConstraint(diagnostic);\n\n case SchemaCompareCodes.CustomAttributeInstanceClassMissing:\n return this.visitMissingCustomAttributeInstance(diagnostic);\n\n // Currently not handled...\n case SchemaCompareCodes.FormatUnitMissing:\n case SchemaCompareCodes.PresentationUnitMissing:\n case SchemaCompareCodes.UnitLabelOverrideDelta:\n break;\n }\n return;\n }\n\n private visitChangedSchemaProperties(diagnostic: AnyDiagnostic) {\n let modifyEntry = this.schemaDifferences.find((entry): entry is SchemaDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Schema;\n });\n\n let hasChanges = false;\n let addEntry = false;\n if (modifyEntry === undefined) {\n addEntry = true;\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Schema,\n difference: {},\n };\n }\n\n // Only label and description are taken from the source schema. If the schema name or alias\n // differs, those are ignored for now.\n const [propertyName, propertyValue] = diagnostic.messageArgs as [string, any];\n if (propertyName === \"label\") {\n modifyEntry.difference.label = propertyValue;\n hasChanges = true;\n }\n if (propertyName === \"description\") {\n modifyEntry.difference.description = propertyValue;\n hasChanges = true;\n }\n\n if (addEntry && hasChanges) {\n this.schemaDifferences.push(modifyEntry);\n }\n }\n\n private visitMissingSchemaItem(diagnostic: AnyDiagnostic) {\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\n\n this.schemaItemDifferences.push({\n changeType: \"add\",\n schemaType: schemaItem.schemaItemType,\n itemName: schemaItem.name,\n difference: schemaItem.toJSON(),\n });\n }\n\n private visitChangedSchemaItem(diagnostic: AnyDiagnostic) {\n const schemaItem = diagnostic.ecDefinition as AnySchemaItem;\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, unknown, unknown];\n if (propertyName === \"schemaItemType\") {\n return this.addConflict({\n code: ConflictCode.ConflictingItemName,\n schemaType: schemaItem.schemaItemType,\n itemName: schemaItem.name,\n source: sourceValue,\n target: targetValue,\n description: \"Target schema already contains a schema item with the name but different type.\",\n difference: schemaItem.toJSON(),\n });\n }\n\n if (sourceValue === undefined) {\n return;\n }\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is AnySchemaItemDifference => {\n return entry.changeType === \"modify\" && entry.itemName === schemaItem.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: schemaItem.schemaItemType,\n itemName: schemaItem.name,\n difference: {},\n } as AnySchemaItemDifference;\n this.schemaItemDifferences.push(modifyEntry);\n }\n\n // TODO: Since propertyName is type of string, the compiler complains about accepting\n // an unspecific string as property indexer. Casted to any as short term fix but that\n // needs to be handled better in future.\n (modifyEntry.difference as any)[propertyName] = sourceValue;\n }\n\n private visitChangedEnumeration(diagnostic: AnyDiagnostic) {\n const enumeration = diagnostic.ecDefinition as Enumeration;\n if (this.schemaItemPathDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === enumeration.name)) {\n return;\n }\n\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [string, string, string];\n if (propertyName === \"type\") {\n return this.addConflict({\n code: ConflictCode.ConflictingEnumerationType,\n schemaType: SchemaItemType.Enumeration,\n itemName: enumeration.name,\n source: sourceValue,\n target: targetValue,\n description: \"Enumeration has a different primitive type.\",\n });\n }\n\n return this.visitChangedSchemaItem(diagnostic);\n }\n\n private visitMissingEnumerator(diagnostic: AnyDiagnostic) {\n const enumeration = diagnostic.ecDefinition as Enumeration;\n const [enumerator] = diagnostic.messageArgs as [AnyEnumerator];\n this.schemaItemPathDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.Enumerator,\n itemName: enumeration.name,\n path: \"$enumerators\",\n difference: enumerator,\n });\n }\n\n private lookupEnumeratorEntry(changeType: DifferenceType, item: string, enumeratorName: string) {\n return this.schemaItemPathDifferences.find((change) => {\n return change.changeType === changeType\n && change.schemaType === SchemaOtherTypes.Enumerator\n && change.itemName === item\n && change.path === \"$enumerators\"\n && change.difference.name === enumeratorName;\n });\n }\n\n private lookupConflictEntry(code: ConflictCode, schemaType: SchemaType, itemName: string, path: string) {\n return this.conflicts.find((change) => {\n return change.code === code\n && change.schemaType === schemaType\n && change.itemName === itemName\n && change.path === path;\n });\n }\n\n private visitChangedEnumerator(diagnostic: AnyDiagnostic) {\n const enumeration = diagnostic.ecDefinition as Enumeration;\n const [enumerator, propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [AnyEnumerator, keyof AnyEnumerator, any, any];\n if (this.lookupEnumeratorEntry(\"add\", enumeration.name, enumerator.name)) {\n return;\n }\n\n if (!this.validateEnumerator(enumeration, enumerator, propertyName, sourceValue, targetValue)) {\n return;\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is EnumeratorDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Enumerator && entry.itemName === enumeration.name && entry.path === enumerator.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Enumerator,\n itemName: enumeration.name,\n path: enumerator.name,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n if (sourceValue !== undefined) {\n modifyEntry.difference[propertyName] = sourceValue;\n }\n }\n\n private validateEnumerator(enumeration: Enumeration, enumerator: AnyEnumerator, propertyName: string, sourceValue: unknown, targetValue: unknown) {\n if (propertyName === \"value\") {\n this.addConflict({\n code: ConflictCode.ConflictingEnumeratorValue,\n schemaType: SchemaItemType.Enumeration,\n itemName: enumeration.name,\n path: enumerator.name,\n source: sourceValue,\n target: targetValue,\n description: \"Enumerator values must not differ.\",\n });\n return false;\n }\n\n return true;\n }\n\n private visitMissingProperty(diagnostic: AnyDiagnostic) {\n const property = diagnostic.ecDefinition as Property;\n this.schemaItemPathDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.Property,\n itemName: property.class.name,\n path: property.name,\n difference: property.toJSON() as AnyPropertyProps,\n });\n }\n\n private visitChangedProperty(diagnostic: AnyDiagnostic) {\n const property = diagnostic.ecDefinition as Property;\n const [propertyName, sourceValue, targetValue] = diagnostic.messageArgs as [keyof PropertyProps, any, any];\n if (!this.validatePropertyChange(property, propertyName, sourceValue, targetValue)) {\n return;\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is ClassPropertyDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.Property && entry.itemName === property.class.name && entry.path === property.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.Property,\n itemName: property.class.name,\n path: property.name,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n if (propertyName !== \"name\" && sourceValue !== undefined) {\n modifyEntry.difference[propertyName] = sourceValue;\n }\n }\n\n private validatePropertyChange(ecProperty: Property, propertyName: string, sourceValue: unknown, targetValue: unknown): boolean {\n if (propertyName === \"type\"\n || propertyName === \"primitiveType\"\n || (propertyName === \"enumeration\" && (sourceValue === undefined || targetValue === undefined))) {\n if (!this.lookupConflictEntry(ConflictCode.ConflictingPropertyName, ecProperty.class.schemaItemType,\n ecProperty.class.name, ecProperty.name)) {\n this.addConflict({\n code: ConflictCode.ConflictingPropertyName,\n schemaType: ecProperty.class.schemaItemType,\n itemName: ecProperty.class.name,\n path: ecProperty.name,\n source: sourceValue,\n target: targetValue,\n description: \"Target class already contains a property with a different type.\",\n difference: ecProperty.toJSON(),\n });\n return false;\n }\n }\n return true;\n }\n\n private visitMissingBaseClass(diagnostic: AnyDiagnostic) {\n const ecClass = diagnostic.ecDefinition as ECClass;\n const [sourceBaseClass, targetBaseClass] = diagnostic.messageArgs as [ECClass, ECClass];\n if (!this.validateBaseClassChange(ecClass, sourceBaseClass, targetBaseClass)) {\n return;\n }\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is ClassItemDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === ecClass.schemaItemType && entry.itemName === ecClass.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: ecClass.schemaItemType,\n itemName: ecClass.name,\n difference: {},\n } as ClassItemDifference;\n this.schemaItemDifferences.push(modifyEntry);\n }\n\n modifyEntry.difference.baseClass = sourceBaseClass.fullName;\n }\n\n private validateBaseClassChange(targetClass: ECClass, sourceBaseClass?: ECClass, targetBaseClass?: ECClass): boolean {\n if (sourceBaseClass === undefined) {\n this.addConflict({\n code: ConflictCode.RemovingBaseClass,\n schemaType: targetClass.schemaItemType,\n itemName: targetClass.name,\n path: \"$baseClass\",\n source: undefined,\n target: targetBaseClass?.fullName,\n description: \"BaseClass cannot be set unset if there has been a baseClass before.\",\n });\n return false;\n }\n\n if (sourceBaseClass.modifier === ECClassModifier.Sealed) {\n this.addConflict({\n code: ConflictCode.SealedBaseClass,\n schemaType: targetClass.schemaItemType,\n itemName: targetClass.name,\n path: \"$baseClass\",\n source: sourceBaseClass.fullName,\n target: targetBaseClass?.fullName,\n description: \"BaseClass is sealed.\",\n });\n return false;\n }\n\n if (targetBaseClass && !derivedFrom(sourceBaseClass, targetBaseClass.name)) {\n this.addConflict({\n code: ConflictCode.ConflictingBaseClass,\n schemaType: targetClass.schemaItemType,\n itemName: targetClass.name,\n path: \"$baseClass\",\n source: sourceBaseClass.fullName,\n target: targetBaseClass.fullName,\n description: \"BaseClass is not valid, source class must derive from target.\",\n });\n return false;\n }\n return true;\n }\n\n private visitMissingMixinOnClass(diagnostic: AnyDiagnostic) {\n const ecClass = diagnostic.ecDefinition as ECClass;\n const [mixin] = diagnostic.messageArgs as [Mixin];\n if (!this.validateMixin(ecClass, mixin)) {\n return;\n }\n\n let modifyEntry = this.schemaItemDifferences.find((entry): entry is EntityClassMixinDifference => {\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.EntityClassMixin && entry.itemName === ecClass.name;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"add\",\n schemaType: SchemaOtherTypes.EntityClassMixin,\n itemName: ecClass.name,\n difference: [],\n };\n this.schemaItemDifferences.push(modifyEntry);\n }\n modifyEntry.difference.push(mixin.fullName);\n }\n\n private validateMixin(targetClass: ECClass, mixin: Mixin): boolean {\n if (mixin.appliesTo && !derivedFrom(targetClass, mixin.appliesTo.name)) {\n this.addConflict({\n code: ConflictCode.MixinAppliedMustDeriveFromConstraint,\n schemaType: targetClass.schemaItemType,\n itemName: targetClass.name,\n path: \"$mixins\",\n source: mixin.fullName,\n target: undefined,\n description: \"Mixin cannot applied to this class.\",\n });\n return false;\n }\n\n return true;\n }\n\n private visitMissingRelationshipConstraintClass(diagnostic: AnyDiagnostic) {\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\n const className = constraint.relationshipClass.name;\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintClassDifference => {\n return entry.changeType === \"add\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraintClass, entry.itemName === className && entry.path === constraintPath;\n });\n\n if (!modifyEntry) {\n modifyEntry = {\n changeType: \"add\",\n schemaType: SchemaOtherTypes.RelationshipConstraintClass,\n itemName: className,\n path: constraintPath,\n difference: [],\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n const [constraintClass] = diagnostic.messageArgs as [ECClass];\n modifyEntry.difference.push(constraintClass.fullName);\n }\n\n private visitChangedRelationshipConstraint(diagnostic: AnyDiagnostic) {\n const constraint = diagnostic.ecDefinition as RelationshipConstraint;\n const className = constraint.relationshipClass.name;\n const constraintPath = constraint.isSource ? \"$source\" : \"$target\";\n if (this.schemaItemDifferences.find((entry) => entry.changeType === \"add\" && entry.itemName === className)) {\n return;\n }\n\n let modifyEntry = this.schemaItemPathDifferences.find((entry): entry is RelationshipConstraintDifference => {\n return entry.changeType === \"modify\" && entry.schemaType === SchemaOtherTypes.RelationshipConstraint && entry.itemName === className && entry.path === constraintPath;\n });\n\n if (modifyEntry === undefined) {\n modifyEntry = {\n changeType: \"modify\",\n schemaType: SchemaOtherTypes.RelationshipConstraint,\n itemName: className,\n path: constraintPath,\n difference: {},\n };\n this.schemaItemPathDifferences.push(modifyEntry);\n }\n\n const [propertyName, propertyValue] = diagnostic.messageArgs as [keyof RelationshipConstraintProps, any];\n if (propertyName === \"abstractConstraint\" && propertyValue !== undefined) {\n modifyEntry.difference.abstractConstraint = propertyValue;\n }\n if (propertyName === \"multiplicity\" && propertyValue !== undefined) {\n modifyEntry.difference.multiplicity = propertyValue;\n }\n if (propertyName === \"polymorphic\" && propertyValue !== undefined) {\n modifyEntry.difference.polymorphic = propertyValue;\n }\n if (propertyName === \"roleLabel\" && propertyValue !== undefined) {\n modifyEntry.difference.roleLabel = propertyValue;\n }\n }\n\n private visitSchemaReference(diagnostic: AnyDiagnostic, changeType: DifferenceType) {\n const [referencedSchema] = diagnostic.messageArgs as [Schema];\n this.schemaDifferences.push({\n changeType,\n schemaType: SchemaOtherTypes.SchemaReference,\n difference: {\n name: referencedSchema.name,\n version: referencedSchema.schemaKey.version.toString(),\n },\n });\n }\n\n private visitMissingCustomAttributeInstance(diagnostic: AnyDiagnostic) {\n const [customAttribute] = diagnostic.messageArgs as [CustomAttribute];\n const ecType = diagnostic.ecDefinition;\n if (Schema.isSchema(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"Schema\",\n difference: customAttribute,\n });\n }\n\n if (SchemaItem.isSchemaItem(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"SchemaItem\",\n itemName: ecType.name,\n difference: customAttribute,\n });\n }\n\n if (Property.isProperty(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"Property\",\n itemName: ecType.class.name,\n path: ecType.name,\n difference: customAttribute,\n });\n }\n\n if (RelationshipConstraint.isRelationshipConstraint(ecType)) {\n return this.customAttributeDifferences.push({\n changeType: \"add\",\n schemaType: SchemaOtherTypes.CustomAttributeInstance,\n appliedTo: \"RelationshipConstraint\",\n itemName: ecType.relationshipClass.name,\n path: ecType.isSource ? \"$source\" : \"$target\",\n difference: customAttribute,\n });\n }\n return;\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Differencing
3
3
  */
4
- import { type AnySchemaDifference, type ClassPropertyDifference, type ConstantDifference, type CustomAttributeClassDifference, type CustomAttributeDifference, type EntityClassDifference, type EntityClassMixinDifference, type EnumerationDifference, type EnumeratorDifference, type KindOfQuantityDifference, type MixinClassDifference, type PhenomenonDifference, type PropertyCategoryDifference, type RelationshipClassDifference, type RelationshipConstraintClassDifference, type RelationshipConstraintDifference, type SchemaDifference, type SchemaReferenceDifference, type StructClassDifference, type UnitSystemDifference } from "./SchemaDifference";
4
+ import { type AnySchemaDifference, type AnySchemaItemDifference, type ClassItemDifference, type ClassPropertyDifference, type ConstantDifference, type CustomAttributeClassDifference, type CustomAttributeDifference, type EntityClassDifference, type EntityClassMixinDifference, type EnumerationDifference, type EnumeratorDifference, type KindOfQuantityDifference, type MixinClassDifference, type PhenomenonDifference, type PropertyCategoryDifference, type RelationshipClassDifference, type RelationshipConstraintClassDifference, type RelationshipConstraintDifference, type SchemaDifference, type SchemaReferenceDifference, type StructClassDifference, type UnitSystemDifference } from "./SchemaDifference";
5
5
  /**
6
6
  * Indicates whether the given difference is type of ConstantDifference.
7
7
  * @alpha
@@ -97,4 +97,14 @@ export declare function isRelationshipConstraintDifference(difference: AnySchema
97
97
  * @alpha
98
98
  */
99
99
  export declare function isRelationshipConstraintClassDifference(difference: AnySchemaDifference): difference is RelationshipConstraintClassDifference;
100
+ /**
101
+ * Indicates whether the given difference is type of AnySchemaItemDifference.
102
+ * @alpha
103
+ */
104
+ export declare function isSchemaItemDifference(difference: AnySchemaDifference): difference is AnySchemaItemDifference;
105
+ /**
106
+ * Indicates whether the given difference is type of ClassItemDifference.
107
+ * @alpha
108
+ */
109
+ export declare function isClassDifference(difference: AnySchemaDifference): difference is ClassItemDifference;
100
110
  //# sourceMappingURL=Utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/Differencing/Utils.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,qCAAqC,EAC1C,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EAErB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,kBAAkB,CAEtG;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,uBAAuB,CAEhH;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,8BAA8B,CAE9H;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,yBAAyB,CAEpH;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,qBAAqB,CAE5G;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,0BAA0B,CAEtH;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,qBAAqB,CAE5G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,oBAAoB,CAE1G;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,wBAAwB,CAElH;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,oBAAoB,CAE1G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,oBAAoB,CAE1G;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,0BAA0B,CAEtH;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,gBAAgB,CAElG;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,yBAAyB,CAEpH;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,qBAAqB,CAE5G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,oBAAoB,CAE1G;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,2BAA2B,CAExH;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,gCAAgC,CAElI;AAED;;;GAGG;AACH,wBAAgB,uCAAuC,CAAC,UAAU,EAAE,mBAAmB,GAAG,UAAU,IAAI,qCAAqC,CAE5I"}
1
+ {"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/Differencing/Utils.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * @module Differencing
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.isRelationshipConstraintClassDifference = exports.isRelationshipConstraintDifference = exports.isRelationshipClassDifference = exports.isUnitSystemDifference = exports.isStructClassDifference = exports.isSchemaReferenceDifference = exports.isSchemaDifference = exports.isPropertyCategoryDifference = exports.isPhenomenonDifference = exports.isMixinClassDifference = exports.isKindOfQuantityDifference = exports.isEnumeratorDifference = exports.isEnumerationDifference = exports.isEntityClassMixinDifference = exports.isEntityClassDifference = exports.isCustomAttributeDifference = exports.isCustomAttributeClassDifference = exports.isClassPropertyDifference = exports.isConstantDifference = void 0;
10
+ exports.isClassDifference = exports.isSchemaItemDifference = exports.isRelationshipConstraintClassDifference = exports.isRelationshipConstraintDifference = exports.isRelationshipClassDifference = exports.isUnitSystemDifference = exports.isStructClassDifference = exports.isSchemaReferenceDifference = exports.isSchemaDifference = exports.isPropertyCategoryDifference = exports.isPhenomenonDifference = exports.isMixinClassDifference = exports.isKindOfQuantityDifference = exports.isEnumeratorDifference = exports.isEnumerationDifference = exports.isEntityClassMixinDifference = exports.isEntityClassDifference = exports.isCustomAttributeDifference = exports.isCustomAttributeClassDifference = exports.isClassPropertyDifference = exports.isConstantDifference = void 0;
11
11
  const ecschema_metadata_1 = require("@itwin/ecschema-metadata");
12
12
  const SchemaDifference_1 = require("./SchemaDifference");
13
13
  /**
@@ -162,4 +162,24 @@ function isRelationshipConstraintClassDifference(difference) {
162
162
  return difference.schemaType === SchemaDifference_1.SchemaOtherTypes.RelationshipConstraintClass;
163
163
  }
164
164
  exports.isRelationshipConstraintClassDifference = isRelationshipConstraintClassDifference;
165
+ /**
166
+ * Indicates whether the given difference is type of AnySchemaItemDifference.
167
+ * @alpha
168
+ */
169
+ function isSchemaItemDifference(difference) {
170
+ return difference.schemaType in ecschema_metadata_1.SchemaItemType;
171
+ }
172
+ exports.isSchemaItemDifference = isSchemaItemDifference;
173
+ /**
174
+ * Indicates whether the given difference is type of ClassItemDifference.
175
+ * @alpha
176
+ */
177
+ function isClassDifference(difference) {
178
+ return isStructClassDifference(difference)
179
+ || isCustomAttributeClassDifference(difference)
180
+ || isEntityClassDifference(difference)
181
+ || isMixinClassDifference(difference)
182
+ || isRelationshipClassDifference(difference);
183
+ }
184
+ exports.isClassDifference = isClassDifference;
165
185
  //# sourceMappingURL=Utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../src/Differencing/Utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Differencing\n */\n\nimport { SchemaItemType } from \"@itwin/ecschema-metadata\";\nimport {\n type AnySchemaDifference,\n type ClassPropertyDifference,\n type ConstantDifference,\n type CustomAttributeClassDifference,\n type CustomAttributeDifference,\n type EntityClassDifference,\n type EntityClassMixinDifference,\n type EnumerationDifference,\n type EnumeratorDifference,\n type KindOfQuantityDifference,\n type MixinClassDifference,\n type PhenomenonDifference,\n type PropertyCategoryDifference,\n type RelationshipClassDifference,\n type RelationshipConstraintClassDifference,\n type RelationshipConstraintDifference,\n type SchemaDifference,\n SchemaOtherTypes,\n type SchemaReferenceDifference,\n type StructClassDifference,\n type UnitSystemDifference,\n} from \"./SchemaDifference\";\n\n/**\n * Indicates whether the given difference is type of ConstantDifference.\n * @alpha\n */\nexport function isConstantDifference(difference: AnySchemaDifference): difference is ConstantDifference {\n return difference.schemaType === SchemaItemType.Constant;\n}\n\n/**\n * Indicates whether the given difference is type of ClassPropertyDifference.\n * @alpha\n */\nexport function isClassPropertyDifference(difference: AnySchemaDifference): difference is ClassPropertyDifference {\n return difference.schemaType === SchemaOtherTypes.Property;\n}\n\n/**\n * Indicates whether the given difference is type of CustomAttributeClassDifference.\n * @alpha\n */\nexport function isCustomAttributeClassDifference(difference: AnySchemaDifference): difference is CustomAttributeClassDifference {\n return difference.schemaType === SchemaItemType.CustomAttributeClass;\n}\n\n/**\n * Indicates whether the given difference is type of CustomAttributeDifference.\n * @alpha\n */\nexport function isCustomAttributeDifference(difference: AnySchemaDifference): difference is CustomAttributeDifference {\n return difference.schemaType === SchemaOtherTypes.CustomAttributeInstance;\n}\n\n/**\n * Indicates whether the given difference is type of EntityClassDifference.\n * @alpha\n */\nexport function isEntityClassDifference(difference: AnySchemaDifference): difference is EntityClassDifference {\n return difference.schemaType === SchemaItemType.EntityClass;\n}\n\n/**\n * Indicates whether the given difference is type of EntityClassMixinDifference.\n * @alpha\n */\nexport function isEntityClassMixinDifference(difference: AnySchemaDifference): difference is EntityClassMixinDifference {\n return difference.schemaType === SchemaOtherTypes.EntityClassMixin;\n}\n\n/**\n * Indicates whether the given difference is type of EnumerationDifference.\n * @alpha\n */\nexport function isEnumerationDifference(difference: AnySchemaDifference): difference is EnumerationDifference {\n return difference.schemaType === SchemaItemType.Enumeration;\n}\n\n/**\n * Indicates whether the given difference is type of EnumeratorDifference.\n * @alpha\n */\nexport function isEnumeratorDifference(difference: AnySchemaDifference): difference is EnumeratorDifference {\n return difference.schemaType === SchemaOtherTypes.Enumerator;\n}\n\n/**\n * Indicates whether the given difference is type of KindOfQuantityDifference.\n * @alpha\n */\nexport function isKindOfQuantityDifference(difference: AnySchemaDifference): difference is KindOfQuantityDifference {\n return difference.schemaType === SchemaItemType.KindOfQuantity;\n}\n\n/**\n * Indicates whether the given difference is type of MixinClassDifference.\n * @alpha\n */\nexport function isMixinClassDifference(difference: AnySchemaDifference): difference is MixinClassDifference {\n return difference.schemaType === SchemaItemType.Mixin;\n}\n\n/**\n * Indicates whether the given difference is type of PhenomenonDifference.\n * @alpha\n */\nexport function isPhenomenonDifference(difference: AnySchemaDifference): difference is PhenomenonDifference {\n return difference.schemaType === SchemaItemType.Phenomenon;\n}\n\n/**\n * Indicates whether the given difference is type of PropertyCategoryDifference.\n * @alpha\n */\nexport function isPropertyCategoryDifference(difference: AnySchemaDifference): difference is PropertyCategoryDifference {\n return difference.schemaType === SchemaItemType.PropertyCategory;\n}\n\n/**\n * Indicates whether the given difference is type of SchemaDifference.\n * @alpha\n */\nexport function isSchemaDifference(difference: AnySchemaDifference): difference is SchemaDifference {\n return difference.schemaType === SchemaOtherTypes.Schema;\n}\n\n/**\n * Indicates whether the given difference is type of SchemaReferenceDifference.\n * @alpha\n */\nexport function isSchemaReferenceDifference(difference: AnySchemaDifference): difference is SchemaReferenceDifference {\n return difference.schemaType === SchemaOtherTypes.SchemaReference;\n}\n\n/**\n * Indicates whether the given difference is type of CustomAttributeDifference.\n * @alpha\n */\nexport function isStructClassDifference(difference: AnySchemaDifference): difference is StructClassDifference {\n return difference.schemaType === SchemaItemType.StructClass;\n}\n\n/**\n * Indicates whether the given difference is type of UnitSystemDifference.\n * @alpha\n */\nexport function isUnitSystemDifference(difference: AnySchemaDifference): difference is UnitSystemDifference {\n return difference.schemaType === SchemaItemType.UnitSystem;\n}\n\n/**\n * Indicates whether the given difference is type of RelationshipClassDifference.\n * @alpha\n */\nexport function isRelationshipClassDifference(difference: AnySchemaDifference): difference is RelationshipClassDifference {\n return difference.schemaType === SchemaItemType.RelationshipClass;\n}\n\n/**\n * Indicates whether the given difference is type of RelationshipConstraintDifference.\n * @alpha\n */\nexport function isRelationshipConstraintDifference(difference: AnySchemaDifference): difference is RelationshipConstraintDifference {\n return difference.schemaType === SchemaOtherTypes.RelationshipConstraint;\n}\n\n/**\n * Indicates whether the given difference is type of RelationshipConstraintClassDifference.\n * @alpha\n */\nexport function isRelationshipConstraintClassDifference(difference: AnySchemaDifference): difference is RelationshipConstraintClassDifference {\n return difference.schemaType === SchemaOtherTypes.RelationshipConstraintClass;\n}\n"]}
1
+ {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../src/Differencing/Utils.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,gEAA0D;AAC1D,yDAwB4B;AAE5B;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,UAA+B;IAClE,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,QAAQ,CAAC;AAC3D,CAAC;AAFD,oDAEC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,UAA+B;IACvE,OAAO,UAAU,CAAC,UAAU,KAAK,mCAAgB,CAAC,QAAQ,CAAC;AAC7D,CAAC;AAFD,8DAEC;AAED;;;GAGG;AACH,SAAgB,gCAAgC,CAAC,UAA+B;IAC9E,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,oBAAoB,CAAC;AACvE,CAAC;AAFD,4EAEC;AAED;;;GAGG;AACH,SAAgB,2BAA2B,CAAC,UAA+B;IACzE,OAAO,UAAU,CAAC,UAAU,KAAK,mCAAgB,CAAC,uBAAuB,CAAC;AAC5E,CAAC;AAFD,kEAEC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,UAA+B;IACrE,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,WAAW,CAAC;AAC9D,CAAC;AAFD,0DAEC;AAED;;;GAGG;AACH,SAAgB,4BAA4B,CAAC,UAA+B;IAC1E,OAAO,UAAU,CAAC,UAAU,KAAK,mCAAgB,CAAC,gBAAgB,CAAC;AACrE,CAAC;AAFD,oEAEC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,UAA+B;IACrE,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,WAAW,CAAC;AAC9D,CAAC;AAFD,0DAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,UAA+B;IACpE,OAAO,UAAU,CAAC,UAAU,KAAK,mCAAgB,CAAC,UAAU,CAAC;AAC/D,CAAC;AAFD,wDAEC;AAED;;;GAGG;AACH,SAAgB,0BAA0B,CAAC,UAA+B;IACxE,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,cAAc,CAAC;AACjE,CAAC;AAFD,gEAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,UAA+B;IACpE,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,KAAK,CAAC;AACxD,CAAC;AAFD,wDAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,UAA+B;IACpE,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,UAAU,CAAC;AAC7D,CAAC;AAFD,wDAEC;AAED;;;GAGG;AACH,SAAgB,4BAA4B,CAAC,UAA+B;IAC1E,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,gBAAgB,CAAC;AACnE,CAAC;AAFD,oEAEC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,UAA+B;IAChE,OAAO,UAAU,CAAC,UAAU,KAAK,mCAAgB,CAAC,MAAM,CAAC;AAC3D,CAAC;AAFD,gDAEC;AAED;;;GAGG;AACH,SAAgB,2BAA2B,CAAC,UAA+B;IACzE,OAAO,UAAU,CAAC,UAAU,KAAK,mCAAgB,CAAC,eAAe,CAAC;AACpE,CAAC;AAFD,kEAEC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,UAA+B;IACrE,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,WAAW,CAAC;AAC9D,CAAC;AAFD,0DAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,UAA+B;IACpE,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,UAAU,CAAC;AAC7D,CAAC;AAFD,wDAEC;AAED;;;GAGG;AACH,SAAgB,6BAA6B,CAAC,UAA+B;IAC3E,OAAO,UAAU,CAAC,UAAU,KAAK,kCAAc,CAAC,iBAAiB,CAAC;AACpE,CAAC;AAFD,sEAEC;AAED;;;GAGG;AACH,SAAgB,kCAAkC,CAAC,UAA+B;IAChF,OAAO,UAAU,CAAC,UAAU,KAAK,mCAAgB,CAAC,sBAAsB,CAAC;AAC3E,CAAC;AAFD,gFAEC;AAED;;;GAGG;AACH,SAAgB,uCAAuC,CAAC,UAA+B;IACrF,OAAO,UAAU,CAAC,UAAU,KAAK,mCAAgB,CAAC,2BAA2B,CAAC;AAChF,CAAC;AAFD,0FAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,UAA+B;IACpE,OAAO,UAAU,CAAC,UAAU,IAAI,kCAAc,CAAC;AACjD,CAAC;AAFD,wDAEC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,UAA+B;IAC/D,OAAO,uBAAuB,CAAC,UAAU,CAAC;WACrC,gCAAgC,CAAC,UAAU,CAAC;WAC5C,uBAAuB,CAAC,UAAU,CAAC;WACnC,sBAAsB,CAAC,UAAU,CAAC;WAClC,6BAA6B,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAND,8CAMC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Differencing\n */\n\nimport { SchemaItemType } from \"@itwin/ecschema-metadata\";\nimport {\n type AnySchemaDifference,\n type AnySchemaItemDifference,\n type ClassItemDifference,\n type ClassPropertyDifference,\n type ConstantDifference,\n type CustomAttributeClassDifference,\n type CustomAttributeDifference,\n type EntityClassDifference,\n type EntityClassMixinDifference,\n type EnumerationDifference,\n type EnumeratorDifference,\n type KindOfQuantityDifference,\n type MixinClassDifference,\n type PhenomenonDifference,\n type PropertyCategoryDifference,\n type RelationshipClassDifference,\n type RelationshipConstraintClassDifference,\n type RelationshipConstraintDifference,\n type SchemaDifference,\n SchemaOtherTypes,\n type SchemaReferenceDifference,\n type StructClassDifference,\n type UnitSystemDifference,\n} from \"./SchemaDifference\";\n\n/**\n * Indicates whether the given difference is type of ConstantDifference.\n * @alpha\n */\nexport function isConstantDifference(difference: AnySchemaDifference): difference is ConstantDifference {\n return difference.schemaType === SchemaItemType.Constant;\n}\n\n/**\n * Indicates whether the given difference is type of ClassPropertyDifference.\n * @alpha\n */\nexport function isClassPropertyDifference(difference: AnySchemaDifference): difference is ClassPropertyDifference {\n return difference.schemaType === SchemaOtherTypes.Property;\n}\n\n/**\n * Indicates whether the given difference is type of CustomAttributeClassDifference.\n * @alpha\n */\nexport function isCustomAttributeClassDifference(difference: AnySchemaDifference): difference is CustomAttributeClassDifference {\n return difference.schemaType === SchemaItemType.CustomAttributeClass;\n}\n\n/**\n * Indicates whether the given difference is type of CustomAttributeDifference.\n * @alpha\n */\nexport function isCustomAttributeDifference(difference: AnySchemaDifference): difference is CustomAttributeDifference {\n return difference.schemaType === SchemaOtherTypes.CustomAttributeInstance;\n}\n\n/**\n * Indicates whether the given difference is type of EntityClassDifference.\n * @alpha\n */\nexport function isEntityClassDifference(difference: AnySchemaDifference): difference is EntityClassDifference {\n return difference.schemaType === SchemaItemType.EntityClass;\n}\n\n/**\n * Indicates whether the given difference is type of EntityClassMixinDifference.\n * @alpha\n */\nexport function isEntityClassMixinDifference(difference: AnySchemaDifference): difference is EntityClassMixinDifference {\n return difference.schemaType === SchemaOtherTypes.EntityClassMixin;\n}\n\n/**\n * Indicates whether the given difference is type of EnumerationDifference.\n * @alpha\n */\nexport function isEnumerationDifference(difference: AnySchemaDifference): difference is EnumerationDifference {\n return difference.schemaType === SchemaItemType.Enumeration;\n}\n\n/**\n * Indicates whether the given difference is type of EnumeratorDifference.\n * @alpha\n */\nexport function isEnumeratorDifference(difference: AnySchemaDifference): difference is EnumeratorDifference {\n return difference.schemaType === SchemaOtherTypes.Enumerator;\n}\n\n/**\n * Indicates whether the given difference is type of KindOfQuantityDifference.\n * @alpha\n */\nexport function isKindOfQuantityDifference(difference: AnySchemaDifference): difference is KindOfQuantityDifference {\n return difference.schemaType === SchemaItemType.KindOfQuantity;\n}\n\n/**\n * Indicates whether the given difference is type of MixinClassDifference.\n * @alpha\n */\nexport function isMixinClassDifference(difference: AnySchemaDifference): difference is MixinClassDifference {\n return difference.schemaType === SchemaItemType.Mixin;\n}\n\n/**\n * Indicates whether the given difference is type of PhenomenonDifference.\n * @alpha\n */\nexport function isPhenomenonDifference(difference: AnySchemaDifference): difference is PhenomenonDifference {\n return difference.schemaType === SchemaItemType.Phenomenon;\n}\n\n/**\n * Indicates whether the given difference is type of PropertyCategoryDifference.\n * @alpha\n */\nexport function isPropertyCategoryDifference(difference: AnySchemaDifference): difference is PropertyCategoryDifference {\n return difference.schemaType === SchemaItemType.PropertyCategory;\n}\n\n/**\n * Indicates whether the given difference is type of SchemaDifference.\n * @alpha\n */\nexport function isSchemaDifference(difference: AnySchemaDifference): difference is SchemaDifference {\n return difference.schemaType === SchemaOtherTypes.Schema;\n}\n\n/**\n * Indicates whether the given difference is type of SchemaReferenceDifference.\n * @alpha\n */\nexport function isSchemaReferenceDifference(difference: AnySchemaDifference): difference is SchemaReferenceDifference {\n return difference.schemaType === SchemaOtherTypes.SchemaReference;\n}\n\n/**\n * Indicates whether the given difference is type of CustomAttributeDifference.\n * @alpha\n */\nexport function isStructClassDifference(difference: AnySchemaDifference): difference is StructClassDifference {\n return difference.schemaType === SchemaItemType.StructClass;\n}\n\n/**\n * Indicates whether the given difference is type of UnitSystemDifference.\n * @alpha\n */\nexport function isUnitSystemDifference(difference: AnySchemaDifference): difference is UnitSystemDifference {\n return difference.schemaType === SchemaItemType.UnitSystem;\n}\n\n/**\n * Indicates whether the given difference is type of RelationshipClassDifference.\n * @alpha\n */\nexport function isRelationshipClassDifference(difference: AnySchemaDifference): difference is RelationshipClassDifference {\n return difference.schemaType === SchemaItemType.RelationshipClass;\n}\n\n/**\n * Indicates whether the given difference is type of RelationshipConstraintDifference.\n * @alpha\n */\nexport function isRelationshipConstraintDifference(difference: AnySchemaDifference): difference is RelationshipConstraintDifference {\n return difference.schemaType === SchemaOtherTypes.RelationshipConstraint;\n}\n\n/**\n * Indicates whether the given difference is type of RelationshipConstraintClassDifference.\n * @alpha\n */\nexport function isRelationshipConstraintClassDifference(difference: AnySchemaDifference): difference is RelationshipConstraintClassDifference {\n return difference.schemaType === SchemaOtherTypes.RelationshipConstraintClass;\n}\n\n/**\n * Indicates whether the given difference is type of AnySchemaItemDifference.\n * @alpha\n */\nexport function isSchemaItemDifference(difference: AnySchemaDifference): difference is AnySchemaItemDifference {\n return difference.schemaType in SchemaItemType;\n}\n\n/**\n * Indicates whether the given difference is type of ClassItemDifference.\n * @alpha\n */\nexport function isClassDifference(difference: AnySchemaDifference): difference is ClassItemDifference {\n return isStructClassDifference(difference)\n || isCustomAttributeClassDifference(difference)\n || isEntityClassDifference(difference)\n || isMixinClassDifference(difference)\n || isRelationshipClassDifference(difference);\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /** @packageDocumentation
2
+ * @module Merging
3
+ */
4
+ import type { RenamePropertyEdit, RenameSchemaItemEdit } from "./SchemaEdits";
5
+ import { SchemaDifferenceResult } from "../../Differencing/SchemaDifference";
6
+ /**
7
+ * @internal
8
+ */
9
+ export declare function applyRenamePropertyEdit(result: SchemaDifferenceResult, edit: RenamePropertyEdit): void;
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare function applyRenameSchemaItemEdit(result: SchemaDifferenceResult, edit: RenameSchemaItemEdit, postProcessing: (cb: () => void) => void): void;
14
+ //# sourceMappingURL=RenameEditHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenameEditHandler.d.ts","sourceRoot":"","sources":["../../../../src/Merging/Edits/RenameEditHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAA6I,sBAAsB,EAAgC,MAAM,qCAAqC,CAAC;AAQtP;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,kBAAkB,QA8B/F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,QA0C7I"}