@itwin/ecschema-editing 4.7.0-dev.9 → 4.8.0-dev.1

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 (131) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/Editing/Constants.d.ts +6 -6
  3. package/lib/cjs/Editing/Constants.d.ts.map +1 -1
  4. package/lib/cjs/Editing/Constants.js +26 -31
  5. package/lib/cjs/Editing/Constants.js.map +1 -1
  6. package/lib/cjs/Editing/CustomAttributes.d.ts +3 -3
  7. package/lib/cjs/Editing/CustomAttributes.d.ts.map +1 -1
  8. package/lib/cjs/Editing/CustomAttributes.js +18 -28
  9. package/lib/cjs/Editing/CustomAttributes.js.map +1 -1
  10. package/lib/cjs/Editing/ECClasses.d.ts +24 -23
  11. package/lib/cjs/Editing/ECClasses.d.ts.map +1 -1
  12. package/lib/cjs/Editing/ECClasses.js +126 -156
  13. package/lib/cjs/Editing/ECClasses.js.map +1 -1
  14. package/lib/cjs/Editing/Editor.d.ts +10 -31
  15. package/lib/cjs/Editing/Editor.d.ts.map +1 -1
  16. package/lib/cjs/Editing/Editor.js +59 -43
  17. package/lib/cjs/Editing/Editor.js.map +1 -1
  18. package/lib/cjs/Editing/Entities.d.ts +9 -9
  19. package/lib/cjs/Editing/Entities.d.ts.map +1 -1
  20. package/lib/cjs/Editing/Entities.js +65 -85
  21. package/lib/cjs/Editing/Entities.js.map +1 -1
  22. package/lib/cjs/Editing/Enumerations.d.ts +6 -6
  23. package/lib/cjs/Editing/Enumerations.d.ts.map +1 -1
  24. package/lib/cjs/Editing/Enumerations.js +57 -55
  25. package/lib/cjs/Editing/Enumerations.js.map +1 -1
  26. package/lib/cjs/Editing/Exception.d.ts +257 -0
  27. package/lib/cjs/Editing/Exception.d.ts.map +1 -0
  28. package/lib/cjs/Editing/Exception.js +426 -0
  29. package/lib/cjs/Editing/Exception.js.map +1 -0
  30. package/lib/cjs/Editing/Formats.d.ts +6 -6
  31. package/lib/cjs/Editing/Formats.d.ts.map +1 -1
  32. package/lib/cjs/Editing/Formats.js +28 -33
  33. package/lib/cjs/Editing/Formats.js.map +1 -1
  34. package/lib/cjs/Editing/InvertedUnits.d.ts +6 -6
  35. package/lib/cjs/Editing/InvertedUnits.d.ts.map +1 -1
  36. package/lib/cjs/Editing/InvertedUnits.js +41 -56
  37. package/lib/cjs/Editing/InvertedUnits.js.map +1 -1
  38. package/lib/cjs/Editing/KindOfQuantities.d.ts +6 -6
  39. package/lib/cjs/Editing/KindOfQuantities.d.ts.map +1 -1
  40. package/lib/cjs/Editing/KindOfQuantities.js +50 -57
  41. package/lib/cjs/Editing/KindOfQuantities.js.map +1 -1
  42. package/lib/cjs/Editing/Mixins.d.ts +5 -5
  43. package/lib/cjs/Editing/Mixins.d.ts.map +1 -1
  44. package/lib/cjs/Editing/Mixins.js +43 -58
  45. package/lib/cjs/Editing/Mixins.js.map +1 -1
  46. package/lib/cjs/Editing/Mutable/MutableEntityClass.d.ts +1 -5
  47. package/lib/cjs/Editing/Mutable/MutableEntityClass.d.ts.map +1 -1
  48. package/lib/cjs/Editing/Mutable/MutableEntityClass.js +1 -45
  49. package/lib/cjs/Editing/Mutable/MutableEntityClass.js.map +1 -1
  50. package/lib/cjs/Editing/Phenomena.d.ts +7 -7
  51. package/lib/cjs/Editing/Phenomena.d.ts.map +1 -1
  52. package/lib/cjs/Editing/Phenomena.js +23 -23
  53. package/lib/cjs/Editing/Phenomena.js.map +1 -1
  54. package/lib/cjs/Editing/Properties.d.ts +7 -6
  55. package/lib/cjs/Editing/Properties.d.ts.map +1 -1
  56. package/lib/cjs/Editing/Properties.js +99 -46
  57. package/lib/cjs/Editing/Properties.js.map +1 -1
  58. package/lib/cjs/Editing/PropertyCategories.d.ts +6 -6
  59. package/lib/cjs/Editing/PropertyCategories.d.ts.map +1 -1
  60. package/lib/cjs/Editing/PropertyCategories.js +29 -27
  61. package/lib/cjs/Editing/PropertyCategories.js.map +1 -1
  62. package/lib/cjs/Editing/RelationshipClasses.d.ts +15 -17
  63. package/lib/cjs/Editing/RelationshipClasses.d.ts.map +1 -1
  64. package/lib/cjs/Editing/RelationshipClasses.js +97 -101
  65. package/lib/cjs/Editing/RelationshipClasses.js.map +1 -1
  66. package/lib/cjs/Editing/SchemaItems.d.ts +13 -5
  67. package/lib/cjs/Editing/SchemaItems.d.ts.map +1 -1
  68. package/lib/cjs/Editing/SchemaItems.js +58 -6
  69. package/lib/cjs/Editing/SchemaItems.js.map +1 -1
  70. package/lib/cjs/Editing/Structs.d.ts +3 -3
  71. package/lib/cjs/Editing/Structs.d.ts.map +1 -1
  72. package/lib/cjs/Editing/Structs.js +17 -27
  73. package/lib/cjs/Editing/Structs.js.map +1 -1
  74. package/lib/cjs/Editing/UnitSystems.d.ts +7 -7
  75. package/lib/cjs/Editing/UnitSystems.d.ts.map +1 -1
  76. package/lib/cjs/Editing/UnitSystems.js +22 -20
  77. package/lib/cjs/Editing/UnitSystems.js.map +1 -1
  78. package/lib/cjs/Editing/Units.d.ts +6 -6
  79. package/lib/cjs/Editing/Units.d.ts.map +1 -1
  80. package/lib/cjs/Editing/Units.js +26 -35
  81. package/lib/cjs/Editing/Units.js.map +1 -1
  82. package/lib/cjs/Merging/CAClassMerger.js +2 -2
  83. package/lib/cjs/Merging/CAClassMerger.js.map +1 -1
  84. package/lib/cjs/Merging/ClassMerger.d.ts +1 -2
  85. package/lib/cjs/Merging/ClassMerger.d.ts.map +1 -1
  86. package/lib/cjs/Merging/ClassMerger.js +15 -39
  87. package/lib/cjs/Merging/ClassMerger.js.map +1 -1
  88. package/lib/cjs/Merging/ConstantMerger.d.ts.map +1 -1
  89. package/lib/cjs/Merging/ConstantMerger.js +2 -3
  90. package/lib/cjs/Merging/ConstantMerger.js.map +1 -1
  91. package/lib/cjs/Merging/CustomAttributeMerger.d.ts +4 -5
  92. package/lib/cjs/Merging/CustomAttributeMerger.d.ts.map +1 -1
  93. package/lib/cjs/Merging/CustomAttributeMerger.js +8 -18
  94. package/lib/cjs/Merging/CustomAttributeMerger.js.map +1 -1
  95. package/lib/cjs/Merging/EntityClassMerger.d.ts +1 -2
  96. package/lib/cjs/Merging/EntityClassMerger.d.ts.map +1 -1
  97. package/lib/cjs/Merging/EntityClassMerger.js +3 -10
  98. package/lib/cjs/Merging/EntityClassMerger.js.map +1 -1
  99. package/lib/cjs/Merging/EnumerationMerger.d.ts.map +1 -1
  100. package/lib/cjs/Merging/EnumerationMerger.js +8 -10
  101. package/lib/cjs/Merging/EnumerationMerger.js.map +1 -1
  102. package/lib/cjs/Merging/KindOfQuantityMerger.d.ts.map +1 -1
  103. package/lib/cjs/Merging/KindOfQuantityMerger.js +2 -3
  104. package/lib/cjs/Merging/KindOfQuantityMerger.js.map +1 -1
  105. package/lib/cjs/Merging/MixinMerger.js +2 -2
  106. package/lib/cjs/Merging/MixinMerger.js.map +1 -1
  107. package/lib/cjs/Merging/PhenomenonMerger.d.ts.map +1 -1
  108. package/lib/cjs/Merging/PhenomenonMerger.js +1 -2
  109. package/lib/cjs/Merging/PhenomenonMerger.js.map +1 -1
  110. package/lib/cjs/Merging/PropertyCategoryMerger.d.ts.map +1 -1
  111. package/lib/cjs/Merging/PropertyCategoryMerger.js +1 -2
  112. package/lib/cjs/Merging/PropertyCategoryMerger.js.map +1 -1
  113. package/lib/cjs/Merging/PropertyMerger.d.ts +2 -3
  114. package/lib/cjs/Merging/PropertyMerger.d.ts.map +1 -1
  115. package/lib/cjs/Merging/PropertyMerger.js +21 -42
  116. package/lib/cjs/Merging/PropertyMerger.js.map +1 -1
  117. package/lib/cjs/Merging/RelationshipClassMerger.d.ts +5 -3
  118. package/lib/cjs/Merging/RelationshipClassMerger.d.ts.map +1 -1
  119. package/lib/cjs/Merging/RelationshipClassMerger.js +35 -33
  120. package/lib/cjs/Merging/RelationshipClassMerger.js.map +1 -1
  121. package/lib/cjs/Merging/SchemaItemMerger.d.ts +3 -4
  122. package/lib/cjs/Merging/SchemaItemMerger.d.ts.map +1 -1
  123. package/lib/cjs/Merging/SchemaItemMerger.js +3 -2
  124. package/lib/cjs/Merging/SchemaItemMerger.js.map +1 -1
  125. package/lib/cjs/Merging/SchemaMerger.d.ts.map +1 -1
  126. package/lib/cjs/Merging/SchemaMerger.js +2 -8
  127. package/lib/cjs/Merging/SchemaMerger.js.map +1 -1
  128. package/lib/cjs/Merging/UnitSystemMerger.d.ts.map +1 -1
  129. package/lib/cjs/Merging/UnitSystemMerger.js +1 -2
  130. package/lib/cjs/Merging/UnitSystemMerger.js.map +1 -1
  131. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"KindOfQuantityMerger.js","sourceRoot":"","sources":["../../../src/Merging/KindOfQuantityMerger.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { type KindOfQuantityDifference } from \"../Differencing/SchemaDifference\";\r\nimport { type SchemaItemMergerHandler, updateSchemaItemFullName } from \"./SchemaItemMerger\";\r\nimport { type MutableKindOfQuantity } from \"../Editing/Mutable/MutableKindOfQuantity\";\r\nimport { SchemaMergeContext } from \"./SchemaMerger\";\r\n\r\n/**\r\n * Defines a merge handler to merge KindOfQuantity schema items.\r\n * @internal\r\n */\r\nexport const kindOfQuantityMerger: SchemaItemMergerHandler<KindOfQuantityDifference> = {\r\n async add(context, change) {\r\n if (change.difference.persistenceUnit === undefined) {\r\n return { errorMessage: \"KindOfQuantity must define persistenceUnit\" };\r\n }\r\n if (change.difference.relativeError === undefined) {\r\n return { errorMessage: \"KindOfQuantity must define relativeError\" };\r\n }\r\n change.difference.persistenceUnit = await updateSchemaItemFullName(context, change.difference.persistenceUnit);\r\n if(change.difference.presentationUnits) {\r\n if(Array.isArray(change.difference.presentationUnits)) {\r\n for(let index = 0; index < change.difference.presentationUnits.length; index++) {\r\n change.difference.presentationUnits[index] = await updateOverrideFormat(context, change.difference.presentationUnits[index]);\r\n }\r\n } else {\r\n change.difference.presentationUnits = await updateOverrideFormat(context, change.difference.presentationUnits);\r\n }\r\n }\r\n\r\n return context.editor.kindOfQuantities.createFromProps(context.targetSchemaKey, {\r\n ...change.difference,\r\n name: change.itemName,\r\n schemaItemType: change.schemaType,\r\n persistenceUnit: change.difference.persistenceUnit,\r\n presentationUnits: change.difference.presentationUnits,\r\n relativeError: change.difference.relativeError,\r\n });\r\n },\r\n async modify(_context, change, itemKey, item: MutableKindOfQuantity) {\r\n if(change.difference.label !== undefined) {\r\n item.setDisplayLabel(change.difference.label);\r\n }\r\n if(change.difference.description !== undefined) {\r\n item.setDescription(change.difference.description);\r\n }\r\n if(change.difference.relativeError !== undefined) {\r\n item.setRelativeError(change.difference.relativeError);\r\n }\r\n if(change.difference.persistenceUnit !== undefined) {\r\n // TODO: It should be checked if the unit is the same, but referring to the source schema.\r\n throw new Error(`Changing the kind of quantity '${itemKey.name}' persistenceUnit is not supported.`);\r\n }\r\n return { itemKey };\r\n },\r\n};\r\n\r\nasync function updateOverrideFormat(context: SchemaMergeContext, formatString: string) {\r\n // https://www.itwinjs.org/v1/bis/ec/kindofquantity/#format-string\r\n const match = formatString.match(/^([^(]+)\\((\\d+)\\)\\[(.*)\\]$/);\r\n if(match === null) {\r\n return formatString;\r\n }\r\n\r\n const originalFormat = match[1];\r\n const updatedFormat = await updateSchemaItemFullName(context, originalFormat);\r\n\r\n const unitOverrides = match[3].split(\"][\");\r\n for(let index=0; index< unitOverrides.length; index++) {\r\n const [unit, label] = unitOverrides[index].split(\"|\");\r\n const updatedUnit = await updateSchemaItemFullName(context, unit);\r\n unitOverrides[index] = `${updatedUnit}${label ? `|${label}` : \"\"}`;\r\n }\r\n\r\n return `${updatedFormat}(${match[2]})[${unitOverrides.join(\"][\")}]`;\r\n}\r\n"]}
1
+ {"version":3,"file":"KindOfQuantityMerger.js","sourceRoot":"","sources":["../../../src/Merging/KindOfQuantityMerger.ts"],"names":[],"mappings":";;;AAKA,yDAA4F;AAI5F;;;GAGG;AACU,QAAA,oBAAoB,GAAsD;IACrF,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM;QACvB,IAAI,MAAM,CAAC,UAAU,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,CAAC,UAAU,CAAC,eAAe,GAAG,MAAM,IAAA,2CAAwB,EAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC/G,IAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACvC,IAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACtD,KAAI,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC/E,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/H,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,UAAU,CAAC,iBAAiB,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YACjH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE;YAC9E,GAAG,MAAM,CAAC,UAAU;YACpB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,eAAe;YAClD,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB;YACtD,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,aAAa;SAC/C,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAA2B;QACjE,IAAG,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACjD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACnD,0FAA0F;YAC1F,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,CAAC,IAAI,qCAAqC,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;CACF,CAAC;AAEF,KAAK,UAAU,oBAAoB,CAAC,OAA2B,EAAE,YAAoB;IACnF,kEAAkE;IAClE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC/D,IAAG,KAAK,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,MAAM,IAAA,2CAAwB,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAE9E,MAAM,aAAa,GAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,KAAI,IAAI,KAAK,GAAC,CAAC,EAAE,KAAK,GAAE,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAA,2CAAwB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClE,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrE,CAAC;IAED,OAAO,GAAG,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACtE,CAAC","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 { type KindOfQuantityDifference } from \"../Differencing/SchemaDifference\";\r\nimport { type SchemaItemMergerHandler, updateSchemaItemFullName } from \"./SchemaItemMerger\";\r\nimport { type MutableKindOfQuantity } from \"../Editing/Mutable/MutableKindOfQuantity\";\r\nimport { SchemaMergeContext } from \"./SchemaMerger\";\r\n\r\n/**\r\n * Defines a merge handler to merge KindOfQuantity schema items.\r\n * @internal\r\n */\r\nexport const kindOfQuantityMerger: SchemaItemMergerHandler<KindOfQuantityDifference> = {\r\n async add(context, change) {\r\n if (change.difference.persistenceUnit === undefined) {\r\n throw new Error(\"KindOfQuantity must define persistenceUnit\");\r\n }\r\n if (change.difference.relativeError === undefined) {\r\n throw new Error(\"KindOfQuantity must define relativeError\");\r\n }\r\n change.difference.persistenceUnit = await updateSchemaItemFullName(context, change.difference.persistenceUnit);\r\n if(change.difference.presentationUnits) {\r\n if(Array.isArray(change.difference.presentationUnits)) {\r\n for(let index = 0; index < change.difference.presentationUnits.length; index++) {\r\n change.difference.presentationUnits[index] = await updateOverrideFormat(context, change.difference.presentationUnits[index]);\r\n }\r\n } else {\r\n change.difference.presentationUnits = await updateOverrideFormat(context, change.difference.presentationUnits);\r\n }\r\n }\r\n\r\n return context.editor.kindOfQuantities.createFromProps(context.targetSchemaKey, {\r\n ...change.difference,\r\n name: change.itemName,\r\n schemaItemType: change.schemaType,\r\n persistenceUnit: change.difference.persistenceUnit,\r\n presentationUnits: change.difference.presentationUnits,\r\n relativeError: change.difference.relativeError,\r\n });\r\n },\r\n async modify(_context, change, itemKey, item: MutableKindOfQuantity) {\r\n if(change.difference.label !== undefined) {\r\n item.setDisplayLabel(change.difference.label);\r\n }\r\n if(change.difference.description !== undefined) {\r\n item.setDescription(change.difference.description);\r\n }\r\n if(change.difference.relativeError !== undefined) {\r\n item.setRelativeError(change.difference.relativeError);\r\n }\r\n if(change.difference.persistenceUnit !== undefined) {\r\n // TODO: It should be checked if the unit is the same, but referring to the source schema.\r\n throw new Error(`Changing the kind of quantity '${itemKey.name}' persistenceUnit is not supported.`);\r\n }\r\n },\r\n};\r\n\r\nasync function updateOverrideFormat(context: SchemaMergeContext, formatString: string) {\r\n // https://www.itwinjs.org/v1/bis/ec/kindofquantity/#format-string\r\n const match = formatString.match(/^([^(]+)\\((\\d+)\\)\\[(.*)\\]$/);\r\n if(match === null) {\r\n return formatString;\r\n }\r\n\r\n const originalFormat = match[1];\r\n const updatedFormat = await updateSchemaItemFullName(context, originalFormat);\r\n\r\n const unitOverrides = match[3].split(\"][\");\r\n for(let index=0; index< unitOverrides.length; index++) {\r\n const [unit, label] = unitOverrides[index].split(\"|\");\r\n const updatedUnit = await updateSchemaItemFullName(context, unit);\r\n unitOverrides[index] = `${updatedUnit}${label ? `|${label}` : \"\"}`;\r\n }\r\n\r\n return `${updatedFormat}(${match[2]})[${unitOverrides.join(\"][\")}]`;\r\n}\r\n"]}
@@ -10,7 +10,7 @@ const ClassMerger_1 = require("./ClassMerger");
10
10
  exports.mixinClassMerger = {
11
11
  async add(context, change) {
12
12
  if (change.difference.appliesTo === undefined) {
13
- return { errorMessage: "Mixin must define appliesTo" };
13
+ throw new Error("Mixin must define appliesTo");
14
14
  }
15
15
  return context.editor.mixins.createFromProps(context.targetSchemaKey, {
16
16
  ...change.difference,
@@ -24,7 +24,7 @@ exports.mixinClassMerger = {
24
24
  const appliesTo = await (0, SchemaItemMerger_1.updateSchemaItemKey)(context, change.difference.appliesTo);
25
25
  const currentValue = await item.appliesTo;
26
26
  if (currentValue !== undefined && !appliesTo.matches(currentValue.key)) {
27
- return { errorMessage: `Changing the mixin '${itemKey.name}' appliesTo is not supported.` };
27
+ throw new Error(`Changing the mixin '${itemKey.name}' appliesTo is not supported.`);
28
28
  }
29
29
  }
30
30
  return (0, ClassMerger_1.modifyClass)(context, change, itemKey, item);
@@ -1 +1 @@
1
- {"version":3,"file":"MixinMerger.js","sourceRoot":"","sources":["../../../src/Merging/MixinMerger.ts"],"names":[],"mappings":";;;AAKA,yDAAiH;AAEjH,+CAA4C;AAE5C;;;GAGG;AACU,QAAA,gBAAgB,GAAkD;IAC7E,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM;QACvB,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,EAAE,YAAY,EAAE,6BAA6B,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE;YACpE,GAAG,MAAM,CAAC,UAAU;YACpB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,SAAS,EAAE,MAAM,IAAA,2CAAwB,EAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;SAChF,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAkB;QACvD,IAAG,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,MAAM,IAAA,sCAAmB,EAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAClF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YAC1C,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvE,OAAO,EAAE,YAAY,EAAE,uBAAuB,OAAO,CAAC,IAAI,+BAA+B,EAAE,CAAC;YAC9F,CAAC;QACH,CAAC;QACD,OAAO,IAAA,yBAAW,EAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;CACF,CAAC","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 { type MixinClassDifference } from \"../Differencing/SchemaDifference\";\r\nimport { type SchemaItemMergerHandler, updateSchemaItemFullName, updateSchemaItemKey } from \"./SchemaItemMerger\";\r\nimport { type MutableMixin } from \"../Editing/Mutable/MutableMixin\";\r\nimport { modifyClass } from \"./ClassMerger\";\r\n\r\n/**\r\n * Defines a merge handler to merge Mixin schema items.\r\n * @internal\r\n */\r\nexport const mixinClassMerger: SchemaItemMergerHandler<MixinClassDifference> = {\r\n async add(context, change) {\r\n if (change.difference.appliesTo === undefined) {\r\n return { errorMessage: \"Mixin must define appliesTo\" };\r\n }\r\n return context.editor.mixins.createFromProps(context.targetSchemaKey, {\r\n ...change.difference,\r\n name: change.itemName,\r\n schemaItemType: change.schemaType,\r\n appliesTo: await updateSchemaItemFullName(context, change.difference.appliesTo),\r\n });\r\n },\r\n async modify(context, change, itemKey, item: MutableMixin) {\r\n if(change.difference.appliesTo !== undefined) {\r\n const appliesTo = await updateSchemaItemKey(context, change.difference.appliesTo);\r\n const currentValue = await item.appliesTo;\r\n if (currentValue !== undefined && !appliesTo.matches(currentValue.key)) {\r\n return { errorMessage: `Changing the mixin '${itemKey.name}' appliesTo is not supported.` };\r\n }\r\n }\r\n return modifyClass(context, change, itemKey, item);\r\n },\r\n};\r\n\r\n"]}
1
+ {"version":3,"file":"MixinMerger.js","sourceRoot":"","sources":["../../../src/Merging/MixinMerger.ts"],"names":[],"mappings":";;;AAKA,yDAAiH;AAEjH,+CAA4C;AAE5C;;;GAGG;AACU,QAAA,gBAAgB,GAAkD;IAC7E,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM;QACvB,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE;YACpE,GAAG,MAAM,CAAC,UAAU;YACpB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,SAAS,EAAE,MAAM,IAAA,2CAAwB,EAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;SAChF,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAkB;QACvD,IAAG,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,MAAM,IAAA,sCAAmB,EAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAClF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YAC1C,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,IAAI,+BAA+B,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QACD,OAAO,IAAA,yBAAW,EAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;CACF,CAAC","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 { type MixinClassDifference } from \"../Differencing/SchemaDifference\";\r\nimport { type SchemaItemMergerHandler, updateSchemaItemFullName, updateSchemaItemKey } from \"./SchemaItemMerger\";\r\nimport { type MutableMixin } from \"../Editing/Mutable/MutableMixin\";\r\nimport { modifyClass } from \"./ClassMerger\";\r\n\r\n/**\r\n * Defines a merge handler to merge Mixin schema items.\r\n * @internal\r\n */\r\nexport const mixinClassMerger: SchemaItemMergerHandler<MixinClassDifference> = {\r\n async add(context, change) {\r\n if (change.difference.appliesTo === undefined) {\r\n throw new Error(\"Mixin must define appliesTo\");\r\n }\r\n return context.editor.mixins.createFromProps(context.targetSchemaKey, {\r\n ...change.difference,\r\n name: change.itemName,\r\n schemaItemType: change.schemaType,\r\n appliesTo: await updateSchemaItemFullName(context, change.difference.appliesTo),\r\n });\r\n },\r\n async modify(context, change, itemKey, item: MutableMixin) {\r\n if(change.difference.appliesTo !== undefined) {\r\n const appliesTo = await updateSchemaItemKey(context, change.difference.appliesTo);\r\n const currentValue = await item.appliesTo;\r\n if (currentValue !== undefined && !appliesTo.matches(currentValue.key)) {\r\n throw new Error(`Changing the mixin '${itemKey.name}' appliesTo is not supported.`);\r\n }\r\n }\r\n return modifyClass(context, change, itemKey, item);\r\n },\r\n};\r\n\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PhenomenonMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/PhenomenonMerger.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,KAAK,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAGjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,uBAAuB,CAAC,oBAAoB,CA6B1E,CAAC"}
1
+ {"version":3,"file":"PhenomenonMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/PhenomenonMerger.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,KAAK,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAGjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,uBAAuB,CAAC,oBAAoB,CA4B1E,CAAC"}
@@ -9,7 +9,7 @@ const ecschema_metadata_1 = require("@itwin/ecschema-metadata");
9
9
  exports.phenomenonMerger = {
10
10
  add: async (context, change) => {
11
11
  if (change.difference.definition === undefined) {
12
- return { errorMessage: "Phenomenon must define definition" };
12
+ throw new Error("Phenomenon must define definition");
13
13
  }
14
14
  return context.editor.phenomenons.createFromProps(context.targetSchemaKey, {
15
15
  ...change.difference,
@@ -31,7 +31,6 @@ exports.phenomenonMerger = {
31
31
  throw new ecschema_metadata_1.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.InvalidECJson, `The Phenomenon ${itemKey.name} has an invalid 'definition' attribute.`);
32
32
  await phenomenon.setDefinition(change.difference.definition);
33
33
  }
34
- return { itemKey };
35
34
  },
36
35
  };
37
36
  //# sourceMappingURL=PhenomenonMerger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PhenomenonMerger.js","sourceRoot":"","sources":["../../../src/Merging/PhenomenonMerger.ts"],"names":[],"mappings":";;;AAOA,gEAA2E;AAE3E;;;GAGG;AACU,QAAA,gBAAgB,GAAkD;IAC7E,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7B,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/C,OAAO,EAAE,YAAY,EAAE,mCAAmC,EAAE,CAAC;QAC/D,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE;YACzE,GAAG,MAAM,CAAC,UAAU;YACpB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;SACzC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAA6B,EAAE,EAAE;QACzE,IAAG,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/C,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9C,kFAAkF;YAClF,IAAI,UAAU,CAAC,UAAU,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE;gBACpH,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,aAAa,EAAE,kBAAkB,OAAO,CAAC,IAAI,yCAAyC,CAAC,CAAC;YAEnI,MAAM,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;CACF,CAAC","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 { type PhenomenonDifference } from \"../Differencing/SchemaDifference\";\r\nimport { type MutablePhenomenon } from \"../Editing/Mutable/MutablePhenomenon\";\r\nimport { type SchemaItemMergerHandler} from \"./SchemaItemMerger\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"@itwin/ecschema-metadata\";\r\n\r\n/**\r\n * Defines a merge handler to merge Phenomenon schema items.\r\n * @internal\r\n */\r\nexport const phenomenonMerger: SchemaItemMergerHandler<PhenomenonDifference> = {\r\n add: async (context, change) => {\r\n if (change.difference.definition === undefined) {\r\n return { errorMessage: \"Phenomenon must define definition\" };\r\n }\r\n\r\n return context.editor.phenomenons.createFromProps(context.targetSchemaKey, {\r\n ...change.difference,\r\n name: change.itemName,\r\n schemaItemType: change.schemaType,\r\n definition: change.difference.definition,\r\n });\r\n },\r\n modify: async (_context, change, itemKey, phenomenon: MutablePhenomenon) => {\r\n if(change.difference.label !== undefined) {\r\n phenomenon.setDisplayLabel(change.difference.label);\r\n }\r\n if(change.difference.description !== undefined) {\r\n phenomenon.setDescription(change.difference.description);\r\n }\r\n if(change.difference.definition !== undefined) {\r\n // It would be better if the validation would be part of phenomenon.setDefinition.\r\n if (phenomenon.definition !== \"\" && change.difference.definition.toLowerCase() !== phenomenon.definition.toLowerCase())\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Phenomenon ${itemKey.name} has an invalid 'definition' attribute.`);\r\n\r\n await phenomenon.setDefinition(change.difference.definition);\r\n }\r\n return { itemKey };\r\n },\r\n};\r\n"]}
1
+ {"version":3,"file":"PhenomenonMerger.js","sourceRoot":"","sources":["../../../src/Merging/PhenomenonMerger.ts"],"names":[],"mappings":";;;AAOA,gEAA2E;AAE3E;;;GAGG;AACU,QAAA,gBAAgB,GAAkD;IAC7E,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7B,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE;YACzE,GAAG,MAAM,CAAC,UAAU;YACpB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;SACzC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAA6B,EAAE,EAAE;QACzE,IAAG,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/C,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9C,kFAAkF;YAClF,IAAI,UAAU,CAAC,UAAU,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE;gBACpH,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,aAAa,EAAE,kBAAkB,OAAO,CAAC,IAAI,yCAAyC,CAAC,CAAC;YAEnI,MAAM,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF,CAAC","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 { type PhenomenonDifference } from \"../Differencing/SchemaDifference\";\r\nimport { type MutablePhenomenon } from \"../Editing/Mutable/MutablePhenomenon\";\r\nimport { type SchemaItemMergerHandler} from \"./SchemaItemMerger\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"@itwin/ecschema-metadata\";\r\n\r\n/**\r\n * Defines a merge handler to merge Phenomenon schema items.\r\n * @internal\r\n */\r\nexport const phenomenonMerger: SchemaItemMergerHandler<PhenomenonDifference> = {\r\n add: async (context, change) => {\r\n if (change.difference.definition === undefined) {\r\n throw new Error(\"Phenomenon must define definition\");\r\n }\r\n\r\n return context.editor.phenomenons.createFromProps(context.targetSchemaKey, {\r\n ...change.difference,\r\n name: change.itemName,\r\n schemaItemType: change.schemaType,\r\n definition: change.difference.definition,\r\n });\r\n },\r\n modify: async (_context, change, itemKey, phenomenon: MutablePhenomenon) => {\r\n if(change.difference.label !== undefined) {\r\n phenomenon.setDisplayLabel(change.difference.label);\r\n }\r\n if(change.difference.description !== undefined) {\r\n phenomenon.setDescription(change.difference.description);\r\n }\r\n if(change.difference.definition !== undefined) {\r\n // It would be better if the validation would be part of phenomenon.setDefinition.\r\n if (phenomenon.definition !== \"\" && change.difference.definition.toLowerCase() !== phenomenon.definition.toLowerCase())\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Phenomenon ${itemKey.name} has an invalid 'definition' attribute.`);\r\n\r\n await phenomenon.setDefinition(change.difference.definition);\r\n }\r\n },\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyCategoryMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/PropertyCategoryMerger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,uBAAuB,CAAC,0BAA0B,CA0BtF,CAAC"}
1
+ {"version":3,"file":"PropertyCategoryMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/PropertyCategoryMerger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,uBAAuB,CAAC,0BAA0B,CAyBtF,CAAC"}
@@ -8,7 +8,7 @@ exports.propertyCategoryMerger = void 0;
8
8
  exports.propertyCategoryMerger = {
9
9
  async add(context, change) {
10
10
  if (change.difference.priority === undefined) {
11
- return { errorMessage: "PropertyCategory must define priority" };
11
+ throw new Error("PropertyCategory must define priority");
12
12
  }
13
13
  return context.editor.propertyCategories.createFromProps(context.targetSchemaKey, {
14
14
  ...change.difference,
@@ -28,7 +28,6 @@ exports.propertyCategoryMerger = {
28
28
  // TODO: inconsistency: setPriority does not return a result whether the priority was set successfully.
29
29
  await context.editor.propertyCategories.setPriority(itemKey, change.difference.priority);
30
30
  }
31
- return { itemKey };
32
31
  },
33
32
  };
34
33
  //# sourceMappingURL=PropertyCategoryMerger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyCategoryMerger.js","sourceRoot":"","sources":["../../../src/Merging/PropertyCategoryMerger.ts"],"names":[],"mappings":";;;AAQA;;;GAGG;AACU,QAAA,sBAAsB,GAAwD;IACzF,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM;QACvB,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,EAAE,YAAY,EAAE,uCAAuC,EAAE,CAAC;QACnE,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE;YAChF,GAAG,MAAM,CAAC,UAAU;YACpB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;SACrC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAA6B;QAClE,IAAG,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5C,uGAAuG;YACvG,MAAM,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;CACF,CAAC","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 { type MutablePropertyCategory } from \"../Editing/Mutable/MutablePropertyCategory\";\r\nimport { type PropertyCategoryDifference } from \"../Differencing/SchemaDifference\";\r\nimport { type SchemaItemMergerHandler } from \"./SchemaItemMerger\";\r\n\r\n/**\r\n * Defines a merge handler to merge PropertyCategory schema items.\r\n * @internal\r\n */\r\nexport const propertyCategoryMerger: SchemaItemMergerHandler<PropertyCategoryDifference> = {\r\n async add(context, change) {\r\n if (change.difference.priority === undefined) {\r\n return { errorMessage: \"PropertyCategory must define priority\" };\r\n }\r\n\r\n return context.editor.propertyCategories.createFromProps(context.targetSchemaKey, {\r\n ...change.difference,\r\n name: change.itemName,\r\n schemaItemType: change.schemaType,\r\n priority: change.difference.priority,\r\n });\r\n },\r\n async modify(context, change, itemKey, item: MutablePropertyCategory) {\r\n if(change.difference.label !== undefined) {\r\n item.setDisplayLabel(change.difference.label);\r\n }\r\n if(change.difference.description !== undefined) {\r\n item.setDescription(change.difference.description);\r\n }\r\n if(change.difference.priority !== undefined) {\r\n // TODO: inconsistency: setPriority does not return a result whether the priority was set successfully.\r\n await context.editor.propertyCategories.setPriority(itemKey, change.difference.priority);\r\n }\r\n return { itemKey };\r\n },\r\n};\r\n"]}
1
+ {"version":3,"file":"PropertyCategoryMerger.js","sourceRoot":"","sources":["../../../src/Merging/PropertyCategoryMerger.ts"],"names":[],"mappings":";;;AAQA;;;GAGG;AACU,QAAA,sBAAsB,GAAwD;IACzF,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM;QACvB,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE;YAChF,GAAG,MAAM,CAAC,UAAU;YACpB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;SACrC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAA6B;QAClE,IAAG,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QACD,IAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5C,uGAAuG;YACvG,MAAM,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF,CAAC","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 { type MutablePropertyCategory } from \"../Editing/Mutable/MutablePropertyCategory\";\r\nimport { type PropertyCategoryDifference } from \"../Differencing/SchemaDifference\";\r\nimport { type SchemaItemMergerHandler } from \"./SchemaItemMerger\";\r\n\r\n/**\r\n * Defines a merge handler to merge PropertyCategory schema items.\r\n * @internal\r\n */\r\nexport const propertyCategoryMerger: SchemaItemMergerHandler<PropertyCategoryDifference> = {\r\n async add(context, change) {\r\n if (change.difference.priority === undefined) {\r\n throw new Error(\"PropertyCategory must define priority\");\r\n }\r\n\r\n return context.editor.propertyCategories.createFromProps(context.targetSchemaKey, {\r\n ...change.difference,\r\n name: change.itemName,\r\n schemaItemType: change.schemaType,\r\n priority: change.difference.priority,\r\n });\r\n },\r\n async modify(context, change, itemKey, item: MutablePropertyCategory) {\r\n if(change.difference.label !== undefined) {\r\n item.setDisplayLabel(change.difference.label);\r\n }\r\n if(change.difference.description !== undefined) {\r\n item.setDescription(change.difference.description);\r\n }\r\n if(change.difference.priority !== undefined) {\r\n // TODO: inconsistency: setPriority does not return a result whether the priority was set successfully.\r\n await context.editor.propertyCategories.setPriority(itemKey, change.difference.priority);\r\n }\r\n },\r\n};\r\n"]}
@@ -1,13 +1,12 @@
1
- import type { SchemaEditResults } from "../ecschema-editing";
2
1
  import type { SchemaMergeContext } from "./SchemaMerger";
3
2
  import type { ClassItemDifference, ClassPropertyDifference } from "../Differencing/SchemaDifference";
4
3
  import { SchemaItemKey } from "@itwin/ecschema-metadata";
5
4
  /**
6
5
  * @internal
7
6
  */
8
- export declare function mergePropertyDifference(context: SchemaMergeContext, change: ClassPropertyDifference): Promise<SchemaEditResults>;
7
+ export declare function mergePropertyDifference(context: SchemaMergeContext, change: ClassPropertyDifference): Promise<void>;
9
8
  /**
10
9
  * @internal
11
10
  */
12
- export declare function mergeClassProperties(context: SchemaMergeContext, change: ClassItemDifference, itemKey: SchemaItemKey): Promise<SchemaEditResults>;
11
+ export declare function mergeClassProperties(context: SchemaMergeContext, change: ClassItemDifference, itemKey: SchemaItemKey): Promise<void>;
13
12
  //# sourceMappingURL=PropertyMerger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/PropertyMerger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAkB,MAAM,kCAAkC,CAAC;AACrH,OAAO,EAA8M,aAAa,EAAoD,MAAM,0BAA0B,CAAC;AAgBvT;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAMtI;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQvJ"}
1
+ {"version":3,"file":"PropertyMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/PropertyMerger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAkB,MAAM,kCAAkC,CAAC;AACrH,OAAO,EAA8M,aAAa,EAAoD,MAAM,0BAA0B,CAAC;AAgBvT;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzH;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1I"}
@@ -20,12 +20,8 @@ exports.mergePropertyDifference = mergePropertyDifference;
20
20
  */
21
21
  async function mergeClassProperties(context, change, itemKey) {
22
22
  for (const property of change.difference.properties || []) {
23
- const result = await mergeClassProperty(context, change, itemKey, property);
24
- if (result.errorMessage) {
25
- return result;
26
- }
23
+ await mergeClassProperty(context, change, itemKey, property);
27
24
  }
28
- return {};
29
25
  }
30
26
  exports.mergeClassProperties = mergeClassProperties;
31
27
  async function mergeClassProperty(context, change, itemKey, property) {
@@ -40,26 +36,13 @@ async function addClassProperty(context, itemKey, property) {
40
36
  if (property.kindOfQuantity !== undefined) {
41
37
  property.kindOfQuantity = await (0, SchemaItemMerger_1.updateSchemaItemFullName)(context, property.kindOfQuantity);
42
38
  }
43
- const createResult = await createProperty(context, itemKey, property);
44
- if (createResult.errorMessage) {
45
- return createResult;
46
- }
39
+ await createProperty(context, itemKey, property);
47
40
  if (property.customAttributes !== undefined) {
48
- const result = await (0, CustomAttributeMerger_1.applyCustomAttributes)(context, property.customAttributes, async (ca) => {
49
- try {
50
- const classEditor = await getClassEditor(context, itemKey);
51
- await classEditor.properties.addCustomAttribute(itemKey, property.name, ca);
52
- return {};
53
- }
54
- catch (e) {
55
- return { errorMessage: e.message };
56
- }
41
+ await (0, CustomAttributeMerger_1.applyCustomAttributes)(context, property.customAttributes, async (ca) => {
42
+ const classEditor = await getClassEditor(context, itemKey);
43
+ await classEditor.properties.addCustomAttribute(itemKey, property.name, ca);
57
44
  });
58
- if (result.errorMessage) {
59
- return result;
60
- }
61
45
  }
62
- return {};
63
46
  }
64
47
  async function createProperty(context, itemKey, property) {
65
48
  if (enumerationProperty.is(property)) {
@@ -80,13 +63,13 @@ async function modifyClassProperty(context, itemKey, propertyProps) {
80
63
  const ecClass = await context.editor.schemaContext.getSchemaItem(itemKey);
81
64
  const property = await ecClass.getProperty(propertyProps.name);
82
65
  if (property === undefined) {
83
- return { errorMessage: `Couldn't find property ${propertyProps.name} on class ${itemKey.name}` };
66
+ throw new Error(`Couldn't find property ${propertyProps.name} on class ${itemKey.name}`);
84
67
  }
85
68
  if (propertyProps.type !== undefined) {
86
- return { errorMessage: `Changing the property '${property.fullName}' type is not supported.` };
69
+ throw new Error(`Changing the property '${property.fullName}' type is not supported.`);
87
70
  }
88
71
  if (propertyProps.kindOfQuantity !== undefined) {
89
- return { errorMessage: `Changing the property '${property.fullName}' kind of quantity is not supported.` };
72
+ throw new Error(`Changing the property '${property.fullName}' kind of quantity is not supported.`);
90
73
  }
91
74
  const classEditor = await getClassEditor(context, ecClass);
92
75
  if (propertyProps.description !== undefined) {
@@ -120,7 +103,6 @@ async function modifyClassProperty(context, itemKey, propertyProps) {
120
103
  if (property.isStruct()) {
121
104
  return structProperty.merge(context, itemKey, property, propertyProps);
122
105
  }
123
- return {};
124
106
  }
125
107
  async function getClassEditor(context, ecClass) {
126
108
  const schemaItemType = ecschema_metadata_1.ECClass.isECClass(ecClass)
@@ -163,17 +145,17 @@ const enumerationProperty = {
163
145
  const enumerationKey = await (0, SchemaItemMerger_1.updateSchemaItemKey)(context, property.typeName);
164
146
  const enumerationType = await context.editor.schemaContext.getSchemaItem(enumerationKey);
165
147
  if (enumerationType === undefined) {
166
- return { errorMessage: `Unable to locate the enumeration class ${enumerationKey.name} in the context schema.` };
148
+ throw new Error(`Unable to locate the enumeration class ${enumerationKey.name} in the context schema.`);
167
149
  }
168
150
  property.typeName = enumerationKey.fullName;
169
151
  const classEditor = await getClassEditor(context, itemKey);
170
- return arrayProperty.is(property)
171
- ? classEditor.createEnumerationArrayPropertyFromProps(itemKey, property.name, enumerationType, property)
172
- : classEditor.createEnumerationPropertyFromProps(itemKey, property.name, enumerationType, property);
152
+ arrayProperty.is(property)
153
+ ? await classEditor.createEnumerationArrayPropertyFromProps(itemKey, property.name, enumerationType, property)
154
+ : await classEditor.createEnumerationPropertyFromProps(itemKey, property.name, enumerationType, property);
173
155
  },
174
156
  async merge(context, itemKey, property, props) {
175
157
  if ("enumeration" in props && props.enumeration !== undefined) {
176
- return { errorMessage: `Changing the property '${property.fullName}' enumeration is not supported.` };
158
+ throw new Error(`Changing the property '${property.fullName}' enumeration is not supported.`);
177
159
  }
178
160
  return primitiveProperty.merge(context, itemKey, property, props);
179
161
  },
@@ -186,7 +168,7 @@ const navigationProperty = {
186
168
  const relationshipKey = await (0, SchemaItemMerger_1.updateSchemaItemKey)(context, property.relationshipName);
187
169
  const relationshipType = await context.editor.schemaContext.getSchemaItem(relationshipKey);
188
170
  if (relationshipType === undefined) {
189
- return { errorMessage: `Unable to locate the relationship class ${relationshipKey.name} in the context schema.` };
171
+ throw new Error(`Unable to locate the relationship class ${relationshipKey.name} in the context schema.`);
190
172
  }
191
173
  property.relationshipName = relationshipKey.fullName;
192
174
  const ecClass = await context.editor.schemaContext.getSchemaItem(itemKey);
@@ -196,16 +178,15 @@ const navigationProperty = {
196
178
  return context.editor.mixins.createNavigationPropertyFromProps(itemKey, property);
197
179
  if (ecClass.schemaItemType === ecschema_metadata_1.SchemaItemType.RelationshipClass)
198
180
  return context.editor.relationships.createNavigationPropertyFromProps(itemKey, property);
199
- return { errorMessage: `Navigation property can't be added to ${ecClass.schemaItemType}.` };
181
+ throw new Error(`Navigation property can't be added to ${ecClass.schemaItemType}.`);
200
182
  },
201
183
  async merge(_context, _itemKey, property, props) {
202
184
  if (props.direction !== undefined) {
203
- return { errorMessage: `Changing the property '${property.fullName}' direction is not supported.` };
185
+ throw new Error(`Changing the property '${property.fullName}' direction is not supported.`);
204
186
  }
205
187
  if ("relationshipClass" in props && props.relationshipClass !== undefined) {
206
- return { errorMessage: `Changing the property '${property.fullName}' relationship class is not supported.` };
188
+ throw new Error(`Changing the property '${property.fullName}' relationship class is not supported.`);
207
189
  }
208
- return {};
209
190
  },
210
191
  };
211
192
  const primitiveProperty = {
@@ -215,7 +196,7 @@ const primitiveProperty = {
215
196
  async add(context, itemKey, property) {
216
197
  const propertyType = (0, ecschema_metadata_1.parsePrimitiveType)(property.typeName);
217
198
  if (propertyType === undefined) {
218
- return { errorMessage: `Invalid property type ${property.typeName} on property ${property.name}` };
199
+ throw new Error(`Invalid property type ${property.typeName} on property ${property.name}`);
219
200
  }
220
201
  const classEditor = await getClassEditor(context, itemKey);
221
202
  return arrayProperty.is(property)
@@ -224,7 +205,7 @@ const primitiveProperty = {
224
205
  },
225
206
  async merge(context, itemKey, property, props) {
226
207
  if (props.typeName) {
227
- return { errorMessage: `Changing the property '${property.fullName}' primitiveType is not supported.` };
208
+ throw new Error(`Changing the property '${property.fullName}' primitiveType is not supported.`);
228
209
  }
229
210
  const classEditor = await getClassEditor(context, itemKey);
230
211
  if (props.extendedTypeName !== undefined) {
@@ -242,7 +223,6 @@ const primitiveProperty = {
242
223
  if (props.maxValue !== undefined) {
243
224
  await classEditor.primitiveProperties.setMaxValue(itemKey, property.name, props.maxValue);
244
225
  }
245
- return {};
246
226
  },
247
227
  };
248
228
  const structProperty = {
@@ -253,7 +233,7 @@ const structProperty = {
253
233
  const structKey = await (0, SchemaItemMerger_1.updateSchemaItemKey)(context, property.typeName);
254
234
  const structType = await context.editor.schemaContext.getSchemaItem(structKey);
255
235
  if (structType === undefined) {
256
- return { errorMessage: `Unable to locate the struct ${structKey.name} in the context schema.` };
236
+ throw new Error(`Unable to locate the struct ${structKey.name} in the context schema.`);
257
237
  }
258
238
  property.typeName = structKey.fullName;
259
239
  const classEditor = await getClassEditor(context, itemKey);
@@ -263,9 +243,8 @@ const structProperty = {
263
243
  },
264
244
  async merge(_context, _itemKey, property, props) {
265
245
  if ("structClass" in props && props.structClass !== undefined) {
266
- return { errorMessage: `Changing the property '${property.fullName}' structClass is not supported.` };
246
+ throw new Error(`Changing the property '${property.fullName}' structClass is not supported.`);
267
247
  }
268
- return {};
269
248
  },
270
249
  };
271
250
  //# sourceMappingURL=PropertyMerger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyMerger.js","sourceRoot":"","sources":["../../../src/Merging/PropertyMerger.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport type { SchemaEditResults } from \"../ecschema-editing\";\r\nimport type { SchemaMergeContext } from \"./SchemaMerger\";\r\nimport type { ClassItemDifference, ClassPropertyDifference, DifferenceType } from \"../Differencing/SchemaDifference\";\r\nimport { AnyProperty, AnyPropertyProps, ArrayPropertyProps, CustomAttribute, ECClass, Enumeration, EnumerationPropertyProps, NavigationPropertyProps, parsePrimitiveType, PrimitivePropertyProps, RelationshipClass, SchemaItemKey, SchemaItemType, StructClass, StructPropertyProps } from \"@itwin/ecschema-metadata\";\r\nimport { updateSchemaItemFullName, updateSchemaItemKey } from \"./SchemaItemMerger\";\r\nimport { MutableProperty } from \"../Editing/Mutable/MutableProperty\";\r\nimport { applyCustomAttributes } from \"./CustomAttributeMerger\";\r\nimport { ECClasses } from \"../Editing/ECClasses\";\r\n\r\ntype PartialEditable<T> = {\r\n -readonly [P in keyof T]: T[P];\r\n};\r\n\r\ninterface PropertyMerger<T extends AnyPropertyProps> {\r\n is(property: AnyPropertyProps): property is T;\r\n add(context: SchemaMergeContext, itemKey: SchemaItemKey, props: PartialEditable<T>): Promise<SchemaEditResults>;\r\n merge(context: SchemaMergeContext, itemKey: SchemaItemKey, property: AnyProperty, props: T): Promise<SchemaEditResults>;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport async function mergePropertyDifference(context: SchemaMergeContext, change: ClassPropertyDifference): Promise<SchemaEditResults> {\r\n const classKey = new SchemaItemKey(change.itemName, context.targetSchemaKey);\r\n return mergeClassProperty(context, change, classKey, {\r\n ...change.difference,\r\n name: change.path,\r\n } as AnyPropertyProps);\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport async function mergeClassProperties(context: SchemaMergeContext, change: ClassItemDifference, itemKey: SchemaItemKey): Promise<SchemaEditResults> {\r\n for (const property of change.difference.properties || []) {\r\n const result = await mergeClassProperty(context, change, itemKey, property);\r\n if (result.errorMessage) {\r\n return result;\r\n }\r\n }\r\n return {};\r\n}\r\n\r\nasync function mergeClassProperty(context: SchemaMergeContext, change: { changeType: DifferenceType }, itemKey: SchemaItemKey, property: AnyPropertyProps) {\r\n return change.changeType === \"add\"\r\n ? addClassProperty(context, itemKey, property)\r\n : modifyClassProperty(context, itemKey, property);\r\n}\r\n\r\nasync function addClassProperty(context: SchemaMergeContext, itemKey: SchemaItemKey, property: PartialEditable<AnyPropertyProps>): Promise<SchemaEditResults> {\r\n if (property.category !== undefined) {\r\n property.category = await updateSchemaItemFullName(context, property.category);\r\n }\r\n\r\n if (property.kindOfQuantity !== undefined) {\r\n property.kindOfQuantity = await updateSchemaItemFullName(context, property.kindOfQuantity);\r\n }\r\n\r\n const createResult = await createProperty(context, itemKey, property);\r\n if (createResult.errorMessage) {\r\n return createResult;\r\n }\r\n\r\n if (property.customAttributes !== undefined) {\r\n const result = await applyCustomAttributes(context, property.customAttributes as CustomAttribute[], async (ca) => {\r\n try{\r\n const classEditor = await getClassEditor(context, itemKey);\r\n await classEditor.properties.addCustomAttribute(itemKey, property.name, ca);\r\n return {};\r\n } catch(e: any) {\r\n return { errorMessage: e.message };\r\n }\r\n });\r\n if (result.errorMessage) {\r\n return result;\r\n }\r\n }\r\n\r\n return {};\r\n}\r\n\r\nasync function createProperty(context: SchemaMergeContext, itemKey: SchemaItemKey, property: PartialEditable<AnyPropertyProps>) {\r\n if (enumerationProperty.is(property)) {\r\n return enumerationProperty.add(context, itemKey, property);\r\n }\r\n if (navigationProperty.is(property)) {\r\n return navigationProperty.add(context, itemKey, property);\r\n }\r\n if (primitiveProperty.is(property)) {\r\n return primitiveProperty.add(context, itemKey, property);\r\n }\r\n if (structProperty.is(property)) {\r\n return structProperty.add(context, itemKey, property);\r\n }\r\n return {};\r\n}\r\n\r\nasync function modifyClassProperty(context: SchemaMergeContext, itemKey: SchemaItemKey, propertyProps: AnyPropertyProps): Promise<SchemaEditResults> {\r\n const ecClass = await context.editor.schemaContext.getSchemaItem(itemKey) as ECClass;\r\n const property = await ecClass.getProperty(propertyProps.name) as MutableProperty;\r\n if (property === undefined) {\r\n return { errorMessage: `Couldn't find property ${propertyProps.name} on class ${itemKey.name}` };\r\n }\r\n\r\n if (propertyProps.type !== undefined) {\r\n return { errorMessage: `Changing the property '${property.fullName}' type is not supported.` };\r\n }\r\n if (propertyProps.kindOfQuantity !== undefined) {\r\n return { errorMessage: `Changing the property '${property.fullName}' kind of quantity is not supported.` };\r\n }\r\n\r\n const classEditor = await getClassEditor(context, ecClass);\r\n\r\n if (propertyProps.description !== undefined) {\r\n await classEditor.properties.setDescription(itemKey, propertyProps.name, propertyProps.description);\r\n }\r\n if (propertyProps.label !== undefined) {\r\n await classEditor.properties.setLabel(itemKey, propertyProps.name, propertyProps.label);\r\n }\r\n if (propertyProps.isReadOnly !== undefined) {\r\n await classEditor.properties.setIsReadOnly(itemKey, propertyProps.name, propertyProps.isReadOnly);\r\n }\r\n if (propertyProps.priority !== undefined) {\r\n await classEditor.properties.setPriority(itemKey, propertyProps.name, propertyProps.priority);\r\n }\r\n\r\n if (property.isArray()) {\r\n await arrayProperty.merge(context, itemKey, property.name, propertyProps);\r\n }\r\n\r\n if (propertyProps.category !== undefined) {\r\n const categoryKey = await updateSchemaItemKey(context, propertyProps.category);\r\n await classEditor.properties.setCategory(itemKey, property.name, categoryKey);\r\n }\r\n\r\n if (property.isEnumeration()) {\r\n return enumerationProperty.merge(context, itemKey, property, propertyProps as any);\r\n }\r\n if (property.isNavigation()) {\r\n return navigationProperty.merge(context, itemKey, property, propertyProps as any);\r\n }\r\n if (property.isPrimitive()) {\r\n return primitiveProperty.merge(context, itemKey, property, propertyProps as any);\r\n }\r\n if (property.isStruct()) {\r\n return structProperty.merge(context, itemKey, property, propertyProps as any);\r\n }\r\n\r\n return {};\r\n}\r\n\r\nasync function getClassEditor(context: SchemaMergeContext, ecClass: ECClass | SchemaItemKey): Promise<ECClasses> {\r\n const schemaItemType = ECClass.isECClass(ecClass)\r\n ? ecClass.schemaItemType\r\n : (await context.editor.schemaContext.getSchemaItem<ECClass>(ecClass))?.schemaItemType;\r\n\r\n switch(schemaItemType) {\r\n case SchemaItemType.EntityClass:\r\n return context.editor.entities;\r\n case SchemaItemType.Mixin:\r\n return context.editor.mixins;\r\n case SchemaItemType.StructClass:\r\n return context.editor.structs;\r\n case SchemaItemType.CustomAttributeClass:\r\n return context.editor.customAttributes;\r\n case SchemaItemType.RelationshipClass:\r\n return context.editor.relationships;\r\n default:\r\n throw new Error(\"SchemaItemType not supported\");\r\n }\r\n}\r\n\r\nconst arrayProperty = {\r\n is(property: AnyPropertyProps): boolean {\r\n return \"minOccurs\" in property && \"maxOccurs\" in property;\r\n },\r\n async merge(context: SchemaMergeContext, itemKey: SchemaItemKey, propertyName: string, props: ArrayPropertyProps) {\r\n const classEditor = await getClassEditor(context, itemKey);\r\n if (props.minOccurs !== undefined) {\r\n await classEditor.arrayProperties.setMinOccurs(itemKey, propertyName, props.minOccurs);\r\n }\r\n if (props.maxOccurs !== undefined) {\r\n await classEditor.arrayProperties.setMaxOccurs(itemKey, propertyName, props.maxOccurs);\r\n }\r\n },\r\n};\r\n\r\nconst enumerationProperty: PropertyMerger<EnumerationPropertyProps> = {\r\n is(property): property is EnumerationPropertyProps {\r\n return primitiveProperty.is(property) && property.typeName.includes(\".\");\r\n },\r\n async add(context, itemKey, property): Promise<SchemaEditResults> {\r\n const enumerationKey = await updateSchemaItemKey(context, property.typeName);\r\n const enumerationType = await context.editor.schemaContext.getSchemaItem<Enumeration>(enumerationKey);\r\n if (enumerationType === undefined) {\r\n return { errorMessage: `Unable to locate the enumeration class ${enumerationKey.name} in the context schema.` };\r\n }\r\n\r\n property.typeName = enumerationKey.fullName;\r\n\r\n const classEditor = await getClassEditor(context, itemKey);\r\n return arrayProperty.is(property)\r\n ? classEditor.createEnumerationArrayPropertyFromProps(itemKey, property.name, enumerationType, property)\r\n : classEditor.createEnumerationPropertyFromProps(itemKey, property.name, enumerationType, property);\r\n },\r\n async merge(context, itemKey, property, props) {\r\n if (\"enumeration\" in props && props.enumeration !== undefined) {\r\n return { errorMessage: `Changing the property '${property.fullName}' enumeration is not supported.` };\r\n }\r\n return primitiveProperty.merge(context, itemKey, property, props);\r\n },\r\n};\r\n\r\nconst navigationProperty: PropertyMerger<NavigationPropertyProps> = {\r\n is(property): property is NavigationPropertyProps {\r\n return property.type === \"NavigationProperty\";\r\n },\r\n async add(context, itemKey, property): Promise<SchemaEditResults> {\r\n const relationshipKey = await updateSchemaItemKey(context, property.relationshipName);\r\n const relationshipType = await context.editor.schemaContext.getSchemaItem<RelationshipClass>(relationshipKey);\r\n if (relationshipType === undefined) {\r\n return { errorMessage: `Unable to locate the relationship class ${relationshipKey.name} in the context schema.` };\r\n }\r\n\r\n property.relationshipName = relationshipKey.fullName;\r\n\r\n const ecClass = await context.editor.schemaContext.getSchemaItem(itemKey) as ECClass;\r\n if (ecClass.schemaItemType === SchemaItemType.EntityClass)\r\n return context.editor.entities.createNavigationPropertyFromProps(itemKey, property);\r\n if (ecClass.schemaItemType === SchemaItemType.Mixin)\r\n return context.editor.mixins.createNavigationPropertyFromProps(itemKey, property);\r\n if (ecClass.schemaItemType === SchemaItemType.RelationshipClass)\r\n return context.editor.relationships.createNavigationPropertyFromProps(itemKey, property);\r\n return { errorMessage: `Navigation property can't be added to ${ecClass.schemaItemType}.` };\r\n },\r\n async merge(_context, _itemKey, property, props) {\r\n if (props.direction !== undefined) {\r\n return { errorMessage: `Changing the property '${property.fullName}' direction is not supported.` };\r\n }\r\n if (\"relationshipClass\" in props && props.relationshipClass !== undefined) {\r\n return { errorMessage: `Changing the property '${property.fullName}' relationship class is not supported.` };\r\n }\r\n return {};\r\n },\r\n};\r\n\r\nconst primitiveProperty: PropertyMerger<PrimitivePropertyProps> = {\r\n is(property): property is PrimitivePropertyProps {\r\n return property.type === \"PrimitiveProperty\" || property.type === \"PrimitiveArrayProperty\";\r\n },\r\n async add(context, itemKey, property): Promise<SchemaEditResults> {\r\n const propertyType = parsePrimitiveType(property.typeName);\r\n if (propertyType === undefined) {\r\n return { errorMessage: `Invalid property type ${property.typeName} on property ${property.name}` };\r\n }\r\n\r\n const classEditor = await getClassEditor(context, itemKey);\r\n return arrayProperty.is(property)\r\n ? classEditor.createPrimitiveArrayPropertyFromProps(itemKey, property.name, propertyType, property)\r\n : classEditor.createPrimitivePropertyFromProps(itemKey, property.name, propertyType, property);\r\n },\r\n async merge(context, itemKey, property, props) {\r\n if (props.typeName) {\r\n return { errorMessage: `Changing the property '${property.fullName}' primitiveType is not supported.` };\r\n }\r\n\r\n const classEditor = await getClassEditor(context, itemKey);\r\n if (props.extendedTypeName !== undefined) {\r\n await classEditor.primitiveProperties.setExtendedTypeName(itemKey, property.name, props.extendedTypeName);\r\n }\r\n if (props.minLength !== undefined) {\r\n await classEditor.primitiveProperties.setMinLength(itemKey, property.name, props.minLength);\r\n }\r\n if (props.maxLength !== undefined) {\r\n await classEditor.primitiveProperties.setMaxLength(itemKey, property.name, props.maxLength);\r\n }\r\n if (props.minValue !== undefined) {\r\n await classEditor.primitiveProperties.setMinValue(itemKey, property.name, props.minValue);\r\n }\r\n if (props.maxValue !== undefined) {\r\n await classEditor.primitiveProperties.setMaxValue(itemKey, property.name, props.maxValue);\r\n }\r\n return {};\r\n },\r\n};\r\n\r\nconst structProperty: PropertyMerger<StructPropertyProps> = {\r\n is(property): property is StructPropertyProps {\r\n return property.type === \"StructProperty\" || property.type === \"StructArrayProperty\";\r\n },\r\n async add(context, itemKey, property): Promise<SchemaEditResults> {\r\n const structKey = await updateSchemaItemKey(context, property.typeName);\r\n const structType = await context.editor.schemaContext.getSchemaItem<StructClass>(structKey);\r\n if (structType === undefined) {\r\n return { errorMessage: `Unable to locate the struct ${structKey.name} in the context schema.` };\r\n }\r\n\r\n property.typeName = structKey.fullName;\r\n\r\n const classEditor = await getClassEditor(context, itemKey);\r\n return arrayProperty.is(property)\r\n ? classEditor.createStructArrayPropertyFromProps(itemKey, property.name, structType, property)\r\n : classEditor.createStructPropertyFromProps(itemKey, property.name, structType, property);\r\n },\r\n async merge(_context, _itemKey, property, props) {\r\n if (\"structClass\" in props && props.structClass !== undefined) {\r\n return { errorMessage: `Changing the property '${property.fullName}' structClass is not supported.` };\r\n }\r\n return {};\r\n },\r\n};\r\n"]}
1
+ {"version":3,"file":"PropertyMerger.js","sourceRoot":"","sources":["../../../src/Merging/PropertyMerger.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\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 type { SchemaMergeContext } from \"./SchemaMerger\";\r\nimport type { ClassItemDifference, ClassPropertyDifference, DifferenceType } from \"../Differencing/SchemaDifference\";\r\nimport { AnyProperty, AnyPropertyProps, ArrayPropertyProps, CustomAttribute, ECClass, Enumeration, EnumerationPropertyProps, NavigationPropertyProps, parsePrimitiveType, PrimitivePropertyProps, RelationshipClass, SchemaItemKey, SchemaItemType, StructClass, StructPropertyProps } from \"@itwin/ecschema-metadata\";\r\nimport { updateSchemaItemFullName, updateSchemaItemKey } from \"./SchemaItemMerger\";\r\nimport { MutableProperty } from \"../Editing/Mutable/MutableProperty\";\r\nimport { applyCustomAttributes } from \"./CustomAttributeMerger\";\r\nimport { ECClasses } from \"../Editing/ECClasses\";\r\n\r\ntype PartialEditable<T> = {\r\n -readonly [P in keyof T]: T[P];\r\n};\r\n\r\ninterface PropertyMerger<T extends AnyPropertyProps> {\r\n is(property: AnyPropertyProps): property is T;\r\n add(context: SchemaMergeContext, itemKey: SchemaItemKey, props: PartialEditable<T>): Promise<void>;\r\n merge(context: SchemaMergeContext, itemKey: SchemaItemKey, property: AnyProperty, props: T): Promise<void>;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport async function mergePropertyDifference(context: SchemaMergeContext, change: ClassPropertyDifference): Promise<void> {\r\n const classKey = new SchemaItemKey(change.itemName, context.targetSchemaKey);\r\n return mergeClassProperty(context, change, classKey, {\r\n ...change.difference,\r\n name: change.path,\r\n } as AnyPropertyProps);\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport async function mergeClassProperties(context: SchemaMergeContext, change: ClassItemDifference, itemKey: SchemaItemKey): Promise<void> {\r\n for (const property of change.difference.properties || []) {\r\n await mergeClassProperty(context, change, itemKey, property);\r\n }\r\n}\r\n\r\nasync function mergeClassProperty(context: SchemaMergeContext, change: { changeType: DifferenceType }, itemKey: SchemaItemKey, property: AnyPropertyProps) {\r\n return change.changeType === \"add\"\r\n ? addClassProperty(context, itemKey, property)\r\n : modifyClassProperty(context, itemKey, property);\r\n}\r\n\r\nasync function addClassProperty(context: SchemaMergeContext, itemKey: SchemaItemKey, property: PartialEditable<AnyPropertyProps>): Promise<void> {\r\n if (property.category !== undefined) {\r\n property.category = await updateSchemaItemFullName(context, property.category);\r\n }\r\n\r\n if (property.kindOfQuantity !== undefined) {\r\n property.kindOfQuantity = await updateSchemaItemFullName(context, property.kindOfQuantity);\r\n }\r\n\r\n await createProperty(context, itemKey, property);\r\n\r\n if (property.customAttributes !== undefined) {\r\n await applyCustomAttributes(context, property.customAttributes as CustomAttribute[], async (ca) => {\r\n const classEditor = await getClassEditor(context, itemKey);\r\n await classEditor.properties.addCustomAttribute(itemKey, property.name, ca);\r\n });\r\n }\r\n}\r\n\r\nasync function createProperty(context: SchemaMergeContext, itemKey: SchemaItemKey, property: PartialEditable<AnyPropertyProps>) {\r\n if (enumerationProperty.is(property)) {\r\n return enumerationProperty.add(context, itemKey, property);\r\n }\r\n if (navigationProperty.is(property)) {\r\n return navigationProperty.add(context, itemKey, property);\r\n }\r\n if (primitiveProperty.is(property)) {\r\n return primitiveProperty.add(context, itemKey, property);\r\n }\r\n if (structProperty.is(property)) {\r\n return structProperty.add(context, itemKey, property);\r\n }\r\n return {};\r\n}\r\n\r\nasync function modifyClassProperty(context: SchemaMergeContext, itemKey: SchemaItemKey, propertyProps: AnyPropertyProps): Promise<void> {\r\n const ecClass = await context.editor.schemaContext.getSchemaItem(itemKey) as ECClass;\r\n const property = await ecClass.getProperty(propertyProps.name) as MutableProperty;\r\n if (property === undefined) {\r\n throw new Error(`Couldn't find property ${propertyProps.name} on class ${itemKey.name}`);\r\n }\r\n\r\n if (propertyProps.type !== undefined) {\r\n throw new Error(`Changing the property '${property.fullName}' type is not supported.`);\r\n }\r\n if (propertyProps.kindOfQuantity !== undefined) {\r\n throw new Error(`Changing the property '${property.fullName}' kind of quantity is not supported.`);\r\n }\r\n\r\n const classEditor = await getClassEditor(context, ecClass);\r\n\r\n if (propertyProps.description !== undefined) {\r\n await classEditor.properties.setDescription(itemKey, propertyProps.name, propertyProps.description);\r\n }\r\n if (propertyProps.label !== undefined) {\r\n await classEditor.properties.setLabel(itemKey, propertyProps.name, propertyProps.label);\r\n }\r\n if (propertyProps.isReadOnly !== undefined) {\r\n await classEditor.properties.setIsReadOnly(itemKey, propertyProps.name, propertyProps.isReadOnly);\r\n }\r\n if (propertyProps.priority !== undefined) {\r\n await classEditor.properties.setPriority(itemKey, propertyProps.name, propertyProps.priority);\r\n }\r\n\r\n if (property.isArray()) {\r\n await arrayProperty.merge(context, itemKey, property.name, propertyProps);\r\n }\r\n\r\n if (propertyProps.category !== undefined) {\r\n const categoryKey = await updateSchemaItemKey(context, propertyProps.category);\r\n await classEditor.properties.setCategory(itemKey, property.name, categoryKey);\r\n }\r\n\r\n if (property.isEnumeration()) {\r\n return enumerationProperty.merge(context, itemKey, property, propertyProps as any);\r\n }\r\n if (property.isNavigation()) {\r\n return navigationProperty.merge(context, itemKey, property, propertyProps as any);\r\n }\r\n if (property.isPrimitive()) {\r\n return primitiveProperty.merge(context, itemKey, property, propertyProps as any);\r\n }\r\n if (property.isStruct()) {\r\n return structProperty.merge(context, itemKey, property, propertyProps as any);\r\n }\r\n}\r\n\r\nasync function getClassEditor(context: SchemaMergeContext, ecClass: ECClass | SchemaItemKey): Promise<ECClasses> {\r\n const schemaItemType = ECClass.isECClass(ecClass)\r\n ? ecClass.schemaItemType\r\n : (await context.editor.schemaContext.getSchemaItem<ECClass>(ecClass))?.schemaItemType;\r\n\r\n switch(schemaItemType) {\r\n case SchemaItemType.EntityClass:\r\n return context.editor.entities;\r\n case SchemaItemType.Mixin:\r\n return context.editor.mixins;\r\n case SchemaItemType.StructClass:\r\n return context.editor.structs;\r\n case SchemaItemType.CustomAttributeClass:\r\n return context.editor.customAttributes;\r\n case SchemaItemType.RelationshipClass:\r\n return context.editor.relationships;\r\n default:\r\n throw new Error(\"SchemaItemType not supported\");\r\n }\r\n}\r\n\r\nconst arrayProperty = {\r\n is(property: AnyPropertyProps): boolean {\r\n return \"minOccurs\" in property && \"maxOccurs\" in property;\r\n },\r\n async merge(context: SchemaMergeContext, itemKey: SchemaItemKey, propertyName: string, props: ArrayPropertyProps) {\r\n const classEditor = await getClassEditor(context, itemKey);\r\n if (props.minOccurs !== undefined) {\r\n await classEditor.arrayProperties.setMinOccurs(itemKey, propertyName, props.minOccurs);\r\n }\r\n if (props.maxOccurs !== undefined) {\r\n await classEditor.arrayProperties.setMaxOccurs(itemKey, propertyName, props.maxOccurs);\r\n }\r\n },\r\n};\r\n\r\nconst enumerationProperty: PropertyMerger<EnumerationPropertyProps> = {\r\n is(property): property is EnumerationPropertyProps {\r\n return primitiveProperty.is(property) && property.typeName.includes(\".\");\r\n },\r\n async add(context, itemKey, property): Promise<void> {\r\n const enumerationKey = await updateSchemaItemKey(context, property.typeName);\r\n const enumerationType = await context.editor.schemaContext.getSchemaItem<Enumeration>(enumerationKey);\r\n if (enumerationType === undefined) {\r\n throw new Error(`Unable to locate the enumeration class ${enumerationKey.name} in the context schema.`);\r\n }\r\n\r\n property.typeName = enumerationKey.fullName;\r\n\r\n const classEditor = await getClassEditor(context, itemKey);\r\n\r\n arrayProperty.is(property)\r\n ? await classEditor.createEnumerationArrayPropertyFromProps(itemKey, property.name, enumerationType, property)\r\n : await classEditor.createEnumerationPropertyFromProps(itemKey, property.name, enumerationType, property);\r\n },\r\n async merge(context, itemKey, property, props) {\r\n if (\"enumeration\" in props && props.enumeration !== undefined) {\r\n throw new Error(`Changing the property '${property.fullName}' enumeration is not supported.`);\r\n }\r\n return primitiveProperty.merge(context, itemKey, property, props);\r\n },\r\n};\r\n\r\nconst navigationProperty: PropertyMerger<NavigationPropertyProps> = {\r\n is(property): property is NavigationPropertyProps {\r\n return property.type === \"NavigationProperty\";\r\n },\r\n async add(context, itemKey, property): Promise<void> {\r\n const relationshipKey = await updateSchemaItemKey(context, property.relationshipName);\r\n const relationshipType = await context.editor.schemaContext.getSchemaItem<RelationshipClass>(relationshipKey);\r\n if (relationshipType === undefined) {\r\n throw new Error(`Unable to locate the relationship class ${relationshipKey.name} in the context schema.`);\r\n }\r\n\r\n property.relationshipName = relationshipKey.fullName;\r\n\r\n const ecClass = await context.editor.schemaContext.getSchemaItem(itemKey) as ECClass;\r\n if (ecClass.schemaItemType === SchemaItemType.EntityClass)\r\n return context.editor.entities.createNavigationPropertyFromProps(itemKey, property);\r\n if (ecClass.schemaItemType === SchemaItemType.Mixin)\r\n return context.editor.mixins.createNavigationPropertyFromProps(itemKey, property);\r\n if (ecClass.schemaItemType === SchemaItemType.RelationshipClass)\r\n return context.editor.relationships.createNavigationPropertyFromProps(itemKey, property);\r\n throw new Error(`Navigation property can't be added to ${ecClass.schemaItemType}.`);\r\n },\r\n async merge(_context, _itemKey, property, props) {\r\n if (props.direction !== undefined) {\r\n throw new Error(`Changing the property '${property.fullName}' direction is not supported.`);\r\n }\r\n if (\"relationshipClass\" in props && props.relationshipClass !== undefined) {\r\n throw new Error(`Changing the property '${property.fullName}' relationship class is not supported.`);\r\n }\r\n },\r\n};\r\n\r\nconst primitiveProperty: PropertyMerger<PrimitivePropertyProps> = {\r\n is(property): property is PrimitivePropertyProps {\r\n return property.type === \"PrimitiveProperty\" || property.type === \"PrimitiveArrayProperty\";\r\n },\r\n async add(context, itemKey, property): Promise<void> {\r\n const propertyType = parsePrimitiveType(property.typeName);\r\n if (propertyType === undefined) {\r\n throw new Error(`Invalid property type ${property.typeName} on property ${property.name}`);\r\n }\r\n\r\n const classEditor = await getClassEditor(context, itemKey);\r\n return arrayProperty.is(property)\r\n ? classEditor.createPrimitiveArrayPropertyFromProps(itemKey, property.name, propertyType, property)\r\n : classEditor.createPrimitivePropertyFromProps(itemKey, property.name, propertyType, property);\r\n },\r\n async merge(context, itemKey, property, props) {\r\n if (props.typeName) {\r\n throw new Error(`Changing the property '${property.fullName}' primitiveType is not supported.`);\r\n }\r\n\r\n const classEditor = await getClassEditor(context, itemKey);\r\n if (props.extendedTypeName !== undefined) {\r\n await classEditor.primitiveProperties.setExtendedTypeName(itemKey, property.name, props.extendedTypeName);\r\n }\r\n if (props.minLength !== undefined) {\r\n await classEditor.primitiveProperties.setMinLength(itemKey, property.name, props.minLength);\r\n }\r\n if (props.maxLength !== undefined) {\r\n await classEditor.primitiveProperties.setMaxLength(itemKey, property.name, props.maxLength);\r\n }\r\n if (props.minValue !== undefined) {\r\n await classEditor.primitiveProperties.setMinValue(itemKey, property.name, props.minValue);\r\n }\r\n if (props.maxValue !== undefined) {\r\n await classEditor.primitiveProperties.setMaxValue(itemKey, property.name, props.maxValue);\r\n }\r\n },\r\n};\r\n\r\nconst structProperty: PropertyMerger<StructPropertyProps> = {\r\n is(property): property is StructPropertyProps {\r\n return property.type === \"StructProperty\" || property.type === \"StructArrayProperty\";\r\n },\r\n async add(context, itemKey, property): Promise<void> {\r\n const structKey = await updateSchemaItemKey(context, property.typeName);\r\n const structType = await context.editor.schemaContext.getSchemaItem<StructClass>(structKey);\r\n if (structType === undefined) {\r\n throw new Error(`Unable to locate the struct ${structKey.name} in the context schema.`);\r\n }\r\n\r\n property.typeName = structKey.fullName;\r\n\r\n const classEditor = await getClassEditor(context, itemKey);\r\n return arrayProperty.is(property)\r\n ? classEditor.createStructArrayPropertyFromProps(itemKey, property.name, structType, property)\r\n : classEditor.createStructPropertyFromProps(itemKey, property.name, structType, property);\r\n },\r\n async merge(_context, _itemKey, property, props) {\r\n if (\"structClass\" in props && props.structClass !== undefined) {\r\n throw new Error(`Changing the property '${property.fullName}' structClass is not supported.`);\r\n }\r\n },\r\n};\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import { type RelationshipClassDifference, type RelationshipConstraintClassDifference, type RelationshipConstraintDifference } from "../Differencing/SchemaDifference";
2
2
  import { type SchemaItemMergerHandler } from "./SchemaItemMerger";
3
3
  import { SchemaMergeContext } from "./SchemaMerger";
4
- import { SchemaItemEditResults } from "../Editing/Editor";
4
+ import { SchemaItemKey } from "@itwin/ecschema-metadata";
5
5
  /**
6
6
  * Defines a merge handler to merge RelationshipClass schema items.
7
7
  * @internal
@@ -12,10 +12,12 @@ export declare const relationshipClassMerger: SchemaItemMergerHandler<Relationsh
12
12
  * This only supports modify as the RelationshipConstraints are always set on the Relationship classes.
13
13
  * @internal
14
14
  */
15
- export declare function mergeRelationshipConstraint(context: SchemaMergeContext, change: RelationshipConstraintDifference): Promise<SchemaItemEditResults>;
15
+ export declare function mergeRelationshipConstraint(context: SchemaMergeContext, change: RelationshipConstraintDifference): Promise<void | {
16
+ itemKey: SchemaItemKey;
17
+ }>;
16
18
  /**
17
19
  * Merges differences of a Relationship constraint classes.
18
20
  * @internal
19
21
  */
20
- export declare function mergeRelationshipClassConstraint(context: SchemaMergeContext, change: RelationshipConstraintClassDifference): Promise<SchemaItemEditResults>;
22
+ export declare function mergeRelationshipClassConstraint(context: SchemaMergeContext, change: RelationshipConstraintClassDifference): Promise<void>;
21
23
  //# sourceMappingURL=RelationshipClassMerger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipClassMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/RelationshipClassMerger.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,qCAAqC,EAAE,KAAK,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEvK,OAAO,EAAoB,KAAK,uBAAuB,EAAuB,MAAM,oBAAoB,CAAC;AAEzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI1D;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,uBAAuB,CAAC,2BAA2B,CA4BxF,CAAC;AAgCF;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,gCAAgC,kCAsCtH;AAED;;;GAGG;AACH,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,qCAAqC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAmBjK"}
1
+ {"version":3,"file":"RelationshipClassMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/RelationshipClassMerger.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,qCAAqC,EAAE,KAAK,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEvK,OAAO,EAAoB,KAAK,uBAAuB,EAAiD,MAAM,oBAAoB,CAAC;AAEnI,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAuI,aAAa,EAAkB,MAAM,0BAA0B,CAAC;AAI9M;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,uBAAuB,CAAC,2BAA2B,CA4BxF,CAAC;AA8BF;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,gCAAgC;;GAgCtH;AAED;;;GAGG;AACH,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,qCAAqC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhJ"}