@itwin/imodel-transformer 1.0.0-dev.6 → 1.0.0-dev.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"IModelImporter.js","sourceRoot":"","sources":["../../src/IModelImporter.ts"],"names":[],"mappings":";;;AAAA;;;gGAGgG;AAChG;;GAEG;AACH,sDAM6B;AAC7B,oDAa4B;AAC5B,2EAAwE;AACxE,sDAS6B;AAE7B,iCAAiC;AACjC,uEAAqE;AAErE,MAAM,cAAc,GAAW,qDAAyB,CAAC,cAAc,CAAC;AAmCxE;;;;;GAKG;AACH,MAAa,cAAc;IA0CzB;;;OAGG;IACH,YAAmB,QAAkB,EAAE,OAA6B;QA1BpE;;;WAGG;QACa,0BAAqB,GAAG,IAAI,GAAG,CAAa,EAAE,CAAC,CAAC;QAEhE,mOAAmO;QAClN,oBAAe,GAAG,IAAI,GAAG,CAAa;YACrD,oBAAM,CAAC,aAAa;YACpB,oBAAM,CAAC,YAAY;YACnB,cAAc,CAAC,uCAAuC;SACvD,CAAC,CAAC;QAEH,mHAAmH;QAC5G,qBAAgB,GAAW,IAAI,CAAC;QACvC,yDAAyD;QACjD,qBAAgB,GAAW,CAAC,CAAC;QACrC,MAAM;QACE,6BAAwB,GAAG,IAAI,GAAG,CAAS;YACjD,cAAc,EAAE,mEAAmE;SACpF,CAAC,CAAC;QAOD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG;YACb,wBAAwB,EAAE,OAAO,EAAE,wBAAwB,IAAI,IAAI;YACnE,8BAA8B,EAC5B,OAAO,EAAE,8BAA8B,IAAI,KAAK;YAClD,uBAAuB,EAAE,OAAO,EAAE,uBAAuB,IAAI,KAAK;YAClE,kCAAkC,EAChC,OAAO,EAAE,kCAAkC,IAAI,KAAK;SACvD,CAAC;QACF,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9D,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,SAAqB;QAC9C,IACE,IAAI,CAAC,OAAO,CAAC,kCAAkC;YAC/C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;YAEnC,OAAO,IAAI,CAAC;QACd,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iGAAiG;IAC1F,WAAW,CAAC,UAAsB;QACvC,IAAI,SAAS,KAAK,UAAU,CAAC,EAAE,IAAI,CAAC,mBAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,yBAAW,CACnB,2BAAY,CAAC,SAAS,EACtB,mEAAmE,CACpE,CAAC;QAEJ,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YAC1C,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,8BAA8B,UAAU,CAAC,EAAE,EAAE,CAC9C,CAAC;YACF,OAAO;SACR;QACD,IAAI;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,sDAAsD;YAClH,IAAI,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,EAAE;gBACtE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aAChC;SACF;QAAC,OAAO,KAAK,EAAE;YACd,uCAAuC;YACvC,IACE,KAAK,YAAY,yBAAW;gBAC5B,KAAK,CAAC,WAAW,KAAK,2BAAY,CAAC,QAAQ,EAC3C;gBACA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC/B,OAAO;aACR;YACD,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,UAAsB;QAC5C,IAAI;YACF,MAAM,OAAO,GAAe,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACzE,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,YAAY,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CACpD,CAAC;YACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC;SAChB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;gBAC1D,4DAA4D;gBAC5D,MAAM,YAAY,GAAG,gBAAgB,UAAU,CAAC,aAAa,kFAAkF,CAAC;gBAChJ,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;aAC/D;YACD,MAAM,KAAK,CAAC,CAAC,uBAAuB;SACrC;IACH,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,UAAsB;QAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7C,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,WAAW,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CACnD,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,qCAAqC;IAC7B,oBAAoB,CAAC,UAAsB;QACjD,OAAO,GAAG,UAAU,CAAC,aAAa,KAAK,UAAU,CAAC,EAAG,GAAG,CAAC;IAC3D,CAAC;IAED,mGAAmG;IAC5F,aAAa,CAAC,YAA0B;QAC7C,IACE,SAAS,KAAK,YAAY,CAAC,EAAE;YAC7B,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,EACxC;YACA,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,gCAAgC,YAAY,CAAC,EAAE,EAAE,CAClD,CAAC;YACF,OAAO,YAAY,CAAC,EAAE,CAAC;SACxB;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE;YAC/C,IAAI,YAAY,CAAC,EAAE,KAAK,SAAS,EAAE;gBACjC,MAAM,IAAI,yBAAW,CACnB,2BAAY,CAAC,UAAU,EACvB,gEAAgE,CACjE,CAAC;aACH;YACD,oHAAoH;YACpH,0HAA0H;YAC1H,gCAAgC;YAChC,8FAA8F;YAC9F,+EAA+E;YAC/E,IACE,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBACnE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EACzC;gBACA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;aACpC;SACF;aAAM;YACL,IAAI,SAAS,KAAK,YAAY,CAAC,EAAE,EAAE;gBACjC,IAAI;oBACF,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;iBACpC;gBAAC,OAAO,GAAG,EAAE;oBACZ,IAAK,GAAmB,CAAC,WAAW,KAAK,2BAAY,CAAC,aAAa,EAAE;wBACnE,MAAM,CACJ,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EACrC,gEAAgE,CACjE,CAAC;wBACF,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAC7B,YAAY,CAAC,EAAE,EACf,YAAY,CAAC,IAAI,CAAC,KAAK,CACxB,CAAC;wBACF,kHAAkH;wBAClH,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,mBAAI,CAAC,WAAW,EAAE,CAAC;wBAC7C,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;qBACpC;yBAAM;wBACL,MAAM,GAAG,CAAC;qBACX;iBACF;aACF;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,kDAAkD;aACvF;SACF;QACD,OAAO,YAAY,CAAC,EAAG,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACO,eAAe,CAAC,YAA0B;QAClD,IAAI;YACF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE;gBACnE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,8BAA8B;aACxD,CAAC,CAAC;YACH,6FAA6F;YAC7F,YAAY,CAAC,EAAE,GAAG,SAAS,CAAC;YAC5B,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,YAAY,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,CACxD,CAAC;YACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;gBACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAC;oBAC7C,EAAE,EAAE,SAAS;oBACb,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBACH,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,mCAAmC,IAAI,CAAC,sBAAsB,CAC5D,YAAY,CACb,EAAE,CACJ,CAAC;aACH;YACD,OAAO,SAAS,CAAC;SAClB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;gBAC5D,4DAA4D;gBAC5D,MAAM,YAAY,GAAG,kBAAkB,YAAY,CAAC,aAAa,kFAAkF,CAAC;gBACpJ,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;aAC/D;YACD,MAAM,KAAK,CAAC,CAAC,uBAAuB;SACrC;IACH,CAAC;IAED;;OAEG;IACO,eAAe,CAAC,YAA0B;QAClD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;YACpB,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;SACzE;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACnD,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,WAAW,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,CACvD,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAC7C,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,mCAAmC,IAAI,CAAC,sBAAsB,CAC5D,YAAY,CACb,EAAE,CACJ,CAAC;SACH;IACH,CAAC;IAED;;;OAGG;IACO,eAAe,CAAC,SAAqB;QAC7C,IAAA,kDAAwB,EAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnD,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,mBAAmB,SAAS,sBAAsB,CACnD,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,2DAA2D;IACpD,aAAa,CAAC,SAAqB;QACxC,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;YACtC,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,gCAAgC,SAAS,EAAE,CAC5C,CAAC;YACF,OAAO;SACR;QACD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,OAAmB;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,qBAAM,CAAC,OAAO,CAAC,cAAc,EAAE,iBAAiB,OAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,yDAAyD;IAClD,WAAW,CAAC,OAAmB;QACpC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,wCAAwC;IAChC,sBAAsB,CAAC,YAA0B;QACvD,MAAM,SAAS,GAAW,YAAY,CAAC,IAAI,CAAC,KAAK;YAC/C,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG;YAC/B,CAAC,CAAC,YAAY,CAAC,SAAS;gBACtB,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,GAAG;gBAC9B,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,GAAG,YAAY,CAAC,aAAa,IAAI,SAAS,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC;IAC1E,CAAC;IAED,4DAA4D;IACrD,yBAAyB,CAC9B,WAA+B;QAE/B,MAAM,OAAO,GAAoB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAChE,WAAW,CAAC,OAAO,CAAC,EAAE,EACtB,WAAW,CAAC,aAAa,CAC1B,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;SAChD;aAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE;YACpD,WAAW,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;SACzC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACI,yBAAyB,CAC9B,gBAAsC;IACtC,2GAA2G;IAC3G,aAAiD,GAAG,EAAE,CAAC,IAAI;QAE3D,MAAM,MAAM,GAAG,IAAI,KAAK,CACtB,gBAAgB,CAAC,MAAM,CACxB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,OAAO,MAAsB,CAAC;SAC/B;QAED,MAAM,SAAS,GAAe,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,8DAA8D;QAC9D,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/C,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAgC,EAAQ,EAAE;YAClE,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,gDAAgD;QAChD,oBAAoB,CAAC,OAAO,CAAC,CAAC,mBAA2B,EAAE,EAAE;YAC3D,MAAM,eAAe,GAAG,gBAAgB;iBACrC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;iBACzC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,mBAAmB,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC;YAEtE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;iBAC1C,UAAU,CAAC,SAAS,EAAE,mBAAmB,CAAC;iBAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAU,CAAC;iBAClD,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAE5C,IAAI,eAAe,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE;gBACnD,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE;oBAC/D,IAAI,EAAc,CAAC;oBACnB,IAAI,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE;wBACjC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;wBACd,IAAI,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;4BACxD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;yBACnC;wBACD,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;qBACf;yBAAM;wBACL,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;qBACxC;oBACD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE;oBAC9D,IAAI,EAAc,CAAC;oBACnB,IAAI,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE;wBAClC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;wBACd,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;wBACrC,IAAI,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;4BACzD,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;yBAC1D;wBACD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;qBAC1B;yBAAM;wBACL,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;qBACnC;gBACH,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;QACpD,OAAO,MAAsB,CAAC;IAChC,CAAC;IAED;;OAEG;IACO,qBAAqB,CAAC,WAA+B;QAC7D,IAAI;YACF,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC5D,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,YAAY,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,EAAE,CAC7D,CAAC;YACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;SACX;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;gBAC3D,4DAA4D;gBAC5D,MAAM,YAAY,GAAG,wBAAwB,WAAW,CAAC,aAAa,kFAAkF,CAAC;gBACzJ,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;aAC/D;YACD,MAAM,KAAK,CAAC,CAAC,uBAAuB;SACrC;IACH,CAAC;IAED;;OAEG;IACO,qBAAqB,CAAC,WAA+B;QAC7D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjD,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,WAAW,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,EAAE,CAC5D,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACO,qBAAqB,CAAC,mBAAkC;QAChE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC5D,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,WAAW,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,EAAE,CACpE,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,8CAA8C;IACtC,4BAA4B,CAClC,kBAAsD;QAEtD,OAAO,GAAG,kBAAkB,CAAC,aAAa,eAAe,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IAC5F,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,iBAAoC;QAC5D,IACE,SAAS,KAAK,iBAAiB,CAAC,QAAQ;YACxC,CAAC,mBAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAC7C;YACA,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,YAAY,iBAAiB,CAAC,aAAa,yDAAyD,CACrG,CAAC;YACF,OAAO,mBAAI,CAAC,OAAO,CAAC;SACrB;QACD,IACE,SAAS,KAAK,iBAAiB,CAAC,QAAQ;YACxC,CAAC,mBAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAC7C;YACA,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,YAAY,iBAAiB,CAAC,aAAa,yDAAyD,CACrG,CAAC;YACF,OAAO,mBAAI,CAAC,OAAO,CAAC;SACrB;QACD,qCAAqC;QACrC,MAAM,kBAAkB,GAAoB;YAC1C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;YACpC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;SACrC,CAAC;QACF,MAAM,YAAY,GAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CACxC,iBAAiB,CAAC,aAAa,EAC/B,kBAAkB,CACnB,CAAC;QACJ,IAAI,SAAS,KAAK,YAAY,EAAE;YAC9B,mCAAmC;YACnC,iBAAiB,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;YACvC,IAAI,gBAAgB,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE;gBACrD,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;aAC9C;YACD,OAAO,iBAAiB,CAAC,EAAE,CAAC;SAC7B;aAAM;YACL,OAAO,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;SACrD;IACH,CAAC;IAED;;;OAGG;IACO,oBAAoB,CAC5B,iBAAoC;QAEpC,IAAI;YACF,MAAM,mBAAmB,GACvB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAChE,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,YAAY,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,EAAE,CAClE,CAAC;YACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,mBAAmB,CAAC;SAC5B;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;gBACjE,4DAA4D;gBAC5D,MAAM,YAAY,GAAG,uBAAuB,iBAAiB,CAAC,aAAa,kFAAkF,CAAC;gBAC9J,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;aAC/D;YACD,MAAM,KAAK,CAAC,CAAC,uBAAuB;SACrC;IACH,CAAC;IAED;;OAEG;IACO,oBAAoB,CAAC,iBAAoC;QACjE,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE;YACzB,MAAM,IAAI,yBAAW,CACnB,2BAAY,CAAC,SAAS,EACtB,uCAAuC,CACxC,CAAC;SACH;QACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC9D,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,WAAW,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,EAAE,CACjE,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,gEAAgE;IACtD,oBAAoB,CAC5B,iBAA6C;QAE7C,8FAA8F;QAC9F,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC;YACzC,EAAE,EAAE,iBAAiB,CAAC,EAAE;YACxB,aAAa,EAAE,iBAAiB,CAAC,aAAa;SAC1B,CAAC,CAAC;QACxB,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,wBAAwB,iBAAiB,CAAC,aAAa,OAAO,iBAAiB,CAAC,EAAE,EAAE,CACrF,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,gEAAgE;IACzD,kBAAkB,CACvB,iBAA6C;QAE7C,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC;IAED,4CAA4C;IACpC,2BAA2B,CAAC,QAA2B;QAC7D,OAAO,GAAG,QAAQ,CAAC,aAAa,cAAc,QAAQ,CAAC,QAAQ,eAAe,QAAQ,CAAC,QAAQ,GAAG,CAAC;IACrG,CAAC;IAED,kCAAkC;IAC1B,aAAa;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACvD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;IACH,CAAC;IAED;;OAEG;IACO,UAAU,KAAU,CAAC;IAE/B;;;OAGG;IACI,qBAAqB;QAC1B,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACjE,yBAAyB,EAAE,IAAI;YAC/B,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;QACH,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CACzE,CAAC;QACF,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,4CAA4C,IAAI,CAAC,SAAS,CACxD,sBAAsB,CAAC,OAAO,CAC/B,EAAE,CACJ,CAAC;QACF,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,yCAAyC,IAAI,CAAC,SAAS,CACrD,sBAAsB,CAAC,mBAAmB,CAC3C,EAAE,CACJ,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE;YACzC,MAAM,eAAe,GACnB,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,KAAK,QAAQ;gBACvD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,eAAe;gBACvD,CAAC,CAAC,KAAK,CAAC;YACZ,MAAM,iBAAiB,GAAqB,eAAe;gBACzD,CAAC,CAAC,sBAAsB,CAAC,OAAO;gBAChC,CAAC,CAAC,sBAAsB,CAAC,mBAAoB,CAAC;YAChD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBAClE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;gBACtD,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,0BAA0B,IAAI,CAAC,SAAS,CACtC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAC7B,EAAE,CACJ,CAAC;aACH;YACD,IACE,CAAC,eAAe;gBAChB,sBAAsB,CAAC,QAAQ;gBAC/B,sBAAsB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAC1C;gBACA,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,GAAG,sBAAsB,CAAC,QAAQ,CAAC,MAAM,0CAA0C,CACpF,CAAC;aACH;SACF;aAAM;YACL,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CACzC,sBAAsB,CAAC,OAAO,CAC/B,EACD;gBACA,qBAAM,CAAC,UAAU,CACf,cAAc,EACd,0CAA0C,CAC3C,CAAC;aACH;YACD,IACE,sBAAsB,CAAC,QAAQ;gBAC/B,sBAAsB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAC1C;gBACA,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,GAAG,sBAAsB,CAAC,QAAQ,CAAC,MAAM,0CAA0C,CACpF,CAAC;aACH;SACF;IACH,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,OAAgC;QACtD,IAAI,OAAO,CAAC,yBAAyB,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,4BAA4B,EAAE,CAAC;YACrE,qBAAM,CAAC,OAAO,CACZ,cAAc,EACd,WAAW,MAAM,CAAC,cAAc,kBAAkB,MAAM,CAAC,iBAAiB,+BAA+B,MAAM,CAAC,eAAe,SAAS,CACzI,CAAC;SACH;IACH,CAAC;IAEO,0BAA0B;QAChC,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;SAClB;QACD,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACI,QAAQ;QACb,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;;AA3rBH,wCA4rBC;AAnrBgB,sDAAuC,GAAe,KAAK,AAApB,CAAqB;AAqrB7E;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,MAAc,EACd,WAAwB,EACxB,aAA2B;IAE3B,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,MAAM,CAAC,eAAe,CACpB,CAAC,YAAoB,EAAE,YAA8B,EAAE,EAAE;QACvD,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,aAAa,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBACpD,OAAO;aACR;iBAAM,IAAI,+BAAiB,CAAC,MAAM,KAAK,YAAY,CAAC,aAAa,EAAE;gBAClE,OAAO,GAAG,qBAAqB,CAC7B,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EACzB,WAAmB,CAAC,YAAY,CAAC,CACnC,CAAC;aACH;iBAAM,IAAI,YAAY,CAAC,YAAY,EAAE;gBACpC,OAAO,GAAG,yBAAyB,CACjC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EACzB,WAAmB,CAAC,YAAY,CAAC,CACnC,CAAC;aACH;iBAAM;gBACL,OAAO,GAAG,eAAe,CACvB,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EACzB,WAAmB,CAAC,YAAY,CAAC,CACnC,CAAC;aACH;SACF;IACH,CAAC,CACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AA/BD,4CA+BC;AAED,iEAAiE;AACjE,SAAS,qBAAqB,CAC5B,eAAoB,EACpB,eAAoB;IAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,eAAe,EACf,iCAAmB,CAAC,QAAQ,CAC7B,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,eAAe,EACf,iCAAmB,CAAC,QAAQ,CAC7B,CAAC;IACF,OAAO,WAAW,KAAK,WAAW,CAAC;AACrC,CAAC;AAED,8EAA8E;AAC9E,SAAS,yBAAyB,CAChC,mBAAwB,EACxB,mBAAwB;IAExB,MAAM,eAAe,GAAG,4BAAc,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,4BAAc,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACpD,OAAO,WAAW,KAAK,WAAW,CAAC;AACrC,CAAC;AAED,8EAA8E;AAC9E,SAAS,eAAe,CAAC,SAAc,EAAE,SAAc;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,+CAA+C;AAC/C,SAAS,aAAa,CAAC,KAAmB;IACxC,OAAO,KAAK,CAAC,aAAa,KAAK,0BAAW,CAAC,aAAa,CAAC;AAC3D,CAAC;AAED,2EAA2E;AAC3E,SAAS,oBAAoB,CAAC,KAAuB;IACnD,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEzC,IAAI,CAAC,mBAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,yBAAW,CACnB,2BAAY,CAAC,UAAU,EACvB,4BAA4B,CAC7B,CAAC;IACJ,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,SAAS;QAChC,MAAM,IAAI,yBAAW,CACnB,2BAAY,CAAC,UAAU,EACvB,uBAAuB,KAAK,CAAC,EAAE,gBAAgB,CAChD,CAAC;IACJ,OAAO,KAAK,CAAC,EAAE,KAAK,uBAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module iModels\n */\nimport {\n Guid,\n Id64,\n Id64String,\n IModelStatus,\n Logger,\n} from \"@itwin/core-bentley\";\nimport {\n AxisAlignedBox3d,\n Base64EncodedString,\n ElementAspectProps,\n ElementProps,\n EntityProps,\n IModel,\n IModelError,\n ModelProps,\n PrimitiveTypeCode,\n PropertyMetaData,\n RelatedElement,\n SubCategoryProps,\n} from \"@itwin/core-common\";\nimport { TransformerLoggerCategory } from \"./TransformerLoggerCategory\";\nimport {\n ElementAspect,\n ElementMultiAspect,\n Entity,\n IModelDb,\n Relationship,\n RelationshipProps,\n SourceAndTarget,\n SubCategory,\n} from \"@itwin/core-backend\";\nimport type { RelationshipPropsForDelete } from \"./IModelTransformer\";\nimport * as assert from \"assert\";\nimport { deleteElementTreeCascade } from \"./ElementCascadingDeleter\";\n\nconst loggerCategory: string = TransformerLoggerCategory.IModelImporter;\n\n/** Options provided to [[IModelImporter.optimizeGeometry]] specifying post-processing optimizations to be applied to the iModel's geometry.\n * @beta\n */\nexport interface OptimizeGeometryOptions {\n /** If true, identify any [GeometryPart]($backend)s that are referenced exactly once. For each such part,\n * replace the reference in the element's geometry stream with the part's own geometry stream, then delete the part.\n */\n inlineUniqueGeometryParts?: boolean;\n}\n\n/** Options provided to the [[IModelImporter]] constructor.\n * @beta\n */\nexport interface IModelImportOptions {\n /** If `true` (the default), compute the projectExtents of the target iModel after elements are imported.\n * The computed projectExtents will either include or exclude *outliers* depending on the `excludeOutliers` flag that defaults to `false`.\n * @see [[IModelImporter.autoExtendProjectExtents]]\n * @see [IModelImporter Options]($docs/learning/transformer/index.md#IModelImporter)\n */\n autoExtendProjectExtents?: boolean | { excludeOutliers: boolean };\n /** See [IModelTransformOptions]($transformer) */\n preserveElementIdsForFiltering?: boolean;\n /** If `true`, simplify the element geometry for visualization purposes. For example, convert b-reps into meshes.\n * @default false\n */\n simplifyElementGeometry?: boolean;\n /**\n * Skip propagating changes made to the root subject, dictionaryModel and IModelImporter._realityDataSourceLinkPartitionStaticId (0xe)\n * @default false\n */\n skipPropagateChangesToRootElements?: boolean;\n}\n\n/** Base class for importing data into an iModel.\n * @see [iModel Transformation and Data Exchange]($docs/learning/transformer/index.md)\n * @see [IModelExporter]($transformer)\n * @see [IModelTransformer]($transformer)\n * @beta\n */\nexport class IModelImporter {\n /** The read/write target iModel. */\n public readonly targetDb: IModelDb;\n\n /** resolved initialization options for the importer\n * @beta\n */\n public readonly options: Required<IModelImportOptions>;\n\n private static _realityDataSourceLinkPartitionStaticId: Id64String = \"0xe\";\n\n /**\n * A map of conflicting element code values.\n * In cases where updating an element's code value results in a codeValue conflict, the element's code value will instead be updated to a random guid.\n * The actual codeValue will be stored in this ElementId->CodeValue map.\n * This is needed in cases where the duplicate target element is set to be deleted in the future, or when elements are switching code values with one another and we need a temporary code value.\n * To resolve code values to their intended values call [[IModelImporter.resolveDuplicateCodeValues]].\n */\n private _duplicateCodeValueMap: Map<Id64String, string>;\n\n /** The set of elements that should not be updated by this IModelImporter.\n * Defaults to an empty set.\n * @note Adding an element to this set is typically necessary when remapping a source element to one that already exists in the target and already has the desired properties.\n */\n public readonly doNotUpdateElementIds = new Set<Id64String>([]);\n\n /** This set is ONLY used for elements that are always present even in an \"empty\" iModel. We will use this set to filter out changes to root elements if [[IModelTransformOptions.skipPropagateChangesToRootElements]] is false. */\n private readonly _rootElementIds = new Set<Id64String>([\n IModel.rootSubjectId,\n IModel.dictionaryId,\n IModelImporter._realityDataSourceLinkPartitionStaticId,\n ]);\n\n /** The number of entity changes before incremental progress should be reported via the [[onProgress]] callback. */\n public progressInterval: number = 1000;\n /** Tracks the current total number of entity changes. */\n private _progressCounter: number = 0;\n /** */\n private _modelPropertiesToIgnore = new Set<string>([\n \"geometryGuid\", // cannot compare GeometricModel.GeometryGuid values across iModels\n ]);\n\n /** Construct a new IModelImporter\n * @param targetDb The target IModelDb\n * @param options The options that specify how the import should be done.\n */\n public constructor(targetDb: IModelDb, options?: IModelImportOptions) {\n this.targetDb = targetDb;\n this.options = {\n autoExtendProjectExtents: options?.autoExtendProjectExtents ?? true,\n preserveElementIdsForFiltering:\n options?.preserveElementIdsForFiltering ?? false,\n simplifyElementGeometry: options?.simplifyElementGeometry ?? false,\n skipPropagateChangesToRootElements:\n options?.skipPropagateChangesToRootElements ?? false,\n };\n this._duplicateCodeValueMap = new Map<Id64String, string>();\n }\n\n /**\n * Checks [[IModelImportOptions.skipPropagateChangesToRootElements]], [[IModelImporter.rootElementIds]], and [[IModelImporter.doNotUpdateElementIds]] and returns true for 'do not update', false for do 'update'.\n */\n private doNotUpdateElement(elementId: Id64String): boolean {\n if (\n this.options.skipPropagateChangesToRootElements &&\n this._rootElementIds.has(elementId)\n )\n return true;\n if (this.doNotUpdateElementIds.has(elementId)) return true;\n return false;\n }\n\n /** Import the specified ModelProps (either as an insert or an update) into the target iModel. */\n public importModel(modelProps: ModelProps): void {\n if (undefined === modelProps.id || !Id64.isValidId64(modelProps.id))\n throw new IModelError(\n IModelStatus.InvalidId,\n \"Model Id not provided, should be the same as the ModeledElementId\"\n );\n\n if (this.doNotUpdateElement(modelProps.id)) {\n Logger.logInfo(\n loggerCategory,\n `Do not update target model ${modelProps.id}`\n );\n return;\n }\n try {\n const model = this.targetDb.models.getModel(modelProps.id); // throws IModelError.NotFound if model does not exist\n if (hasEntityChanged(model, modelProps, this._modelPropertiesToIgnore)) {\n this.onUpdateModel(modelProps);\n }\n } catch (error) {\n // catch NotFound error and insertModel\n if (\n error instanceof IModelError &&\n error.errorNumber === IModelStatus.NotFound\n ) {\n this.onInsertModel(modelProps);\n return;\n }\n throw error;\n }\n }\n\n /** Create a new Model from the specified ModelProps and insert it into the target iModel.\n * @note A subclass may override this method to customize insert behavior but should call `super.onInsertModel`.\n */\n protected onInsertModel(modelProps: ModelProps): Id64String {\n try {\n const modelId: Id64String = this.targetDb.models.insertModel(modelProps);\n Logger.logInfo(\n loggerCategory,\n `Inserted ${this.formatModelForLogger(modelProps)}`\n );\n this.trackProgress();\n return modelId;\n } catch (error) {\n if (!this.targetDb.containsClass(modelProps.classFullName)) {\n // replace standard insert error with something more helpful\n const errorMessage = `Model class \"${modelProps.classFullName}\" not found in the target iModel. Was the latest version of the schema imported?`;\n throw new IModelError(IModelStatus.InvalidName, errorMessage);\n }\n throw error; // throw original error\n }\n }\n\n /** Update an existing Model in the target iModel from the specified ModelProps.\n * @note A subclass may override this method to customize update behavior but should call `super.onUpdateModel`.\n */\n protected onUpdateModel(modelProps: ModelProps): void {\n this.targetDb.models.updateModel(modelProps);\n Logger.logInfo(\n loggerCategory,\n `Updated ${this.formatModelForLogger(modelProps)}`\n );\n this.trackProgress();\n }\n\n /** Format a Model for the Logger. */\n private formatModelForLogger(modelProps: ModelProps): string {\n return `${modelProps.classFullName} [${modelProps.id!}]`;\n }\n\n /** Import the specified ElementProps (either as an insert or an update) into the target iModel. */\n public importElement(elementProps: ElementProps): Id64String {\n if (\n undefined !== elementProps.id &&\n this.doNotUpdateElement(elementProps.id)\n ) {\n Logger.logInfo(\n loggerCategory,\n `Do not update target element ${elementProps.id}`\n );\n return elementProps.id;\n }\n if (this.options.preserveElementIdsForFiltering) {\n if (elementProps.id === undefined) {\n throw new IModelError(\n IModelStatus.BadElement,\n \"elementProps.id must be defined during a preserveIds operation\"\n );\n }\n // Categories are the only element that onInserted will immediately insert a new element (their default subcategory)\n // since default subcategories always exist and always will be inserted after their categories, we treat them as an update\n // to prevent duplicate inserts.\n // Always present elements (0xe, 0x1, 0x10) also will be updated to prevent duplicate inserts.\n // Otherwise we always insert during a preserveElementIdsForFiltering operation\n if (\n (isSubCategory(elementProps) && isDefaultSubCategory(elementProps)) ||\n this._rootElementIds.has(elementProps.id)\n ) {\n this.onUpdateElement(elementProps);\n } else {\n this.onInsertElement(elementProps);\n }\n } else {\n if (undefined !== elementProps.id) {\n try {\n this.onUpdateElement(elementProps);\n } catch (err) {\n if ((err as IModelError).errorNumber === IModelStatus.DuplicateCode) {\n assert(\n elementProps.code.value !== undefined,\n \"NULL code values are always considered unique and cannot clash\"\n );\n this._duplicateCodeValueMap.set(\n elementProps.id,\n elementProps.code.value\n );\n // Using NULL code values as an alternative is not valid because definition elements cannot have NULL code values.\n elementProps.code.value = Guid.createValue();\n this.onUpdateElement(elementProps);\n } else {\n throw err;\n }\n }\n } else {\n this.onInsertElement(elementProps); // targetElementProps.id assigned by insertElement\n }\n }\n return elementProps.id!;\n }\n\n /** Create a new Element from the specified ElementProps and insert it into the target iModel.\n * @returns The Id of the newly inserted Element.\n * @note A subclass may override this method to customize insert behavior but should call `super.onInsertElement`.\n */\n protected onInsertElement(elementProps: ElementProps): Id64String {\n try {\n const elementId = this.targetDb.nativeDb.insertElement(elementProps, {\n forceUseId: this.options.preserveElementIdsForFiltering,\n });\n // set the id like [IModelDb.insertElement]($backend), does, the raw nativeDb method does not\n elementProps.id = elementId;\n Logger.logInfo(\n loggerCategory,\n `Inserted ${this.formatElementForLogger(elementProps)}`\n );\n this.trackProgress();\n if (this.options.simplifyElementGeometry) {\n this.targetDb.nativeDb.simplifyElementGeometry({\n id: elementId,\n convertBReps: true,\n });\n Logger.logInfo(\n loggerCategory,\n `Simplified element geometry for ${this.formatElementForLogger(\n elementProps\n )}`\n );\n }\n return elementId;\n } catch (error) {\n if (!this.targetDb.containsClass(elementProps.classFullName)) {\n // replace standard insert error with something more helpful\n const errorMessage = `Element class \"${elementProps.classFullName}\" not found in the target iModel. Was the latest version of the schema imported?`;\n throw new IModelError(IModelStatus.InvalidName, errorMessage);\n }\n throw error; // throw original error\n }\n }\n\n /** Update an existing Element in the target iModel from the specified ElementProps.\n * @note A subclass may override this method to customize update behavior but should call `super.onUpdateElement`.\n */\n protected onUpdateElement(elementProps: ElementProps): void {\n if (!elementProps.id) {\n throw new IModelError(IModelStatus.InvalidId, \"ElementId not provided\");\n }\n this.targetDb.elements.updateElement(elementProps);\n Logger.logInfo(\n loggerCategory,\n `Updated ${this.formatElementForLogger(elementProps)}`\n );\n this.trackProgress();\n if (this.options.simplifyElementGeometry) {\n this.targetDb.nativeDb.simplifyElementGeometry({\n id: elementProps.id,\n convertBReps: true,\n });\n Logger.logInfo(\n loggerCategory,\n `Simplified element geometry for ${this.formatElementForLogger(\n elementProps\n )}`\n );\n }\n }\n\n /** Delete the specified Element (and all its children) from the target iModel.\n * Will delete special elements like definition elements and subjects.\n * @note A subclass may override this method to customize delete behavior but should call `super.onDeleteElement`.\n */\n protected onDeleteElement(elementId: Id64String): void {\n deleteElementTreeCascade(this.targetDb, elementId);\n Logger.logInfo(\n loggerCategory,\n `Deleted element ${elementId} and its descendants`\n );\n this.trackProgress();\n }\n\n /** Delete the specified Element from the target iModel. */\n public deleteElement(elementId: Id64String): void {\n if (this.doNotUpdateElement(elementId)) {\n Logger.logInfo(\n loggerCategory,\n `Do not delete target element ${elementId}`\n );\n return;\n }\n this.onDeleteElement(elementId);\n }\n\n /** Delete the specified Model from the target iModel.\n * @note A subclass may override this method to customize delete behavior but should call `super.onDeleteModel`.\n */\n protected onDeleteModel(modelId: Id64String): void {\n this.targetDb.models.deleteModel(modelId);\n Logger.logInfo(loggerCategory, `Deleted model ${modelId}`);\n this.trackProgress();\n }\n\n /** Delete the specified Model from the target iModel. */\n public deleteModel(modelId: Id64String): void {\n this.onDeleteModel(modelId);\n }\n\n /** Format an Element for the Logger. */\n private formatElementForLogger(elementProps: ElementProps): string {\n const namePiece: string = elementProps.code.value\n ? `${elementProps.code.value} `\n : elementProps.userLabel\n ? `${elementProps.userLabel} `\n : \"\";\n return `${elementProps.classFullName} ${namePiece}[${elementProps.id}]`;\n }\n\n /** Import an ElementUniqueAspect into the target iModel. */\n public importElementUniqueAspect(\n aspectProps: ElementAspectProps\n ): Id64String {\n const aspects: ElementAspect[] = this.targetDb.elements.getAspects(\n aspectProps.element.id,\n aspectProps.classFullName\n );\n if (aspects.length === 0) {\n return this.onInsertElementAspect(aspectProps);\n } else if (hasEntityChanged(aspects[0], aspectProps)) {\n aspectProps.id = aspects[0].id;\n this.onUpdateElementAspect(aspectProps);\n }\n return aspects[0].id;\n }\n\n /** Import the collection of ElementMultiAspects into the target iModel.\n * @param aspectPropsArray The ElementMultiAspects to import\n * @param filterFunc Optional filter func that is used to exclude target ElementMultiAspects that were added during iModel transformation from the update detection logic.\n * @note For insert vs. update reasons, it is important to process all ElementMultiAspects owned by an Element at once since we don't have aspect-specific provenance.\n * @returns the array of ids of the resulting ElementMultiAspects, in the same order of the aspectPropsArray parameter\n */\n public importElementMultiAspects(\n aspectPropsArray: ElementAspectProps[],\n /** caller must use this to enforce any aspects added by IModelTransformer are not considered for update */\n filterFunc: (a: ElementMultiAspect) => boolean = () => true\n ): Id64String[] {\n const result = new Array<Id64String | undefined>(\n aspectPropsArray.length\n ).fill(undefined);\n\n if (aspectPropsArray.length === 0) {\n return result as Id64String[];\n }\n\n const elementId: Id64String = aspectPropsArray[0].element.id;\n // Determine the set of ElementMultiAspect classes to consider\n const aspectClassFullNames = new Set<string>();\n aspectPropsArray.forEach((aspectsProps: ElementAspectProps): void => {\n aspectClassFullNames.add(aspectsProps.classFullName);\n });\n\n // Handle ElementMultiAspects in groups by class\n aspectClassFullNames.forEach((aspectClassFullName: string) => {\n const proposedAspects = aspectPropsArray\n .map((props, index) => ({ props, index }))\n .filter(({ props }) => aspectClassFullName === props.classFullName);\n\n const currentAspects = this.targetDb.elements\n .getAspects(elementId, aspectClassFullName)\n .map((props, index) => ({ props, index }) as const)\n .filter(({ props }) => filterFunc(props));\n\n if (proposedAspects.length >= currentAspects.length) {\n proposedAspects.forEach(({ props, index: resultIndex }, index) => {\n let id: Id64String;\n if (index < currentAspects.length) {\n id = currentAspects[index].props.id;\n props.id = id;\n if (hasEntityChanged(currentAspects[index].props, props)) {\n this.onUpdateElementAspect(props);\n }\n id = props.id;\n } else {\n id = this.onInsertElementAspect(props);\n }\n result[resultIndex] = id;\n });\n } else {\n currentAspects.forEach(({ props, index: resultIndex }, index) => {\n let id: Id64String;\n if (index < proposedAspects.length) {\n id = props.id;\n proposedAspects[index].props.id = id;\n if (hasEntityChanged(props, proposedAspects[index].props)) {\n this.onUpdateElementAspect(proposedAspects[index].props);\n }\n result[resultIndex] = id;\n } else {\n this.onDeleteElementAspect(props);\n }\n });\n }\n });\n\n assert(result.every((r) => typeof r !== undefined));\n return result as Id64String[];\n }\n\n /** Insert the ElementAspect into the target iModel.\n * @note A subclass may override this method to customize insert behavior but should call `super.onInsertElementAspect`.\n */\n protected onInsertElementAspect(aspectProps: ElementAspectProps): Id64String {\n try {\n const id = this.targetDb.elements.insertAspect(aspectProps);\n Logger.logInfo(\n loggerCategory,\n `Inserted ${this.formatElementAspectForLogger(aspectProps)}`\n );\n this.trackProgress();\n return id;\n } catch (error) {\n if (!this.targetDb.containsClass(aspectProps.classFullName)) {\n // replace standard insert error with something more helpful\n const errorMessage = `ElementAspect class \"${aspectProps.classFullName}\" not found in the target iModel. Was the latest version of the schema imported?`;\n throw new IModelError(IModelStatus.InvalidName, errorMessage);\n }\n throw error; // throw original error\n }\n }\n\n /** Update the ElementAspect within the target iModel.\n * @note A subclass may override this method to customize update behavior but should call `super.onUpdateElementAspect`.\n */\n protected onUpdateElementAspect(aspectProps: ElementAspectProps): void {\n this.targetDb.elements.updateAspect(aspectProps);\n Logger.logInfo(\n loggerCategory,\n `Updated ${this.formatElementAspectForLogger(aspectProps)}`\n );\n this.trackProgress();\n }\n\n /** Delete the specified ElementAspect from the target iModel.\n * @note A subclass may override this method to customize delete behavior but should call `super.onDeleteElementAspect`.\n */\n protected onDeleteElementAspect(targetElementAspect: ElementAspect): void {\n this.targetDb.elements.deleteAspect(targetElementAspect.id);\n Logger.logInfo(\n loggerCategory,\n `Deleted ${this.formatElementAspectForLogger(targetElementAspect)}`\n );\n this.trackProgress();\n }\n\n /** Format an ElementAspect for the Logger. */\n private formatElementAspectForLogger(\n elementAspectProps: ElementAspectProps | ElementAspect\n ): string {\n return `${elementAspectProps.classFullName} elementId=[${elementAspectProps.element.id}]`;\n }\n\n /** Import the specified RelationshipProps (either as an insert or an update) into the target iModel.\n * @returns The instance Id of the inserted or updated Relationship.\n */\n public importRelationship(relationshipProps: RelationshipProps): Id64String {\n if (\n undefined === relationshipProps.sourceId ||\n !Id64.isValidId64(relationshipProps.sourceId)\n ) {\n Logger.logInfo(\n loggerCategory,\n `Ignoring ${relationshipProps.classFullName} instance because of invalid RelationshipProps.sourceId`\n );\n return Id64.invalid;\n }\n if (\n undefined === relationshipProps.targetId ||\n !Id64.isValidId64(relationshipProps.targetId)\n ) {\n Logger.logInfo(\n loggerCategory,\n `Ignoring ${relationshipProps.classFullName} instance because of invalid RelationshipProps.targetId`\n );\n return Id64.invalid;\n }\n // check for an existing relationship\n const relSourceAndTarget: SourceAndTarget = {\n sourceId: relationshipProps.sourceId,\n targetId: relationshipProps.targetId,\n };\n const relationship: Relationship | undefined =\n this.targetDb.relationships.tryGetInstance(\n relationshipProps.classFullName,\n relSourceAndTarget\n );\n if (undefined !== relationship) {\n // if relationship found, update it\n relationshipProps.id = relationship.id;\n if (hasEntityChanged(relationship, relationshipProps)) {\n this.onUpdateRelationship(relationshipProps);\n }\n return relationshipProps.id;\n } else {\n return this.onInsertRelationship(relationshipProps);\n }\n }\n\n /** Create a new Relationship from the specified RelationshipProps and insert it into the target iModel.\n * @returns The instance Id of the newly inserted relationship.\n * @note A subclass may override this method to customize insert behavior but should call `super.onInsertRelationship`.\n */\n protected onInsertRelationship(\n relationshipProps: RelationshipProps\n ): Id64String {\n try {\n const targetRelInstanceId: Id64String =\n this.targetDb.relationships.insertInstance(relationshipProps);\n Logger.logInfo(\n loggerCategory,\n `Inserted ${this.formatRelationshipForLogger(relationshipProps)}`\n );\n this.trackProgress();\n return targetRelInstanceId;\n } catch (error) {\n if (!this.targetDb.containsClass(relationshipProps.classFullName)) {\n // replace standard insert error with something more helpful\n const errorMessage = `Relationship class \"${relationshipProps.classFullName}\" not found in the target iModel. Was the latest version of the schema imported?`;\n throw new IModelError(IModelStatus.InvalidName, errorMessage);\n }\n throw error; // throw original error\n }\n }\n\n /** Update an existing Relationship in the target iModel from the specified RelationshipProps.\n * @note A subclass may override this method to customize update behavior but should call `super.onUpdateRelationship`.\n */\n protected onUpdateRelationship(relationshipProps: RelationshipProps): void {\n if (!relationshipProps.id) {\n throw new IModelError(\n IModelStatus.InvalidId,\n \"Relationship instance Id not provided\"\n );\n }\n this.targetDb.relationships.updateInstance(relationshipProps);\n Logger.logInfo(\n loggerCategory,\n `Updated ${this.formatRelationshipForLogger(relationshipProps)}`\n );\n this.trackProgress();\n }\n\n /** Delete the specified Relationship from the target iModel. */\n protected onDeleteRelationship(\n relationshipProps: RelationshipPropsForDelete\n ): void {\n // Only passing in what deleteInstance actually uses, full relationshipProps is not necessary.\n this.targetDb.relationships.deleteInstance({\n id: relationshipProps.id,\n classFullName: relationshipProps.classFullName,\n } as RelationshipProps);\n Logger.logInfo(\n loggerCategory,\n `Deleted relationship ${relationshipProps.classFullName} id=${relationshipProps.id}`\n );\n this.trackProgress();\n }\n\n /** Delete the specified Relationship from the target iModel. */\n public deleteRelationship(\n relationshipProps: RelationshipPropsForDelete\n ): void {\n this.onDeleteRelationship(relationshipProps);\n }\n\n /** Format a Relationship for the Logger. */\n private formatRelationshipForLogger(relProps: RelationshipProps): string {\n return `${relProps.classFullName} sourceId=[${relProps.sourceId}] targetId=[${relProps.targetId}]`;\n }\n\n /** Tracks incremental progress */\n private trackProgress(): void {\n this._progressCounter++;\n if (0 === this._progressCounter % this.progressInterval) {\n this.onProgress();\n }\n }\n\n /** This method is called when IModelImporter has made incremental progress based on the [[progressInterval]] setting.\n * @note A subclass may override this method to report custom progress but should call `super.onProgress`.\n */\n protected onProgress(): void {}\n\n /** Optionally compute the projectExtents for the target iModel depending on the options for this IModelImporter.\n * @note This method is automatically called from [IModelTransformer.processChanges]($transformer) and [IModelTransformer.processAll]($transformer).\n * @see [IModelDb.computeProjectExtents]($backend), [[autoExtendProjectExtents]]\n */\n public computeProjectExtents(): void {\n const computedProjectExtents = this.targetDb.computeProjectExtents({\n reportExtentsWithOutliers: true,\n reportOutliers: true,\n });\n Logger.logInfo(\n loggerCategory,\n `Current projectExtents=${JSON.stringify(this.targetDb.projectExtents)}`\n );\n Logger.logInfo(\n loggerCategory,\n `Computed projectExtents without outliers=${JSON.stringify(\n computedProjectExtents.extents\n )}`\n );\n Logger.logInfo(\n loggerCategory,\n `Computed projectExtents with outliers=${JSON.stringify(\n computedProjectExtents.extentsWithOutliers\n )}`\n );\n if (this.options.autoExtendProjectExtents) {\n const excludeOutliers: boolean =\n typeof this.options.autoExtendProjectExtents === \"object\"\n ? this.options.autoExtendProjectExtents.excludeOutliers\n : false;\n const newProjectExtents: AxisAlignedBox3d = excludeOutliers\n ? computedProjectExtents.extents\n : computedProjectExtents.extentsWithOutliers!;\n if (!newProjectExtents.isAlmostEqual(this.targetDb.projectExtents)) {\n this.targetDb.updateProjectExtents(newProjectExtents);\n Logger.logInfo(\n loggerCategory,\n `Updated projectExtents=${JSON.stringify(\n this.targetDb.projectExtents\n )}`\n );\n }\n if (\n !excludeOutliers &&\n computedProjectExtents.outliers &&\n computedProjectExtents.outliers.length > 0\n ) {\n Logger.logInfo(\n loggerCategory,\n `${computedProjectExtents.outliers.length} outliers detected within projectExtents`\n );\n }\n } else {\n if (\n !this.targetDb.projectExtents.containsRange(\n computedProjectExtents.extents\n )\n ) {\n Logger.logWarning(\n loggerCategory,\n \"Current project extents may be too small\"\n );\n }\n if (\n computedProjectExtents.outliers &&\n computedProjectExtents.outliers.length > 0\n ) {\n Logger.logInfo(\n loggerCategory,\n `${computedProjectExtents.outliers.length} outliers detected within projectExtents`\n );\n }\n }\n }\n\n /** Examine the geometry streams of every [GeometricElement3d]($backend) in the target iModel and apply the specified optimizations.\n * @note This method is automatically called from [[IModelTransformer.processChanges]] and [[IModelTransformer.processAll]] if\n * [[IModelTransformOptions.optimizeGeometry]] is defined.\n */\n public optimizeGeometry(options: OptimizeGeometryOptions): void {\n if (options.inlineUniqueGeometryParts) {\n const result = this.targetDb.nativeDb.inlineGeometryPartReferences();\n Logger.logInfo(\n loggerCategory,\n `Inlined ${result.numRefsInlined} references to ${result.numCandidateParts} geometry parts and deleted ${result.numPartsDeleted} parts.`\n );\n }\n }\n\n private resolveDuplicateCodeValues(): void {\n for (const [elementId, codeValue] of this._duplicateCodeValueMap) {\n const element = this.targetDb.elements.getElement(elementId);\n element.code.value = codeValue;\n element.update();\n }\n this._duplicateCodeValueMap.clear();\n }\n\n /**\n * Needs to be called to perform necessary cleanup operations.\n * By not calling `finalize` there is a risk that data imported into targetDb will not be as expected.\n *\n * @note No need to call this If using [[IModelTransformer]] as it automatically invokes this method.\n */\n public finalize(): void {\n this.resolveDuplicateCodeValues();\n }\n}\n\n/** Returns true if a change within an Entity is detected.\n * @param entity The current persistent Entity.\n * @param entityProps The new EntityProps to compare against\n * @note This method should only be called if changeset information is not available.\n * @internal\n */\nexport function hasEntityChanged(\n entity: Entity,\n entityProps: EntityProps,\n namesToIgnore?: Set<string>\n): boolean {\n let changed: boolean = false;\n entity.forEachProperty(\n (propertyName: string, propertyMeta: PropertyMetaData) => {\n if (!changed) {\n if (namesToIgnore && namesToIgnore.has(propertyName)) {\n // skip\n } else if (PrimitiveTypeCode.Binary === propertyMeta.primitiveType) {\n changed = hasBinaryValueChanged(\n entity.asAny[propertyName],\n (entityProps as any)[propertyName]\n );\n } else if (propertyMeta.isNavigation) {\n changed = hasNavigationValueChanged(\n entity.asAny[propertyName],\n (entityProps as any)[propertyName]\n );\n } else {\n changed = hasValueChanged(\n entity.asAny[propertyName],\n (entityProps as any)[propertyName]\n );\n }\n }\n }\n );\n return changed;\n}\n\n/** Returns true if the specified binary values are different. */\nfunction hasBinaryValueChanged(\n binaryProperty1: any,\n binaryProperty2: any\n): boolean {\n const jsonString1 = JSON.stringify(\n binaryProperty1,\n Base64EncodedString.replacer\n );\n const jsonString2 = JSON.stringify(\n binaryProperty2,\n Base64EncodedString.replacer\n );\n return jsonString1 !== jsonString2;\n}\n\n/** Returns true if the specified navigation property values are different. */\nfunction hasNavigationValueChanged(\n navigationProperty1: any,\n navigationProperty2: any\n): boolean {\n const relatedElement1 = RelatedElement.fromJSON(navigationProperty1);\n const relatedElement2 = RelatedElement.fromJSON(navigationProperty2);\n const jsonString1 = JSON.stringify(relatedElement1);\n const jsonString2 = JSON.stringify(relatedElement2);\n return jsonString1 !== jsonString2;\n}\n\n/** Returns true if the specified navigation property values are different. */\nfunction hasValueChanged(property1: any, property2: any): boolean {\n return JSON.stringify(property1) !== JSON.stringify(property2);\n}\n\n/** check if element props are a subcategory */\nfunction isSubCategory(props: ElementProps): props is SubCategoryProps {\n return props.classFullName === SubCategory.classFullName;\n}\n\n/** check if element props are a subcategory without loading the element */\nfunction isDefaultSubCategory(props: SubCategoryProps): boolean {\n if (props.id === undefined) return false;\n\n if (!Id64.isId64(props.id))\n throw new IModelError(\n IModelStatus.BadElement,\n \"subcategory had invalid id\"\n );\n if (props.parent?.id === undefined)\n throw new IModelError(\n IModelStatus.BadElement,\n `subcategory with id ${props.id} had no parent`\n );\n return props.id === IModelDb.getDefaultSubCategoryId(props.parent.id);\n}\n"]}
1
+ {"version":3,"file":"IModelImporter.js","sourceRoot":"","sources":["../../src/IModelImporter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module iModels\n */\nimport {\n Guid,\n Id64,\n Id64String,\n IModelStatus,\n Logger,\n} from \"@itwin/core-bentley\";\nimport {\n AxisAlignedBox3d,\n Base64EncodedString,\n ElementAspectProps,\n ElementProps,\n EntityProps,\n IModel,\n IModelError,\n ModelProps,\n PrimitiveTypeCode,\n PropertyMetaData,\n RelatedElement,\n SubCategoryProps,\n} from \"@itwin/core-common\";\nimport { TransformerLoggerCategory } from \"./TransformerLoggerCategory\";\nimport {\n ElementAspect,\n ElementMultiAspect,\n Entity,\n IModelDb,\n Relationship,\n RelationshipProps,\n SourceAndTarget,\n SubCategory,\n} from \"@itwin/core-backend\";\nimport type { RelationshipPropsForDelete } from \"./IModelTransformer\";\nimport * as assert from \"assert\";\nimport { deleteElementTreeCascade } from \"./ElementCascadingDeleter\";\n\nconst loggerCategory: string = TransformerLoggerCategory.IModelImporter;\n\n/** Options provided to [[IModelImporter.optimizeGeometry]] specifying post-processing optimizations to be applied to the iModel's geometry.\n * @beta\n */\nexport interface OptimizeGeometryOptions {\n /** If true, identify any [GeometryPart]($backend)s that are referenced exactly once. For each such part,\n * replace the reference in the element's geometry stream with the part's own geometry stream, then delete the part.\n */\n inlineUniqueGeometryParts?: boolean;\n}\n\n/** Options provided to the [[IModelImporter]] constructor.\n * @beta\n */\nexport interface IModelImportOptions {\n /** If `true` (the default), compute the projectExtents of the target iModel after elements are imported.\n * The computed projectExtents will either include or exclude *outliers* depending on the `excludeOutliers` flag that defaults to `false`.\n * @see [[IModelImporter.autoExtendProjectExtents]]\n * @see [IModelImporter Options]($docs/learning/transformer/index.md#IModelImporter)\n */\n autoExtendProjectExtents?: boolean | { excludeOutliers: boolean };\n /** See [IModelTransformOptions]($transformer) */\n preserveElementIdsForFiltering?: boolean;\n /** If `true`, simplify the element geometry for visualization purposes. For example, convert b-reps into meshes.\n * @default false\n */\n simplifyElementGeometry?: boolean;\n /**\n * Skip propagating changes made to the root subject, dictionaryModel and IModelImporter._realityDataSourceLinkPartitionStaticId (0xe)\n * @default false\n */\n skipPropagateChangesToRootElements?: boolean;\n}\n\n/** Base class for importing data into an iModel.\n * @see [iModel Transformation and Data Exchange]($docs/learning/transformer/index.md)\n * @see [IModelExporter]($transformer)\n * @see [IModelTransformer]($transformer)\n * @beta\n */\nexport class IModelImporter {\n /** The read/write target iModel. */\n public readonly targetDb: IModelDb;\n\n /** resolved initialization options for the importer\n * @beta\n */\n public readonly options: Required<IModelImportOptions>;\n\n private static _realityDataSourceLinkPartitionStaticId: Id64String = \"0xe\";\n\n /**\n * A map of conflicting element code values.\n * In cases where updating an element's code value results in a codeValue conflict, the element's code value will instead be updated to a random guid.\n * The actual codeValue will be stored in this ElementId->CodeValue map.\n * This is needed in cases where the duplicate target element is set to be deleted in the future, or when elements are switching code values with one another and we need a temporary code value.\n * To resolve code values to their intended values call [[IModelImporter.resolveDuplicateCodeValues]].\n */\n private _duplicateCodeValueMap: Map<Id64String, string>;\n\n /** The set of elements that should not be updated by this IModelImporter.\n * Defaults to an empty set.\n * @note Adding an element to this set is typically necessary when remapping a source element to one that already exists in the target and already has the desired properties.\n */\n public readonly doNotUpdateElementIds = new Set<Id64String>([]);\n\n /** This set is ONLY used for elements that are always present even in an \"empty\" iModel. We will use this set to filter out changes to root elements if [[IModelTransformOptions.skipPropagateChangesToRootElements]] is false. */\n private readonly _rootElementIds = new Set<Id64String>([\n IModel.rootSubjectId,\n IModel.dictionaryId,\n IModelImporter._realityDataSourceLinkPartitionStaticId,\n ]);\n\n /** The number of entity changes before incremental progress should be reported via the [[onProgress]] callback. */\n public progressInterval: number = 1000;\n /** Tracks the current total number of entity changes. */\n private _progressCounter: number = 0;\n /** */\n private _modelPropertiesToIgnore = new Set<string>([\n \"geometryGuid\", // cannot compare GeometricModel.GeometryGuid values across iModels\n ]);\n\n /** Construct a new IModelImporter\n * @param targetDb The target IModelDb\n * @param options The options that specify how the import should be done.\n */\n public constructor(targetDb: IModelDb, options?: IModelImportOptions) {\n this.targetDb = targetDb;\n this.options = {\n autoExtendProjectExtents: options?.autoExtendProjectExtents ?? true,\n preserveElementIdsForFiltering:\n options?.preserveElementIdsForFiltering ?? false,\n simplifyElementGeometry: options?.simplifyElementGeometry ?? false,\n skipPropagateChangesToRootElements:\n options?.skipPropagateChangesToRootElements ?? false,\n };\n this._duplicateCodeValueMap = new Map<Id64String, string>();\n }\n\n /**\n * Checks [[IModelImportOptions.skipPropagateChangesToRootElements]], [[IModelImporter.rootElementIds]], and [[IModelImporter.doNotUpdateElementIds]] and returns true for 'do not update', false for do 'update'.\n */\n private doNotUpdateElement(elementId: Id64String): boolean {\n if (\n this.options.skipPropagateChangesToRootElements &&\n this._rootElementIds.has(elementId)\n )\n return true;\n if (this.doNotUpdateElementIds.has(elementId)) return true;\n return false;\n }\n\n /** Import the specified ModelProps (either as an insert or an update) into the target iModel. */\n public importModel(modelProps: ModelProps): void {\n if (undefined === modelProps.id || !Id64.isValidId64(modelProps.id))\n throw new IModelError(\n IModelStatus.InvalidId,\n \"Model Id not provided, should be the same as the ModeledElementId\"\n );\n\n if (this.doNotUpdateElement(modelProps.id)) {\n Logger.logInfo(\n loggerCategory,\n `Do not update target model ${modelProps.id}`\n );\n return;\n }\n try {\n const model = this.targetDb.models.getModel(modelProps.id); // throws IModelError.NotFound if model does not exist\n if (hasEntityChanged(model, modelProps, this._modelPropertiesToIgnore)) {\n this.onUpdateModel(modelProps);\n }\n } catch (error) {\n // catch NotFound error and insertModel\n if (\n error instanceof IModelError &&\n error.errorNumber === IModelStatus.NotFound\n ) {\n this.onInsertModel(modelProps);\n return;\n }\n throw error;\n }\n }\n\n /** Create a new Model from the specified ModelProps and insert it into the target iModel.\n * @note A subclass may override this method to customize insert behavior but should call `super.onInsertModel`.\n */\n protected onInsertModel(modelProps: ModelProps): Id64String {\n try {\n const modelId: Id64String = this.targetDb.models.insertModel(modelProps);\n Logger.logInfo(\n loggerCategory,\n `Inserted ${this.formatModelForLogger(modelProps)}`\n );\n this.trackProgress();\n return modelId;\n } catch (error) {\n if (!this.targetDb.containsClass(modelProps.classFullName)) {\n // replace standard insert error with something more helpful\n const errorMessage = `Model class \"${modelProps.classFullName}\" not found in the target iModel. Was the latest version of the schema imported?`;\n throw new IModelError(IModelStatus.InvalidName, errorMessage);\n }\n throw error; // throw original error\n }\n }\n\n /** Update an existing Model in the target iModel from the specified ModelProps.\n * @note A subclass may override this method to customize update behavior but should call `super.onUpdateModel`.\n */\n protected onUpdateModel(modelProps: ModelProps): void {\n this.targetDb.models.updateModel(modelProps);\n Logger.logInfo(\n loggerCategory,\n `Updated ${this.formatModelForLogger(modelProps)}`\n );\n this.trackProgress();\n }\n\n /** Format a Model for the Logger. */\n private formatModelForLogger(modelProps: ModelProps): string {\n return `${modelProps.classFullName} [${modelProps.id!}]`;\n }\n\n /** Import the specified ElementProps (either as an insert or an update) into the target iModel. */\n public importElement(elementProps: ElementProps): Id64String {\n if (\n undefined !== elementProps.id &&\n this.doNotUpdateElement(elementProps.id)\n ) {\n Logger.logInfo(\n loggerCategory,\n `Do not update target element ${elementProps.id}`\n );\n return elementProps.id;\n }\n if (this.options.preserveElementIdsForFiltering) {\n if (elementProps.id === undefined) {\n throw new IModelError(\n IModelStatus.BadElement,\n \"elementProps.id must be defined during a preserveIds operation\"\n );\n }\n // Categories are the only element that onInserted will immediately insert a new element (their default subcategory)\n // since default subcategories always exist and always will be inserted after their categories, we treat them as an update\n // to prevent duplicate inserts.\n // Always present elements (0xe, 0x1, 0x10) also will be updated to prevent duplicate inserts.\n // Otherwise we always insert during a preserveElementIdsForFiltering operation\n if (\n (isSubCategory(elementProps) && isDefaultSubCategory(elementProps)) ||\n this._rootElementIds.has(elementProps.id)\n ) {\n this.onUpdateElement(elementProps);\n } else {\n this.onInsertElement(elementProps);\n }\n } else {\n if (undefined !== elementProps.id) {\n try {\n this.onUpdateElement(elementProps);\n } catch (err) {\n if ((err as IModelError).errorNumber === IModelStatus.DuplicateCode) {\n assert(\n elementProps.code.value !== undefined,\n \"NULL code values are always considered unique and cannot clash\"\n );\n this._duplicateCodeValueMap.set(\n elementProps.id,\n elementProps.code.value\n );\n // Using NULL code values as an alternative is not valid because definition elements cannot have NULL code values.\n elementProps.code.value = Guid.createValue();\n this.onUpdateElement(elementProps);\n } else {\n throw err;\n }\n }\n } else {\n this.onInsertElement(elementProps); // targetElementProps.id assigned by insertElement\n }\n }\n return elementProps.id!;\n }\n\n /** Create a new Element from the specified ElementProps and insert it into the target iModel.\n * @returns The Id of the newly inserted Element.\n * @note A subclass may override this method to customize insert behavior but should call `super.onInsertElement`.\n */\n protected onInsertElement(elementProps: ElementProps): Id64String {\n try {\n const elementId = this.targetDb.nativeDb.insertElement(elementProps, {\n forceUseId: this.options.preserveElementIdsForFiltering,\n });\n // set the id like [IModelDb.insertElement]($backend), does, the raw nativeDb method does not\n elementProps.id = elementId;\n Logger.logInfo(\n loggerCategory,\n `Inserted ${this.formatElementForLogger(elementProps)}`\n );\n this.trackProgress();\n if (this.options.simplifyElementGeometry) {\n this.targetDb.nativeDb.simplifyElementGeometry({\n id: elementId,\n convertBReps: true,\n });\n Logger.logInfo(\n loggerCategory,\n `Simplified element geometry for ${this.formatElementForLogger(\n elementProps\n )}`\n );\n }\n return elementId;\n } catch (error) {\n if (!this.targetDb.containsClass(elementProps.classFullName)) {\n // replace standard insert error with something more helpful\n const errorMessage = `Element class \"${elementProps.classFullName}\" not found in the target iModel. Was the latest version of the schema imported?`;\n throw new IModelError(IModelStatus.InvalidName, errorMessage);\n }\n throw error; // throw original error\n }\n }\n\n /** Update an existing Element in the target iModel from the specified ElementProps.\n * @note A subclass may override this method to customize update behavior but should call `super.onUpdateElement`.\n */\n protected onUpdateElement(elementProps: ElementProps): void {\n if (!elementProps.id) {\n throw new IModelError(IModelStatus.InvalidId, \"ElementId not provided\");\n }\n this.targetDb.elements.updateElement(elementProps);\n Logger.logInfo(\n loggerCategory,\n `Updated ${this.formatElementForLogger(elementProps)}`\n );\n this.trackProgress();\n if (this.options.simplifyElementGeometry) {\n this.targetDb.nativeDb.simplifyElementGeometry({\n id: elementProps.id,\n convertBReps: true,\n });\n Logger.logInfo(\n loggerCategory,\n `Simplified element geometry for ${this.formatElementForLogger(\n elementProps\n )}`\n );\n }\n }\n\n /** Delete the specified Element (and all its children) from the target iModel.\n * Will delete special elements like definition elements and subjects.\n * @note A subclass may override this method to customize delete behavior but should call `super.onDeleteElement`.\n */\n protected onDeleteElement(elementId: Id64String): void {\n deleteElementTreeCascade(this.targetDb, elementId);\n Logger.logInfo(\n loggerCategory,\n `Deleted element ${elementId} and its descendants`\n );\n this.trackProgress();\n }\n\n /** Delete the specified Element from the target iModel. */\n public deleteElement(elementId: Id64String): void {\n if (this.doNotUpdateElement(elementId)) {\n Logger.logInfo(\n loggerCategory,\n `Do not delete target element ${elementId}`\n );\n return;\n }\n this.onDeleteElement(elementId);\n }\n\n /** Delete the specified Model from the target iModel.\n * @note A subclass may override this method to customize delete behavior but should call `super.onDeleteModel`.\n */\n protected onDeleteModel(modelId: Id64String): void {\n this.targetDb.models.deleteModel(modelId);\n Logger.logInfo(loggerCategory, `Deleted model ${modelId}`);\n this.trackProgress();\n }\n\n /** Delete the specified Model from the target iModel. */\n public deleteModel(modelId: Id64String): void {\n this.onDeleteModel(modelId);\n }\n\n /** Format an Element for the Logger. */\n private formatElementForLogger(elementProps: ElementProps): string {\n const namePiece: string = elementProps.code.value\n ? `${elementProps.code.value} `\n : elementProps.userLabel\n ? `${elementProps.userLabel} `\n : \"\";\n return `${elementProps.classFullName} ${namePiece}[${elementProps.id}]`;\n }\n\n /** Import an ElementUniqueAspect into the target iModel. */\n public importElementUniqueAspect(\n aspectProps: ElementAspectProps\n ): Id64String {\n const aspects: ElementAspect[] = this.targetDb.elements.getAspects(\n aspectProps.element.id,\n aspectProps.classFullName\n );\n if (aspects.length === 0) {\n return this.onInsertElementAspect(aspectProps);\n } else if (hasEntityChanged(aspects[0], aspectProps)) {\n aspectProps.id = aspects[0].id;\n this.onUpdateElementAspect(aspectProps);\n }\n return aspects[0].id;\n }\n\n /** Import the collection of ElementMultiAspects into the target iModel.\n * @param aspectPropsArray The ElementMultiAspects to import\n * @param filterFunc Optional filter func that is used to exclude target ElementMultiAspects that were added during iModel transformation from the update detection logic.\n * @note For insert vs. update reasons, it is important to process all ElementMultiAspects owned by an Element at once since we don't have aspect-specific provenance.\n * @returns the array of ids of the resulting ElementMultiAspects, in the same order of the aspectPropsArray parameter\n */\n public importElementMultiAspects(\n aspectPropsArray: ElementAspectProps[],\n /** caller must use this to enforce any aspects added by IModelTransformer are not considered for update */\n filterFunc: (a: ElementMultiAspect) => boolean = () => true\n ): Id64String[] {\n const result = new Array<Id64String | undefined>(\n aspectPropsArray.length\n ).fill(undefined);\n\n if (aspectPropsArray.length === 0) {\n return result as Id64String[];\n }\n\n const elementId: Id64String = aspectPropsArray[0].element.id;\n // Determine the set of ElementMultiAspect classes to consider\n const aspectClassFullNames = new Set<string>();\n aspectPropsArray.forEach((aspectsProps: ElementAspectProps): void => {\n aspectClassFullNames.add(aspectsProps.classFullName);\n });\n\n // Handle ElementMultiAspects in groups by class\n aspectClassFullNames.forEach((aspectClassFullName: string) => {\n const proposedAspects = aspectPropsArray\n .map((props, index) => ({ props, index }))\n .filter(({ props }) => aspectClassFullName === props.classFullName);\n\n const currentAspects = this.targetDb.elements\n .getAspects(elementId, aspectClassFullName)\n .map((props, index) => ({ props, index }) as const)\n .filter(({ props }) => filterFunc(props));\n\n if (proposedAspects.length >= currentAspects.length) {\n proposedAspects.forEach(({ props, index: resultIndex }, index) => {\n let id: Id64String;\n if (index < currentAspects.length) {\n id = currentAspects[index].props.id;\n props.id = id;\n if (hasEntityChanged(currentAspects[index].props, props)) {\n this.onUpdateElementAspect(props);\n }\n id = props.id;\n } else {\n id = this.onInsertElementAspect(props);\n }\n result[resultIndex] = id;\n });\n } else {\n currentAspects.forEach(({ props, index: resultIndex }, index) => {\n let id: Id64String;\n if (index < proposedAspects.length) {\n id = props.id;\n proposedAspects[index].props.id = id;\n if (hasEntityChanged(props, proposedAspects[index].props)) {\n this.onUpdateElementAspect(proposedAspects[index].props);\n }\n result[resultIndex] = id;\n } else {\n this.onDeleteElementAspect(props);\n }\n });\n }\n });\n\n assert(result.every((r) => typeof r !== undefined));\n return result as Id64String[];\n }\n\n /** Insert the ElementAspect into the target iModel.\n * @note A subclass may override this method to customize insert behavior but should call `super.onInsertElementAspect`.\n */\n protected onInsertElementAspect(aspectProps: ElementAspectProps): Id64String {\n try {\n const id = this.targetDb.elements.insertAspect(aspectProps);\n Logger.logInfo(\n loggerCategory,\n `Inserted ${this.formatElementAspectForLogger(aspectProps)}`\n );\n this.trackProgress();\n return id;\n } catch (error) {\n if (!this.targetDb.containsClass(aspectProps.classFullName)) {\n // replace standard insert error with something more helpful\n const errorMessage = `ElementAspect class \"${aspectProps.classFullName}\" not found in the target iModel. Was the latest version of the schema imported?`;\n throw new IModelError(IModelStatus.InvalidName, errorMessage);\n }\n throw error; // throw original error\n }\n }\n\n /** Update the ElementAspect within the target iModel.\n * @note A subclass may override this method to customize update behavior but should call `super.onUpdateElementAspect`.\n */\n protected onUpdateElementAspect(aspectProps: ElementAspectProps): void {\n this.targetDb.elements.updateAspect(aspectProps);\n Logger.logInfo(\n loggerCategory,\n `Updated ${this.formatElementAspectForLogger(aspectProps)}`\n );\n this.trackProgress();\n }\n\n /** Delete the specified ElementAspect from the target iModel.\n * @note A subclass may override this method to customize delete behavior but should call `super.onDeleteElementAspect`.\n */\n protected onDeleteElementAspect(targetElementAspect: ElementAspect): void {\n this.targetDb.elements.deleteAspect(targetElementAspect.id);\n Logger.logInfo(\n loggerCategory,\n `Deleted ${this.formatElementAspectForLogger(targetElementAspect)}`\n );\n this.trackProgress();\n }\n\n /** Format an ElementAspect for the Logger. */\n private formatElementAspectForLogger(\n elementAspectProps: ElementAspectProps | ElementAspect\n ): string {\n return `${elementAspectProps.classFullName} elementId=[${elementAspectProps.element.id}]`;\n }\n\n /** Import the specified RelationshipProps (either as an insert or an update) into the target iModel.\n * @returns The instance Id of the inserted or updated Relationship.\n */\n public importRelationship(relationshipProps: RelationshipProps): Id64String {\n if (\n undefined === relationshipProps.sourceId ||\n !Id64.isValidId64(relationshipProps.sourceId)\n ) {\n Logger.logInfo(\n loggerCategory,\n `Ignoring ${relationshipProps.classFullName} instance because of invalid RelationshipProps.sourceId`\n );\n return Id64.invalid;\n }\n if (\n undefined === relationshipProps.targetId ||\n !Id64.isValidId64(relationshipProps.targetId)\n ) {\n Logger.logInfo(\n loggerCategory,\n `Ignoring ${relationshipProps.classFullName} instance because of invalid RelationshipProps.targetId`\n );\n return Id64.invalid;\n }\n // check for an existing relationship\n const relSourceAndTarget: SourceAndTarget = {\n sourceId: relationshipProps.sourceId,\n targetId: relationshipProps.targetId,\n };\n const relationship: Relationship | undefined =\n this.targetDb.relationships.tryGetInstance(\n relationshipProps.classFullName,\n relSourceAndTarget\n );\n if (undefined !== relationship) {\n // if relationship found, update it\n relationshipProps.id = relationship.id;\n if (hasEntityChanged(relationship, relationshipProps)) {\n this.onUpdateRelationship(relationshipProps);\n }\n return relationshipProps.id;\n } else {\n return this.onInsertRelationship(relationshipProps);\n }\n }\n\n /** Create a new Relationship from the specified RelationshipProps and insert it into the target iModel.\n * @returns The instance Id of the newly inserted relationship.\n * @note A subclass may override this method to customize insert behavior but should call `super.onInsertRelationship`.\n */\n protected onInsertRelationship(\n relationshipProps: RelationshipProps\n ): Id64String {\n try {\n const targetRelInstanceId: Id64String =\n this.targetDb.relationships.insertInstance(relationshipProps);\n Logger.logInfo(\n loggerCategory,\n `Inserted ${this.formatRelationshipForLogger(relationshipProps)}`\n );\n this.trackProgress();\n return targetRelInstanceId;\n } catch (error) {\n if (!this.targetDb.containsClass(relationshipProps.classFullName)) {\n // replace standard insert error with something more helpful\n const errorMessage = `Relationship class \"${relationshipProps.classFullName}\" not found in the target iModel. Was the latest version of the schema imported?`;\n throw new IModelError(IModelStatus.InvalidName, errorMessage);\n }\n throw error; // throw original error\n }\n }\n\n /** Update an existing Relationship in the target iModel from the specified RelationshipProps.\n * @note A subclass may override this method to customize update behavior but should call `super.onUpdateRelationship`.\n */\n protected onUpdateRelationship(relationshipProps: RelationshipProps): void {\n if (!relationshipProps.id) {\n throw new IModelError(\n IModelStatus.InvalidId,\n \"Relationship instance Id not provided\"\n );\n }\n this.targetDb.relationships.updateInstance(relationshipProps);\n Logger.logInfo(\n loggerCategory,\n `Updated ${this.formatRelationshipForLogger(relationshipProps)}`\n );\n this.trackProgress();\n }\n\n /** Delete the specified Relationship from the target iModel. */\n protected onDeleteRelationship(\n relationshipProps: RelationshipPropsForDelete\n ): void {\n // Only passing in what deleteInstance actually uses, full relationshipProps is not necessary.\n this.targetDb.relationships.deleteInstance({\n id: relationshipProps.id,\n classFullName: relationshipProps.classFullName,\n } as RelationshipProps);\n Logger.logInfo(\n loggerCategory,\n `Deleted relationship ${relationshipProps.classFullName} id=${relationshipProps.id}`\n );\n this.trackProgress();\n }\n\n /** Delete the specified Relationship from the target iModel. */\n public deleteRelationship(\n relationshipProps: RelationshipPropsForDelete\n ): void {\n this.onDeleteRelationship(relationshipProps);\n }\n\n /** Format a Relationship for the Logger. */\n private formatRelationshipForLogger(relProps: RelationshipProps): string {\n return `${relProps.classFullName} sourceId=[${relProps.sourceId}] targetId=[${relProps.targetId}]`;\n }\n\n /** Tracks incremental progress */\n private trackProgress(): void {\n this._progressCounter++;\n if (0 === this._progressCounter % this.progressInterval) {\n this.onProgress();\n }\n }\n\n /** This method is called when IModelImporter has made incremental progress based on the [[progressInterval]] setting.\n * @note A subclass may override this method to report custom progress but should call `super.onProgress`.\n */\n protected onProgress(): void {}\n\n /** Optionally compute the projectExtents for the target iModel depending on the options for this IModelImporter.\n * @note This method is automatically called from [IModelTransformer.processChanges]($transformer) and [IModelTransformer.processAll]($transformer).\n * @see [IModelDb.computeProjectExtents]($backend), [[autoExtendProjectExtents]]\n */\n public computeProjectExtents(): void {\n const computedProjectExtents = this.targetDb.computeProjectExtents({\n reportExtentsWithOutliers: true,\n reportOutliers: true,\n });\n Logger.logInfo(\n loggerCategory,\n `Current projectExtents=${JSON.stringify(this.targetDb.projectExtents)}`\n );\n Logger.logInfo(\n loggerCategory,\n `Computed projectExtents without outliers=${JSON.stringify(\n computedProjectExtents.extents\n )}`\n );\n Logger.logInfo(\n loggerCategory,\n `Computed projectExtents with outliers=${JSON.stringify(\n computedProjectExtents.extentsWithOutliers\n )}`\n );\n if (this.options.autoExtendProjectExtents) {\n const excludeOutliers: boolean =\n typeof this.options.autoExtendProjectExtents === \"object\"\n ? this.options.autoExtendProjectExtents.excludeOutliers\n : false;\n const newProjectExtents: AxisAlignedBox3d = excludeOutliers\n ? computedProjectExtents.extents\n : computedProjectExtents.extentsWithOutliers!;\n if (!newProjectExtents.isAlmostEqual(this.targetDb.projectExtents)) {\n this.targetDb.updateProjectExtents(newProjectExtents);\n Logger.logInfo(\n loggerCategory,\n `Updated projectExtents=${JSON.stringify(\n this.targetDb.projectExtents\n )}`\n );\n }\n if (\n !excludeOutliers &&\n computedProjectExtents.outliers &&\n computedProjectExtents.outliers.length > 0\n ) {\n Logger.logInfo(\n loggerCategory,\n `${computedProjectExtents.outliers.length} outliers detected within projectExtents`\n );\n }\n } else {\n if (\n !this.targetDb.projectExtents.containsRange(\n computedProjectExtents.extents\n )\n ) {\n Logger.logWarning(\n loggerCategory,\n \"Current project extents may be too small\"\n );\n }\n if (\n computedProjectExtents.outliers &&\n computedProjectExtents.outliers.length > 0\n ) {\n Logger.logInfo(\n loggerCategory,\n `${computedProjectExtents.outliers.length} outliers detected within projectExtents`\n );\n }\n }\n }\n\n /** Examine the geometry streams of every [GeometricElement3d]($backend) in the target iModel and apply the specified optimizations.\n * @note This method is automatically called from [[IModelTransformer.processChanges]] and [[IModelTransformer.processAll]] if\n * [[IModelTransformOptions.optimizeGeometry]] is defined.\n */\n public optimizeGeometry(options: OptimizeGeometryOptions): void {\n if (options.inlineUniqueGeometryParts) {\n const result = this.targetDb.nativeDb.inlineGeometryPartReferences();\n Logger.logInfo(\n loggerCategory,\n `Inlined ${result.numRefsInlined} references to ${result.numCandidateParts} geometry parts and deleted ${result.numPartsDeleted} parts.`\n );\n }\n }\n\n private resolveDuplicateCodeValues(): void {\n for (const [elementId, codeValue] of this._duplicateCodeValueMap) {\n const element = this.targetDb.elements.getElement(elementId);\n element.code.value = codeValue;\n element.update();\n }\n this._duplicateCodeValueMap.clear();\n }\n\n /**\n * Needs to be called to perform necessary cleanup operations.\n * By not calling `finalize` there is a risk that data imported into targetDb will not be as expected.\n *\n * @note No need to call this If using [[IModelTransformer]] as it automatically invokes this method.\n */\n public finalize(): void {\n this.resolveDuplicateCodeValues();\n }\n}\n\n/** Returns true if a change within an Entity is detected.\n * @param entity The current persistent Entity.\n * @param entityProps The new EntityProps to compare against\n * @note This method should only be called if changeset information is not available.\n * @internal\n */\nexport function hasEntityChanged(\n entity: Entity,\n entityProps: EntityProps,\n namesToIgnore?: Set<string>\n): boolean {\n let changed: boolean = false;\n entity.forEachProperty(\n (propertyName: string, propertyMeta: PropertyMetaData) => {\n if (!changed) {\n if (namesToIgnore && namesToIgnore.has(propertyName)) {\n // skip\n } else if (PrimitiveTypeCode.Binary === propertyMeta.primitiveType) {\n changed = hasBinaryValueChanged(\n entity.asAny[propertyName],\n (entityProps as any)[propertyName]\n );\n } else if (propertyMeta.isNavigation) {\n changed = hasNavigationValueChanged(\n entity.asAny[propertyName],\n (entityProps as any)[propertyName]\n );\n } else {\n changed = hasValueChanged(\n entity.asAny[propertyName],\n (entityProps as any)[propertyName]\n );\n }\n }\n }\n );\n return changed;\n}\n\n/** Returns true if the specified binary values are different. */\nfunction hasBinaryValueChanged(\n binaryProperty1: any,\n binaryProperty2: any\n): boolean {\n const jsonString1 = JSON.stringify(\n binaryProperty1,\n Base64EncodedString.replacer\n );\n const jsonString2 = JSON.stringify(\n binaryProperty2,\n Base64EncodedString.replacer\n );\n return jsonString1 !== jsonString2;\n}\n\n/** Returns true if the specified navigation property values are different. */\nfunction hasNavigationValueChanged(\n navigationProperty1: any,\n navigationProperty2: any\n): boolean {\n const relatedElement1 = RelatedElement.fromJSON(navigationProperty1);\n const relatedElement2 = RelatedElement.fromJSON(navigationProperty2);\n const jsonString1 = JSON.stringify(relatedElement1);\n const jsonString2 = JSON.stringify(relatedElement2);\n return jsonString1 !== jsonString2;\n}\n\n/** Returns true if the specified navigation property values are different. */\nfunction hasValueChanged(property1: any, property2: any): boolean {\n return JSON.stringify(property1) !== JSON.stringify(property2);\n}\n\n/** check if element props are a subcategory */\nfunction isSubCategory(props: ElementProps): props is SubCategoryProps {\n return props.classFullName === SubCategory.classFullName;\n}\n\n/** check if element props are a subcategory without loading the element */\nfunction isDefaultSubCategory(props: SubCategoryProps): boolean {\n if (props.id === undefined) return false;\n\n if (!Id64.isId64(props.id))\n throw new IModelError(\n IModelStatus.BadElement,\n \"subcategory had invalid id\"\n );\n if (props.parent?.id === undefined)\n throw new IModelError(\n IModelStatus.BadElement,\n `subcategory with id ${props.id} had no parent`\n );\n return props.id === IModelDb.getDefaultSubCategoryId(props.parent.id);\n}\n"]}
@@ -253,6 +253,8 @@ export declare class IModelTransformer extends IModelExportHandler {
253
253
  protected _partiallyCommittedEntities: EntityMap<PartiallyCommittedEntity>;
254
254
  /** the options that were used to initialize this transformer */
255
255
  private readonly _options;
256
+ /** @see hasDefinitionContainerDeletionFeature */
257
+ private _hasDefinitionContainerDeletionFeature?;
256
258
  private _isSynchronization;
257
259
  /**
258
260
  * A private variable meant to be set by tests which have an outdated way of setting up transforms. In all synchronizations today we expect to find an ESA in the branch db which describes the master -> branch relationship.
@@ -366,6 +368,11 @@ export declare class IModelTransformer extends IModelExportHandler {
366
368
  * @note: empty string and -1 for changeset and index if it has never been transformed or was transformed before federation guid update (pre 1.x).
367
369
  */
368
370
  private get _synchronizationVersion();
371
+ /**
372
+ * As of itwinjs 4.6.0, definitionContainers are now deleted as if they were DefinitionPartitions as opposed to Definitions.
373
+ * This variable being true will be used to special case the deletion of DefinitionContainers the same way DefinitionPartitions are deleted.
374
+ */
375
+ protected get hasDefinitionContainerDeletionFeature(): boolean;
369
376
  /** the changeset in the scoping element's source version found for this transformation
370
377
  * @note: the version depends on whether this is a reverse synchronization or not, as
371
378
  * it is stored separately for both synchronization directions.
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ const Semver = require("semver");
13
13
  const nodeAssert = require("assert");
14
14
  const core_bentley_1 = require("@itwin/core-bentley");
15
15
  const core_geometry_1 = require("@itwin/core-geometry");
16
+ const coreBackendPkgJson = require("@itwin/core-backend/package.json");
16
17
  const core_backend_1 = require("@itwin/core-backend");
17
18
  const core_common_1 = require("@itwin/core-common");
18
19
  const IModelExporter_1 = require("./IModelExporter");
@@ -80,7 +81,7 @@ function mapId64(idContainer, func) {
80
81
  }
81
82
  else {
82
83
  throw Error([
83
- `Id64 container '${idContainer}' is unsupported.`,
84
+ `Id64 container '${JSON.stringify(idContainer)}' is unsupported.`,
84
85
  "Currently only singular Id64 strings or prop-like objects containing an 'id' property are supported.",
85
86
  ].join("\n"));
86
87
  }
@@ -149,7 +150,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
149
150
  id: targetScopeElementId,
150
151
  relClassName: core_backend_1.ElementOwnsExternalSourceAspects.classFullName,
151
152
  },
152
- scope: { id: core_common_1.IModel.rootSubjectId },
153
+ scope: { id: core_common_1.IModel.rootSubjectId }, // the root Subject scopes scope elements
153
154
  identifier: sourceDb.iModelId,
154
155
  kind: core_backend_1.ExternalSourceAspect.Kind.Scope,
155
156
  jsonProperties: undefined,
@@ -362,7 +363,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
362
363
  core_bentley_1.Logger.logInfo(loggerCategory,
363
364
  // eslint-disable-next-line deprecation/deprecation
364
365
  `this._isReverseSynchronization=${this._options.isReverseSynchronization}`);
365
- core_bentley_1.Logger.logInfo(TransformerLoggerCategory_1.TransformerLoggerCategory.IModelImporter, `this.importer.autoExtendProjectExtents=${this.importer.options.autoExtendProjectExtents}`);
366
+ core_bentley_1.Logger.logInfo(TransformerLoggerCategory_1.TransformerLoggerCategory.IModelImporter, `this.importer.autoExtendProjectExtents=${JSON.stringify(this.importer.options.autoExtendProjectExtents)}`);
366
367
  core_bentley_1.Logger.logInfo(TransformerLoggerCategory_1.TransformerLoggerCategory.IModelImporter, `this.importer.simplifyElementGeometry=${this.importer.options.simplifyElementGeometry}`);
367
368
  }
368
369
  /** Return the IModelDb where IModelTransformer will store its provenance.
@@ -474,6 +475,16 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
474
475
  }
475
476
  return this._cachedSynchronizationVersion;
476
477
  }
478
+ /**
479
+ * As of itwinjs 4.6.0, definitionContainers are now deleted as if they were DefinitionPartitions as opposed to Definitions.
480
+ * This variable being true will be used to special case the deletion of DefinitionContainers the same way DefinitionPartitions are deleted.
481
+ */
482
+ get hasDefinitionContainerDeletionFeature() {
483
+ if (this._hasDefinitionContainerDeletionFeature === undefined) {
484
+ this._hasDefinitionContainerDeletionFeature = Semver.satisfies(coreBackendPkgJson.version, "^4.6.0");
485
+ }
486
+ return this._hasDefinitionContainerDeletionFeature;
487
+ }
477
488
  /** the changeset in the scoping element's source version found for this transformation
478
489
  * @note: the version depends on whether this is a reverse synchronization or not, as
479
490
  * it is stored separately for both synchronization directions.
@@ -530,7 +541,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
530
541
  id: this.targetScopeElementId,
531
542
  relClassName: core_backend_1.ElementOwnsExternalSourceAspects.classFullName,
532
543
  },
533
- scope: { id: core_common_1.IModel.rootSubjectId },
544
+ scope: { id: core_common_1.IModel.rootSubjectId }, // the root Subject scopes scope elements
534
545
  identifier: this.provenanceSourceDb.iModelId,
535
546
  kind: core_backend_1.ExternalSourceAspect.Kind.Scope,
536
547
  jsonProperties: undefined,
@@ -1211,13 +1222,28 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
1211
1222
  const targetModelId = this.context.findTargetElementId(sourceModelId);
1212
1223
  if (!core_bentley_1.Id64.isValidId64(targetModelId))
1213
1224
  return;
1225
+ let sql;
1226
+ if (this.hasDefinitionContainerDeletionFeature) {
1227
+ sql = `
1228
+ SELECT 1
1229
+ FROM bis.DefinitionPartition
1230
+ WHERE ECInstanceId=:targetModelId
1231
+ UNION
1232
+ SELECT 1
1233
+ FROM bis.DefinitionContainer
1234
+ WHERE ECInstanceId=:targetModelId
1235
+ `;
1236
+ }
1237
+ else {
1238
+ sql = `
1239
+ SELECT 1
1240
+ FROM bis.DefinitionPartition
1241
+ WHERE ECInstanceId=:targetModelId
1242
+ `;
1243
+ }
1214
1244
  if (this.exporter.sourceDbChanges?.element.deleteIds.has(sourceModelId)) {
1215
- const isDefinitionPartition = this.targetDb.withPreparedStatement(`
1216
- SELECT 1
1217
- FROM bis.DefinitionPartition
1218
- WHERE ECInstanceId=?
1219
- `, (stmt) => {
1220
- stmt.bindId(1, targetModelId);
1245
+ const isDefinitionPartition = this.targetDb.withPreparedStatement(sql, (stmt) => {
1246
+ stmt.bindId("targetModelId", targetModelId);
1221
1247
  const val = stmt.step();
1222
1248
  switch (val) {
1223
1249
  case core_bentley_1.DbResult.BE_SQLITE_ROW:
@@ -1225,7 +1251,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
1225
1251
  case core_bentley_1.DbResult.BE_SQLITE_DONE:
1226
1252
  return false;
1227
1253
  default:
1228
- (0, core_bentley_1.assert)(false, `unexpected db result: '${stmt}'`);
1254
+ (0, core_bentley_1.assert)(false, `unexpected db result: '${JSON.stringify(stmt)}'`);
1229
1255
  }
1230
1256
  });
1231
1257
  if (isDefinitionPartition) {