@itwin/ecschema-editing 4.10.0-dev.26 → 4.10.0-dev.28

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 (34) hide show
  1. package/lib/cjs/Differencing/SchemaConflicts.d.ts +2 -1
  2. package/lib/cjs/Differencing/SchemaConflicts.d.ts.map +1 -1
  3. package/lib/cjs/Differencing/SchemaConflicts.js +1 -0
  4. package/lib/cjs/Differencing/SchemaConflicts.js.map +1 -1
  5. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.d.ts +3 -2
  6. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.d.ts.map +1 -1
  7. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.js +30 -11
  8. package/lib/cjs/Differencing/SchemaDiagnosticVisitor.js.map +1 -1
  9. package/lib/cjs/Differencing/SchemaDifference.d.ts +13 -2
  10. package/lib/cjs/Differencing/SchemaDifference.d.ts.map +1 -1
  11. package/lib/cjs/Differencing/SchemaDifference.js +1 -0
  12. package/lib/cjs/Differencing/SchemaDifference.js.map +1 -1
  13. package/lib/cjs/Differencing/SchemaDifferenceValidator.d.ts.map +1 -1
  14. package/lib/cjs/Differencing/SchemaDifferenceValidator.js +21 -3
  15. package/lib/cjs/Differencing/SchemaDifferenceValidator.js.map +1 -1
  16. package/lib/cjs/Differencing/SchemaDifferenceVisitor.d.ts.map +1 -1
  17. package/lib/cjs/Differencing/SchemaDifferenceVisitor.js +2 -0
  18. package/lib/cjs/Differencing/SchemaDifferenceVisitor.js.map +1 -1
  19. package/lib/cjs/Editing/KindOfQuantities.d.ts +1 -2
  20. package/lib/cjs/Editing/KindOfQuantities.d.ts.map +1 -1
  21. package/lib/cjs/Editing/KindOfQuantities.js +2 -4
  22. package/lib/cjs/Editing/KindOfQuantities.js.map +1 -1
  23. package/lib/cjs/Merging/KindOfQuantityMerger.d.ts +7 -2
  24. package/lib/cjs/Merging/KindOfQuantityMerger.d.ts.map +1 -1
  25. package/lib/cjs/Merging/KindOfQuantityMerger.js +37 -15
  26. package/lib/cjs/Merging/KindOfQuantityMerger.js.map +1 -1
  27. package/lib/cjs/Merging/SchemaMergingVisitor.d.ts +6 -1
  28. package/lib/cjs/Merging/SchemaMergingVisitor.d.ts.map +1 -1
  29. package/lib/cjs/Merging/SchemaMergingVisitor.js +9 -0
  30. package/lib/cjs/Merging/SchemaMergingVisitor.js.map +1 -1
  31. package/lib/cjs/Merging/SchemaMergingWalker.d.ts.map +1 -1
  32. package/lib/cjs/Merging/SchemaMergingWalker.js +1 -0
  33. package/lib/cjs/Merging/SchemaMergingWalker.js.map +1 -1
  34. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDifferenceValidator.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDifferenceValidator.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,gEAAgR;AAEhR,uDAA8E;AAC9E,uEAA4F;AAE5F;;;;;;;;GAQG;AACI,KAAK,UAAU,mBAAmB,CAAC,WAAkC,EAAE,YAAoB,EAAE,YAAoB;IACtH,MAAM,OAAO,GAAG,IAAI,iCAAiC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,IAAI,gDAAsB,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEnC,OAAO,OAAO,CAAC,SAAS,CAAC;AAC3B,CAAC;AAPD,kDAOC;AAED;;;GAGG;AACH,MAAM,iCAAiC;IAMrC,6EAA6E;IAC7E,YAAY,YAAoB,EAAE,YAAoB;QACpD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAEO,WAAW,CAAC,QAAqC;QACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,qBAAqB,CAAC,MAAwB;IAC3D,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,8BAA8B,CAAC,KAAgC;QAC1E,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAW,CAAC;QACrG,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtG,IAAI,qBAAqB,IAAI,qBAAqB,KAAK,qBAAqB,CAAC,IAAI,EAAE,CAAC;YAClF,IAAI,CAAC,WAAW,CAAC;gBACf,IAAI,EAAE,8BAAY,CAAC,yBAAyB;gBAC5C,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI;gBAC7B,MAAM,EAAE,qBAAqB;gBAC7B,WAAW,EAAE,sEAAsE;aACpF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CAAC,KAA8B,EAAE,gBAAwC;QAC9G,wFAAwF;QACxF,gDAAgD;QAChD,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACjE,IAAI,CAAC,WAAW,CAAC;gBACf,IAAI,EAAE,8BAAY,CAAC,mBAAmB;gBACtC,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,MAAM,EAAE,gBAAgB,CAAC,cAAc;gBACvC,WAAW,EAAE,gFAAgF;aAC9F,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB,CAAC,KAA6B,EAAE,eAAwB;QAC5F,IAAI,WAAW,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,eAAe,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC3H,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,8BAAY,CAAC,iBAAiB;gBACpC,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,uBAAuB,CAAC,eAAe,CAAC,SAAS,CAAC;gBAC1D,WAAW,EAAE,oEAAoE;aAClF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAY,CAAC;QACnG,IAAI,eAAe,CAAC,QAAQ,KAAK,mCAAe,CAAC,MAAM,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,8BAAY,CAAC,eAAe;gBAClC,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,eAAe,CAAC,QAAQ;gBAChC,MAAM,EAAE,uBAAuB,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,IAAI;gBAClE,WAAW,EAAE,sBAAsB;aACpC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,eAAe,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YACrG,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,8BAAY,CAAC,oBAAoB;gBACvC,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,eAAe,CAAC,QAAQ;gBAChC,MAAM,EAAE,uBAAuB,CAAC,eAAe,CAAC,SAAS,CAAC;gBAC1D,WAAW,EAAE,+DAA+D;aAC7E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,KAA6B;QAC9D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAU,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAChE,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,4BAA4B,CAAC,KAA6B,EAAE,WAAoB;QAC5F,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,eAAe,GAAG,IAAA,sCAAkB,EAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACtE,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,mCAAe,CAAC,IAAI,EAAE,CAAC;gBAC9E,IAAI,CAAC,WAAW,CAAC;oBACf,IAAI,EAAE,8BAAY,CAAC,wBAAwB;oBAC3C,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;oBACjC,MAAM,EAAE,IAAA,yCAAqB,EAAC,WAAW,CAAC,QAAQ,CAAC;oBACnD,WAAW,EAAE,kCAAkC;iBAChD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,uBAAuB,CAAC,KAAyB;QAC5D,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mCAAmC,CAAC,KAAqC;QACpF,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,sCAAsC,CAAC,MAAiC;IACrF,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,0BAA0B,CAAC,KAA4B;QAClE,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,+BAA+B,CAAC,KAAiC;QAC5E,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YAC1C,gFAAgF;YAChF,iFAAiF;YACjF,mEAAmE;YACnE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAU,CAAC;YAC7E,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAgB,CAAC;YACzF,IAAI,WAAW,CAAC,SAAS,IAAI,CAAC,MAAM,gBAAgB,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrF,IAAI,CAAC,WAAW,CAAC;oBACf,IAAI,EAAE,8BAAY,CAAC,oCAAoC;oBACvD,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,SAAS;oBACjB,WAAW,EAAE,qCAAqC;iBACnD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,0BAA0B,CAAC,KAA4B;QAClE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAc,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC;oBACf,IAAI,EAAE,8BAAY,CAAC,0BAA0B;oBAC7C,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI;oBAC7B,MAAM,EAAE,IAAA,yCAAqB,EAAC,WAAW,CAAC,IAAK,CAAC;oBAChD,WAAW,EAAE,6CAA6C;iBAC3D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,yBAAyB,CAAC,KAA2B;QAChE,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAgB,CAAC;QACpF,MAAM,UAAU,GAAG,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC;gBACf,IAAI,EAAE,8BAAY,CAAC,0BAA0B;gBAC7C,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK;gBAC9B,MAAM,EAAE,UAAU,CAAC,KAAK;gBACxB,WAAW,EAAE,sCAAsC;aACpD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,qBAAqB,CAAC,KAAuB;QACxD,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,2BAA2B,CAAC,KAA6B;QACpE,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,6BAA6B,CAAC,KAA+B;QACxE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAiB,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxF,IAAI,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAClE,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC;oBACf,IAAI,EAAE,8BAAY,CAAC,0BAA0B;oBAC7C,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,eAAe;oBACxC,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,eAAe,CAAC;oBAC/D,WAAW,EAAE,oDAAoD;iBAClE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,oBAAoB,CAAC,KAA2B;QAC3D,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,yBAAyB,CAAC,KAA2B;QAChE,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,uBAAuB,CAAC,KAA8B;QACjE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC;QAChF,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC;QAChF,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;QAE7E,4EAA4E;QAC5E,kDAAkD;QAClD,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,8BAAY,CAAC,uBAAuB;gBAC1C,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC;gBAC/C,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC;gBAC/C,WAAW,EAAE,iEAAiE;aAC/E,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAClE,IAAI,gBAAgB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC;gBACtD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC;gBACtD,IAAG,CAAC,SAAS,EAAE,CAAC;oBACd,OAAO,IAAI,CAAC,WAAW,CAAC;wBACtB,IAAI,EAAE,8BAAY,CAAC,iCAAiC;wBACpD,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc;wBACvC,MAAM,EAAE,IAAI;wBACZ,WAAW,EAAE,kGAAkG;qBAChH,CAAC,CAAC;gBACL,CAAC;gBAED,IAAG,CAAC,SAAS,EAAE,CAAC;oBACd,OAAO,IAAI,CAAC,WAAW,CAAC;wBACtB,IAAI,EAAE,8BAAY,CAAC,iCAAiC;wBACpD,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,cAAc,CAAC;wBAC9D,WAAW,EAAE,2FAA2F;qBACzG,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,mBAAmB,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,mBAAmB,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtG,IAAI,CAAC,WAAW,CAAC;wBACf,IAAI,EAAE,8BAAY,CAAC,qCAAqC;wBACxD,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc;wBACvC,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,cAAc,CAAC;wBAC9D,WAAW,EAAE,uEAAuE;qBACrF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,+BAA+B,CAAC,KAAiC;QAC5E,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,gCAAgC,CAAC,KAAkC;QAC9E,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,qCAAqC,CAAC,MAAwC;IAC3F,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,0CAA0C,CAAC,MAA6C;IACrG,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,0BAA0B,CAAC,KAA4B;QAClE,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mBAAmB,CAAC,KAAqB;QACpD,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,yBAAyB,CAAC,KAA2B;QAChE,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CAAC,OAA4B,EAAE,YAAqC;QAC3F,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yDAAyD;QACzD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YACvC,kFAAkF;YAClF,IAAG,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU;gBAChD,OAAO,IAAI,CAAC;YACd,kFAAkF;YAClF,8BAA8B;YAC9B,IAAG,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,YAAY,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI;gBACvG,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,QAA2C;IAC1E,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,QAA2C;IACtE,OAAO,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,QAAkB;IACjD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI,QAAQ,CAAC,aAAa,EAAE;QAC1B,OAAO,GAAG,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE,CAAC;IAC9E,IAAI,QAAQ,CAAC,WAAW,EAAE;QACxB,OAAO,GAAG,MAAM,GAAG,IAAA,yCAAqB,EAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,MAAM,EAAE,CAAC;IAC9E,IAAI,QAAQ,CAAC,QAAQ,EAAE;QACrB,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC;IAC9D,IAAI,QAAQ,CAAC,YAAY,EAAE;QACzB,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC;IACpE,OAAO,IAAA,wCAAoB,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACrD,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\n/** @packageDocumentation\r\n * @module Differencing\r\n */\r\n\r\nimport { classModifierToString, ECClass, ECClassModifier, EntityClass, Enumeration, KindOfQuantity, LazyLoadedSchemaItem, Mixin, parseClassModifier, primitiveTypeToString, Property, propertyTypeToString, Schema, SchemaItem, SchemaItemKey } from \"@itwin/ecschema-metadata\";\r\nimport { AnyClassItemDifference, AnySchemaDifference, AnySchemaItemDifference, ClassPropertyDifference, ConstantDifference, CustomAttributeClassDifference, CustomAttributeDifference, EntityClassDifference, EntityClassMixinDifference, EnumerationDifference, EnumeratorDifference, FormatDifference, InvertedUnitDifference, KindOfQuantityDifference, MixinClassDifference, PhenomenonDifference, PropertyCategoryDifference, RelationshipClassDifference, RelationshipConstraintClassDifference, RelationshipConstraintDifference, SchemaDifference, SchemaReferenceDifference, StructClassDifference, UnitDifference, UnitSystemDifference } from \"./SchemaDifference\";\r\nimport { AnySchemaDifferenceConflict, ConflictCode } from \"./SchemaConflicts\";\r\nimport { SchemaDifferenceVisitor, SchemaDifferenceWalker } from \"./SchemaDifferenceVisitor\";\r\n\r\n/**\r\n * Validates the given array of schema differences and returns a list of conflicts if the\r\n * validation finds violation against rules.\r\n * @param differences An array of schema differences.\r\n * @param targetSchema The target schema reference.\r\n * @param sourceSchema The source schema reference.\r\n * @returns An array of conflicts found when validating the difference.\r\n * @internal\r\n */\r\nexport async function validateDifferences(differences: AnySchemaDifference[], targetSchema: Schema, sourceSchema: Schema) {\r\n const visitor = new SchemaDifferenceValidationVisitor(targetSchema, sourceSchema);\r\n const walker = new SchemaDifferenceWalker(visitor);\r\n\r\n await walker.traverse(differences);\r\n\r\n return visitor.conflicts;\r\n}\r\n\r\n/**\r\n * The SchemaDifferenceValidationVisitor class is an implementation of ISchemaDifferenceVisitor and\r\n * validates the given SchemaDifferences if the violate against some EC Rules.\r\n */\r\nclass SchemaDifferenceValidationVisitor implements SchemaDifferenceVisitor {\r\n\r\n public readonly conflicts: Array<AnySchemaDifferenceConflict>;\r\n private readonly _sourceSchema: Schema;\r\n private readonly _targetSchema: Schema;\r\n\r\n /** Initializes a new instance of SchemaDifferenceValidationVisitor class. */\r\n constructor(targetSchema: Schema, sourceSchema: Schema) {\r\n this.conflicts = [];\r\n this._targetSchema = targetSchema;\r\n this._sourceSchema = sourceSchema;\r\n }\r\n\r\n private addConflict(conflict: AnySchemaDifferenceConflict) {\r\n this.conflicts.push(conflict);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling SchemaDifference.\r\n * @internal\r\n */\r\n public async visitSchemaDifference(_entry: SchemaDifference) {\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling SchemaReferenceDifference.\r\n * @internal\r\n */\r\n public async visitSchemaReferenceDifference(entry: SchemaReferenceDifference) {\r\n const sourceSchemaReference = await this._sourceSchema.getReference(entry.difference.name) as Schema;\r\n const targetSchemaReference = this._targetSchema.getReferenceNameByAlias(sourceSchemaReference.alias);\r\n if (targetSchemaReference && targetSchemaReference !== sourceSchemaReference.name) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingReferenceAlias,\r\n difference: entry,\r\n source: entry.difference.name,\r\n target: targetSchemaReference,\r\n description: \"Target schema already references a different schema with this alias.\",\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shared schema item validation for all types of AnySchemaItemDifference union.\r\n */\r\n private async visitSchemaItemDifference(entry: AnySchemaItemDifference, targetSchemaItem: SchemaItem | undefined) {\r\n // If the item shall be added, but the target schema already has an item with this name,\r\n // will produce an ConflictingItemName conflict.\r\n if (entry.changeType === \"add\" && targetSchemaItem !== undefined) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingItemName,\r\n difference: entry,\r\n source: entry.schemaType,\r\n target: targetSchemaItem.schemaItemType,\r\n description: \"Target schema already contains a schema item with the name but different type.\",\r\n });\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Shared base-class validation for all types of ClassItemDifference union.\r\n */\r\n private async visitBaseClassDifference(entry: AnyClassItemDifference, targetClassItem: ECClass) {\r\n if (\"baseClass\" in entry.difference && entry.difference.baseClass === undefined && targetClassItem.baseClass !== undefined) {\r\n return this.addConflict({\r\n code: ConflictCode.RemovingBaseClass,\r\n difference: entry,\r\n source: null,\r\n target: resolveLazyItemFullName(targetClassItem.baseClass),\r\n description: \"BaseClass cannot be removed, if there has been a baseClass before.\",\r\n });\r\n }\r\n\r\n if (entry.difference.baseClass === undefined) {\r\n return;\r\n }\r\n\r\n const sourceBaseClass = await this._sourceSchema.lookupItem(entry.difference.baseClass) as ECClass;\r\n if (sourceBaseClass.modifier === ECClassModifier.Sealed) {\r\n return this.addConflict({\r\n code: ConflictCode.SealedBaseClass,\r\n difference: entry,\r\n source: sourceBaseClass.fullName,\r\n target: resolveLazyItemFullName(targetClassItem.baseClass) || null,\r\n description: \"BaseClass is sealed.\",\r\n });\r\n }\r\n\r\n if (targetClassItem.baseClass && !await this.derivedFrom(sourceBaseClass, targetClassItem.baseClass)) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingBaseClass,\r\n difference: entry,\r\n source: sourceBaseClass.fullName,\r\n target: resolveLazyItemFullName(targetClassItem.baseClass),\r\n description: \"BaseClass is not valid, source class must derive from target.\",\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shared validation for all types of ClassItemDifference union.\r\n */\r\n private async visitClassDifference(entry: AnyClassItemDifference) {\r\n const targetClassItem = await this._targetSchema.getItem<ECClass>(entry.itemName);\r\n if (!await this.visitSchemaItemDifference(entry, targetClassItem)) {\r\n return;\r\n }\r\n\r\n if (entry.changeType === \"modify\" && targetClassItem !== undefined) {\r\n await this.visitClassModifierDifference(entry, targetClassItem);\r\n await this.visitBaseClassDifference(entry, targetClassItem);\r\n }\r\n }\r\n\r\n /**\r\n * Validation the modifiers of all types of ClassItemDifference union.\r\n */\r\n private async visitClassModifierDifference(entry: AnyClassItemDifference, targetClass: ECClass) {\r\n if (entry.difference.modifier) {\r\n const changedModifier = parseClassModifier(entry.difference.modifier);\r\n if (changedModifier !== undefined && changedModifier !== ECClassModifier.None) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingClassModifier,\r\n difference: entry,\r\n source: entry.difference.modifier,\r\n target: classModifierToString(targetClass.modifier),\r\n description: \"Class has conflicting modifiers.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling ConstantDifference.\r\n * @internal\r\n */\r\n public async visitConstantDifference(entry: ConstantDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling CustomAttributeClassDifference.\r\n * @internal\r\n */\r\n public async visitCustomAttributeClassDifference(entry: CustomAttributeClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling CustomAttributeDifference.\r\n * @internal\r\n */\r\n public async visitCustomAttributeInstanceDifference(_entry: CustomAttributeDifference) {\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling EntityClassDifference.\r\n * @internal\r\n */\r\n public async visitEntityClassDifference(entry: EntityClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling EntityClassMixinDifference.\r\n * @internal\r\n */\r\n public async visitEntityClassMixinDifference(entry: EntityClassMixinDifference) {\r\n for (const addedMixin of entry.difference) {\r\n // To validate the added mixins, the instance from the source schema it fetched,\r\n // otherwise validation gets too complicated as the mixin must not be existing in\r\n // the current target schema, it could also be added to the schema.\r\n const sourceMixin = await this._sourceSchema.lookupItem(addedMixin) as Mixin;\r\n const sourceSchemaItem = await this._sourceSchema.getItem(entry.itemName) as EntityClass;\r\n if (sourceMixin.appliesTo && !await sourceSchemaItem.is(await sourceMixin.appliesTo)) {\r\n this.addConflict({\r\n code: ConflictCode.MixinAppliedMustDeriveFromConstraint,\r\n difference: entry,\r\n source: addedMixin,\r\n target: undefined,\r\n description: \"Mixin cannot applied to this class.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling EnumerationDifference.\r\n * @internal\r\n */\r\n public async visitEnumerationDifference(entry: EnumerationDifference) {\r\n const enumeration = await this._targetSchema.getItem<Enumeration>(entry.itemName);\r\n if (!await this.visitSchemaItemDifference(entry, enumeration)) {\r\n return;\r\n }\r\n\r\n if (entry.changeType === \"modify\" && enumeration !== undefined) {\r\n if (entry.difference.type) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingEnumerationType,\r\n difference: entry,\r\n source: entry.difference.type,\r\n target: primitiveTypeToString(enumeration.type!),\r\n description: \"Enumeration has a different primitive type.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling EnumeratorDifference.\r\n * @internal\r\n */\r\n public async visitEnumeratorDifference(entry: EnumeratorDifference) {\r\n if (entry.changeType !== \"modify\") {\r\n return;\r\n }\r\n\r\n const enumeration = await this._targetSchema.getItem(entry.itemName) as Enumeration;\r\n const enumerator = enumeration.getEnumeratorByName(entry.path);\r\n if (!enumerator) {\r\n return;\r\n }\r\n\r\n if (entry.difference.value) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingEnumeratorValue,\r\n difference: entry,\r\n source: entry.difference.value,\r\n target: enumerator.value,\r\n description: \"Enumerators must have unique values.\",\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling FormatDifference.\r\n * @internal\r\n */\r\n public async visitFormatDifference(entry: FormatDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling InvertedUnitDifference.\r\n * @internal\r\n */\r\n public async visitInvertedUnitDifference(entry: InvertedUnitDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling KindOfQuantityDifference.\r\n * @internal\r\n */\r\n public async visitKindOfQuantityDifference(entry: KindOfQuantityDifference) {\r\n const kindOfQuantity = await this._targetSchema.getItem<KindOfQuantity>(entry.itemName);\r\n if (!await this.visitSchemaItemDifference(entry, kindOfQuantity)) {\r\n return;\r\n }\r\n\r\n if (entry.changeType === \"modify\" && kindOfQuantity !== undefined) {\r\n if (entry.difference.persistenceUnit) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingPersistenceUnit,\r\n difference: entry,\r\n source: entry.difference.persistenceUnit,\r\n target: resolveLazyItemFullName(kindOfQuantity.persistenceUnit),\r\n description: \"Kind of Quantity has a different persistence unit.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling MixinClassDifference.\r\n * @internal\r\n */\r\n public async visitMixinDifference(entry: MixinClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling PhenomenonDifference.\r\n * @internal\r\n */\r\n public async visitPhenomenonDifference(entry: PhenomenonDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling ClassPropertyDifference.\r\n * @internal\r\n */\r\n public async visitPropertyDifference(entry: ClassPropertyDifference) {\r\n const targetClass = await this._targetSchema.getItem(entry.itemName) as ECClass;\r\n const targetProperty = await targetClass.getProperty(entry.path);\r\n\r\n const sourceClass = await this._sourceSchema.getItem(entry.itemName) as ECClass;\r\n const sourceProperty = await sourceClass.getProperty(entry.path) as Property;\r\n\r\n // If property shall be added but there is already a property with this name\r\n // in target, a ConflictingPropertyName is issued.\r\n if (entry.changeType === \"add\" && targetProperty !== undefined) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingPropertyName,\r\n difference: entry,\r\n source: resolvePropertyTypeName(sourceProperty),\r\n target: resolvePropertyTypeName(targetProperty),\r\n description: \"Target class already contains a property with a different type.\",\r\n });\r\n }\r\n\r\n if (entry.changeType === \"modify\" && targetProperty !== undefined) {\r\n if (\"kindOfQuantity\" in entry.difference) {\r\n const sourceKoQ = await sourceProperty.kindOfQuantity;\r\n const targetKoQ = await targetProperty.kindOfQuantity;\r\n if(!targetKoQ) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingPropertyKindOfQuantity,\r\n difference: entry,\r\n source: entry.difference.kindOfQuantity,\r\n target: null,\r\n description: \"The kind of quantity cannot be assiged if the property did not have a kind of quantities before.\",\r\n });\r\n }\r\n\r\n if(!sourceKoQ) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingPropertyKindOfQuantity,\r\n difference: entry,\r\n source: null,\r\n target: resolveLazyItemFullName(targetProperty.kindOfQuantity),\r\n description: \"The kind of quantity cannot be undefined if the property had a kind of quantities before.\",\r\n });\r\n }\r\n\r\n if (resolveLazyItemName(sourceKoQ.persistenceUnit) !== resolveLazyItemName(targetKoQ.persistenceUnit)) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingPropertyKindOfQuantityUnit,\r\n difference: entry,\r\n source: entry.difference.kindOfQuantity,\r\n target: resolveLazyItemFullName(targetProperty.kindOfQuantity),\r\n description: \"The property has different kind of quantities with conflicting units.\",\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling PropertyCategoryDifference.\r\n * @internal\r\n */\r\n public async visitPropertyCategoryDifference(entry: PropertyCategoryDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling RelationshipClassDifference.\r\n * @internal\r\n */\r\n public async visitRelationshipClassDifference(entry: RelationshipClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling RelationshipConstraintDifference.\r\n * @internal\r\n */\r\n public async visitRelationshipConstraintDifference(_entry: RelationshipConstraintDifference) {\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling RelationshipConstraintClassDifference.\r\n * @internal\r\n */\r\n public async visitRelationshipConstraintClassDifference(_entry: RelationshipConstraintClassDifference) {\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling StructClassDifference.\r\n * @internal\r\n */\r\n public async visitStructClassDifference(entry: StructClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling UnitDifference.\r\n * @internal\r\n */\r\n public async visitUnitDifference(entry: UnitDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling UnitSystemDifference.\r\n * @internal\r\n */\r\n public async visitUnitSystemDifference(entry: UnitSystemDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Recursive synchronous function to figure whether a given class derived from\r\n * a class with the given baseClass name.\r\n */\r\n private async derivedFrom(ecClass: ECClass | undefined, baseClassKey: Readonly<SchemaItemKey>): Promise<boolean> {\r\n if (ecClass === undefined) {\r\n return false;\r\n }\r\n\r\n // First check for name which must be same in any case...\r\n if (ecClass.name === baseClassKey.name) {\r\n // ... then check if the class is in the same schema as the expected base class...\r\n if(ecClass.schema.name === baseClassKey.schemaName)\r\n return true;\r\n // ... if not, whether it's in the source schema, but then we expect the baseclass\r\n // to be in the target schema.\r\n if(ecClass.schema.name === this._sourceSchema.name && baseClassKey.schemaName === this._targetSchema.name)\r\n return true;\r\n }\r\n return this.derivedFrom(await ecClass.baseClass, baseClassKey);\r\n }\r\n}\r\n\r\n/**\r\n * Helper method to resolve the schema item name from lazy loaded schema items.\r\n * @param lazyItem LazyLoaded item\r\n * @returns The full name of the item or undefined item was not set.\r\n */\r\nfunction resolveLazyItemFullName(lazyItem?: LazyLoadedSchemaItem<SchemaItem>) {\r\n return lazyItem && lazyItem.fullName;\r\n}\r\n\r\n/**\r\n * Helper method to resolve the schema item name from lazy loaded schema items.\r\n * @param lazyItem LazyLoaded item\r\n * @returns The full name of the item or undefined item was not set.\r\n */\r\nfunction resolveLazyItemName(lazyItem?: LazyLoadedSchemaItem<SchemaItem>) {\r\n return lazyItem && lazyItem.name;\r\n}\r\n\r\n/**\r\n * Helper method to resolve the type name of a property.\r\n * @param property The property which's type shall be resolved.\r\n * @returns The (full) name of the properties type.\r\n */\r\nfunction resolvePropertyTypeName(property: Property) {\r\n const [prefix, suffix] = property.isArray() ? [\"[\", \"]\"] : [\"\", \"\"];\r\n if (property.isEnumeration())\r\n return `${prefix}${resolveLazyItemFullName(property.enumeration)}${suffix}`;\r\n if (property.isPrimitive())\r\n return `${prefix}${primitiveTypeToString(property.primitiveType)}${suffix}`;\r\n if (property.isStruct())\r\n return `${prefix}${property.structClass.fullName}${suffix}`;\r\n if (property.isNavigation())\r\n return `${prefix}${property.relationshipClass.fullName}${suffix}`;\r\n return propertyTypeToString(property.propertyType);\r\n}\r\n"]}
1
+ {"version":3,"file":"SchemaDifferenceValidator.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDifferenceValidator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Differencing\r\n */\r\n\r\nimport { classModifierToString, ECClass, ECClassModifier, EntityClass, Enumeration, KindOfQuantity, LazyLoadedSchemaItem, Mixin, parseClassModifier, primitiveTypeToString, Property, propertyTypeToString, Schema, SchemaItem, SchemaItemKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { AnyClassItemDifference, AnySchemaDifference, AnySchemaItemDifference, ClassPropertyDifference, ConstantDifference, CustomAttributeClassDifference, CustomAttributeDifference, EntityClassDifference, EntityClassMixinDifference, EnumerationDifference, EnumeratorDifference, FormatDifference, InvertedUnitDifference, KindOfQuantityDifference, KindOfQuantityPresentationFormatDifference, MixinClassDifference, PhenomenonDifference, PropertyCategoryDifference, RelationshipClassDifference, RelationshipConstraintClassDifference, RelationshipConstraintDifference, SchemaDifference, SchemaReferenceDifference, StructClassDifference, UnitDifference, UnitSystemDifference } from \"./SchemaDifference\";\r\nimport { AnySchemaDifferenceConflict, ConflictCode } from \"./SchemaConflicts\";\r\nimport { SchemaDifferenceVisitor, SchemaDifferenceWalker } from \"./SchemaDifferenceVisitor\";\r\n\r\n/**\r\n * Validates the given array of schema differences and returns a list of conflicts if the\r\n * validation finds violation against rules.\r\n * @param differences An array of schema differences.\r\n * @param targetSchema The target schema reference.\r\n * @param sourceSchema The source schema reference.\r\n * @returns An array of conflicts found when validating the difference.\r\n * @internal\r\n */\r\nexport async function validateDifferences(differences: AnySchemaDifference[], targetSchema: Schema, sourceSchema: Schema) {\r\n const visitor = new SchemaDifferenceValidationVisitor(targetSchema, sourceSchema);\r\n const walker = new SchemaDifferenceWalker(visitor);\r\n\r\n await walker.traverse(differences);\r\n\r\n return visitor.conflicts;\r\n}\r\n\r\n/**\r\n * The SchemaDifferenceValidationVisitor class is an implementation of ISchemaDifferenceVisitor and\r\n * validates the given SchemaDifferences if the violate against some EC Rules.\r\n */\r\nclass SchemaDifferenceValidationVisitor implements SchemaDifferenceVisitor {\r\n\r\n public readonly conflicts: Array<AnySchemaDifferenceConflict>;\r\n private readonly _sourceSchema: Schema;\r\n private readonly _targetSchema: Schema;\r\n\r\n /** Initializes a new instance of SchemaDifferenceValidationVisitor class. */\r\n constructor(targetSchema: Schema, sourceSchema: Schema) {\r\n this.conflicts = [];\r\n this._targetSchema = targetSchema;\r\n this._sourceSchema = sourceSchema;\r\n }\r\n\r\n private addConflict(conflict: AnySchemaDifferenceConflict) {\r\n this.conflicts.push(conflict);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling SchemaDifference.\r\n * @internal\r\n */\r\n public async visitSchemaDifference(_entry: SchemaDifference) {\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling SchemaReferenceDifference.\r\n * @internal\r\n */\r\n public async visitSchemaReferenceDifference(entry: SchemaReferenceDifference) {\r\n const sourceSchemaReference = await this._sourceSchema.getReference(entry.difference.name) as Schema;\r\n const targetSchemaReferenceName = this._targetSchema.getReferenceNameByAlias(sourceSchemaReference.alias);\r\n if (targetSchemaReferenceName && targetSchemaReferenceName !== sourceSchemaReference.name) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingReferenceAlias,\r\n difference: entry,\r\n source: entry.difference.name,\r\n target: targetSchemaReferenceName,\r\n description: \"Target schema already references a different schema with this alias.\",\r\n });\r\n }\r\n\r\n const sourceSchemaKey = sourceSchemaReference.schemaKey;\r\n const targetSchemaKey = await this._targetSchema.getReference(entry.difference.name)\r\n .then((schema) => schema?.schemaKey);\r\n\r\n if(entry.changeType === \"modify\" && targetSchemaKey && !sourceSchemaKey.matches(targetSchemaKey, SchemaMatchType.LatestWriteCompatible)) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingReferenceVersion,\r\n difference: entry,\r\n description: \"Schema reference cannot be updated, incompatible versions\",\r\n source: sourceSchemaKey.toString(),\r\n target: targetSchemaKey.toString(),\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shared schema item validation for all types of AnySchemaItemDifference union.\r\n */\r\n private async visitSchemaItemDifference(entry: AnySchemaItemDifference, targetSchemaItem: SchemaItem | undefined) {\r\n // If the item shall be added, but the target schema already has an item with this name,\r\n // will produce an ConflictingItemName conflict.\r\n if (entry.changeType === \"add\" && targetSchemaItem !== undefined) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingItemName,\r\n difference: entry,\r\n source: entry.schemaType,\r\n target: targetSchemaItem.schemaItemType,\r\n description: \"Target schema already contains a schema item with the name but different type.\",\r\n });\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Shared base-class validation for all types of ClassItemDifference union.\r\n */\r\n private async visitBaseClassDifference(entry: AnyClassItemDifference, targetClassItem: ECClass) {\r\n if (\"baseClass\" in entry.difference && entry.difference.baseClass === undefined && targetClassItem.baseClass !== undefined) {\r\n return this.addConflict({\r\n code: ConflictCode.RemovingBaseClass,\r\n difference: entry,\r\n source: null,\r\n target: resolveLazyItemFullName(targetClassItem.baseClass),\r\n description: \"BaseClass cannot be removed, if there has been a baseClass before.\",\r\n });\r\n }\r\n\r\n if (entry.difference.baseClass === undefined) {\r\n return;\r\n }\r\n\r\n const sourceBaseClass = await this._sourceSchema.lookupItem(entry.difference.baseClass) as ECClass;\r\n if (sourceBaseClass.modifier === ECClassModifier.Sealed) {\r\n return this.addConflict({\r\n code: ConflictCode.SealedBaseClass,\r\n difference: entry,\r\n source: sourceBaseClass.fullName,\r\n target: resolveLazyItemFullName(targetClassItem.baseClass) || null,\r\n description: \"BaseClass is sealed.\",\r\n });\r\n }\r\n\r\n if (targetClassItem.baseClass && !await this.derivedFrom(sourceBaseClass, targetClassItem.baseClass)) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingBaseClass,\r\n difference: entry,\r\n source: sourceBaseClass.fullName,\r\n target: resolveLazyItemFullName(targetClassItem.baseClass),\r\n description: \"BaseClass is not valid, source class must derive from target.\",\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shared validation for all types of ClassItemDifference union.\r\n */\r\n private async visitClassDifference(entry: AnyClassItemDifference) {\r\n const targetClassItem = await this._targetSchema.getItem<ECClass>(entry.itemName);\r\n if (!await this.visitSchemaItemDifference(entry, targetClassItem)) {\r\n return;\r\n }\r\n\r\n if (entry.changeType === \"modify\" && targetClassItem !== undefined) {\r\n await this.visitClassModifierDifference(entry, targetClassItem);\r\n await this.visitBaseClassDifference(entry, targetClassItem);\r\n }\r\n }\r\n\r\n /**\r\n * Validation the modifiers of all types of ClassItemDifference union.\r\n */\r\n private async visitClassModifierDifference(entry: AnyClassItemDifference, targetClass: ECClass) {\r\n if (entry.difference.modifier) {\r\n const changedModifier = parseClassModifier(entry.difference.modifier);\r\n if (changedModifier !== undefined && changedModifier !== ECClassModifier.None) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingClassModifier,\r\n difference: entry,\r\n source: entry.difference.modifier,\r\n target: classModifierToString(targetClass.modifier),\r\n description: \"Class has conflicting modifiers.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling ConstantDifference.\r\n * @internal\r\n */\r\n public async visitConstantDifference(entry: ConstantDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling CustomAttributeClassDifference.\r\n * @internal\r\n */\r\n public async visitCustomAttributeClassDifference(entry: CustomAttributeClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling CustomAttributeDifference.\r\n * @internal\r\n */\r\n public async visitCustomAttributeInstanceDifference(_entry: CustomAttributeDifference) {\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling EntityClassDifference.\r\n * @internal\r\n */\r\n public async visitEntityClassDifference(entry: EntityClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling EntityClassMixinDifference.\r\n * @internal\r\n */\r\n public async visitEntityClassMixinDifference(entry: EntityClassMixinDifference) {\r\n for (const addedMixin of entry.difference) {\r\n // To validate the added mixins, the instance from the source schema it fetched,\r\n // otherwise validation gets too complicated as the mixin must not be existing in\r\n // the current target schema, it could also be added to the schema.\r\n const sourceMixin = await this._sourceSchema.lookupItem(addedMixin) as Mixin;\r\n const sourceSchemaItem = await this._sourceSchema.getItem(entry.itemName) as EntityClass;\r\n if (sourceMixin.appliesTo && !await sourceSchemaItem.is(await sourceMixin.appliesTo)) {\r\n this.addConflict({\r\n code: ConflictCode.MixinAppliedMustDeriveFromConstraint,\r\n difference: entry,\r\n source: addedMixin,\r\n target: undefined,\r\n description: \"Mixin cannot applied to this class.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling EnumerationDifference.\r\n * @internal\r\n */\r\n public async visitEnumerationDifference(entry: EnumerationDifference) {\r\n const enumeration = await this._targetSchema.getItem<Enumeration>(entry.itemName);\r\n if (!await this.visitSchemaItemDifference(entry, enumeration)) {\r\n return;\r\n }\r\n\r\n if (entry.changeType === \"modify\" && enumeration !== undefined) {\r\n if (entry.difference.type) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingEnumerationType,\r\n difference: entry,\r\n source: entry.difference.type,\r\n target: primitiveTypeToString(enumeration.type!),\r\n description: \"Enumeration has a different primitive type.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling EnumeratorDifference.\r\n * @internal\r\n */\r\n public async visitEnumeratorDifference(entry: EnumeratorDifference) {\r\n if (entry.changeType !== \"modify\") {\r\n return;\r\n }\r\n\r\n const enumeration = await this._targetSchema.getItem(entry.itemName) as Enumeration;\r\n const enumerator = enumeration.getEnumeratorByName(entry.path);\r\n if (!enumerator) {\r\n return;\r\n }\r\n\r\n if (entry.difference.value) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingEnumeratorValue,\r\n difference: entry,\r\n source: entry.difference.value,\r\n target: enumerator.value,\r\n description: \"Enumerators must have unique values.\",\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling FormatDifference.\r\n * @internal\r\n */\r\n public async visitFormatDifference(entry: FormatDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling InvertedUnitDifference.\r\n * @internal\r\n */\r\n public async visitInvertedUnitDifference(entry: InvertedUnitDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling KindOfQuantityDifference.\r\n * @internal\r\n */\r\n public async visitKindOfQuantityDifference(entry: KindOfQuantityDifference) {\r\n const kindOfQuantity = await this._targetSchema.getItem<KindOfQuantity>(entry.itemName);\r\n if (!await this.visitSchemaItemDifference(entry, kindOfQuantity)) {\r\n return;\r\n }\r\n\r\n if (entry.changeType === \"modify\" && kindOfQuantity !== undefined) {\r\n if (entry.difference.persistenceUnit) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingPersistenceUnit,\r\n difference: entry,\r\n source: entry.difference.persistenceUnit,\r\n target: resolveLazyItemFullName(kindOfQuantity.persistenceUnit),\r\n description: \"Kind of Quantity has a different persistence unit.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling MixinClassDifference.\r\n * @internal\r\n */\r\n public async visitMixinDifference(entry: MixinClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling PhenomenonDifference.\r\n * @internal\r\n */\r\n public async visitPhenomenonDifference(entry: PhenomenonDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling ClassPropertyDifference.\r\n * @internal\r\n */\r\n public async visitPropertyDifference(entry: ClassPropertyDifference) {\r\n const targetClass = await this._targetSchema.getItem(entry.itemName) as ECClass;\r\n const targetProperty = await targetClass.getProperty(entry.path);\r\n\r\n const sourceClass = await this._sourceSchema.getItem(entry.itemName) as ECClass;\r\n const sourceProperty = await sourceClass.getProperty(entry.path) as Property;\r\n\r\n // If property shall be added but there is already a property with this name\r\n // in target, a ConflictingPropertyName is issued.\r\n if (entry.changeType === \"add\" && targetProperty !== undefined) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingPropertyName,\r\n difference: entry,\r\n source: resolvePropertyTypeName(sourceProperty),\r\n target: resolvePropertyTypeName(targetProperty),\r\n description: \"Target class already contains a property with a different type.\",\r\n });\r\n }\r\n\r\n if (entry.changeType === \"modify\" && targetProperty !== undefined) {\r\n if (\"kindOfQuantity\" in entry.difference) {\r\n const sourceKoQ = await sourceProperty.kindOfQuantity;\r\n const targetKoQ = await targetProperty.kindOfQuantity;\r\n if(!targetKoQ) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingPropertyKindOfQuantity,\r\n difference: entry,\r\n source: entry.difference.kindOfQuantity,\r\n target: null,\r\n description: \"The kind of quantity cannot be assiged if the property did not have a kind of quantities before.\",\r\n });\r\n }\r\n\r\n if(!sourceKoQ) {\r\n return this.addConflict({\r\n code: ConflictCode.ConflictingPropertyKindOfQuantity,\r\n difference: entry,\r\n source: null,\r\n target: resolveLazyItemFullName(targetProperty.kindOfQuantity),\r\n description: \"The kind of quantity cannot be undefined if the property had a kind of quantities before.\",\r\n });\r\n }\r\n\r\n if (resolveLazyItemName(sourceKoQ.persistenceUnit) !== resolveLazyItemName(targetKoQ.persistenceUnit)) {\r\n this.addConflict({\r\n code: ConflictCode.ConflictingPropertyKindOfQuantityUnit,\r\n difference: entry,\r\n source: entry.difference.kindOfQuantity,\r\n target: resolveLazyItemFullName(targetProperty.kindOfQuantity),\r\n description: \"The property has different kind of quantities with conflicting units.\",\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling PropertyCategoryDifference.\r\n * @internal\r\n */\r\n public async visitPropertyCategoryDifference(entry: PropertyCategoryDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling RelationshipClassDifference.\r\n * @internal\r\n */\r\n public async visitRelationshipClassDifference(entry: RelationshipClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling RelationshipConstraintDifference.\r\n * @internal\r\n */\r\n public async visitRelationshipConstraintDifference(_entry: RelationshipConstraintDifference) {\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling RelationshipConstraintClassDifference.\r\n * @internal\r\n */\r\n public async visitRelationshipConstraintClassDifference(_entry: RelationshipConstraintClassDifference) {\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling StructClassDifference.\r\n * @internal\r\n */\r\n public async visitStructClassDifference(entry: StructClassDifference) {\r\n await this.visitClassDifference(entry);\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling UnitDifference.\r\n * @internal\r\n */\r\n public async visitUnitDifference(entry: UnitDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling UnitSystemDifference.\r\n * @internal\r\n */\r\n public async visitUnitSystemDifference(entry: UnitSystemDifference) {\r\n await this.visitSchemaItemDifference(entry, await this._targetSchema.getItem(entry.itemName));\r\n }\r\n\r\n /**\r\n * Visitor implementation for handling KindOfQuantityPresentationFormatDifference.\r\n * @internal\r\n */\r\n public async visitKindOfQuantityPresentationFormatDifference(_entry: KindOfQuantityPresentationFormatDifference) {\r\n }\r\n\r\n /**\r\n * Recursive synchronous function to figure whether a given class derived from\r\n * a class with the given baseClass name.\r\n */\r\n private async derivedFrom(ecClass: ECClass | undefined, baseClassKey: Readonly<SchemaItemKey>): Promise<boolean> {\r\n if (ecClass === undefined) {\r\n return false;\r\n }\r\n\r\n // First check for name which must be same in any case...\r\n if (ecClass.name === baseClassKey.name) {\r\n // ... then check if the class is in the same schema as the expected base class...\r\n if(ecClass.schema.name === baseClassKey.schemaName)\r\n return true;\r\n // ... if not, whether it's in the source schema, but then we expect the baseclass\r\n // to be in the target schema.\r\n if(ecClass.schema.name === this._sourceSchema.name && baseClassKey.schemaName === this._targetSchema.name)\r\n return true;\r\n }\r\n return this.derivedFrom(await ecClass.baseClass, baseClassKey);\r\n }\r\n}\r\n\r\n/**\r\n * Helper method to resolve the schema item name from lazy loaded schema items.\r\n * @param lazyItem LazyLoaded item\r\n * @returns The full name of the item or undefined item was not set.\r\n */\r\nfunction resolveLazyItemFullName(lazyItem?: LazyLoadedSchemaItem<SchemaItem>) {\r\n return lazyItem && lazyItem.fullName;\r\n}\r\n\r\n/**\r\n * Helper method to resolve the schema item name from lazy loaded schema items.\r\n * @param lazyItem LazyLoaded item\r\n * @returns The full name of the item or undefined item was not set.\r\n */\r\nfunction resolveLazyItemName(lazyItem?: LazyLoadedSchemaItem<SchemaItem>) {\r\n return lazyItem && lazyItem.name;\r\n}\r\n\r\n/**\r\n * Helper method to resolve the type name of a property.\r\n * @param property The property which's type shall be resolved.\r\n * @returns The (full) name of the properties type.\r\n */\r\nfunction resolvePropertyTypeName(property: Property) {\r\n const [prefix, suffix] = property.isArray() ? [\"[\", \"]\"] : [\"\", \"\"];\r\n if (property.isEnumeration())\r\n return `${prefix}${resolveLazyItemFullName(property.enumeration)}${suffix}`;\r\n if (property.isPrimitive())\r\n return `${prefix}${primitiveTypeToString(property.primitiveType)}${suffix}`;\r\n if (property.isStruct())\r\n return `${prefix}${property.structClass.fullName}${suffix}`;\r\n if (property.isNavigation())\r\n return `${prefix}${property.relationshipClass.fullName}${suffix}`;\r\n return propertyTypeToString(property.propertyType);\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDifferenceVisitor.d.ts","sourceRoot":"","sources":["../../../src/Differencing/SchemaDifferenceVisitor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,oBAAoB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;KACnC,UAAU,IAAI,mBAAmB,IAAI,QAAQ,UAAU,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC;CACvK,CAAC;AAEF;;;;GAIG;AACH,qBAAa,sBAAsB;IAEjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IAEnD,kEAAkE;gBACtD,OAAO,EAAE,uBAAuB;IAI5C;;;OAGG;IACU,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7E;;OAEG;YACW,KAAK;CAgDpB"}
1
+ {"version":3,"file":"SchemaDifferenceVisitor.d.ts","sourceRoot":"","sources":["../../../src/Differencing/SchemaDifferenceVisitor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,oBAAoB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;KACnC,UAAU,IAAI,mBAAmB,IAAI,QAAQ,UAAU,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC;CACvK,CAAC;AAEF;;;;GAIG;AACH,qBAAa,sBAAsB;IAEjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IAEnD,kEAAkE;gBACtD,OAAO,EAAE,uBAAuB;IAI5C;;;OAGG;IACU,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7E;;OAEG;YACW,KAAK;CAkDpB"}
@@ -58,6 +58,8 @@ class SchemaDifferenceWalker {
58
58
  return this._visitor.visitInvertedUnitDifference(difference, index, array);
59
59
  case ecschema_metadata_1.SchemaItemType.KindOfQuantity:
60
60
  return this._visitor.visitKindOfQuantityDifference(difference, index, array);
61
+ case SchemaDifference_1.SchemaOtherTypes.KindOfQuantityPresentationFormat:
62
+ return this._visitor.visitKindOfQuantityPresentationFormatDifference(difference, index, array);
61
63
  case ecschema_metadata_1.SchemaItemType.Mixin:
62
64
  return this._visitor.visitMixinDifference(difference, index, array);
63
65
  case ecschema_metadata_1.SchemaItemType.Phenomenon:
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDifferenceVisitor.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDifferenceVisitor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Differencing\r\n */\r\n\r\nimport { SchemaItemType } from \"@itwin/ecschema-metadata\";\r\nimport { type AnySchemaDifference, SchemaOtherTypes } from \"./SchemaDifference\";\r\n\r\n/**\r\n * Defines the interface for a visitor that can be used to traverse schema differences.\r\n * It dynamically creates a method for each schema difference type.\r\n * @internal\r\n */\r\nexport type SchemaDifferenceVisitor = {\r\n [Difference in AnySchemaDifference as `visit${Difference[\"schemaType\"]}Difference`]: (entry: Difference, index: number, array: AnySchemaDifference[]) => Promise<void>;\r\n};\r\n\r\n/**\r\n * Implementation of a walker that traverses schema differences and calls the appropriate\r\n * method on the visitor.\r\n * @internal\r\n */\r\nexport class SchemaDifferenceWalker {\r\n\r\n private readonly _visitor: SchemaDifferenceVisitor;\r\n\r\n /** Initializes a new instance of SchemaDifferenceWalker class. */\r\n constructor(visitor: SchemaDifferenceVisitor) {\r\n this._visitor = visitor;\r\n }\r\n\r\n /**\r\n * Traverses the schema differences and calls the appropriate method on the visitor.\r\n * @param differences The differences to traverse.\r\n */\r\n public async traverse(differences: Array<AnySchemaDifference>): Promise<void> {\r\n for (const [index, entry] of differences.entries()) {\r\n await this.visit(entry, index, differences);\r\n }\r\n }\r\n\r\n /**\r\n * Calls the appropriate method on the visitor based on the schema difference type.\r\n */\r\n private async visit(difference: AnySchemaDifference, index: number, array: AnySchemaDifference[]) {\r\n switch (difference.schemaType) {\r\n case SchemaOtherTypes.Schema:\r\n return this._visitor.visitSchemaDifference(difference, index, array);\r\n case SchemaOtherTypes.SchemaReference:\r\n return this._visitor.visitSchemaReferenceDifference(difference, index, array);\r\n case SchemaItemType.Constant:\r\n return this._visitor.visitConstantDifference(difference, index, array);\r\n case SchemaItemType.CustomAttributeClass:\r\n return this._visitor.visitCustomAttributeClassDifference(difference, index, array);\r\n case SchemaOtherTypes.CustomAttributeInstance:\r\n return this._visitor.visitCustomAttributeInstanceDifference(difference, index, array);\r\n case SchemaItemType.EntityClass:\r\n return this._visitor.visitEntityClassDifference(difference, index, array);\r\n case SchemaOtherTypes.EntityClassMixin:\r\n return this._visitor.visitEntityClassMixinDifference(difference, index, array);\r\n case SchemaItemType.Enumeration:\r\n return this._visitor.visitEnumerationDifference(difference, index, array);\r\n case SchemaOtherTypes.Enumerator:\r\n return this._visitor.visitEnumeratorDifference(difference, index, array);\r\n case SchemaItemType.Format:\r\n return this._visitor.visitFormatDifference(difference, index, array);\r\n case SchemaItemType.InvertedUnit:\r\n return this._visitor.visitInvertedUnitDifference(difference, index, array);\r\n case SchemaItemType.KindOfQuantity:\r\n return this._visitor.visitKindOfQuantityDifference(difference, index, array);\r\n case SchemaItemType.Mixin:\r\n return this._visitor.visitMixinDifference(difference, index, array);\r\n case SchemaItemType.Phenomenon:\r\n return this._visitor.visitPhenomenonDifference(difference, index, array);\r\n case SchemaOtherTypes.Property:\r\n return this._visitor.visitPropertyDifference(difference, index, array);\r\n case SchemaItemType.PropertyCategory:\r\n return this._visitor.visitPropertyCategoryDifference(difference, index, array);\r\n case SchemaItemType.RelationshipClass:\r\n return this._visitor.visitRelationshipClassDifference(difference, index, array);\r\n case SchemaOtherTypes.RelationshipConstraint:\r\n return this._visitor.visitRelationshipConstraintDifference(difference, index, array);\r\n case SchemaOtherTypes.RelationshipConstraintClass:\r\n return this._visitor.visitRelationshipConstraintClassDifference(difference, index, array);\r\n case SchemaItemType.StructClass:\r\n return this._visitor.visitStructClassDifference(difference, index, array);\r\n case SchemaItemType.Unit:\r\n return this._visitor.visitUnitDifference(difference, index, array);\r\n case SchemaItemType.UnitSystem:\r\n return this._visitor.visitUnitSystemDifference(difference, index, array);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SchemaDifferenceVisitor.js","sourceRoot":"","sources":["../../../src/Differencing/SchemaDifferenceVisitor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Differencing\r\n */\r\n\r\nimport { SchemaItemType } from \"@itwin/ecschema-metadata\";\r\nimport { type AnySchemaDifference, SchemaOtherTypes } from \"./SchemaDifference\";\r\n\r\n/**\r\n * Defines the interface for a visitor that can be used to traverse schema differences.\r\n * It dynamically creates a method for each schema difference type.\r\n * @internal\r\n */\r\nexport type SchemaDifferenceVisitor = {\r\n [Difference in AnySchemaDifference as `visit${Difference[\"schemaType\"]}Difference`]: (entry: Difference, index: number, array: AnySchemaDifference[]) => Promise<void>;\r\n};\r\n\r\n/**\r\n * Implementation of a walker that traverses schema differences and calls the appropriate\r\n * method on the visitor.\r\n * @internal\r\n */\r\nexport class SchemaDifferenceWalker {\r\n\r\n private readonly _visitor: SchemaDifferenceVisitor;\r\n\r\n /** Initializes a new instance of SchemaDifferenceWalker class. */\r\n constructor(visitor: SchemaDifferenceVisitor) {\r\n this._visitor = visitor;\r\n }\r\n\r\n /**\r\n * Traverses the schema differences and calls the appropriate method on the visitor.\r\n * @param differences The differences to traverse.\r\n */\r\n public async traverse(differences: Array<AnySchemaDifference>): Promise<void> {\r\n for (const [index, entry] of differences.entries()) {\r\n await this.visit(entry, index, differences);\r\n }\r\n }\r\n\r\n /**\r\n * Calls the appropriate method on the visitor based on the schema difference type.\r\n */\r\n private async visit(difference: AnySchemaDifference, index: number, array: AnySchemaDifference[]) {\r\n switch (difference.schemaType) {\r\n case SchemaOtherTypes.Schema:\r\n return this._visitor.visitSchemaDifference(difference, index, array);\r\n case SchemaOtherTypes.SchemaReference:\r\n return this._visitor.visitSchemaReferenceDifference(difference, index, array);\r\n case SchemaItemType.Constant:\r\n return this._visitor.visitConstantDifference(difference, index, array);\r\n case SchemaItemType.CustomAttributeClass:\r\n return this._visitor.visitCustomAttributeClassDifference(difference, index, array);\r\n case SchemaOtherTypes.CustomAttributeInstance:\r\n return this._visitor.visitCustomAttributeInstanceDifference(difference, index, array);\r\n case SchemaItemType.EntityClass:\r\n return this._visitor.visitEntityClassDifference(difference, index, array);\r\n case SchemaOtherTypes.EntityClassMixin:\r\n return this._visitor.visitEntityClassMixinDifference(difference, index, array);\r\n case SchemaItemType.Enumeration:\r\n return this._visitor.visitEnumerationDifference(difference, index, array);\r\n case SchemaOtherTypes.Enumerator:\r\n return this._visitor.visitEnumeratorDifference(difference, index, array);\r\n case SchemaItemType.Format:\r\n return this._visitor.visitFormatDifference(difference, index, array);\r\n case SchemaItemType.InvertedUnit:\r\n return this._visitor.visitInvertedUnitDifference(difference, index, array);\r\n case SchemaItemType.KindOfQuantity:\r\n return this._visitor.visitKindOfQuantityDifference(difference, index, array);\r\n case SchemaOtherTypes.KindOfQuantityPresentationFormat:\r\n return this._visitor.visitKindOfQuantityPresentationFormatDifference(difference, index, array);\r\n case SchemaItemType.Mixin:\r\n return this._visitor.visitMixinDifference(difference, index, array);\r\n case SchemaItemType.Phenomenon:\r\n return this._visitor.visitPhenomenonDifference(difference, index, array);\r\n case SchemaOtherTypes.Property:\r\n return this._visitor.visitPropertyDifference(difference, index, array);\r\n case SchemaItemType.PropertyCategory:\r\n return this._visitor.visitPropertyCategoryDifference(difference, index, array);\r\n case SchemaItemType.RelationshipClass:\r\n return this._visitor.visitRelationshipClassDifference(difference, index, array);\r\n case SchemaOtherTypes.RelationshipConstraint:\r\n return this._visitor.visitRelationshipConstraintDifference(difference, index, array);\r\n case SchemaOtherTypes.RelationshipConstraintClass:\r\n return this._visitor.visitRelationshipConstraintClassDifference(difference, index, array);\r\n case SchemaItemType.StructClass:\r\n return this._visitor.visitStructClassDifference(difference, index, array);\r\n case SchemaItemType.Unit:\r\n return this._visitor.visitUnitDifference(difference, index, array);\r\n case SchemaItemType.UnitSystem:\r\n return this._visitor.visitUnitSystemDifference(difference, index, array);\r\n }\r\n }\r\n}\r\n"]}
@@ -21,10 +21,9 @@ export declare class KindOfQuantities extends SchemaItems {
21
21
  addPresentationFormat(koqKey: SchemaItemKey, format: SchemaItemKey, isDefault?: boolean): Promise<void>;
22
22
  addPresentationOverrideFormat(koqKey: SchemaItemKey, overrideFormat: OverrideFormat, isDefault?: boolean): Promise<void>;
23
23
  /**
24
- * @param koqKey A schemaItemKey of the editing KindOfQuantity.
25
24
  * @param parent A SchemaItemKey of the parent Format.
26
25
  * @param unitLabelOverrides The list of Unit (or InvertedUnit) and label overrides. The length of list should be equal to the number of units in the parent Format.
27
26
  */
28
- createFormatOverride(koqKey: SchemaItemKey, parent: SchemaItemKey, precision?: number, unitLabelOverrides?: Array<[Unit | InvertedUnit, string | undefined]>): Promise<OverrideFormat>;
27
+ createFormatOverride(parent: SchemaItemKey, precision?: number, unitLabelOverrides?: Array<[Unit | InvertedUnit, string | undefined]>): Promise<OverrideFormat>;
29
28
  }
30
29
  //# sourceMappingURL=KindOfQuantities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KindOfQuantities.d.ts","sourceRoot":"","sources":["../../../src/Editing/KindOfQuantities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAEG,YAAY,EAAkB,mBAAmB,EAAE,cAAc,EACzE,aAAa,EAAkB,SAAS,EAAE,IAAI,EAC/C,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;gBAC5B,YAAY,EAAE,mBAAmB;IAIvC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB5H,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IASzG;;;;;OAKG;IACU,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9G,6BAA6B,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5I;;;;OAIG;IACU,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CAUpM"}
1
+ {"version":3,"file":"KindOfQuantities.d.ts","sourceRoot":"","sources":["../../../src/Editing/KindOfQuantities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAEG,YAAY,EAAkB,mBAAmB,EAAE,cAAc,EACzE,aAAa,EAAkB,SAAS,EAAE,IAAI,EAC/C,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;gBAC5B,YAAY,EAAE,mBAAmB;IAIvC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB5H,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IASzG;;;;;OAKG;IACU,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9G,6BAA6B,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5I;;;OAGG;IACU,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CAQ7K"}
@@ -75,18 +75,16 @@ class KindOfQuantities extends SchemaItems_1.SchemaItems {
75
75
  }
76
76
  }
77
77
  /**
78
- * @param koqKey A schemaItemKey of the editing KindOfQuantity.
79
78
  * @param parent A SchemaItemKey of the parent Format.
80
79
  * @param unitLabelOverrides The list of Unit (or InvertedUnit) and label overrides. The length of list should be equal to the number of units in the parent Format.
81
80
  */
82
- async createFormatOverride(koqKey, parent, precision, unitLabelOverrides) {
81
+ async createFormatOverride(parent, precision, unitLabelOverrides) {
83
82
  try {
84
- await this.getSchemaItem(koqKey);
85
83
  const parentFormat = await this.getSchemaItem(parent, ecschema_metadata_1.SchemaItemType.Format);
86
84
  return new ecschema_metadata_1.OverrideFormat(parentFormat, precision, unitLabelOverrides);
87
85
  }
88
86
  catch (e) {
89
- throw new Exception_1.SchemaEditingError(Exception_1.ECEditingStatus.AddPresentationOverride, new Exception_1.SchemaItemId(this.schemaItemType, koqKey), e);
87
+ throw new Exception_1.SchemaEditingError(Exception_1.ECEditingStatus.CreateFormatOverride, new Exception_1.SchemaItemId(this.schemaItemType, parent), e);
90
88
  }
91
89
  }
92
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KindOfQuantities.js","sourceRoot":"","sources":["../../../src/Editing/KindOfQuantities.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Editing\r\n */\r\n\r\nimport {\r\n DelayedPromiseWithProps,\r\n Format, InvertedUnit, KindOfQuantity, KindOfQuantityProps, OverrideFormat,\r\n SchemaItemKey, SchemaItemType, SchemaKey, Unit,\r\n} from \"@itwin/ecschema-metadata\";\r\nimport { SchemaContextEditor } from \"./Editor\";\r\nimport { MutableKindOfQuantity } from \"./Mutable/MutableKindOfQuantity\";\r\nimport { ECEditingStatus, SchemaEditingError, SchemaItemId } from \"./Exception\";\r\nimport { SchemaItems } from \"./SchemaItems\";\r\n\r\n/**\r\n * @alpha\r\n * A class allowing you to create schema items of type KindOfQuantity.\r\n */\r\nexport class KindOfQuantities extends SchemaItems {\r\n public constructor(schemaEditor: SchemaContextEditor) {\r\n super(SchemaItemType.KindOfQuantity, schemaEditor);\r\n }\r\n\r\n public async create(schemaKey: SchemaKey, name: string, persistenceUnitKey: SchemaItemKey, displayLabel?: string): Promise<SchemaItemKey> {\r\n try {\r\n const koqItem = await this.createSchemaItem<KindOfQuantity>(schemaKey, this.schemaItemType, (schema) => schema.createKindOfQuantity.bind(schema), name) as MutableKindOfQuantity;\r\n const persistenceUnit = await koqItem.schema.lookupItem<Unit | InvertedUnit>(persistenceUnitKey);\r\n if (persistenceUnit === undefined)\r\n throw new SchemaEditingError(ECEditingStatus.SchemaItemNotFound, new SchemaItemId(SchemaItemType.Unit, persistenceUnitKey));\r\n\r\n if (persistenceUnit.schemaItemType === SchemaItemType.Unit) {\r\n koqItem.persistenceUnit = new DelayedPromiseWithProps(persistenceUnit.key, async () => persistenceUnit);\r\n }\r\n\r\n if (persistenceUnit.schemaItemType === SchemaItemType.InvertedUnit) {\r\n koqItem.persistenceUnit = new DelayedPromiseWithProps(persistenceUnit.key, async () => persistenceUnit);\r\n }\r\n\r\n if (displayLabel !== undefined) {\r\n koqItem.setDisplayLabel(displayLabel);\r\n }\r\n\r\n return koqItem.key;\r\n } catch (e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.CreateSchemaItemFailed, new SchemaItemId(this.schemaItemType, name, schemaKey), e);\r\n }\r\n }\r\n\r\n public async createFromProps(schemaKey: SchemaKey, koqProps: KindOfQuantityProps): Promise<SchemaItemKey> {\r\n try {\r\n const koqItem = await this.createSchemaItemFromProps(schemaKey, this.schemaItemType, (schema) => schema.createKindOfQuantity.bind(schema), koqProps);\r\n return koqItem.key;\r\n } catch (e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.CreateSchemaItemFromProps, new SchemaItemId(this.schemaItemType, koqProps.name!, schemaKey), e);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param koqKey A schemaItemKey of the editing KindOfQuantity.\r\n * @param format A schemaItemKey of a Format.\r\n * @param isDefault .is set to false when not explicitly passed.\r\n */\r\n public async addPresentationFormat(koqKey: SchemaItemKey, format: SchemaItemKey, isDefault: boolean = false): Promise<void> {\r\n try {\r\n const kindOfQuantity = await this.getSchemaItem<MutableKindOfQuantity>(koqKey);\r\n const presentationFormat = await this.getSchemaItem<Format>(format, SchemaItemType.Format);\r\n kindOfQuantity.addPresentationFormat(presentationFormat, isDefault);\r\n } catch(e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.AddPresentationUnit, new SchemaItemId(this.schemaItemType, koqKey), e);\r\n }\r\n }\r\n\r\n public async addPresentationOverrideFormat(koqKey: SchemaItemKey, overrideFormat: OverrideFormat, isDefault: boolean = false): Promise<void> {\r\n try {\r\n const kindOfQuantity = await this.getSchemaItem<MutableKindOfQuantity>(koqKey);\r\n kindOfQuantity.addPresentationFormat(overrideFormat, isDefault);\r\n } catch(e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.AddPresentationOverride, new SchemaItemId(this.schemaItemType, koqKey), e);\r\n }\r\n }\r\n\r\n /**\r\n * @param koqKey A schemaItemKey of the editing KindOfQuantity.\r\n * @param parent A SchemaItemKey of the parent Format.\r\n * @param unitLabelOverrides The list of Unit (or InvertedUnit) and label overrides. The length of list should be equal to the number of units in the parent Format.\r\n */\r\n public async createFormatOverride(koqKey: SchemaItemKey, parent: SchemaItemKey, precision?: number, unitLabelOverrides?: Array<[Unit | InvertedUnit, string | undefined]>): Promise<OverrideFormat> {\r\n try {\r\n await this.getSchemaItem<MutableKindOfQuantity>(koqKey);\r\n\r\n const parentFormat = await this.getSchemaItem<Format>(parent, SchemaItemType.Format);\r\n return new OverrideFormat(parentFormat, precision, unitLabelOverrides);\r\n } catch(e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.AddPresentationOverride, new SchemaItemId(this.schemaItemType, koqKey), e);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"KindOfQuantities.js","sourceRoot":"","sources":["../../../src/Editing/KindOfQuantities.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Editing\r\n */\r\n\r\nimport {\r\n DelayedPromiseWithProps,\r\n Format, InvertedUnit, KindOfQuantity, KindOfQuantityProps, OverrideFormat,\r\n SchemaItemKey, SchemaItemType, SchemaKey, Unit,\r\n} from \"@itwin/ecschema-metadata\";\r\nimport { SchemaContextEditor } from \"./Editor\";\r\nimport { MutableKindOfQuantity } from \"./Mutable/MutableKindOfQuantity\";\r\nimport { ECEditingStatus, SchemaEditingError, SchemaItemId } from \"./Exception\";\r\nimport { SchemaItems } from \"./SchemaItems\";\r\n\r\n/**\r\n * @alpha\r\n * A class allowing you to create schema items of type KindOfQuantity.\r\n */\r\nexport class KindOfQuantities extends SchemaItems {\r\n public constructor(schemaEditor: SchemaContextEditor) {\r\n super(SchemaItemType.KindOfQuantity, schemaEditor);\r\n }\r\n\r\n public async create(schemaKey: SchemaKey, name: string, persistenceUnitKey: SchemaItemKey, displayLabel?: string): Promise<SchemaItemKey> {\r\n try {\r\n const koqItem = await this.createSchemaItem<KindOfQuantity>(schemaKey, this.schemaItemType, (schema) => schema.createKindOfQuantity.bind(schema), name) as MutableKindOfQuantity;\r\n const persistenceUnit = await koqItem.schema.lookupItem<Unit | InvertedUnit>(persistenceUnitKey);\r\n if (persistenceUnit === undefined)\r\n throw new SchemaEditingError(ECEditingStatus.SchemaItemNotFound, new SchemaItemId(SchemaItemType.Unit, persistenceUnitKey));\r\n\r\n if (persistenceUnit.schemaItemType === SchemaItemType.Unit) {\r\n koqItem.persistenceUnit = new DelayedPromiseWithProps(persistenceUnit.key, async () => persistenceUnit);\r\n }\r\n\r\n if (persistenceUnit.schemaItemType === SchemaItemType.InvertedUnit) {\r\n koqItem.persistenceUnit = new DelayedPromiseWithProps(persistenceUnit.key, async () => persistenceUnit);\r\n }\r\n\r\n if (displayLabel !== undefined) {\r\n koqItem.setDisplayLabel(displayLabel);\r\n }\r\n\r\n return koqItem.key;\r\n } catch (e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.CreateSchemaItemFailed, new SchemaItemId(this.schemaItemType, name, schemaKey), e);\r\n }\r\n }\r\n\r\n public async createFromProps(schemaKey: SchemaKey, koqProps: KindOfQuantityProps): Promise<SchemaItemKey> {\r\n try {\r\n const koqItem = await this.createSchemaItemFromProps(schemaKey, this.schemaItemType, (schema) => schema.createKindOfQuantity.bind(schema), koqProps);\r\n return koqItem.key;\r\n } catch (e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.CreateSchemaItemFromProps, new SchemaItemId(this.schemaItemType, koqProps.name!, schemaKey), e);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param koqKey A schemaItemKey of the editing KindOfQuantity.\r\n * @param format A schemaItemKey of a Format.\r\n * @param isDefault .is set to false when not explicitly passed.\r\n */\r\n public async addPresentationFormat(koqKey: SchemaItemKey, format: SchemaItemKey, isDefault: boolean = false): Promise<void> {\r\n try {\r\n const kindOfQuantity = await this.getSchemaItem<MutableKindOfQuantity>(koqKey);\r\n const presentationFormat = await this.getSchemaItem<Format>(format, SchemaItemType.Format);\r\n kindOfQuantity.addPresentationFormat(presentationFormat, isDefault);\r\n } catch(e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.AddPresentationUnit, new SchemaItemId(this.schemaItemType, koqKey), e);\r\n }\r\n }\r\n\r\n public async addPresentationOverrideFormat(koqKey: SchemaItemKey, overrideFormat: OverrideFormat, isDefault: boolean = false): Promise<void> {\r\n try {\r\n const kindOfQuantity = await this.getSchemaItem<MutableKindOfQuantity>(koqKey);\r\n kindOfQuantity.addPresentationFormat(overrideFormat, isDefault);\r\n } catch(e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.AddPresentationOverride, new SchemaItemId(this.schemaItemType, koqKey), e);\r\n }\r\n }\r\n\r\n /**\r\n * @param parent A SchemaItemKey of the parent Format.\r\n * @param unitLabelOverrides The list of Unit (or InvertedUnit) and label overrides. The length of list should be equal to the number of units in the parent Format.\r\n */\r\n public async createFormatOverride(parent: SchemaItemKey, precision?: number, unitLabelOverrides?: Array<[Unit | InvertedUnit, string | undefined]>): Promise<OverrideFormat> {\r\n try {\r\n const parentFormat = await this.getSchemaItem<Format>(parent, SchemaItemType.Format);\r\n return new OverrideFormat(parentFormat, precision, unitLabelOverrides);\r\n } catch(e: any) {\r\n throw new SchemaEditingError(ECEditingStatus.CreateFormatOverride, new SchemaItemId(this.schemaItemType, parent), e);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
- import type { KindOfQuantityDifference } from "../Differencing/SchemaDifference";
1
+ import type { KindOfQuantityDifference, KindOfQuantityPresentationFormatDifference } from "../Differencing/SchemaDifference";
2
2
  import type { SchemaMergeContext } from "./SchemaMerger";
3
- import type { SchemaItemKey } from "@itwin/ecschema-metadata";
3
+ import { SchemaItemKey } from "@itwin/ecschema-metadata";
4
4
  /**
5
5
  * Merges a new KindOfQuantity into the target schema.
6
6
  * @internal
@@ -11,4 +11,9 @@ export declare function addKindOfQuantity(context: SchemaMergeContext, change: K
11
11
  * @internal
12
12
  */
13
13
  export declare function modifyKindOfQuantity(context: SchemaMergeContext, change: KindOfQuantityDifference, itemKey: SchemaItemKey): Promise<void>;
14
+ /**
15
+ * Merges a new presentation format into the target kind of quantity
16
+ * @internal
17
+ */
18
+ export declare function addPresentationFormat(context: SchemaMergeContext, change: KindOfQuantityPresentationFormatDifference): Promise<void>;
14
19
  //# sourceMappingURL=KindOfQuantityMerger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KindOfQuantityMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/KindOfQuantityMerger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,iBA0BpG;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,aAAa,iBAe/H"}
1
+ {"version":3,"file":"KindOfQuantityMerger.d.ts","sourceRoot":"","sources":["../../../src/Merging/KindOfQuantityMerger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,0CAA0C,EAAE,MAAM,kCAAkC,CAAC;AAE7H,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAwC,aAAa,EAAQ,MAAM,0BAA0B,CAAC;AAGrG;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,iBA4BpG;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,aAAa,iBAe/H;AACD;;;EAGE;AACF,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,0CAA0C,iBAU1H"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.modifyKindOfQuantity = exports.addKindOfQuantity = void 0;
3
+ exports.addPresentationFormat = exports.modifyKindOfQuantity = exports.addKindOfQuantity = void 0;
4
+ const ecschema_metadata_1 = require("@itwin/ecschema-metadata");
4
5
  const Utils_1 = require("./Utils");
5
6
  /**
6
7
  * Merges a new KindOfQuantity into the target schema.
@@ -17,11 +18,13 @@ async function addKindOfQuantity(context, change) {
17
18
  if (change.difference.presentationUnits) {
18
19
  if (Array.isArray(change.difference.presentationUnits)) {
19
20
  for (let index = 0; index < change.difference.presentationUnits.length; index++) {
20
- change.difference.presentationUnits[index] = await updateOverrideFormat(context, change.difference.presentationUnits[index]);
21
+ const presentationFormat = await updateOverrideFormat(context, change.difference.presentationUnits[index]);
22
+ change.difference.presentationUnits[index] = presentationFormat.fullName;
21
23
  }
22
24
  }
23
25
  else {
24
- change.difference.presentationUnits = await updateOverrideFormat(context, change.difference.presentationUnits);
26
+ const presentationFormat = await updateOverrideFormat(context, change.difference.presentationUnits);
27
+ change.difference.presentationUnits = presentationFormat.name;
25
28
  }
26
29
  }
27
30
  await context.editor.kindOfQuantities.createFromProps(context.targetSchemaKey, {
@@ -55,20 +58,39 @@ async function modifyKindOfQuantity(context, change, itemKey) {
55
58
  }
56
59
  }
57
60
  exports.modifyKindOfQuantity = modifyKindOfQuantity;
61
+ /**
62
+ * Merges a new presentation format into the target kind of quantity
63
+ * @internal
64
+ */
65
+ async function addPresentationFormat(context, change) {
66
+ for (const formatString of change.difference) {
67
+ const koqKey = new ecschema_metadata_1.SchemaItemKey(change.itemName, context.targetSchemaKey);
68
+ const presentationFormat = await updateOverrideFormat(context, formatString);
69
+ if (ecschema_metadata_1.OverrideFormat.isOverrideFormat(presentationFormat)) {
70
+ await context.editor.kindOfQuantities.addPresentationOverrideFormat(koqKey, presentationFormat);
71
+ }
72
+ else {
73
+ await context.editor.kindOfQuantities.addPresentationFormat(koqKey, presentationFormat.key);
74
+ }
75
+ }
76
+ }
77
+ exports.addPresentationFormat = addPresentationFormat;
58
78
  async function updateOverrideFormat(context, formatString) {
59
79
  // https://www.itwinjs.org/v1/bis/ec/kindofquantity/#format-string
60
- const match = formatString.match(/^([^(]+)\((\d+)\)\[(.*)\]$/);
61
- if (match === null) {
62
- return formatString;
63
- }
64
- const originalFormat = match[1];
65
- const updatedFormat = await (0, Utils_1.updateSchemaItemFullName)(context, originalFormat);
66
- const unitOverrides = match[3].split("][");
67
- for (let index = 0; index < unitOverrides.length; index++) {
68
- const [unit, label] = unitOverrides[index].split("|");
69
- const updatedUnit = await (0, Utils_1.updateSchemaItemFullName)(context, unit);
70
- unitOverrides[index] = `${updatedUnit}${label ? `|${label}` : ""}`;
80
+ const match = ecschema_metadata_1.OverrideFormat.parseFormatString(formatString);
81
+ const formatKey = await (0, Utils_1.updateSchemaItemKey)(context, match.name);
82
+ const format = await context.targetSchema.lookupItem(formatKey);
83
+ if (undefined === match.precision && undefined === match.unitAndLabels)
84
+ return format;
85
+ let unitAndLabels;
86
+ if (undefined !== match.unitAndLabels) {
87
+ unitAndLabels = [];
88
+ for (const unitOverride of match.unitAndLabels) {
89
+ const unitKey = await (0, Utils_1.updateSchemaItemKey)(context, unitOverride[0]);
90
+ const unit = await context.targetSchema.lookupItem(unitKey);
91
+ unitAndLabels.push([unit, unitOverride[1]]);
92
+ }
71
93
  }
72
- return `${updatedFormat}(${match[2]})[${unitOverrides.join("][")}]`;
94
+ return context.editor.kindOfQuantities.createFormatOverride(formatKey, match.precision, unitAndLabels);
73
95
  }
74
96
  //# sourceMappingURL=KindOfQuantityMerger.js.map
@@ -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 { MutableKindOfQuantity } from \"../Editing/Mutable/MutableKindOfQuantity\";\r\nimport type { SchemaMergeContext } from \"./SchemaMerger\";\r\nimport type { SchemaItemKey } from \"@itwin/ecschema-metadata\";\r\nimport { updateSchemaItemFullName } from \"./Utils\";\r\n\r\n/**\r\n * Merges a new KindOfQuantity into the target schema.\r\n * @internal\r\n */\r\nexport async function addKindOfQuantity(context: SchemaMergeContext, change: KindOfQuantityDifference) {\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 await 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\r\n/**\r\n * Merges differences to an existing KindOfQuantity in the target schema.\r\n * @internal\r\n */\r\nexport async function modifyKindOfQuantity(context: SchemaMergeContext, change: KindOfQuantityDifference, itemKey: SchemaItemKey) {\r\n const kindOfQuantity = await context.targetSchema.lookupItem(itemKey) as MutableKindOfQuantity;\r\n if(change.difference.label !== undefined) {\r\n await context.editor.kindOfQuantities.setDisplayLabel(itemKey, change.difference.label);\r\n }\r\n if(change.difference.description !== undefined) {\r\n await context.editor.kindOfQuantities.setDescription(itemKey, change.difference.description);\r\n }\r\n if(change.difference.relativeError !== undefined) {\r\n kindOfQuantity.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\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":"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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, KindOfQuantityPresentationFormatDifference } from \"../Differencing/SchemaDifference\";\r\nimport type { MutableKindOfQuantity } from \"../Editing/Mutable/MutableKindOfQuantity\";\r\nimport type { SchemaMergeContext } from \"./SchemaMerger\";\r\nimport { Format, InvertedUnit, OverrideFormat, SchemaItemKey, Unit } from \"@itwin/ecschema-metadata\";\r\nimport { updateSchemaItemFullName, updateSchemaItemKey } from \"./Utils\";\r\n\r\n/**\r\n * Merges a new KindOfQuantity into the target schema.\r\n * @internal\r\n */\r\nexport async function addKindOfQuantity(context: SchemaMergeContext, change: KindOfQuantityDifference) {\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 const presentationFormat = await updateOverrideFormat(context, change.difference.presentationUnits[index]);\r\n change.difference.presentationUnits[index] = presentationFormat.fullName;\r\n }\r\n } else {\r\n const presentationFormat = await updateOverrideFormat(context, change.difference.presentationUnits);\r\n change.difference.presentationUnits = presentationFormat.name;\r\n }\r\n }\r\n\r\n await 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\r\n/**\r\n * Merges differences to an existing KindOfQuantity in the target schema.\r\n * @internal\r\n */\r\nexport async function modifyKindOfQuantity(context: SchemaMergeContext, change: KindOfQuantityDifference, itemKey: SchemaItemKey) {\r\n const kindOfQuantity = await context.targetSchema.lookupItem(itemKey) as MutableKindOfQuantity;\r\n if(change.difference.label !== undefined) {\r\n await context.editor.kindOfQuantities.setDisplayLabel(itemKey, change.difference.label);\r\n }\r\n if(change.difference.description !== undefined) {\r\n await context.editor.kindOfQuantities.setDescription(itemKey, change.difference.description);\r\n }\r\n if(change.difference.relativeError !== undefined) {\r\n kindOfQuantity.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 * Merges a new presentation format into the target kind of quantity\r\n * @internal\r\n*/\r\nexport async function addPresentationFormat(context: SchemaMergeContext, change: KindOfQuantityPresentationFormatDifference) {\r\n for (const formatString of change.difference) {\r\n const koqKey = new SchemaItemKey(change.itemName, context.targetSchemaKey);\r\n const presentationFormat = await updateOverrideFormat(context, formatString);\r\n if (OverrideFormat.isOverrideFormat(presentationFormat)) {\r\n await context.editor.kindOfQuantities.addPresentationOverrideFormat(koqKey, presentationFormat);\r\n } else {\r\n await context.editor.kindOfQuantities.addPresentationFormat(koqKey, presentationFormat.key);\r\n }\r\n }\r\n}\r\n\r\nasync function updateOverrideFormat(context: SchemaMergeContext, formatString: string): Promise<Format | OverrideFormat> {\r\n // https://www.itwinjs.org/v1/bis/ec/kindofquantity/#format-string\r\n const match = OverrideFormat.parseFormatString(formatString);\r\n const formatKey = await updateSchemaItemKey(context, match.name);\r\n const format = await context.targetSchema.lookupItem(formatKey) as Format;\r\n\r\n if (undefined === match.precision && undefined === match.unitAndLabels)\r\n return format;\r\n\r\n let unitAndLabels: Array<[Unit | InvertedUnit, string | undefined]> | undefined;\r\n if (undefined !== match.unitAndLabels) {\r\n unitAndLabels = [];\r\n for (const unitOverride of match.unitAndLabels) {\r\n const unitKey = await updateSchemaItemKey(context, unitOverride[0]);\r\n const unit = await context.targetSchema.lookupItem(unitKey) as Unit | InvertedUnit;\r\n unitAndLabels.push([unit, unitOverride[1]]);\r\n }\r\n }\r\n return context.editor.kindOfQuantities.createFormatOverride(formatKey, match.precision, unitAndLabels);\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { AnySchemaDifference, ClassPropertyDifference, ConstantDifference, CustomAttributeClassDifference, CustomAttributeDifference, EntityClassDifference, EntityClassMixinDifference, EnumerationDifference, EnumeratorDifference, FormatDifference, InvertedUnitDifference, KindOfQuantityDifference, MixinClassDifference, PhenomenonDifference, PropertyCategoryDifference, RelationshipClassDifference, RelationshipConstraintClassDifference, RelationshipConstraintDifference, SchemaDifference, SchemaReferenceDifference, StructClassDifference, UnitDifference, UnitSystemDifference } from "../Differencing/SchemaDifference";
1
+ import { AnySchemaDifference, ClassPropertyDifference, ConstantDifference, CustomAttributeClassDifference, CustomAttributeDifference, EntityClassDifference, EntityClassMixinDifference, EnumerationDifference, EnumeratorDifference, FormatDifference, InvertedUnitDifference, KindOfQuantityDifference, KindOfQuantityPresentationFormatDifference, MixinClassDifference, PhenomenonDifference, PropertyCategoryDifference, RelationshipClassDifference, RelationshipConstraintClassDifference, RelationshipConstraintDifference, SchemaDifference, SchemaReferenceDifference, StructClassDifference, UnitDifference, UnitSystemDifference } from "../Differencing/SchemaDifference";
2
2
  import { SchemaDifferenceVisitor } from "../Differencing/SchemaDifferenceVisitor";
3
3
  import { SchemaMergeContext } from "./SchemaMerger";
4
4
  /**
@@ -134,5 +134,10 @@ export declare class SchemaMergingVisitor implements SchemaDifferenceVisitor {
134
134
  * @internal
135
135
  */
136
136
  visitUnitSystemDifference(entry: UnitSystemDifference): Promise<void>;
137
+ /**
138
+ * Visitor implementation for handling KindOfQuantityPresentationFormatDifference.
139
+ * @internal
140
+ */
141
+ visitKindOfQuantityPresentationFormatDifference(entry: KindOfQuantityPresentationFormatDifference): Promise<void>;
137
142
  }
138
143
  //# sourceMappingURL=SchemaMergingVisitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaMergingVisitor.d.ts","sourceRoot":"","sources":["../../../src/Merging/SchemaMergingVisitor.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,mBAAmB,EAA2B,uBAAuB,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,qCAAqC,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAiB5pB,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAQpD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,uBAAuB;IAElE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C;;OAEG;gBACS,OAAO,EAAE,kBAAkB;IAIvC;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;YACW,oBAAoB;IAmClC;;;OAGG;IACU,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9E;;;OAGG;IACU,mCAAmC,CAAC,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnJ;;;OAGG;IACU,sCAAsC,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpG;;;OAGG;IACU,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjI;;;OAGG;IACU,+BAA+B,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9F;;;OAGG;IACU,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpF;;;OAGG;IACU,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlF;;;OAGG;IACU,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E;;;OAGG;IACU,2BAA2B,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF;;;OAGG;IACU,6BAA6B,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1F;;;OAGG;IACU,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1H;;;OAGG;IACU,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlF;;;OAGG;IACU,+BAA+B,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9F;;;OAGG;IACU,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF;;;OAGG;IACU,gCAAgC,CAAC,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7I;;;OAGG;IACU,0CAA0C,CAAC,KAAK,EAAE,qCAAqC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpH;;;OAGG;IACU,qCAAqC,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1G;;;OAGG;IACU,qBAAqB,CAAC,EAAE,UAAU,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IASnF;;OAEG;YACW,yBAAyB;IAevC;;;OAGG;IACU,8BAA8B,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5F;;;OAGG;IACU,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjI;;;OAGG;IACU,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE;;;OAGG;IACU,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAMnF"}
1
+ {"version":3,"file":"SchemaMergingVisitor.d.ts","sourceRoot":"","sources":["../../../src/Merging/SchemaMergingVisitor.ts"],"names":[],"mappings":"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"}
@@ -290,6 +290,15 @@ class SchemaMergingVisitor {
290
290
  modify: UnitSystemMerger_1.modifyUnitSystem,
291
291
  });
292
292
  }
293
+ /**
294
+ * Visitor implementation for handling KindOfQuantityPresentationFormatDifference.
295
+ * @internal
296
+ */
297
+ async visitKindOfQuantityPresentationFormatDifference(entry) {
298
+ switch (entry.changeType) {
299
+ case "add": return (0, KindOfQuantityMerger_1.addPresentationFormat)(this._context, entry);
300
+ }
301
+ }
293
302
  }
294
303
  exports.SchemaMergingVisitor = SchemaMergingVisitor;
295
304
  /**