@itwin/presentation-backend 4.10.0-dev.9 → 5.0.0-dev.0
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.
- package/CHANGELOG.md +21 -1
- package/lib/cjs/presentation-backend/ElementPropertiesHelper.js +4 -5
- package/lib/cjs/presentation-backend/ElementPropertiesHelper.js.map +1 -1
- package/lib/cjs/presentation-backend/Presentation.d.ts +1 -1
- package/lib/cjs/presentation-backend/Presentation.d.ts.map +1 -1
- package/lib/cjs/presentation-backend/Presentation.js.map +1 -1
- package/lib/cjs/presentation-backend/PresentationManager.d.ts +1 -1
- package/lib/cjs/presentation-backend/PresentationManager.d.ts.map +1 -1
- package/lib/cjs/presentation-backend/PresentationManager.js +3 -4
- package/lib/cjs/presentation-backend/PresentationManager.js.map +1 -1
- package/lib/cjs/presentation-backend/PresentationManagerDetail.js +10 -10
- package/lib/cjs/presentation-backend/PresentationManagerDetail.js.map +1 -1
- package/lib/cjs/presentation-backend/PresentationRpcImpl.js +8 -8
- package/lib/cjs/presentation-backend/PresentationRpcImpl.js.map +1 -1
- package/lib/cjs/presentation-backend/Utils.js +6 -7
- package/lib/cjs/presentation-backend/Utils.js.map +1 -1
- package/lib/cjs/presentation-backend/domain/PresentationRulesDomain.d.ts.map +1 -1
- package/lib/cjs/presentation-backend/domain/PresentationRulesDomain.js +0 -1
- package/lib/cjs/presentation-backend/domain/PresentationRulesDomain.js.map +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationManagerDetail.js","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationManagerDetail.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,kDAAoC;AACpC,2CAA6B;AAC7B,sDAAwE;AACxE,sDAAmE;AAEnE,oEAsCoC;AACpC,mEAA4E;AAC5E,qDAS0B;AAC1B,+DAA2G;AAC3G,qDAAsE;AACtE,mCAA8I;AAE9I,gBAAgB;AAChB,MAAa,yBAAyB;IASpC,YAAY,MAAgC;QAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,eAAe;YAClB,MAAM,CAAC,KAAK;gBACZ,oBAAoB,CAClB,MAAM,CAAC,EAAE,IAAI,EAAE,EACf,MAAM,CAAC,kBAAkB,IAAI,CAAC,EAC9B,sBAAO,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,EACxD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,OAAO,CACf,CAAC;QAEJ,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,8BAA8B,IAAI,EAAE,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAClH,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEjD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,mCAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC;IAChD,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,iBAAiB;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,uCAAiB,CAAC,wCAAkB,CAAC,cAAc,EAAE,uDAAuD,CAAC,CAAC;QAC1H,CAAC;QAED,OAAO,IAAI,CAAC,eAAgB,CAAC;IAC/B,CAAC;IAEM,uBAAuB,CAAC,OAAmB;QAChD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,cAA8I;QAE9I,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QACtE,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,2CAA0B,CAAC,WAAW,CAAC,CAAC,CAAC,2CAA0B,CAAC,YAAY;YACvG,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,cAAuI;QAEvI,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QACtE,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,2CAA0B,CAAC,gBAAgB,CAAC,CAAC,CAAC,2CAA0B,CAAC,iBAAiB;YACjH,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,cAAsJ;QAEtJ,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QACtE,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,kBAAkB;YACxD,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,cAAmJ;QAEnJ,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QAC1E,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,YAAY;YAClD,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;YAClB,KAAK,EAAE,aAAa;SACrB,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,qCAAe,CAAC,WAAW,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAC/B,cAA0I;QAE1I,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QAC3D,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,oBAAoB;YAC1D,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;SACnB,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,qCAAe,CAAC,WAAW,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,cAA+F;QAC/H,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QACzE,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,oBAAoB;YAC1D,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;YAClB,YAAY,EAAE,YAAY,IAAI,kCAAY,CAAC,cAAc,EAAE,iEAAiE;YAC5H,IAAI,EAAE,wBAAwB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,+BAA+B,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SAC1H,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,cAAkH;QAElH,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,iBAAiB;YACvD,SAAS,EAAE,mBAAmB;YAC9B,GAAG,cAAc;SAClB,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YAC1C,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,qCAAe,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACtG,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,cAC6B;QAE7B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QACvE,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,iBAAiB;YACvD,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;YAClB,IAAI,EAAE,wBAAwB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,+BAA+B,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzH,mBAAmB,EAAE,gCAAgC,CAAC,UAAU,CAAC;SAClE,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,cAC6B;QAE7B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QACvE,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,aAAa;YACnD,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;YAClB,IAAI,EAAE,wBAAwB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,+BAA+B,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzH,mBAAmB,EAAE,gCAAgC,CAAC,UAAU,CAAC;SAClE,CAAC;QACF,6DAA6D;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,0BAAI,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,cAC6B;QAE7B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QACvE,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,UAAU;YAChD,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,eAAe;YAClB,IAAI,EAAE,wBAAwB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,+BAA+B,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzH,mBAAmB,EAAE,gCAAgC,CAAC,UAAU,CAAC;SAClE,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,6BAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,sBAAsB,CACjC,cAC6B;QAE7B,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,CAAC;QAC3D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,kCAAkC,EAAE,GAAG,eAAe,CAAC;QACpF,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,sBAAsB;YAC5D,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5C,GAAG,kCAAkC;YACrC,IAAI,EAAE,wBAAwB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,+BAA+B,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC1G,mBAAmB,EAAE,gCAAgC,CAAC,UAAU,CAAC;SAClE,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YAC1C,OAAO,GAAG,KAAK,EAAE;gBACf,CAAC,CAAC;oBACE,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,mDAAmD;oBACnD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAiB,CAAC,QAAQ,CAAC;iBACnD;gBACH,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,yBAAyB,CACpC,cAA6H;QAE7H,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,2CAA0B,CAAC,eAAe;YACrD,GAAG,cAAc;SAClB,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,0BAA0B,CACrC,cAAqI;QAErI,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,CAAC,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;gBACtC,OAAO,IAAA,qBAAa,EAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;aACD,MAAM,CAAc,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,qBAAqB,GAA8E;YACvG,GAAG,cAAc;YACjB,WAAW,EAAE,yDAAyD;YACtE,UAAU,EAAE;gBACV,WAAW,EAAE,gDAA0B,CAAC,IAAI;gBAC5C,YAAY,EAAE,kCAAY,CAAC,UAAU,GAAG,kCAAY,CAAC,QAAQ;aAC9D;YACD,IAAI,EAAE,IAAI,4BAAM,CAAC,YAAY,CAAC;SAC/B,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC7D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,iCAAW,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnJ,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC1D,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2FAA2F;IACpF,eAAe,CAAC,WAA6B;QAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,mBAAmB,GAAG,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YACnF,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QACnD,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,gBAAgB;IACT,YAAY,CAAC,WAA6B;QAC/C,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,MAAqB;QACxC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACxB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,CAAC;QAClH,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE;YAC1H,MAAM,mBAAmB,GAAQ;gBAC/B,SAAS;gBACT,MAAM,EAAE;oBACN,UAAU,EAAE,0BAA0B,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC;oBAC3E,GAAG,cAAc;oBACjB,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;iBAC1E;aACF,CAAC;YACF,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;CACF;AA/RD,8DA+RC;AAED,KAAK,UAAU,uBAAuB,CACpC,kBAAgE,EAChE,4BAAqI;IAErI,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,IAAA,iCAAyB,EAAC,GAAG,kBAAkB,CAAC,CAAC;IACzE,IAAI,mBAAqD,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,eAAe,CAAC,CAAC;QACrE,mBAAmB,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC3C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,wDAAuC,EAAE,CAAC;YACzD,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC;QACtC,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;YAAS,CAAC;QACT,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACpD,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;gBACxC,OAAO,IAAI,IAAA,yBAAiB,EAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAUD,SAAS,aAAa,CAAC,cAAwC,EAAE,8BAAwC,EAAE,yBAAmC;IAC5I,8DAA8D;IAC9D,MAAM,wBAAwB,GAAY,OAAO,CAAC,yEAAyE,CAAC,CAAC;IAC7H,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAEpE,8DAA8D;IAC9D,MAAM,sBAAsB,GAAY,OAAO,CAAC,oEAAoE,CAAC,CAAC;IACtH,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEnF,8DAA8D;IAC9D,MAAM,uBAAuB,GAAY,OAAO,CAAC,uEAAuE,CAAC,CAAC;IAC1H,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAEpF,cAAc,CAAC,mCAAmC,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC5G,cAAc,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC7F,CAAC;AAUD,gBAAgB;AAChB,SAAgB,kBAAkB,CAAC,WAA6B;IAC9D,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,IAAI,sBAAO,CAAC,OAAO,EAAE,CAAC;YACpB,6FAA6F;YAC7F,wEAAwE;YACxE,OAAO;gBACL,QAAQ,EAAE,WAAW,CAAC,EAAE;gBACxB,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE;aAC9B,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvC,OAAO;YACL,QAAQ,EAAE,GAAG,WAAW,CAAC,EAAE,IAAI,QAAQ,EAAE;YACzC,KAAK,EAAE;gBACL,EAAE,EAAE,WAAW,CAAC,EAAE;gBAClB,IAAI,EAAE,QAAQ;aACf;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC;AAC/D,CAAC;AAtBD,gDAsBC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CACtC,IAAsB,EACtB,0BAAqE;IAErE,MAAM,MAAM,GAAiC;QAC3C,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,EAAE;KACb,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;IACzD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,IAAI,yBAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,yBAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,cAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,0BAA0B,EAAE,CAAC;QAC/B,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA9BD,4DA8BC;AAED,gBAAgB;AAChB,SAAgB,+BAA+B,CAAC,MAAgB,EAAE,iBAA2C;IAC3G,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;IAC3C,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3D,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,gBAAgB,GAAG,IAAI,KAAK,EAAU,CAAC;QAC7C,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAC/B,MAAM,WAAW,GAAG,IAAA,qBAAa,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,WAAW,IAAI,WAAW,CAAC,SAAS,KAAK,gBAAgB,EAAE,CAAC;gBAC9D,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjC,cAAc,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;YAClC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAhBD,0EAgBC;AAED,SAAS,cAAc,CAAC,iBAA2C,EAAE,GAAgB;IACnF,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,uBAAuB;IACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAC3B,EAAU,EACV,kBAA0B,EAC1B,cAA4D,EAC5D,OAA4C,EAC5C,cAAsC,EACtC,OAAqC;IAErC,OAAO,IAAI,CAAC,IAAA,4CAA2B,EAAC;QACtC,EAAE;QACF,kBAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,EAAE;QACrE,cAAc;QACd,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;QACpD,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI;QACxC,yBAAyB,EAAE,OAAO,EAAE,yBAAyB;QAC7D,cAAc,EAAE,sBAAsB,CAAC,cAAc,CAAC;QACtD,OAAO;KACR,CAAC,CAAC,EAAE,CAAC;IAEN,SAAS,iBAAiB,CAAC,MAA6B;QACtD,QAAQ,MAAM,EAAE,IAAI,EAAE,CAAC;YACrB,KAAK,wCAAkB,CAAC,IAAI;gBAC1B,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAExE,KAAK,wCAAkB,CAAC,MAAM;gBAC5B,OAAO;oBACL,GAAG,MAAM;oBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;iBACzG,CAAC;YAEJ,KAAK,wCAAkB,CAAC,MAAM;gBAC5B,OAAO,MAAM,CAAC;YAEhB;gBACE,OAAO,EAAE,IAAI,EAAE,wCAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,SAAS,kBAAkB,CAAC,SAAkB;QAC5C,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,SAAS,sBAAsB,CAAC,GAA2B;QACzD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,gBAAgB,GAAyC,EAAE,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gBACxG,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC;gBAClE,MAAM,EAAE,iBAAiB,CAAC,MAAM;aACjC,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,OAAO,gBAAgB,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,UAAqC;IACvE,OAAO,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAyB;IACnD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,6CAA4B,CAAC,eAAe,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,6CAA4B,CAAC,MAAM,CAAC;QAC7C,KAAK,aAAa;YAChB,OAAO,6CAA4B,CAAC,WAAW,CAAC;QAClD,KAAK,UAAU;YACb,OAAO,6CAA4B,CAAC,QAAQ,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAc;IAC7C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD,MAAM,gCAAgC,GAAG,CAAC,qBAAuD,EAAuB,EAAE;IACxH,IAAI,qBAAqB,YAAY,gCAAU,EAAE,CAAC;QAChD,OAAO,qBAAqB,CAAC,yBAAyB,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAEF,SAAS,eAAe,CAAC,IAA4B;IACnD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,uBAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,qBAAM,CAAC,QAAQ,CAAC,yDAAiC,CAAC,mBAAmB,EAAE,+CAA+C,QAAQ,EAAE,CAAC,CAAC;YAClI,SAAS;QACX,CAAC;QAED,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,gBAAgB;AAChB,SAAgB,iBAAiB,CAAC,IAA4B;IAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,EAAE,CAAC;QACX,sBAAO,CAAC,IAAI,CAAC,2CAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AALD,8CAKC;AAED,gBAAgB;AAChB,uBAAuB;AACvB,SAAgB,kBAAkB,CAAC,KAA6B,IAAG,CAAC;AAApE,gDAAoE","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 * as hash from \"object-hash\";\r\nimport * as path from \"path\";\r\nimport { IModelDb, IModelJsNative, IpcHost } from \"@itwin/core-backend\";\r\nimport { BeEvent, IDisposable, Logger } from \"@itwin/core-bentley\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport {\r\n Content,\r\n ContentDescriptorRequestOptions,\r\n ContentFlags,\r\n ContentRequestOptions,\r\n ContentSourcesRequestOptions,\r\n DefaultContentDisplayTypes,\r\n Descriptor,\r\n DescriptorOverrides,\r\n DiagnosticsOptions,\r\n DiagnosticsScopeLogs,\r\n DisplayLabelRequestOptions,\r\n DisplayLabelsRequestOptions,\r\n DisplayValueGroup,\r\n DistinctValuesRequestOptions,\r\n FilterByInstancePathsHierarchyRequestOptions,\r\n FilterByTextHierarchyRequestOptions,\r\n FormatsMap,\r\n HierarchyLevelDescriptorRequestOptions,\r\n HierarchyRequestOptions,\r\n InstanceKey,\r\n Item,\r\n Key,\r\n KeySet,\r\n LabelDefinition,\r\n NodeKey,\r\n NodePathElement,\r\n Paged,\r\n PagedResponse,\r\n PresentationError,\r\n PresentationIpcEvents,\r\n PresentationStatus,\r\n Prioritized,\r\n Ruleset,\r\n RulesetVariable,\r\n SelectClassInfo,\r\n UpdateInfo,\r\n WithCancelEvent,\r\n} from \"@itwin/presentation-common\";\r\nimport { PresentationBackendLoggerCategory } from \"./BackendLoggerCategory\";\r\nimport {\r\n createDefaultNativePlatform,\r\n NativePlatformDefinition,\r\n NativePlatformRequestTypes,\r\n NativePlatformResponse,\r\n NativePresentationDefaultUnitFormats,\r\n NativePresentationKeySetJSON,\r\n NativePresentationUnitSystem,\r\n PresentationNativePlatformResponseError,\r\n} from \"./NativePlatform\";\r\nimport { HierarchyCacheConfig, HierarchyCacheMode, PresentationManagerProps } from \"./PresentationManager\";\r\nimport { RulesetManager, RulesetManagerImpl } from \"./RulesetManager\";\r\nimport { BackendDiagnosticsAttribute, BackendDiagnosticsOptions, combineDiagnosticsOptions, getElementKey, reportDiagnostics } from \"./Utils\";\r\n\r\n/** @internal */\r\nexport class PresentationManagerDetail implements IDisposable {\r\n private _disposed: boolean;\r\n private _nativePlatform: NativePlatformDefinition | undefined;\r\n private _onManagerUsed: (() => void) | undefined;\r\n private _diagnosticsOptions: BackendDiagnosticsOptions | undefined;\r\n\r\n public rulesets: RulesetManager;\r\n public activeUnitSystem: UnitSystemKey | undefined;\r\n\r\n constructor(params: PresentationManagerProps) {\r\n this._disposed = false;\r\n\r\n this._nativePlatform =\r\n params.addon ??\r\n createNativePlatform(\r\n params.id ?? \"\",\r\n params.workerThreadsCount ?? 2,\r\n IpcHost.isValid ? ipcUpdatesHandler : noopUpdatesHandler,\r\n params.caching,\r\n params.defaultFormats,\r\n params.useMmap,\r\n );\r\n\r\n setupRulesets(this._nativePlatform, params.supplementalRulesetDirectories ?? [], params.rulesetDirectories ?? []);\r\n this.activeUnitSystem = params.defaultUnitSystem;\r\n\r\n this._onManagerUsed = undefined;\r\n this.rulesets = new RulesetManagerImpl(() => this.getNativePlatform());\r\n this._diagnosticsOptions = params.diagnostics;\r\n }\r\n\r\n public dispose(): void {\r\n if (this._disposed) {\r\n return;\r\n }\r\n\r\n this.getNativePlatform().dispose();\r\n this._nativePlatform = undefined;\r\n\r\n this._disposed = true;\r\n }\r\n\r\n public getNativePlatform(): NativePlatformDefinition {\r\n if (this._disposed) {\r\n throw new PresentationError(PresentationStatus.NotInitialized, \"Attempting to use Presentation manager after disposal\");\r\n }\r\n\r\n return this._nativePlatform!;\r\n }\r\n\r\n public setOnManagerUsedHandler(handler: () => void) {\r\n this._onManagerUsed = handler;\r\n }\r\n\r\n public async getNodes(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>>> & BackendDiagnosticsAttribute,\r\n ): Promise<string> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: parentKey ? NativePlatformRequestTypes.GetChildren : NativePlatformRequestTypes.GetRootNodes,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getNodesCount(\r\n requestOptions: WithCancelEvent<Prioritized<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<number> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: parentKey ? NativePlatformRequestTypes.GetChildrenCount : NativePlatformRequestTypes.GetRootNodesCount,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return JSON.parse(await this.request(params));\r\n }\r\n\r\n public async getNodesDescriptor(\r\n requestOptions: WithCancelEvent<Prioritized<HierarchyLevelDescriptorRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<string> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetNodesDescriptor,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getNodePaths(\r\n requestOptions: WithCancelEvent<Prioritized<FilterByInstancePathsHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n const { rulesetOrId, instancePaths, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetNodePaths,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n paths: instancePaths,\r\n };\r\n return JSON.parse(await this.request(params), NodePathElement.listReviver);\r\n }\r\n\r\n public async getFilteredNodePaths(\r\n requestOptions: WithCancelEvent<Prioritized<FilterByTextHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n const { rulesetOrId, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetFilteredNodePaths,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n };\r\n return JSON.parse(await this.request(params), NodePathElement.listReviver);\r\n }\r\n\r\n public async getContentDescriptor(requestOptions: WithCancelEvent<Prioritized<ContentDescriptorRequestOptions<IModelDb, KeySet>>>): Promise<string> {\r\n const { rulesetOrId, contentFlags, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentDescriptor,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n contentFlags: contentFlags ?? ContentFlags.DescriptorOnly, // only set \"descriptor only\" flag if there are no flags provided\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getContentSources(\r\n requestOptions: WithCancelEvent<Prioritized<ContentSourcesRequestOptions<IModelDb>>> & BackendDiagnosticsAttribute,\r\n ): Promise<SelectClassInfo[]> {\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSources,\r\n rulesetId: \"ElementProperties\",\r\n ...requestOptions,\r\n };\r\n const reviver = (key: string, value: any) => {\r\n return key === \"\" ? SelectClassInfo.listFromCompressedJSON(value.sources, value.classesMap) : value;\r\n };\r\n return JSON.parse(await this.request(params), reviver);\r\n }\r\n\r\n public async getContentSetSize(\r\n requestOptions: WithCancelEvent<Prioritized<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<number> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSetSize,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n return JSON.parse(await this.request(params));\r\n }\r\n\r\n public async getContentSet(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<Item[]> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSet,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n // eslint-disable-next-line @typescript-eslint/unbound-method\r\n return JSON.parse(await this.request(params), Item.listReviver);\r\n }\r\n\r\n public async getContent(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<Content | undefined> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContent,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n return JSON.parse(await this.request(params), (key, value) => Content.reviver(key, value));\r\n }\r\n\r\n public async getPagedDistinctValues(\r\n requestOptions: WithCancelEvent<Prioritized<DistinctValuesRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<PagedResponse<DisplayValueGroup>> {\r\n const { rulesetOrId, ...strippedOptions } = requestOptions;\r\n const { descriptor, keys, ...strippedOptionsNoDescriptorAndKeys } = strippedOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetPagedDistinctValues,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptionsNoDescriptorAndKeys,\r\n keys: getKeysForContentRequest(keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n const reviver = (key: string, value: any) => {\r\n return key === \"\"\r\n ? {\r\n total: value.total,\r\n // eslint-disable-next-line deprecation/deprecation\r\n items: value.items.map(DisplayValueGroup.fromJSON),\r\n }\r\n : value;\r\n };\r\n return JSON.parse(await this.request(params), reviver);\r\n }\r\n\r\n public async getDisplayLabelDefinition(\r\n requestOptions: WithCancelEvent<Prioritized<DisplayLabelRequestOptions<IModelDb, InstanceKey>>> & BackendDiagnosticsAttribute,\r\n ): Promise<LabelDefinition> {\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetDisplayLabel,\r\n ...requestOptions,\r\n };\r\n return JSON.parse(await this.request(params));\r\n }\r\n\r\n public async getDisplayLabelDefinitions(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<DisplayLabelsRequestOptions<IModelDb, InstanceKey>>>> & BackendDiagnosticsAttribute,\r\n ): Promise<LabelDefinition[]> {\r\n const concreteKeys = requestOptions.keys\r\n .map((k) => {\r\n if (k.className === \"BisCore:Element\") {\r\n return getElementKey(requestOptions.imodel, k.id);\r\n }\r\n return k;\r\n })\r\n .filter<InstanceKey>((k): k is InstanceKey => !!k);\r\n const contentRequestOptions: ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet> = {\r\n ...requestOptions,\r\n rulesetOrId: \"RulesDrivenECPresentationManager_RulesetId_DisplayLabel\",\r\n descriptor: {\r\n displayType: DefaultContentDisplayTypes.List,\r\n contentFlags: ContentFlags.ShowLabels | ContentFlags.NoFields,\r\n },\r\n keys: new KeySet(concreteKeys),\r\n };\r\n const content = await this.getContent(contentRequestOptions);\r\n return concreteKeys.map((key) => {\r\n const item = content ? content.contentSet.find((it) => it.primaryKeys.length > 0 && InstanceKey.compare(it.primaryKeys[0], key) === 0) : undefined;\r\n if (!item) {\r\n return { displayValue: \"\", rawValue: \"\", typeName: \"\" };\r\n }\r\n return item.label;\r\n });\r\n }\r\n\r\n /** Registers given ruleset and replaces the ruleset with its ID in the resulting object */\r\n public registerRuleset(rulesetOrId: Ruleset | string): string {\r\n if (typeof rulesetOrId === \"object\") {\r\n const rulesetWithNativeId = { ...rulesetOrId, id: this.getRulesetId(rulesetOrId) };\r\n return this.rulesets.add(rulesetWithNativeId).id;\r\n }\r\n\r\n return rulesetOrId;\r\n }\r\n\r\n /** @internal */\r\n public getRulesetId(rulesetOrId: Ruleset | string): string {\r\n return getRulesetIdObject(rulesetOrId).uniqueId;\r\n }\r\n\r\n public async request(params: RequestParams): Promise<string> {\r\n this._onManagerUsed?.();\r\n const { requestId, imodel, unitSystem, diagnostics: requestDiagnostics, cancelEvent, ...strippedParams } = params;\r\n const imodelAddon = this.getNativePlatform().getImodelAddon(imodel);\r\n const response = await withOptionalDiagnostics([this._diagnosticsOptions, requestDiagnostics], async (diagnosticsOptions) => {\r\n const nativeRequestParams: any = {\r\n requestId,\r\n params: {\r\n unitSystem: toOptionalNativeUnitSystem(unitSystem ?? this.activeUnitSystem),\r\n ...strippedParams,\r\n ...(diagnosticsOptions ? { diagnostics: diagnosticsOptions } : undefined),\r\n },\r\n };\r\n return this.getNativePlatform().handleRequest(imodelAddon, JSON.stringify(nativeRequestParams), cancelEvent);\r\n });\r\n return response.result;\r\n }\r\n}\r\n\r\nasync function withOptionalDiagnostics(\r\n diagnosticsOptions: Array<BackendDiagnosticsOptions | undefined>,\r\n nativePlatformRequestHandler: (combinedDiagnosticsOptions: DiagnosticsOptions | undefined) => Promise<NativePlatformResponse<string>>,\r\n): Promise<NativePlatformResponse<string>> {\r\n const contexts = diagnosticsOptions.map((d) => d?.requestContextSupplier?.());\r\n const combinedOptions = combineDiagnosticsOptions(...diagnosticsOptions);\r\n let responseDiagnostics: DiagnosticsScopeLogs | undefined;\r\n try {\r\n const response = await nativePlatformRequestHandler(combinedOptions);\r\n responseDiagnostics = response.diagnostics;\r\n return response;\r\n } catch (e) {\r\n if (e instanceof PresentationNativePlatformResponseError) {\r\n responseDiagnostics = e.diagnostics;\r\n }\r\n throw e;\r\n } finally {\r\n if (responseDiagnostics) {\r\n const diagnostics = { logs: [responseDiagnostics] };\r\n diagnosticsOptions.forEach((options, i) => {\r\n options && reportDiagnostics(diagnostics, options, contexts[i]);\r\n });\r\n }\r\n }\r\n}\r\n\r\ninterface RequestParams {\r\n diagnostics?: BackendDiagnosticsOptions;\r\n requestId: string;\r\n imodel: IModelDb;\r\n unitSystem?: UnitSystemKey;\r\n cancelEvent?: BeEvent<() => void>;\r\n}\r\n\r\nfunction setupRulesets(nativePlatform: NativePlatformDefinition, supplementalRulesetDirectories: string[], primaryRulesetDirectories: string[]): void {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n const elementPropertiesRuleset: Ruleset = require(\"./primary-presentation-rules/ElementProperties.PresentationRuleSet.json\");\r\n nativePlatform.addRuleset(JSON.stringify(elementPropertiesRuleset));\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n const bisSupplementalRuleset: Ruleset = require(\"./supplemental-presentation-rules/BisCore.PresentationRuleSet.json\");\r\n nativePlatform.registerSupplementalRuleset(JSON.stringify(bisSupplementalRuleset));\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n const funcSupplementalRuleset: Ruleset = require(\"./supplemental-presentation-rules/Functional.PresentationRuleSet.json\");\r\n nativePlatform.registerSupplementalRuleset(JSON.stringify(funcSupplementalRuleset));\r\n\r\n nativePlatform.setupSupplementalRulesetDirectories(collateAssetDirectories(supplementalRulesetDirectories));\r\n nativePlatform.setupRulesetDirectories(collateAssetDirectories(primaryRulesetDirectories));\r\n}\r\n\r\ninterface RulesetIdObject {\r\n uniqueId: string;\r\n parts: {\r\n id: string;\r\n hash?: string;\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getRulesetIdObject(rulesetOrId: Ruleset | string): RulesetIdObject {\r\n if (typeof rulesetOrId === \"object\") {\r\n if (IpcHost.isValid) {\r\n // in case of native apps we don't want to enforce ruleset id uniqueness as ruleset variables\r\n // are stored on a backend and creating new id will lose those variables\r\n return {\r\n uniqueId: rulesetOrId.id,\r\n parts: { id: rulesetOrId.id },\r\n };\r\n }\r\n\r\n const hashedId = hash.MD5(rulesetOrId);\r\n return {\r\n uniqueId: `${rulesetOrId.id}-${hashedId}`,\r\n parts: {\r\n id: rulesetOrId.id,\r\n hash: hashedId,\r\n },\r\n };\r\n }\r\n\r\n return { uniqueId: rulesetOrId, parts: { id: rulesetOrId } };\r\n}\r\n\r\n/** @internal */\r\nexport function getKeysForContentRequest(\r\n keys: Readonly<KeySet>,\r\n classInstanceKeysProcessor?: (keys: Map<string, Set<string>>) => void,\r\n): NativePresentationKeySetJSON {\r\n const result: NativePresentationKeySetJSON = {\r\n instanceKeys: [],\r\n nodeKeys: [],\r\n };\r\n const classInstancesMap = new Map<string, Set<string>>();\r\n keys.forEach((key) => {\r\n if (Key.isNodeKey(key)) {\r\n result.nodeKeys.push(key);\r\n }\r\n\r\n if (Key.isInstanceKey(key)) {\r\n addInstanceKey(classInstancesMap, key);\r\n }\r\n });\r\n\r\n if (classInstanceKeysProcessor) {\r\n classInstanceKeysProcessor(classInstancesMap);\r\n }\r\n\r\n for (const entry of classInstancesMap) {\r\n if (entry[1].size > 0) {\r\n result.instanceKeys.push([entry[\"0\"], [...entry[1]]]);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function bisElementInstanceKeysProcessor(imodel: IModelDb, classInstancesMap: Map<string, Set<string>>) {\r\n const elementClassName = \"BisCore:Element\";\r\n const elementIds = classInstancesMap.get(elementClassName);\r\n if (elementIds) {\r\n const deleteElementIds = new Array<string>();\r\n elementIds.forEach((elementId) => {\r\n const concreteKey = getElementKey(imodel, elementId);\r\n if (concreteKey && concreteKey.className !== elementClassName) {\r\n deleteElementIds.push(elementId);\r\n addInstanceKey(classInstancesMap, { className: concreteKey.className, id: elementId });\r\n }\r\n });\r\n for (const id of deleteElementIds) {\r\n elementIds.delete(id);\r\n }\r\n }\r\n}\r\n\r\nfunction addInstanceKey(classInstancesMap: Map<string, Set<string>>, key: InstanceKey): void {\r\n let set = classInstancesMap.get(key.className);\r\n // istanbul ignore else\r\n if (!set) {\r\n set = new Set();\r\n classInstancesMap.set(key.className, set);\r\n }\r\n set.add(key.id);\r\n}\r\n\r\nfunction createNativePlatform(\r\n id: string,\r\n workerThreadsCount: number,\r\n updateCallback: (updateInfo: UpdateInfo | undefined) => void,\r\n caching: PresentationManagerProps[\"caching\"],\r\n defaultFormats: FormatsMap | undefined,\r\n useMmap: boolean | number | undefined,\r\n): NativePlatformDefinition {\r\n return new (createDefaultNativePlatform({\r\n id,\r\n taskAllocationsMap: { [Number.MAX_SAFE_INTEGER]: workerThreadsCount },\r\n updateCallback,\r\n cacheConfig: createCacheConfig(caching?.hierarchies),\r\n contentCacheSize: caching?.content?.size,\r\n workerConnectionCacheSize: caching?.workerConnectionCacheSize,\r\n defaultFormats: toNativeUnitFormatsMap(defaultFormats),\r\n useMmap,\r\n }))();\r\n\r\n function createCacheConfig(config?: HierarchyCacheConfig): IModelJsNative.ECPresentationHierarchyCacheConfig {\r\n switch (config?.mode) {\r\n case HierarchyCacheMode.Disk:\r\n return { ...config, directory: normalizeDirectory(config.directory) };\r\n\r\n case HierarchyCacheMode.Hybrid:\r\n return {\r\n ...config,\r\n disk: config.disk ? { ...config.disk, directory: normalizeDirectory(config.disk.directory) } : undefined,\r\n };\r\n\r\n case HierarchyCacheMode.Memory:\r\n return config;\r\n\r\n default:\r\n return { mode: HierarchyCacheMode.Disk, directory: \"\" };\r\n }\r\n }\r\n\r\n function normalizeDirectory(directory?: string): string {\r\n return directory ? path.resolve(directory) : \"\";\r\n }\r\n\r\n function toNativeUnitFormatsMap(map: FormatsMap | undefined): NativePresentationDefaultUnitFormats | undefined {\r\n if (!map) {\r\n return undefined;\r\n }\r\n\r\n const nativeFormatsMap: NativePresentationDefaultUnitFormats = {};\r\n Object.entries(map).forEach(([phenomenon, formats]) => {\r\n nativeFormatsMap[phenomenon] = (Array.isArray(formats) ? formats : [formats]).map((unitSystemsFormat) => ({\r\n unitSystems: unitSystemsFormat.unitSystems.map(toNativeUnitSystem),\r\n format: unitSystemsFormat.format,\r\n }));\r\n });\r\n return nativeFormatsMap;\r\n }\r\n}\r\n\r\nfunction toOptionalNativeUnitSystem(unitSystem: UnitSystemKey | undefined): NativePresentationUnitSystem | undefined {\r\n return unitSystem ? toNativeUnitSystem(unitSystem) : undefined;\r\n}\r\n\r\nfunction toNativeUnitSystem(unitSystem: UnitSystemKey): NativePresentationUnitSystem {\r\n switch (unitSystem) {\r\n case \"imperial\":\r\n return NativePresentationUnitSystem.BritishImperial;\r\n case \"metric\":\r\n return NativePresentationUnitSystem.Metric;\r\n case \"usCustomary\":\r\n return NativePresentationUnitSystem.UsCustomary;\r\n case \"usSurvey\":\r\n return NativePresentationUnitSystem.UsSurvey;\r\n }\r\n}\r\n\r\nfunction collateAssetDirectories(dirs: string[]): string[] {\r\n return [...new Set(dirs)];\r\n}\r\nconst createContentDescriptorOverrides = (descriptorOrOverrides: Descriptor | DescriptorOverrides): DescriptorOverrides => {\r\n if (descriptorOrOverrides instanceof Descriptor) {\r\n return descriptorOrOverrides.createDescriptorOverrides();\r\n }\r\n return descriptorOrOverrides;\r\n};\r\n\r\nfunction parseUpdateInfo(info: UpdateInfo | undefined) {\r\n if (info === undefined) {\r\n return undefined;\r\n }\r\n\r\n const parsedInfo: UpdateInfo = {};\r\n for (const fileName in info) {\r\n // istanbul ignore if\r\n if (!info.hasOwnProperty(fileName)) {\r\n continue;\r\n }\r\n\r\n const imodelDb = IModelDb.findByFilename(fileName);\r\n if (!imodelDb) {\r\n Logger.logError(PresentationBackendLoggerCategory.PresentationManager, `Update records IModelDb not found with path ${fileName}`);\r\n continue;\r\n }\r\n\r\n parsedInfo[imodelDb.getRpcProps().key] = info[fileName];\r\n }\r\n return Object.keys(parsedInfo).length > 0 ? parsedInfo : undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function ipcUpdatesHandler(info: UpdateInfo | undefined) {\r\n const parsed = parseUpdateInfo(info);\r\n if (parsed) {\r\n IpcHost.send(PresentationIpcEvents.Update, parsed);\r\n }\r\n}\r\n\r\n/** @internal */\r\n// istanbul ignore next\r\nexport function noopUpdatesHandler(_info: UpdateInfo | undefined) {}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PresentationManagerDetail.js","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationManagerDetail.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 * as hash from \"object-hash\";\r\nimport * as path from \"path\";\r\nimport { IModelDb, IModelJsNative, IpcHost } from \"@itwin/core-backend\";\r\nimport { BeEvent, IDisposable, Logger } from \"@itwin/core-bentley\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport {\r\n Content,\r\n ContentDescriptorRequestOptions,\r\n ContentFlags,\r\n ContentRequestOptions,\r\n ContentSourcesRequestOptions,\r\n DefaultContentDisplayTypes,\r\n Descriptor,\r\n DescriptorOverrides,\r\n DiagnosticsOptions,\r\n DiagnosticsScopeLogs,\r\n DisplayLabelRequestOptions,\r\n DisplayLabelsRequestOptions,\r\n DisplayValueGroup,\r\n DistinctValuesRequestOptions,\r\n FilterByInstancePathsHierarchyRequestOptions,\r\n FilterByTextHierarchyRequestOptions,\r\n FormatsMap,\r\n HierarchyLevelDescriptorRequestOptions,\r\n HierarchyRequestOptions,\r\n InstanceKey,\r\n Item,\r\n Key,\r\n KeySet,\r\n LabelDefinition,\r\n NodeKey,\r\n NodePathElement,\r\n Paged,\r\n PagedResponse,\r\n PresentationError,\r\n PresentationIpcEvents,\r\n PresentationStatus,\r\n Prioritized,\r\n Ruleset,\r\n RulesetVariable,\r\n SelectClassInfo,\r\n UpdateInfo,\r\n WithCancelEvent,\r\n} from \"@itwin/presentation-common\";\r\nimport { PresentationBackendLoggerCategory } from \"./BackendLoggerCategory\";\r\nimport {\r\n createDefaultNativePlatform,\r\n NativePlatformDefinition,\r\n NativePlatformRequestTypes,\r\n NativePlatformResponse,\r\n NativePresentationDefaultUnitFormats,\r\n NativePresentationKeySetJSON,\r\n NativePresentationUnitSystem,\r\n PresentationNativePlatformResponseError,\r\n} from \"./NativePlatform\";\r\nimport { HierarchyCacheConfig, HierarchyCacheMode, PresentationManagerProps } from \"./PresentationManager\";\r\nimport { RulesetManager, RulesetManagerImpl } from \"./RulesetManager\";\r\nimport { BackendDiagnosticsAttribute, BackendDiagnosticsOptions, combineDiagnosticsOptions, getElementKey, reportDiagnostics } from \"./Utils\";\r\n\r\n/** @internal */\r\nexport class PresentationManagerDetail implements IDisposable {\r\n private _disposed: boolean;\r\n private _nativePlatform: NativePlatformDefinition | undefined;\r\n private _onManagerUsed: (() => void) | undefined;\r\n private _diagnosticsOptions: BackendDiagnosticsOptions | undefined;\r\n\r\n public rulesets: RulesetManager;\r\n public activeUnitSystem: UnitSystemKey | undefined;\r\n\r\n constructor(params: PresentationManagerProps) {\r\n this._disposed = false;\r\n\r\n this._nativePlatform =\r\n params.addon ??\r\n createNativePlatform(\r\n params.id ?? \"\",\r\n params.workerThreadsCount ?? 2,\r\n IpcHost.isValid ? ipcUpdatesHandler : noopUpdatesHandler,\r\n params.caching,\r\n params.defaultFormats,\r\n params.useMmap,\r\n );\r\n\r\n setupRulesets(this._nativePlatform, params.supplementalRulesetDirectories ?? [], params.rulesetDirectories ?? []);\r\n this.activeUnitSystem = params.defaultUnitSystem;\r\n\r\n this._onManagerUsed = undefined;\r\n this.rulesets = new RulesetManagerImpl(() => this.getNativePlatform());\r\n this._diagnosticsOptions = params.diagnostics;\r\n }\r\n\r\n public dispose(): void {\r\n if (this._disposed) {\r\n return;\r\n }\r\n\r\n this.getNativePlatform().dispose();\r\n this._nativePlatform = undefined;\r\n\r\n this._disposed = true;\r\n }\r\n\r\n public getNativePlatform(): NativePlatformDefinition {\r\n if (this._disposed) {\r\n throw new PresentationError(PresentationStatus.NotInitialized, \"Attempting to use Presentation manager after disposal\");\r\n }\r\n\r\n return this._nativePlatform!;\r\n }\r\n\r\n public setOnManagerUsedHandler(handler: () => void) {\r\n this._onManagerUsed = handler;\r\n }\r\n\r\n public async getNodes(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>>> & BackendDiagnosticsAttribute,\r\n ): Promise<string> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: parentKey ? NativePlatformRequestTypes.GetChildren : NativePlatformRequestTypes.GetRootNodes,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getNodesCount(\r\n requestOptions: WithCancelEvent<Prioritized<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<number> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: parentKey ? NativePlatformRequestTypes.GetChildrenCount : NativePlatformRequestTypes.GetRootNodesCount,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return JSON.parse(await this.request(params));\r\n }\r\n\r\n public async getNodesDescriptor(\r\n requestOptions: WithCancelEvent<Prioritized<HierarchyLevelDescriptorRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<string> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetNodesDescriptor,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getNodePaths(\r\n requestOptions: WithCancelEvent<Prioritized<FilterByInstancePathsHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n const { rulesetOrId, instancePaths, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetNodePaths,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n paths: instancePaths,\r\n };\r\n return JSON.parse(await this.request(params), NodePathElement.listReviver);\r\n }\r\n\r\n public async getFilteredNodePaths(\r\n requestOptions: WithCancelEvent<Prioritized<FilterByTextHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n const { rulesetOrId, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetFilteredNodePaths,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n };\r\n return JSON.parse(await this.request(params), NodePathElement.listReviver);\r\n }\r\n\r\n public async getContentDescriptor(requestOptions: WithCancelEvent<Prioritized<ContentDescriptorRequestOptions<IModelDb, KeySet>>>): Promise<string> {\r\n const { rulesetOrId, contentFlags, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentDescriptor,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n contentFlags: contentFlags ?? ContentFlags.DescriptorOnly, // only set \"descriptor only\" flag if there are no flags provided\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getContentSources(\r\n requestOptions: WithCancelEvent<Prioritized<ContentSourcesRequestOptions<IModelDb>>> & BackendDiagnosticsAttribute,\r\n ): Promise<SelectClassInfo[]> {\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSources,\r\n rulesetId: \"ElementProperties\",\r\n ...requestOptions,\r\n };\r\n const reviver = (key: string, value: any) => {\r\n return key === \"\" ? SelectClassInfo.listFromCompressedJSON(value.sources, value.classesMap) : value;\r\n };\r\n return JSON.parse(await this.request(params), reviver);\r\n }\r\n\r\n public async getContentSetSize(\r\n requestOptions: WithCancelEvent<Prioritized<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<number> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSetSize,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n return JSON.parse(await this.request(params));\r\n }\r\n\r\n public async getContentSet(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<Item[]> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSet,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n // eslint-disable-next-line @typescript-eslint/unbound-method\r\n return JSON.parse(await this.request(params), Item.listReviver);\r\n }\r\n\r\n public async getContent(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<Content | undefined> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContent,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n return JSON.parse(await this.request(params), (key, value) => Content.reviver(key, value));\r\n }\r\n\r\n public async getPagedDistinctValues(\r\n requestOptions: WithCancelEvent<Prioritized<DistinctValuesRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<PagedResponse<DisplayValueGroup>> {\r\n const { rulesetOrId, ...strippedOptions } = requestOptions;\r\n const { descriptor, keys, ...strippedOptionsNoDescriptorAndKeys } = strippedOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetPagedDistinctValues,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptionsNoDescriptorAndKeys,\r\n keys: getKeysForContentRequest(keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n const reviver = (key: string, value: any) => {\r\n return key === \"\"\r\n ? {\r\n total: value.total,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n items: value.items.map(DisplayValueGroup.fromJSON),\r\n }\r\n : value;\r\n };\r\n return JSON.parse(await this.request(params), reviver);\r\n }\r\n\r\n public async getDisplayLabelDefinition(\r\n requestOptions: WithCancelEvent<Prioritized<DisplayLabelRequestOptions<IModelDb, InstanceKey>>> & BackendDiagnosticsAttribute,\r\n ): Promise<LabelDefinition> {\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetDisplayLabel,\r\n ...requestOptions,\r\n };\r\n return JSON.parse(await this.request(params));\r\n }\r\n\r\n public async getDisplayLabelDefinitions(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<DisplayLabelsRequestOptions<IModelDb, InstanceKey>>>> & BackendDiagnosticsAttribute,\r\n ): Promise<LabelDefinition[]> {\r\n const concreteKeys = requestOptions.keys\r\n .map((k) => {\r\n if (k.className === \"BisCore:Element\") {\r\n return getElementKey(requestOptions.imodel, k.id);\r\n }\r\n return k;\r\n })\r\n .filter<InstanceKey>((k): k is InstanceKey => !!k);\r\n const contentRequestOptions: ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet> = {\r\n ...requestOptions,\r\n rulesetOrId: \"RulesDrivenECPresentationManager_RulesetId_DisplayLabel\",\r\n descriptor: {\r\n displayType: DefaultContentDisplayTypes.List,\r\n contentFlags: ContentFlags.ShowLabels | ContentFlags.NoFields,\r\n },\r\n keys: new KeySet(concreteKeys),\r\n };\r\n const content = await this.getContent(contentRequestOptions);\r\n return concreteKeys.map((key) => {\r\n const item = content ? content.contentSet.find((it) => it.primaryKeys.length > 0 && InstanceKey.compare(it.primaryKeys[0], key) === 0) : undefined;\r\n if (!item) {\r\n return { displayValue: \"\", rawValue: \"\", typeName: \"\" };\r\n }\r\n return item.label;\r\n });\r\n }\r\n\r\n /** Registers given ruleset and replaces the ruleset with its ID in the resulting object */\r\n public registerRuleset(rulesetOrId: Ruleset | string): string {\r\n if (typeof rulesetOrId === \"object\") {\r\n const rulesetWithNativeId = { ...rulesetOrId, id: this.getRulesetId(rulesetOrId) };\r\n return this.rulesets.add(rulesetWithNativeId).id;\r\n }\r\n\r\n return rulesetOrId;\r\n }\r\n\r\n /** @internal */\r\n public getRulesetId(rulesetOrId: Ruleset | string): string {\r\n return getRulesetIdObject(rulesetOrId).uniqueId;\r\n }\r\n\r\n public async request(params: RequestParams): Promise<string> {\r\n this._onManagerUsed?.();\r\n const { requestId, imodel, unitSystem, diagnostics: requestDiagnostics, cancelEvent, ...strippedParams } = params;\r\n const imodelAddon = this.getNativePlatform().getImodelAddon(imodel);\r\n const response = await withOptionalDiagnostics([this._diagnosticsOptions, requestDiagnostics], async (diagnosticsOptions) => {\r\n const nativeRequestParams: any = {\r\n requestId,\r\n params: {\r\n unitSystem: toOptionalNativeUnitSystem(unitSystem ?? this.activeUnitSystem),\r\n ...strippedParams,\r\n ...(diagnosticsOptions ? { diagnostics: diagnosticsOptions } : undefined),\r\n },\r\n };\r\n return this.getNativePlatform().handleRequest(imodelAddon, JSON.stringify(nativeRequestParams), cancelEvent);\r\n });\r\n return response.result;\r\n }\r\n}\r\n\r\nasync function withOptionalDiagnostics(\r\n diagnosticsOptions: Array<BackendDiagnosticsOptions | undefined>,\r\n nativePlatformRequestHandler: (combinedDiagnosticsOptions: DiagnosticsOptions | undefined) => Promise<NativePlatformResponse<string>>,\r\n): Promise<NativePlatformResponse<string>> {\r\n const contexts = diagnosticsOptions.map((d) => d?.requestContextSupplier?.());\r\n const combinedOptions = combineDiagnosticsOptions(...diagnosticsOptions);\r\n let responseDiagnostics: DiagnosticsScopeLogs | undefined;\r\n try {\r\n const response = await nativePlatformRequestHandler(combinedOptions);\r\n responseDiagnostics = response.diagnostics;\r\n return response;\r\n } catch (e) {\r\n if (e instanceof PresentationNativePlatformResponseError) {\r\n responseDiagnostics = e.diagnostics;\r\n }\r\n throw e;\r\n } finally {\r\n if (responseDiagnostics) {\r\n const diagnostics = { logs: [responseDiagnostics] };\r\n diagnosticsOptions.forEach((options, i) => {\r\n options && reportDiagnostics(diagnostics, options, contexts[i]);\r\n });\r\n }\r\n }\r\n}\r\n\r\ninterface RequestParams {\r\n diagnostics?: BackendDiagnosticsOptions;\r\n requestId: string;\r\n imodel: IModelDb;\r\n unitSystem?: UnitSystemKey;\r\n cancelEvent?: BeEvent<() => void>;\r\n}\r\n\r\nfunction setupRulesets(nativePlatform: NativePlatformDefinition, supplementalRulesetDirectories: string[], primaryRulesetDirectories: string[]): void {\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n const elementPropertiesRuleset: Ruleset = require(\"./primary-presentation-rules/ElementProperties.PresentationRuleSet.json\");\r\n nativePlatform.addRuleset(JSON.stringify(elementPropertiesRuleset));\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n const bisSupplementalRuleset: Ruleset = require(\"./supplemental-presentation-rules/BisCore.PresentationRuleSet.json\");\r\n nativePlatform.registerSupplementalRuleset(JSON.stringify(bisSupplementalRuleset));\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n const funcSupplementalRuleset: Ruleset = require(\"./supplemental-presentation-rules/Functional.PresentationRuleSet.json\");\r\n nativePlatform.registerSupplementalRuleset(JSON.stringify(funcSupplementalRuleset));\r\n\r\n nativePlatform.setupSupplementalRulesetDirectories(collateAssetDirectories(supplementalRulesetDirectories));\r\n nativePlatform.setupRulesetDirectories(collateAssetDirectories(primaryRulesetDirectories));\r\n}\r\n\r\ninterface RulesetIdObject {\r\n uniqueId: string;\r\n parts: {\r\n id: string;\r\n hash?: string;\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getRulesetIdObject(rulesetOrId: Ruleset | string): RulesetIdObject {\r\n if (typeof rulesetOrId === \"object\") {\r\n if (IpcHost.isValid) {\r\n // in case of native apps we don't want to enforce ruleset id uniqueness as ruleset variables\r\n // are stored on a backend and creating new id will lose those variables\r\n return {\r\n uniqueId: rulesetOrId.id,\r\n parts: { id: rulesetOrId.id },\r\n };\r\n }\r\n\r\n const hashedId = hash.MD5(rulesetOrId);\r\n return {\r\n uniqueId: `${rulesetOrId.id}-${hashedId}`,\r\n parts: {\r\n id: rulesetOrId.id,\r\n hash: hashedId,\r\n },\r\n };\r\n }\r\n\r\n return { uniqueId: rulesetOrId, parts: { id: rulesetOrId } };\r\n}\r\n\r\n/** @internal */\r\nexport function getKeysForContentRequest(\r\n keys: Readonly<KeySet>,\r\n classInstanceKeysProcessor?: (keys: Map<string, Set<string>>) => void,\r\n): NativePresentationKeySetJSON {\r\n const result: NativePresentationKeySetJSON = {\r\n instanceKeys: [],\r\n nodeKeys: [],\r\n };\r\n const classInstancesMap = new Map<string, Set<string>>();\r\n keys.forEach((key) => {\r\n if (Key.isNodeKey(key)) {\r\n result.nodeKeys.push(key);\r\n }\r\n\r\n if (Key.isInstanceKey(key)) {\r\n addInstanceKey(classInstancesMap, key);\r\n }\r\n });\r\n\r\n if (classInstanceKeysProcessor) {\r\n classInstanceKeysProcessor(classInstancesMap);\r\n }\r\n\r\n for (const entry of classInstancesMap) {\r\n if (entry[1].size > 0) {\r\n result.instanceKeys.push([entry[\"0\"], [...entry[1]]]);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function bisElementInstanceKeysProcessor(imodel: IModelDb, classInstancesMap: Map<string, Set<string>>) {\r\n const elementClassName = \"BisCore:Element\";\r\n const elementIds = classInstancesMap.get(elementClassName);\r\n if (elementIds) {\r\n const deleteElementIds = new Array<string>();\r\n elementIds.forEach((elementId) => {\r\n const concreteKey = getElementKey(imodel, elementId);\r\n if (concreteKey && concreteKey.className !== elementClassName) {\r\n deleteElementIds.push(elementId);\r\n addInstanceKey(classInstancesMap, { className: concreteKey.className, id: elementId });\r\n }\r\n });\r\n for (const id of deleteElementIds) {\r\n elementIds.delete(id);\r\n }\r\n }\r\n}\r\n\r\nfunction addInstanceKey(classInstancesMap: Map<string, Set<string>>, key: InstanceKey): void {\r\n let set = classInstancesMap.get(key.className);\r\n // istanbul ignore else\r\n if (!set) {\r\n set = new Set();\r\n classInstancesMap.set(key.className, set);\r\n }\r\n set.add(key.id);\r\n}\r\n\r\nfunction createNativePlatform(\r\n id: string,\r\n workerThreadsCount: number,\r\n updateCallback: (updateInfo: UpdateInfo | undefined) => void,\r\n caching: PresentationManagerProps[\"caching\"],\r\n defaultFormats: FormatsMap | undefined,\r\n useMmap: boolean | number | undefined,\r\n): NativePlatformDefinition {\r\n return new (createDefaultNativePlatform({\r\n id,\r\n taskAllocationsMap: { [Number.MAX_SAFE_INTEGER]: workerThreadsCount },\r\n updateCallback,\r\n cacheConfig: createCacheConfig(caching?.hierarchies),\r\n contentCacheSize: caching?.content?.size,\r\n workerConnectionCacheSize: caching?.workerConnectionCacheSize,\r\n defaultFormats: toNativeUnitFormatsMap(defaultFormats),\r\n useMmap,\r\n }))();\r\n\r\n function createCacheConfig(config?: HierarchyCacheConfig): IModelJsNative.ECPresentationHierarchyCacheConfig {\r\n switch (config?.mode) {\r\n case HierarchyCacheMode.Disk:\r\n return { ...config, directory: normalizeDirectory(config.directory) };\r\n\r\n case HierarchyCacheMode.Hybrid:\r\n return {\r\n ...config,\r\n disk: config.disk ? { ...config.disk, directory: normalizeDirectory(config.disk.directory) } : undefined,\r\n };\r\n\r\n case HierarchyCacheMode.Memory:\r\n return config;\r\n\r\n default:\r\n return { mode: HierarchyCacheMode.Disk, directory: \"\" };\r\n }\r\n }\r\n\r\n function normalizeDirectory(directory?: string): string {\r\n return directory ? path.resolve(directory) : \"\";\r\n }\r\n\r\n function toNativeUnitFormatsMap(map: FormatsMap | undefined): NativePresentationDefaultUnitFormats | undefined {\r\n if (!map) {\r\n return undefined;\r\n }\r\n\r\n const nativeFormatsMap: NativePresentationDefaultUnitFormats = {};\r\n Object.entries(map).forEach(([phenomenon, formats]) => {\r\n nativeFormatsMap[phenomenon] = (Array.isArray(formats) ? formats : [formats]).map((unitSystemsFormat) => ({\r\n unitSystems: unitSystemsFormat.unitSystems.map(toNativeUnitSystem),\r\n format: unitSystemsFormat.format,\r\n }));\r\n });\r\n return nativeFormatsMap;\r\n }\r\n}\r\n\r\nfunction toOptionalNativeUnitSystem(unitSystem: UnitSystemKey | undefined): NativePresentationUnitSystem | undefined {\r\n return unitSystem ? toNativeUnitSystem(unitSystem) : undefined;\r\n}\r\n\r\nfunction toNativeUnitSystem(unitSystem: UnitSystemKey): NativePresentationUnitSystem {\r\n switch (unitSystem) {\r\n case \"imperial\":\r\n return NativePresentationUnitSystem.BritishImperial;\r\n case \"metric\":\r\n return NativePresentationUnitSystem.Metric;\r\n case \"usCustomary\":\r\n return NativePresentationUnitSystem.UsCustomary;\r\n case \"usSurvey\":\r\n return NativePresentationUnitSystem.UsSurvey;\r\n }\r\n}\r\n\r\nfunction collateAssetDirectories(dirs: string[]): string[] {\r\n return [...new Set(dirs)];\r\n}\r\nconst createContentDescriptorOverrides = (descriptorOrOverrides: Descriptor | DescriptorOverrides): DescriptorOverrides => {\r\n if (descriptorOrOverrides instanceof Descriptor) {\r\n return descriptorOrOverrides.createDescriptorOverrides();\r\n }\r\n return descriptorOrOverrides;\r\n};\r\n\r\nfunction parseUpdateInfo(info: UpdateInfo | undefined) {\r\n if (info === undefined) {\r\n return undefined;\r\n }\r\n\r\n const parsedInfo: UpdateInfo = {};\r\n for (const fileName in info) {\r\n // istanbul ignore if\r\n if (!info.hasOwnProperty(fileName)) {\r\n continue;\r\n }\r\n\r\n const imodelDb = IModelDb.findByFilename(fileName);\r\n if (!imodelDb) {\r\n Logger.logError(PresentationBackendLoggerCategory.PresentationManager, `Update records IModelDb not found with path ${fileName}`);\r\n continue;\r\n }\r\n\r\n parsedInfo[imodelDb.getRpcProps().key] = info[fileName];\r\n }\r\n return Object.keys(parsedInfo).length > 0 ? parsedInfo : undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function ipcUpdatesHandler(info: UpdateInfo | undefined) {\r\n const parsed = parseUpdateInfo(info);\r\n if (parsed) {\r\n IpcHost.send(PresentationIpcEvents.Update, parsed);\r\n }\r\n}\r\n\r\n/** @internal */\r\n// istanbul ignore next\r\nexport function noopUpdatesHandler(_info: UpdateInfo | undefined) {}\r\n"]}
|
|
@@ -14,7 +14,7 @@ const presentation_common_1 = require("@itwin/presentation-common");
|
|
|
14
14
|
const BackendLoggerCategory_1 = require("./BackendLoggerCategory");
|
|
15
15
|
const Presentation_1 = require("./Presentation");
|
|
16
16
|
const TemporaryStorage_1 = require("./TemporaryStorage");
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
18
18
|
const packageJsonVersion = require("../../../package.json").version;
|
|
19
19
|
/** @internal */
|
|
20
20
|
exports.MAX_ALLOWED_PAGE_SIZE = 1000;
|
|
@@ -164,7 +164,7 @@ class PresentationRpcImpl extends presentation_common_1.PresentationRpcInterface
|
|
|
164
164
|
let timeout;
|
|
165
165
|
const timeoutPromise = new Promise((_resolve, reject) => {
|
|
166
166
|
timeout = setTimeout(() => {
|
|
167
|
-
reject();
|
|
167
|
+
reject(new Error());
|
|
168
168
|
}, this._requestTimeout);
|
|
169
169
|
});
|
|
170
170
|
core_bentley_1.Logger.logTrace(BackendLoggerCategory_1.PresentationBackendLoggerCategory.Rpc, `Returning a promise with a timeout of ${this._requestTimeout}.`);
|
|
@@ -203,7 +203,7 @@ class PresentationRpcImpl extends presentation_common_1.PresentationRpcInterface
|
|
|
203
203
|
this.getManager(requestOptions.clientId).getDetail().getNodes(options),
|
|
204
204
|
this.getManager(requestOptions.clientId).getNodesCount(options),
|
|
205
205
|
]);
|
|
206
|
-
// eslint-disable-next-line
|
|
206
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
207
207
|
const nodesJson = JSON.parse(serializedNodesJson);
|
|
208
208
|
return {
|
|
209
209
|
total: count,
|
|
@@ -223,14 +223,14 @@ class PresentationRpcImpl extends presentation_common_1.PresentationRpcInterface
|
|
|
223
223
|
async getNodePaths(token, requestOptions) {
|
|
224
224
|
return this.makeRequest(token, "getNodePaths", requestOptions, async (options) => {
|
|
225
225
|
const result = await this.getManager(requestOptions.clientId).getDetail().getNodePaths(options);
|
|
226
|
-
// eslint-disable-next-line
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
227
227
|
return result.map(presentation_common_1.NodePathElement.toJSON);
|
|
228
228
|
});
|
|
229
229
|
}
|
|
230
230
|
async getFilteredNodePaths(token, requestOptions) {
|
|
231
231
|
return this.makeRequest(token, "getFilteredNodePaths", requestOptions, async (options) => {
|
|
232
232
|
const result = await this.getManager(requestOptions.clientId).getDetail().getFilteredNodePaths(options);
|
|
233
|
-
// eslint-disable-next-line
|
|
233
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
234
234
|
return result.map(presentation_common_1.NodePathElement.toJSON);
|
|
235
235
|
});
|
|
236
236
|
}
|
|
@@ -333,7 +333,7 @@ class PresentationRpcImpl extends presentation_common_1.PresentationRpcInterface
|
|
|
333
333
|
const response = await this.getManager(requestOptions.clientId).getDetail().getPagedDistinctValues(options);
|
|
334
334
|
return {
|
|
335
335
|
...response,
|
|
336
|
-
// eslint-disable-next-line
|
|
336
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
337
337
|
items: response.items.map(presentation_common_1.DisplayValueGroup.toJSON),
|
|
338
338
|
};
|
|
339
339
|
});
|
|
@@ -412,12 +412,12 @@ const getValidPageSize = (size, maxPageSize) => {
|
|
|
412
412
|
const requestedSize = size ?? 0;
|
|
413
413
|
return requestedSize === 0 || requestedSize > maxPageSize ? maxPageSize : requestedSize;
|
|
414
414
|
};
|
|
415
|
-
// eslint-disable-next-line
|
|
415
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
416
416
|
const nodeKeyFromJson = (json) => {
|
|
417
417
|
if (!json) {
|
|
418
418
|
return undefined;
|
|
419
419
|
}
|
|
420
|
-
// eslint-disable-next-line
|
|
420
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
421
421
|
return presentation_common_1.NodeKey.fromJSON(json);
|
|
422
422
|
};
|
|
423
423
|
//# sourceMappingURL=PresentationRpcImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationRpcImpl.js","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationRpcImpl.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 RPC\r\n */\r\n\r\nimport { IModelDb, RpcTrace } from \"@itwin/core-backend\";\r\nimport { assert, BeEvent, Id64String, IDisposable, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps } from \"@itwin/core-common\";\r\nimport {\r\n buildElementProperties,\r\n ClientDiagnostics,\r\n ComputeSelectionRequestOptions,\r\n ComputeSelectionRpcRequestOptions,\r\n ContentDescriptorRpcRequestOptions,\r\n ContentFlags,\r\n ContentInstanceKeysRpcRequestOptions,\r\n ContentRpcRequestOptions,\r\n ContentSourcesRpcRequestOptions,\r\n ContentSourcesRpcResult,\r\n DefaultContentDisplayTypes,\r\n DescriptorJSON,\r\n Diagnostics,\r\n DisplayLabelRpcRequestOptions,\r\n DisplayLabelsRpcRequestOptions,\r\n DisplayValueGroup,\r\n DisplayValueGroupJSON,\r\n DistinctValuesRpcRequestOptions,\r\n ElementProperties,\r\n FilterByInstancePathsHierarchyRpcRequestOptions,\r\n FilterByTextHierarchyRpcRequestOptions,\r\n HierarchyLevelDescriptorRpcRequestOptions,\r\n HierarchyLevelJSON,\r\n HierarchyRpcRequestOptions,\r\n isComputeSelectionRequestOptions,\r\n ItemJSON,\r\n KeySet,\r\n KeySetJSON,\r\n LabelDefinition,\r\n NodeJSON,\r\n NodeKey,\r\n NodeKeyJSON,\r\n NodePathElement,\r\n NodePathElementJSON,\r\n Paged,\r\n PagedResponse,\r\n PageOptions,\r\n PresentationError,\r\n PresentationRpcInterface,\r\n PresentationRpcResponse,\r\n PresentationRpcResponseData,\r\n PresentationStatus,\r\n RpcDiagnosticsOptions,\r\n Ruleset,\r\n RulesetVariable,\r\n RulesetVariableJSON,\r\n SelectClassInfo,\r\n SelectionScope,\r\n SelectionScopeRpcRequestOptions,\r\n SingleElementPropertiesRpcRequestOptions,\r\n} from \"@itwin/presentation-common\";\r\nimport { PresentationBackendLoggerCategory } from \"./BackendLoggerCategory\";\r\nimport { Presentation } from \"./Presentation\";\r\nimport { PresentationManager } from \"./PresentationManager\";\r\nimport { TemporaryStorage } from \"./TemporaryStorage\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-var-requires\r\nconst packageJsonVersion = require(\"../../../package.json\").version;\r\n\r\ntype ContentGetter<TResult = any, TOptions = any> = (requestOptions: TOptions) => TResult;\r\n\r\n/** @internal */\r\nexport const MAX_ALLOWED_PAGE_SIZE = 1000;\r\n/** @internal */\r\nexport const MAX_ALLOWED_KEYS_PAGE_SIZE = 10000;\r\n\r\nconst DEFAULT_REQUEST_TIMEOUT = 5000;\r\n\r\n/**\r\n * The backend implementation of PresentationRpcInterface. All it's basically\r\n * responsible for is forwarding calls to [[Presentation.manager]].\r\n *\r\n * @internal\r\n */\r\nexport class PresentationRpcImpl extends PresentationRpcInterface implements IDisposable {\r\n private _requestTimeout: number;\r\n private _pendingRequests: TemporaryStorage<PresentationRpcResponse<any>>;\r\n private _cancelEvents: Map<string, BeEvent<() => void>>;\r\n\r\n public constructor(props?: { requestTimeout?: number }) {\r\n super();\r\n this._requestTimeout = props?.requestTimeout ?? DEFAULT_REQUEST_TIMEOUT;\r\n this._pendingRequests = new TemporaryStorage({\r\n // remove the pending request after request timeout + 10 seconds - this gives\r\n // frontend 10 seconds to re-send the request until it's removed from requests' cache\r\n unusedValueLifetime: this._requestTimeout > 0 ? this._requestTimeout + 10 * 1000 : undefined,\r\n\r\n // attempt to clean up every second\r\n cleanupInterval: 1000,\r\n\r\n cleanupHandler: (id, _, reason) => {\r\n if (reason !== \"request\") {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Cleaning up request without frontend retrieving it: ${id}.`);\r\n // istanbul ignore next\r\n this._cancelEvents.get(id)?.raiseEvent();\r\n }\r\n this._cancelEvents.delete(id);\r\n },\r\n });\r\n this._cancelEvents = new Map<string, BeEvent<() => void>>();\r\n }\r\n\r\n public dispose() {\r\n this._pendingRequests.dispose();\r\n }\r\n\r\n public get requestTimeout() {\r\n return this._requestTimeout;\r\n }\r\n\r\n public get pendingRequests() {\r\n return this._pendingRequests;\r\n }\r\n\r\n /** Returns an ok response with result inside */\r\n private successResponse<TResult>(result: TResult, diagnostics?: ClientDiagnostics) {\r\n return {\r\n statusCode: PresentationStatus.Success,\r\n result,\r\n diagnostics,\r\n };\r\n }\r\n\r\n /** Returns a bad request response with empty result and an error code */\r\n private errorResponse(errorCode: PresentationStatus, errorMessage?: string, diagnostics?: ClientDiagnostics) {\r\n return {\r\n statusCode: errorCode,\r\n result: undefined,\r\n errorMessage,\r\n diagnostics,\r\n };\r\n }\r\n\r\n /**\r\n * Get the [[PresentationManager]] used by this RPC impl.\r\n */\r\n public getManager(clientId?: string): PresentationManager {\r\n return Presentation.getManager(clientId);\r\n }\r\n\r\n private async getIModel(token: IModelRpcProps): Promise<IModelDb> {\r\n let imodel: IModelDb;\r\n try {\r\n imodel = IModelDb.findByKey(token.key);\r\n // call refreshContainer, just in case this is a V2 checkpoint whose sasToken is about to expire, or its default transaction is about to be restarted.\r\n await imodel.refreshContainerForRpc(RpcTrace.expectCurrentActivity.accessToken);\r\n } catch {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, \"IModelRpcProps doesn't point to a valid iModel\");\r\n }\r\n return imodel;\r\n }\r\n\r\n private async makeRequest<\r\n TRpcOptions extends { rulesetOrId?: Ruleset | string; clientId?: string; diagnostics?: RpcDiagnosticsOptions; rulesetVariables?: RulesetVariableJSON[] },\r\n TResult,\r\n >(token: IModelRpcProps, requestId: string, requestOptions: TRpcOptions, request: ContentGetter<Promise<TResult>>): PresentationRpcResponse<TResult> {\r\n const requestKey = JSON.stringify({ iModelKey: token.key, requestId, requestOptions });\r\n\r\n Logger.logInfo(PresentationBackendLoggerCategory.Rpc, `Received '${requestId}' request. Params: ${requestKey}`);\r\n\r\n let imodel: IModelDb;\r\n try {\r\n imodel = await this.getIModel(token);\r\n } catch (e) {\r\n assert(e instanceof Error);\r\n return this.errorResponse(PresentationStatus.InvalidArgument, e.message);\r\n }\r\n\r\n let resultPromise = this._pendingRequests.getValue(requestKey);\r\n if (resultPromise) {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request already pending`);\r\n } else {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request not found, creating a new one`);\r\n const { clientId: _, diagnostics: diagnosticsOptions, rulesetVariables, ...options } = requestOptions;\r\n const managerRequestOptions: any = {\r\n ...options,\r\n imodel,\r\n cancelEvent: new BeEvent<() => void>(),\r\n };\r\n\r\n // set up ruleset variables\r\n if (rulesetVariables) {\r\n managerRequestOptions.rulesetVariables = rulesetVariables.map(RulesetVariable.fromJSON);\r\n }\r\n\r\n // set up diagnostics listener\r\n let diagnostics: ClientDiagnostics | undefined;\r\n const getDiagnostics = (): ClientDiagnostics => {\r\n if (!diagnostics) {\r\n diagnostics = {};\r\n }\r\n return diagnostics;\r\n };\r\n if (diagnosticsOptions) {\r\n if (diagnosticsOptions.backendVersion) {\r\n getDiagnostics().backendVersion = packageJsonVersion;\r\n }\r\n managerRequestOptions.diagnostics = {\r\n ...diagnosticsOptions,\r\n handler: (d: Diagnostics) => {\r\n if (d.logs) {\r\n const target = getDiagnostics();\r\n if (target.logs) {\r\n target.logs.push(...d.logs);\r\n } else {\r\n target.logs = [...d.logs];\r\n }\r\n }\r\n },\r\n };\r\n }\r\n\r\n // initiate request\r\n resultPromise = request(managerRequestOptions)\r\n .then((result) => this.successResponse(result, diagnostics))\r\n .catch((e: PresentationError) => this.errorResponse(e.errorNumber, e.message, diagnostics));\r\n\r\n // store the request promise\r\n this._pendingRequests.addValue(requestKey, resultPromise);\r\n this._cancelEvents.set(requestKey, managerRequestOptions.cancelEvent);\r\n }\r\n\r\n if (this._requestTimeout === 0) {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request timeout not configured, returning promise without a timeout.`);\r\n void resultPromise.finally(() => {\r\n this._pendingRequests.deleteValue(requestKey);\r\n });\r\n return resultPromise;\r\n }\r\n\r\n let timeout: NodeJS.Timeout;\r\n const timeoutPromise = new Promise<any>((_resolve, reject) => {\r\n timeout = setTimeout(() => {\r\n reject();\r\n }, this._requestTimeout);\r\n });\r\n\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Returning a promise with a timeout of ${this._requestTimeout}.`);\r\n return Promise.race([resultPromise, timeoutPromise])\r\n .catch<PresentationRpcResponseData>(() => {\r\n // note: error responses from the manager get handled when creating `resultPromise`, so we can only get here due\r\n // to a timeout exception\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request timeout, returning \"BackendTimeout\" status.`);\r\n return this.errorResponse(PresentationStatus.BackendTimeout);\r\n })\r\n .then((response: PresentationRpcResponseData<TResult>) => {\r\n if (response.statusCode !== PresentationStatus.BackendTimeout) {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request completed, returning result.`);\r\n this._pendingRequests.deleteValue(requestKey);\r\n }\r\n clearTimeout(timeout);\r\n return response;\r\n });\r\n }\r\n\r\n public override async getNodesCount(token: IModelRpcProps, requestOptions: HierarchyRpcRequestOptions): PresentationRpcResponse<number> {\r\n return this.makeRequest(token, \"getNodesCount\", requestOptions, async (options) => {\r\n options = {\r\n ...options,\r\n parentKey: nodeKeyFromJson(options.parentKey),\r\n };\r\n return this.getManager(requestOptions.clientId).getNodesCount(options);\r\n });\r\n }\r\n\r\n public override async getPagedNodes(\r\n token: IModelRpcProps,\r\n requestOptions: Paged<HierarchyRpcRequestOptions>,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): PresentationRpcResponse<PagedResponse<NodeJSON>> {\r\n return this.makeRequest(token, \"getPagedNodes\", requestOptions, async (options) => {\r\n options = enforceValidPageSize({\r\n ...options,\r\n parentKey: nodeKeyFromJson(options.parentKey),\r\n });\r\n const [serializedNodesJson, count] = await Promise.all([\r\n this.getManager(requestOptions.clientId).getDetail().getNodes(options),\r\n this.getManager(requestOptions.clientId).getNodesCount(options),\r\n ]);\r\n // eslint-disable-next-line deprecation/deprecation\r\n const nodesJson = JSON.parse(serializedNodesJson) as HierarchyLevelJSON;\r\n return {\r\n total: count,\r\n items: nodesJson.nodes,\r\n };\r\n });\r\n }\r\n\r\n public override async getNodesDescriptor(\r\n token: IModelRpcProps,\r\n requestOptions: HierarchyLevelDescriptorRpcRequestOptions,\r\n ): PresentationRpcResponse<string | DescriptorJSON | undefined> {\r\n return this.makeRequest(token, \"getNodesDescriptor\", requestOptions, async (options) => {\r\n options = {\r\n ...options,\r\n parentKey: nodeKeyFromJson(options.parentKey),\r\n };\r\n return this.getManager(requestOptions.clientId).getDetail().getNodesDescriptor(options);\r\n });\r\n }\r\n\r\n public override async getNodePaths(\r\n token: IModelRpcProps,\r\n requestOptions: FilterByInstancePathsHierarchyRpcRequestOptions,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): PresentationRpcResponse<NodePathElementJSON[]> {\r\n return this.makeRequest(token, \"getNodePaths\", requestOptions, async (options) => {\r\n const result = await this.getManager(requestOptions.clientId).getDetail().getNodePaths(options);\r\n // eslint-disable-next-line deprecation/deprecation\r\n return result.map(NodePathElement.toJSON);\r\n });\r\n }\r\n\r\n public override async getFilteredNodePaths(\r\n token: IModelRpcProps,\r\n requestOptions: FilterByTextHierarchyRpcRequestOptions,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): PresentationRpcResponse<NodePathElementJSON[]> {\r\n return this.makeRequest(token, \"getFilteredNodePaths\", requestOptions, async (options) => {\r\n const result = await this.getManager(requestOptions.clientId).getDetail().getFilteredNodePaths(options);\r\n // eslint-disable-next-line deprecation/deprecation\r\n return result.map(NodePathElement.toJSON);\r\n });\r\n }\r\n\r\n public override async getContentSources(\r\n token: IModelRpcProps,\r\n requestOptions: ContentSourcesRpcRequestOptions,\r\n ): PresentationRpcResponse<ContentSourcesRpcResult> {\r\n return this.makeRequest(token, \"getContentSources\", requestOptions, async (options) => {\r\n const result = await this.getManager(requestOptions.clientId).getContentSources(options);\r\n const classesMap = {};\r\n const selectClasses = result.map((sci) => SelectClassInfo.toCompressedJSON(sci, classesMap));\r\n return { sources: selectClasses, classesMap };\r\n });\r\n }\r\n\r\n public override async getContentDescriptor(\r\n token: IModelRpcProps,\r\n requestOptions: ContentDescriptorRpcRequestOptions,\r\n ): PresentationRpcResponse<DescriptorJSON | undefined> {\r\n return this.makeRequest(token, \"getContentDescriptor\", requestOptions, async (options) => {\r\n options = {\r\n ...options,\r\n contentFlags: (options.contentFlags ?? 0) | ContentFlags.DescriptorOnly, // always append the \"descriptor only\" flag when handling request from the frontend\r\n keys: KeySet.fromJSON(options.keys),\r\n };\r\n if (options.transport === \"unparsed-json\") {\r\n // Here we send a plain JSON string but we will parse it to DescriptorJSON on the frontend. This way we are\r\n // bypassing unnecessary deserialization and serialization.\r\n return Presentation.getManager(requestOptions.clientId).getDetail().getContentDescriptor(options) as unknown as DescriptorJSON | undefined;\r\n } else {\r\n // Support for older frontends that still expect a parsed descriptor\r\n const descriptor = await Presentation.getManager(requestOptions.clientId).getContentDescriptor(options);\r\n return descriptor?.toJSON();\r\n }\r\n });\r\n }\r\n\r\n public override async getContentSetSize(token: IModelRpcProps, requestOptions: ContentRpcRequestOptions): PresentationRpcResponse<number> {\r\n return this.makeRequest(token, \"getContentSetSize\", requestOptions, async (options) => {\r\n options = {\r\n ...options,\r\n keys: KeySet.fromJSON(options.keys),\r\n };\r\n return this.getManager(requestOptions.clientId).getContentSetSize(options);\r\n });\r\n }\r\n\r\n public override async getPagedContent(\r\n token: IModelRpcProps,\r\n requestOptions: Paged<ContentRpcRequestOptions>,\r\n ): PresentationRpcResponse<{ descriptor: DescriptorJSON; contentSet: PagedResponse<ItemJSON> } | undefined> {\r\n return this.makeRequest(token, \"getPagedContent\", requestOptions, async (options) => {\r\n options = enforceValidPageSize({\r\n ...options,\r\n keys: KeySet.fromJSON(options.keys),\r\n });\r\n\r\n const [size, content] = await Promise.all([\r\n this.getManager(requestOptions.clientId).getContentSetSize(options),\r\n this.getManager(requestOptions.clientId).getDetail().getContent(options),\r\n ]);\r\n\r\n if (!content) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n descriptor: content.descriptor.toJSON(),\r\n contentSet: {\r\n total: size,\r\n items: content.contentSet.map((i) => i.toJSON()),\r\n },\r\n };\r\n });\r\n }\r\n\r\n public override async getPagedContentSet(\r\n token: IModelRpcProps,\r\n requestOptions: Paged<ContentRpcRequestOptions>,\r\n ): PresentationRpcResponse<PagedResponse<ItemJSON>> {\r\n const response = await this.getPagedContent(token, requestOptions);\r\n if (response.statusCode !== PresentationStatus.Success) {\r\n return this.errorResponse(response.statusCode, response.errorMessage, response.diagnostics);\r\n }\r\n if (!response.result) {\r\n return this.errorResponse(PresentationStatus.Error, `Failed to get content set (received a success response with empty result)`, response.diagnostics);\r\n }\r\n return {\r\n ...response,\r\n result: response.result.contentSet,\r\n };\r\n }\r\n\r\n public override async getElementProperties(\r\n token: IModelRpcProps,\r\n requestOptions: SingleElementPropertiesRpcRequestOptions,\r\n ): PresentationRpcResponse<ElementProperties | undefined> {\r\n return this.makeRequest(token, \"getElementProperties\", { ...requestOptions }, async (options) => {\r\n const manager = this.getManager(requestOptions.clientId);\r\n const { elementId, ...optionsNoElementId } = options;\r\n const content = await manager.getDetail().getContent({\r\n ...optionsNoElementId,\r\n descriptor: {\r\n displayType: DefaultContentDisplayTypes.PropertyPane,\r\n contentFlags: ContentFlags.ShowLabels,\r\n },\r\n rulesetOrId: \"ElementProperties\",\r\n keys: new KeySet([{ className: \"BisCore:Element\", id: elementId }]),\r\n });\r\n if (!content || content.contentSet.length === 0) {\r\n return undefined;\r\n }\r\n return buildElementProperties(content.descriptor, content.contentSet[0]);\r\n });\r\n }\r\n\r\n public override async getPagedDistinctValues(\r\n token: IModelRpcProps,\r\n requestOptions: DistinctValuesRpcRequestOptions,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): PresentationRpcResponse<PagedResponse<DisplayValueGroupJSON>> {\r\n return this.makeRequest(token, \"getPagedDistinctValues\", requestOptions, async (options) => {\r\n options = enforceValidPageSize({\r\n ...options,\r\n keys: KeySet.fromJSON(options.keys),\r\n });\r\n const response = await this.getManager(requestOptions.clientId).getDetail().getPagedDistinctValues(options);\r\n return {\r\n ...response,\r\n // eslint-disable-next-line deprecation/deprecation\r\n items: response.items.map(DisplayValueGroup.toJSON),\r\n };\r\n });\r\n }\r\n\r\n public override async getContentInstanceKeys(\r\n token: IModelRpcProps,\r\n requestOptions: ContentInstanceKeysRpcRequestOptions,\r\n ): PresentationRpcResponse<{ total: number; items: KeySetJSON }> {\r\n return this.makeRequest(token, \"getContentInstanceKeys\", requestOptions, async (options) => {\r\n const { displayType, ...optionsNoDisplayType } = options;\r\n options = enforceValidPageSize(\r\n {\r\n ...optionsNoDisplayType,\r\n keys: KeySet.fromJSON(optionsNoDisplayType.keys),\r\n descriptor: {\r\n displayType,\r\n contentFlags: ContentFlags.KeysOnly,\r\n },\r\n },\r\n MAX_ALLOWED_KEYS_PAGE_SIZE,\r\n );\r\n\r\n const [size, content] = await Promise.all([\r\n this.getManager(requestOptions.clientId).getContentSetSize(options),\r\n this.getManager(requestOptions.clientId).getDetail().getContent(options),\r\n ]);\r\n\r\n if (size === 0 || !content) {\r\n return { total: 0, items: new KeySet().toJSON() };\r\n }\r\n\r\n return {\r\n total: size,\r\n items: content.contentSet.reduce((keys, item) => keys.add(item.primaryKeys), new KeySet()).toJSON(),\r\n };\r\n });\r\n }\r\n\r\n public override async getDisplayLabelDefinition(\r\n token: IModelRpcProps,\r\n requestOptions: DisplayLabelRpcRequestOptions,\r\n ): PresentationRpcResponse<LabelDefinition> {\r\n return this.makeRequest(token, \"getDisplayLabelDefinition\", requestOptions, async (options) => {\r\n const label = await this.getManager(requestOptions.clientId).getDetail().getDisplayLabelDefinition(options);\r\n return label;\r\n });\r\n }\r\n\r\n public override async getPagedDisplayLabelDefinitions(\r\n token: IModelRpcProps,\r\n requestOptions: DisplayLabelsRpcRequestOptions,\r\n ): PresentationRpcResponse<PagedResponse<LabelDefinition>> {\r\n const pageOpts = enforceValidPageSize({ paging: { start: 0, size: requestOptions.keys.length } });\r\n if (pageOpts.paging.size < requestOptions.keys.length) {\r\n requestOptions.keys.splice(pageOpts.paging.size);\r\n }\r\n return this.makeRequest(token, \"getPagedDisplayLabelDefinitions\", requestOptions, async (options) => {\r\n const labels = await this.getManager(requestOptions.clientId)\r\n .getDetail()\r\n .getDisplayLabelDefinitions({ ...options, keys: options.keys });\r\n return {\r\n total: options.keys.length,\r\n items: labels,\r\n };\r\n });\r\n }\r\n\r\n public override async getSelectionScopes(token: IModelRpcProps, requestOptions: SelectionScopeRpcRequestOptions): PresentationRpcResponse<SelectionScope[]> {\r\n return this.makeRequest(token, \"getSelectionScopes\", requestOptions, async (options) =>\r\n this.getManager(requestOptions.clientId).getSelectionScopes(options),\r\n );\r\n }\r\n\r\n public override async computeSelection(\r\n token: IModelRpcProps,\r\n requestOptions: ComputeSelectionRpcRequestOptions | SelectionScopeRpcRequestOptions,\r\n ids?: Id64String[],\r\n scopeId?: string,\r\n ): PresentationRpcResponse<KeySetJSON> {\r\n return this.makeRequest(token, \"computeSelection\", requestOptions, async (options) => {\r\n if (!isComputeSelectionRequestOptions(options)) {\r\n options = {\r\n ...options,\r\n elementIds: ids!,\r\n scope: { id: scopeId! },\r\n };\r\n }\r\n const keys = await this.getManager(requestOptions.clientId).computeSelection(options as ComputeSelectionRequestOptions<IModelDb>);\r\n return keys.toJSON();\r\n });\r\n }\r\n}\r\n\r\nconst enforceValidPageSize = <TOptions extends Paged<object>>(\r\n requestOptions: TOptions,\r\n maxPageSize = MAX_ALLOWED_PAGE_SIZE,\r\n): TOptions & { paging: PageOptions } => {\r\n const validPageSize = getValidPageSize(requestOptions.paging?.size, maxPageSize);\r\n if (!requestOptions.paging || requestOptions.paging.size !== validPageSize) {\r\n return { ...requestOptions, paging: { ...requestOptions.paging, size: validPageSize } };\r\n }\r\n return requestOptions as TOptions & { paging: PageOptions };\r\n};\r\n\r\nconst getValidPageSize = (size: number | undefined, maxPageSize: number) => {\r\n const requestedSize = size ?? 0;\r\n return requestedSize === 0 || requestedSize > maxPageSize ? maxPageSize : requestedSize;\r\n};\r\n\r\n// eslint-disable-next-line deprecation/deprecation\r\nconst nodeKeyFromJson = (json: NodeKeyJSON | undefined): NodeKey | undefined => {\r\n if (!json) {\r\n return undefined;\r\n }\r\n // eslint-disable-next-line deprecation/deprecation\r\n return NodeKey.fromJSON(json);\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"PresentationRpcImpl.js","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationRpcImpl.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 RPC\r\n */\r\n\r\nimport { IModelDb, RpcTrace } from \"@itwin/core-backend\";\r\nimport { assert, BeEvent, Id64String, IDisposable, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps } from \"@itwin/core-common\";\r\nimport {\r\n buildElementProperties,\r\n ClientDiagnostics,\r\n ComputeSelectionRequestOptions,\r\n ComputeSelectionRpcRequestOptions,\r\n ContentDescriptorRpcRequestOptions,\r\n ContentFlags,\r\n ContentInstanceKeysRpcRequestOptions,\r\n ContentRpcRequestOptions,\r\n ContentSourcesRpcRequestOptions,\r\n ContentSourcesRpcResult,\r\n DefaultContentDisplayTypes,\r\n DescriptorJSON,\r\n Diagnostics,\r\n DisplayLabelRpcRequestOptions,\r\n DisplayLabelsRpcRequestOptions,\r\n DisplayValueGroup,\r\n DisplayValueGroupJSON,\r\n DistinctValuesRpcRequestOptions,\r\n ElementProperties,\r\n FilterByInstancePathsHierarchyRpcRequestOptions,\r\n FilterByTextHierarchyRpcRequestOptions,\r\n HierarchyLevelDescriptorRpcRequestOptions,\r\n HierarchyLevelJSON,\r\n HierarchyRpcRequestOptions,\r\n isComputeSelectionRequestOptions,\r\n ItemJSON,\r\n KeySet,\r\n KeySetJSON,\r\n LabelDefinition,\r\n NodeJSON,\r\n NodeKey,\r\n NodeKeyJSON,\r\n NodePathElement,\r\n NodePathElementJSON,\r\n Paged,\r\n PagedResponse,\r\n PageOptions,\r\n PresentationError,\r\n PresentationRpcInterface,\r\n PresentationRpcResponse,\r\n PresentationRpcResponseData,\r\n PresentationStatus,\r\n RpcDiagnosticsOptions,\r\n Ruleset,\r\n RulesetVariable,\r\n RulesetVariableJSON,\r\n SelectClassInfo,\r\n SelectionScope,\r\n SelectionScopeRpcRequestOptions,\r\n SingleElementPropertiesRpcRequestOptions,\r\n} from \"@itwin/presentation-common\";\r\nimport { PresentationBackendLoggerCategory } from \"./BackendLoggerCategory\";\r\nimport { Presentation } from \"./Presentation\";\r\nimport { PresentationManager } from \"./PresentationManager\";\r\nimport { TemporaryStorage } from \"./TemporaryStorage\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-require-imports\r\nconst packageJsonVersion = require(\"../../../package.json\").version;\r\n\r\ntype ContentGetter<TResult = any, TOptions = any> = (requestOptions: TOptions) => TResult;\r\n\r\n/** @internal */\r\nexport const MAX_ALLOWED_PAGE_SIZE = 1000;\r\n/** @internal */\r\nexport const MAX_ALLOWED_KEYS_PAGE_SIZE = 10000;\r\n\r\nconst DEFAULT_REQUEST_TIMEOUT = 5000;\r\n\r\n/**\r\n * The backend implementation of PresentationRpcInterface. All it's basically\r\n * responsible for is forwarding calls to [[Presentation.manager]].\r\n *\r\n * @internal\r\n */\r\nexport class PresentationRpcImpl extends PresentationRpcInterface implements IDisposable {\r\n private _requestTimeout: number;\r\n private _pendingRequests: TemporaryStorage<PresentationRpcResponse<any>>;\r\n private _cancelEvents: Map<string, BeEvent<() => void>>;\r\n\r\n public constructor(props?: { requestTimeout?: number }) {\r\n super();\r\n this._requestTimeout = props?.requestTimeout ?? DEFAULT_REQUEST_TIMEOUT;\r\n this._pendingRequests = new TemporaryStorage({\r\n // remove the pending request after request timeout + 10 seconds - this gives\r\n // frontend 10 seconds to re-send the request until it's removed from requests' cache\r\n unusedValueLifetime: this._requestTimeout > 0 ? this._requestTimeout + 10 * 1000 : undefined,\r\n\r\n // attempt to clean up every second\r\n cleanupInterval: 1000,\r\n\r\n cleanupHandler: (id, _, reason) => {\r\n if (reason !== \"request\") {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Cleaning up request without frontend retrieving it: ${id}.`);\r\n // istanbul ignore next\r\n this._cancelEvents.get(id)?.raiseEvent();\r\n }\r\n this._cancelEvents.delete(id);\r\n },\r\n });\r\n this._cancelEvents = new Map<string, BeEvent<() => void>>();\r\n }\r\n\r\n public dispose() {\r\n this._pendingRequests.dispose();\r\n }\r\n\r\n public get requestTimeout() {\r\n return this._requestTimeout;\r\n }\r\n\r\n public get pendingRequests() {\r\n return this._pendingRequests;\r\n }\r\n\r\n /** Returns an ok response with result inside */\r\n private successResponse<TResult>(result: TResult, diagnostics?: ClientDiagnostics) {\r\n return {\r\n statusCode: PresentationStatus.Success,\r\n result,\r\n diagnostics,\r\n };\r\n }\r\n\r\n /** Returns a bad request response with empty result and an error code */\r\n private errorResponse(errorCode: PresentationStatus, errorMessage?: string, diagnostics?: ClientDiagnostics) {\r\n return {\r\n statusCode: errorCode,\r\n result: undefined,\r\n errorMessage,\r\n diagnostics,\r\n };\r\n }\r\n\r\n /**\r\n * Get the [[PresentationManager]] used by this RPC impl.\r\n */\r\n public getManager(clientId?: string): PresentationManager {\r\n return Presentation.getManager(clientId);\r\n }\r\n\r\n private async getIModel(token: IModelRpcProps): Promise<IModelDb> {\r\n let imodel: IModelDb;\r\n try {\r\n imodel = IModelDb.findByKey(token.key);\r\n // call refreshContainer, just in case this is a V2 checkpoint whose sasToken is about to expire, or its default transaction is about to be restarted.\r\n await imodel.refreshContainerForRpc(RpcTrace.expectCurrentActivity.accessToken);\r\n } catch {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, \"IModelRpcProps doesn't point to a valid iModel\");\r\n }\r\n return imodel;\r\n }\r\n\r\n private async makeRequest<\r\n TRpcOptions extends { rulesetOrId?: Ruleset | string; clientId?: string; diagnostics?: RpcDiagnosticsOptions; rulesetVariables?: RulesetVariableJSON[] },\r\n TResult,\r\n >(token: IModelRpcProps, requestId: string, requestOptions: TRpcOptions, request: ContentGetter<Promise<TResult>>): PresentationRpcResponse<TResult> {\r\n const requestKey = JSON.stringify({ iModelKey: token.key, requestId, requestOptions });\r\n\r\n Logger.logInfo(PresentationBackendLoggerCategory.Rpc, `Received '${requestId}' request. Params: ${requestKey}`);\r\n\r\n let imodel: IModelDb;\r\n try {\r\n imodel = await this.getIModel(token);\r\n } catch (e) {\r\n assert(e instanceof Error);\r\n return this.errorResponse(PresentationStatus.InvalidArgument, e.message);\r\n }\r\n\r\n let resultPromise = this._pendingRequests.getValue(requestKey);\r\n if (resultPromise) {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request already pending`);\r\n } else {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request not found, creating a new one`);\r\n const { clientId: _, diagnostics: diagnosticsOptions, rulesetVariables, ...options } = requestOptions;\r\n const managerRequestOptions: any = {\r\n ...options,\r\n imodel,\r\n cancelEvent: new BeEvent<() => void>(),\r\n };\r\n\r\n // set up ruleset variables\r\n if (rulesetVariables) {\r\n managerRequestOptions.rulesetVariables = rulesetVariables.map(RulesetVariable.fromJSON);\r\n }\r\n\r\n // set up diagnostics listener\r\n let diagnostics: ClientDiagnostics | undefined;\r\n const getDiagnostics = (): ClientDiagnostics => {\r\n if (!diagnostics) {\r\n diagnostics = {};\r\n }\r\n return diagnostics;\r\n };\r\n if (diagnosticsOptions) {\r\n if (diagnosticsOptions.backendVersion) {\r\n getDiagnostics().backendVersion = packageJsonVersion;\r\n }\r\n managerRequestOptions.diagnostics = {\r\n ...diagnosticsOptions,\r\n handler: (d: Diagnostics) => {\r\n if (d.logs) {\r\n const target = getDiagnostics();\r\n if (target.logs) {\r\n target.logs.push(...d.logs);\r\n } else {\r\n target.logs = [...d.logs];\r\n }\r\n }\r\n },\r\n };\r\n }\r\n\r\n // initiate request\r\n resultPromise = request(managerRequestOptions)\r\n .then((result) => this.successResponse(result, diagnostics))\r\n .catch((e: PresentationError) => this.errorResponse(e.errorNumber, e.message, diagnostics));\r\n\r\n // store the request promise\r\n this._pendingRequests.addValue(requestKey, resultPromise);\r\n this._cancelEvents.set(requestKey, managerRequestOptions.cancelEvent);\r\n }\r\n\r\n if (this._requestTimeout === 0) {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request timeout not configured, returning promise without a timeout.`);\r\n void resultPromise.finally(() => {\r\n this._pendingRequests.deleteValue(requestKey);\r\n });\r\n return resultPromise;\r\n }\r\n\r\n let timeout: NodeJS.Timeout;\r\n const timeoutPromise = new Promise<any>((_resolve, reject) => {\r\n timeout = setTimeout(() => {\r\n reject(new Error());\r\n }, this._requestTimeout);\r\n });\r\n\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Returning a promise with a timeout of ${this._requestTimeout}.`);\r\n return Promise.race([resultPromise, timeoutPromise])\r\n .catch<PresentationRpcResponseData>(() => {\r\n // note: error responses from the manager get handled when creating `resultPromise`, so we can only get here due\r\n // to a timeout exception\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request timeout, returning \"BackendTimeout\" status.`);\r\n return this.errorResponse(PresentationStatus.BackendTimeout);\r\n })\r\n .then((response: PresentationRpcResponseData<TResult>) => {\r\n if (response.statusCode !== PresentationStatus.BackendTimeout) {\r\n Logger.logTrace(PresentationBackendLoggerCategory.Rpc, `Request completed, returning result.`);\r\n this._pendingRequests.deleteValue(requestKey);\r\n }\r\n clearTimeout(timeout);\r\n return response;\r\n });\r\n }\r\n\r\n public override async getNodesCount(token: IModelRpcProps, requestOptions: HierarchyRpcRequestOptions): PresentationRpcResponse<number> {\r\n return this.makeRequest(token, \"getNodesCount\", requestOptions, async (options) => {\r\n options = {\r\n ...options,\r\n parentKey: nodeKeyFromJson(options.parentKey),\r\n };\r\n return this.getManager(requestOptions.clientId).getNodesCount(options);\r\n });\r\n }\r\n\r\n public override async getPagedNodes(\r\n token: IModelRpcProps,\r\n requestOptions: Paged<HierarchyRpcRequestOptions>,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n ): PresentationRpcResponse<PagedResponse<NodeJSON>> {\r\n return this.makeRequest(token, \"getPagedNodes\", requestOptions, async (options) => {\r\n options = enforceValidPageSize({\r\n ...options,\r\n parentKey: nodeKeyFromJson(options.parentKey),\r\n });\r\n const [serializedNodesJson, count] = await Promise.all([\r\n this.getManager(requestOptions.clientId).getDetail().getNodes(options),\r\n this.getManager(requestOptions.clientId).getNodesCount(options),\r\n ]);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n const nodesJson = JSON.parse(serializedNodesJson) as HierarchyLevelJSON;\r\n return {\r\n total: count,\r\n items: nodesJson.nodes,\r\n };\r\n });\r\n }\r\n\r\n public override async getNodesDescriptor(\r\n token: IModelRpcProps,\r\n requestOptions: HierarchyLevelDescriptorRpcRequestOptions,\r\n ): PresentationRpcResponse<string | DescriptorJSON | undefined> {\r\n return this.makeRequest(token, \"getNodesDescriptor\", requestOptions, async (options) => {\r\n options = {\r\n ...options,\r\n parentKey: nodeKeyFromJson(options.parentKey),\r\n };\r\n return this.getManager(requestOptions.clientId).getDetail().getNodesDescriptor(options);\r\n });\r\n }\r\n\r\n public override async getNodePaths(\r\n token: IModelRpcProps,\r\n requestOptions: FilterByInstancePathsHierarchyRpcRequestOptions,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n ): PresentationRpcResponse<NodePathElementJSON[]> {\r\n return this.makeRequest(token, \"getNodePaths\", requestOptions, async (options) => {\r\n const result = await this.getManager(requestOptions.clientId).getDetail().getNodePaths(options);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return result.map(NodePathElement.toJSON);\r\n });\r\n }\r\n\r\n public override async getFilteredNodePaths(\r\n token: IModelRpcProps,\r\n requestOptions: FilterByTextHierarchyRpcRequestOptions,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n ): PresentationRpcResponse<NodePathElementJSON[]> {\r\n return this.makeRequest(token, \"getFilteredNodePaths\", requestOptions, async (options) => {\r\n const result = await this.getManager(requestOptions.clientId).getDetail().getFilteredNodePaths(options);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return result.map(NodePathElement.toJSON);\r\n });\r\n }\r\n\r\n public override async getContentSources(\r\n token: IModelRpcProps,\r\n requestOptions: ContentSourcesRpcRequestOptions,\r\n ): PresentationRpcResponse<ContentSourcesRpcResult> {\r\n return this.makeRequest(token, \"getContentSources\", requestOptions, async (options) => {\r\n const result = await this.getManager(requestOptions.clientId).getContentSources(options);\r\n const classesMap = {};\r\n const selectClasses = result.map((sci) => SelectClassInfo.toCompressedJSON(sci, classesMap));\r\n return { sources: selectClasses, classesMap };\r\n });\r\n }\r\n\r\n public override async getContentDescriptor(\r\n token: IModelRpcProps,\r\n requestOptions: ContentDescriptorRpcRequestOptions,\r\n ): PresentationRpcResponse<DescriptorJSON | undefined> {\r\n return this.makeRequest(token, \"getContentDescriptor\", requestOptions, async (options) => {\r\n options = {\r\n ...options,\r\n contentFlags: (options.contentFlags ?? 0) | ContentFlags.DescriptorOnly, // always append the \"descriptor only\" flag when handling request from the frontend\r\n keys: KeySet.fromJSON(options.keys),\r\n };\r\n if (options.transport === \"unparsed-json\") {\r\n // Here we send a plain JSON string but we will parse it to DescriptorJSON on the frontend. This way we are\r\n // bypassing unnecessary deserialization and serialization.\r\n return Presentation.getManager(requestOptions.clientId).getDetail().getContentDescriptor(options) as unknown as DescriptorJSON | undefined;\r\n } else {\r\n // Support for older frontends that still expect a parsed descriptor\r\n const descriptor = await Presentation.getManager(requestOptions.clientId).getContentDescriptor(options);\r\n return descriptor?.toJSON();\r\n }\r\n });\r\n }\r\n\r\n public override async getContentSetSize(token: IModelRpcProps, requestOptions: ContentRpcRequestOptions): PresentationRpcResponse<number> {\r\n return this.makeRequest(token, \"getContentSetSize\", requestOptions, async (options) => {\r\n options = {\r\n ...options,\r\n keys: KeySet.fromJSON(options.keys),\r\n };\r\n return this.getManager(requestOptions.clientId).getContentSetSize(options);\r\n });\r\n }\r\n\r\n public override async getPagedContent(\r\n token: IModelRpcProps,\r\n requestOptions: Paged<ContentRpcRequestOptions>,\r\n ): PresentationRpcResponse<{ descriptor: DescriptorJSON; contentSet: PagedResponse<ItemJSON> } | undefined> {\r\n return this.makeRequest(token, \"getPagedContent\", requestOptions, async (options) => {\r\n options = enforceValidPageSize({\r\n ...options,\r\n keys: KeySet.fromJSON(options.keys),\r\n });\r\n\r\n const [size, content] = await Promise.all([\r\n this.getManager(requestOptions.clientId).getContentSetSize(options),\r\n this.getManager(requestOptions.clientId).getDetail().getContent(options),\r\n ]);\r\n\r\n if (!content) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n descriptor: content.descriptor.toJSON(),\r\n contentSet: {\r\n total: size,\r\n items: content.contentSet.map((i) => i.toJSON()),\r\n },\r\n };\r\n });\r\n }\r\n\r\n public override async getPagedContentSet(\r\n token: IModelRpcProps,\r\n requestOptions: Paged<ContentRpcRequestOptions>,\r\n ): PresentationRpcResponse<PagedResponse<ItemJSON>> {\r\n const response = await this.getPagedContent(token, requestOptions);\r\n if (response.statusCode !== PresentationStatus.Success) {\r\n return this.errorResponse(response.statusCode, response.errorMessage, response.diagnostics);\r\n }\r\n if (!response.result) {\r\n return this.errorResponse(PresentationStatus.Error, `Failed to get content set (received a success response with empty result)`, response.diagnostics);\r\n }\r\n return {\r\n ...response,\r\n result: response.result.contentSet,\r\n };\r\n }\r\n\r\n public override async getElementProperties(\r\n token: IModelRpcProps,\r\n requestOptions: SingleElementPropertiesRpcRequestOptions,\r\n ): PresentationRpcResponse<ElementProperties | undefined> {\r\n return this.makeRequest(token, \"getElementProperties\", { ...requestOptions }, async (options) => {\r\n const manager = this.getManager(requestOptions.clientId);\r\n const { elementId, ...optionsNoElementId } = options;\r\n const content = await manager.getDetail().getContent({\r\n ...optionsNoElementId,\r\n descriptor: {\r\n displayType: DefaultContentDisplayTypes.PropertyPane,\r\n contentFlags: ContentFlags.ShowLabels,\r\n },\r\n rulesetOrId: \"ElementProperties\",\r\n keys: new KeySet([{ className: \"BisCore:Element\", id: elementId }]),\r\n });\r\n if (!content || content.contentSet.length === 0) {\r\n return undefined;\r\n }\r\n return buildElementProperties(content.descriptor, content.contentSet[0]);\r\n });\r\n }\r\n\r\n public override async getPagedDistinctValues(\r\n token: IModelRpcProps,\r\n requestOptions: DistinctValuesRpcRequestOptions,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n ): PresentationRpcResponse<PagedResponse<DisplayValueGroupJSON>> {\r\n return this.makeRequest(token, \"getPagedDistinctValues\", requestOptions, async (options) => {\r\n options = enforceValidPageSize({\r\n ...options,\r\n keys: KeySet.fromJSON(options.keys),\r\n });\r\n const response = await this.getManager(requestOptions.clientId).getDetail().getPagedDistinctValues(options);\r\n return {\r\n ...response,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n items: response.items.map(DisplayValueGroup.toJSON),\r\n };\r\n });\r\n }\r\n\r\n public override async getContentInstanceKeys(\r\n token: IModelRpcProps,\r\n requestOptions: ContentInstanceKeysRpcRequestOptions,\r\n ): PresentationRpcResponse<{ total: number; items: KeySetJSON }> {\r\n return this.makeRequest(token, \"getContentInstanceKeys\", requestOptions, async (options) => {\r\n const { displayType, ...optionsNoDisplayType } = options;\r\n options = enforceValidPageSize(\r\n {\r\n ...optionsNoDisplayType,\r\n keys: KeySet.fromJSON(optionsNoDisplayType.keys),\r\n descriptor: {\r\n displayType,\r\n contentFlags: ContentFlags.KeysOnly,\r\n },\r\n },\r\n MAX_ALLOWED_KEYS_PAGE_SIZE,\r\n );\r\n\r\n const [size, content] = await Promise.all([\r\n this.getManager(requestOptions.clientId).getContentSetSize(options),\r\n this.getManager(requestOptions.clientId).getDetail().getContent(options),\r\n ]);\r\n\r\n if (size === 0 || !content) {\r\n return { total: 0, items: new KeySet().toJSON() };\r\n }\r\n\r\n return {\r\n total: size,\r\n items: content.contentSet.reduce((keys, item) => keys.add(item.primaryKeys), new KeySet()).toJSON(),\r\n };\r\n });\r\n }\r\n\r\n public override async getDisplayLabelDefinition(\r\n token: IModelRpcProps,\r\n requestOptions: DisplayLabelRpcRequestOptions,\r\n ): PresentationRpcResponse<LabelDefinition> {\r\n return this.makeRequest(token, \"getDisplayLabelDefinition\", requestOptions, async (options) => {\r\n const label = await this.getManager(requestOptions.clientId).getDetail().getDisplayLabelDefinition(options);\r\n return label;\r\n });\r\n }\r\n\r\n public override async getPagedDisplayLabelDefinitions(\r\n token: IModelRpcProps,\r\n requestOptions: DisplayLabelsRpcRequestOptions,\r\n ): PresentationRpcResponse<PagedResponse<LabelDefinition>> {\r\n const pageOpts = enforceValidPageSize({ paging: { start: 0, size: requestOptions.keys.length } });\r\n if (pageOpts.paging.size < requestOptions.keys.length) {\r\n requestOptions.keys.splice(pageOpts.paging.size);\r\n }\r\n return this.makeRequest(token, \"getPagedDisplayLabelDefinitions\", requestOptions, async (options) => {\r\n const labels = await this.getManager(requestOptions.clientId)\r\n .getDetail()\r\n .getDisplayLabelDefinitions({ ...options, keys: options.keys });\r\n return {\r\n total: options.keys.length,\r\n items: labels,\r\n };\r\n });\r\n }\r\n\r\n public override async getSelectionScopes(token: IModelRpcProps, requestOptions: SelectionScopeRpcRequestOptions): PresentationRpcResponse<SelectionScope[]> {\r\n return this.makeRequest(token, \"getSelectionScopes\", requestOptions, async (options) =>\r\n this.getManager(requestOptions.clientId).getSelectionScopes(options),\r\n );\r\n }\r\n\r\n public override async computeSelection(\r\n token: IModelRpcProps,\r\n requestOptions: ComputeSelectionRpcRequestOptions | SelectionScopeRpcRequestOptions,\r\n ids?: Id64String[],\r\n scopeId?: string,\r\n ): PresentationRpcResponse<KeySetJSON> {\r\n return this.makeRequest(token, \"computeSelection\", requestOptions, async (options) => {\r\n if (!isComputeSelectionRequestOptions(options)) {\r\n options = {\r\n ...options,\r\n elementIds: ids!,\r\n scope: { id: scopeId! },\r\n };\r\n }\r\n const keys = await this.getManager(requestOptions.clientId).computeSelection(options as ComputeSelectionRequestOptions<IModelDb>);\r\n return keys.toJSON();\r\n });\r\n }\r\n}\r\n\r\nconst enforceValidPageSize = <TOptions extends Paged<object>>(\r\n requestOptions: TOptions,\r\n maxPageSize = MAX_ALLOWED_PAGE_SIZE,\r\n): TOptions & { paging: PageOptions } => {\r\n const validPageSize = getValidPageSize(requestOptions.paging?.size, maxPageSize);\r\n if (!requestOptions.paging || requestOptions.paging.size !== validPageSize) {\r\n return { ...requestOptions, paging: { ...requestOptions.paging, size: validPageSize } };\r\n }\r\n return requestOptions as TOptions & { paging: PageOptions };\r\n};\r\n\r\nconst getValidPageSize = (size: number | undefined, maxPageSize: number) => {\r\n const requestedSize = size ?? 0;\r\n return requestedSize === 0 || requestedSize > maxPageSize ? maxPageSize : requestedSize;\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-deprecated\r\nconst nodeKeyFromJson = (json: NodeKeyJSON | undefined): NodeKey | undefined => {\r\n if (!json) {\r\n return undefined;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return NodeKey.fromJSON(json);\r\n};\r\n"]}
|
|
@@ -7,12 +7,16 @@
|
|
|
7
7
|
* @module Core
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
10
|
+
exports.getLocalizedStringEN = getLocalizedStringEN;
|
|
11
|
+
exports.getElementKey = getElementKey;
|
|
12
|
+
exports.normalizeVersion = normalizeVersion;
|
|
13
|
+
exports.combineDiagnosticsOptions = combineDiagnosticsOptions;
|
|
14
|
+
exports.reportDiagnostics = reportDiagnostics;
|
|
11
15
|
const semver_1 = require("semver");
|
|
12
16
|
const core_backend_1 = require("@itwin/core-backend");
|
|
13
17
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
14
18
|
const presentation_common_1 = require("@itwin/presentation-common");
|
|
15
|
-
const presentation = require("@itwin/presentation-common/lib/cjs/assets/locales/en/Presentation.json"); // eslint-disable-line @typescript-eslint/no-
|
|
19
|
+
const presentation = require("@itwin/presentation-common/lib/cjs/assets/locales/en/Presentation.json"); // eslint-disable-line @typescript-eslint/no-require-imports
|
|
16
20
|
/** @internal */
|
|
17
21
|
function getLocalizedStringEN(key) {
|
|
18
22
|
let result = presentation;
|
|
@@ -29,7 +33,6 @@ function getLocalizedStringEN(key) {
|
|
|
29
33
|
}
|
|
30
34
|
return typeof result === "string" ? result : key;
|
|
31
35
|
}
|
|
32
|
-
exports.getLocalizedStringEN = getLocalizedStringEN;
|
|
33
36
|
/** @internal */
|
|
34
37
|
function getElementKey(imodel, id) {
|
|
35
38
|
let key;
|
|
@@ -45,7 +48,6 @@ function getElementKey(imodel, id) {
|
|
|
45
48
|
});
|
|
46
49
|
return key;
|
|
47
50
|
}
|
|
48
|
-
exports.getElementKey = getElementKey;
|
|
49
51
|
/** @internal */
|
|
50
52
|
function normalizeVersion(version) {
|
|
51
53
|
if (version) {
|
|
@@ -56,7 +58,6 @@ function normalizeVersion(version) {
|
|
|
56
58
|
}
|
|
57
59
|
return "0.0.0";
|
|
58
60
|
}
|
|
59
|
-
exports.normalizeVersion = normalizeVersion;
|
|
60
61
|
/** @internal */
|
|
61
62
|
function combineDiagnosticsOptions(...options) {
|
|
62
63
|
const combinedOptions = {};
|
|
@@ -80,13 +81,11 @@ function combineDiagnosticsOptions(...options) {
|
|
|
80
81
|
});
|
|
81
82
|
return combinedOptions.dev || combinedOptions.editor || combinedOptions.perf ? combinedOptions : undefined;
|
|
82
83
|
}
|
|
83
|
-
exports.combineDiagnosticsOptions = combineDiagnosticsOptions;
|
|
84
84
|
/** @internal */
|
|
85
85
|
function reportDiagnostics(diagnostics, options, context) {
|
|
86
86
|
const stripped = diagnostics.logs ? stripDiagnostics(options, diagnostics.logs) : undefined;
|
|
87
87
|
stripped && options.handler({ logs: stripped }, context);
|
|
88
88
|
}
|
|
89
|
-
exports.reportDiagnostics = reportDiagnostics;
|
|
90
89
|
function stripDiagnostics(options, diagnostics) {
|
|
91
90
|
const stripped = [];
|
|
92
91
|
diagnostics.forEach((entry) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../src/presentation-backend/Utils.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 Core\r\n */\r\n\r\nimport { parse as parseVersion } from \"semver\";\r\nimport { Element, IModelDb } from \"@itwin/core-backend\";\r\nimport { DbResult, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n combineDiagnosticsSeverities,\r\n compareDiagnosticsSeverities,\r\n Diagnostics,\r\n DiagnosticsLogEntry,\r\n DiagnosticsOptions,\r\n InstanceKey,\r\n} from \"@itwin/presentation-common\";\r\n\r\nconst presentation = require(\"@itwin/presentation-common/lib/cjs/assets/locales/en/Presentation.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n\r\n/** @internal */\r\nexport function getLocalizedStringEN(key: string) {\r\n let result = presentation;\r\n const [namespace, identifier] = key.split(\":\", 2);\r\n if (namespace !== \"Presentation\") {\r\n return key;\r\n }\r\n const keySteps = identifier.split(\".\");\r\n for (const keyStep of keySteps) {\r\n if (keyStep in result === false) {\r\n return key;\r\n }\r\n result = result[keyStep];\r\n }\r\n return typeof result === \"string\" ? result : key;\r\n}\r\n\r\n/** @internal */\r\nexport function getElementKey(imodel: IModelDb, id: Id64String): InstanceKey | undefined {\r\n let key: InstanceKey | undefined;\r\n const query = `SELECT ECClassId FROM ${Element.classFullName} e WHERE ECInstanceId = ?`;\r\n imodel.withPreparedStatement(query, (stmt) => {\r\n try {\r\n stmt.bindId(1, id);\r\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n key = { className: stmt.getValue(0).getClassNameForClassId().replace(\".\", \":\"), id };\r\n }\r\n } catch {}\r\n });\r\n return key;\r\n}\r\n\r\n/** @internal */\r\nexport function normalizeVersion(version?: string) {\r\n if (version) {\r\n const parsedVersion = parseVersion(version, true);\r\n if (parsedVersion) {\r\n return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}`;\r\n }\r\n }\r\n return \"0.0.0\";\r\n}\r\n\r\n/**\r\n * A function that received request diagnostics and, optionally, request context.\r\n * @public\r\n */\r\nexport type BackendDiagnosticsHandler<TContext = any> = (logs: Diagnostics, requestContext?: TContext) => void;\r\n\r\n/**\r\n * Data structure for backend diagnostics options.\r\n * @public\r\n */\r\nexport interface BackendDiagnosticsOptions<TContext = any> extends DiagnosticsOptions {\r\n /**\r\n * An optional function to supply request context that'll be passed to [[handler]] when\r\n * it's called after the request is fulfilled.\r\n */\r\n requestContextSupplier?: () => TContext;\r\n\r\n /**\r\n * Request diagnostics handler function that is called after the request is fulfilled. The handler\r\n * receives request diagnostics as the first argument and, optionally, request context as the\r\n * second (see [[requestContextSupplier]]).\r\n */\r\n handler: BackendDiagnosticsHandler<TContext>;\r\n}\r\n\r\n/**\r\n * Data structure which contains backend diagnostics options.\r\n * @public\r\n */\r\nexport interface BackendDiagnosticsAttribute {\r\n /**\r\n * Backend diagnostics options.\r\n * @public\r\n */\r\n diagnostics?: BackendDiagnosticsOptions;\r\n}\r\n\r\n/** @internal */\r\nexport function combineDiagnosticsOptions(...options: Array<BackendDiagnosticsOptions | undefined>): DiagnosticsOptions | undefined {\r\n const combinedOptions: DiagnosticsOptions = {};\r\n options.forEach((d) => {\r\n if (!d) {\r\n return;\r\n }\r\n if (\r\n d.perf === true ||\r\n (typeof d.perf === \"object\" &&\r\n (!combinedOptions.perf || (typeof combinedOptions.perf === \"object\" && d.perf.minimumDuration < combinedOptions.perf.minimumDuration)))\r\n ) {\r\n combinedOptions.perf = d.perf;\r\n }\r\n const combinedDev = combineDiagnosticsSeverities(d.dev, combinedOptions.dev);\r\n if (combinedDev) {\r\n combinedOptions.dev = combinedDev;\r\n }\r\n const combinedEditor = combineDiagnosticsSeverities(d.editor, combinedOptions.editor);\r\n if (combinedEditor) {\r\n combinedOptions.editor = combinedEditor;\r\n }\r\n });\r\n return combinedOptions.dev || combinedOptions.editor || combinedOptions.perf ? combinedOptions : undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function reportDiagnostics<TContext>(diagnostics: Diagnostics, options: BackendDiagnosticsOptions<TContext>, context?: TContext) {\r\n const stripped = diagnostics.logs ? stripDiagnostics(options, diagnostics.logs) : undefined;\r\n stripped && options.handler({ logs: stripped }, context);\r\n}\r\nfunction stripDiagnostics<TEntry extends DiagnosticsLogEntry>(options: DiagnosticsOptions, diagnostics: TEntry[]) {\r\n const stripped: TEntry[] = [];\r\n diagnostics.forEach((entry) => {\r\n if (DiagnosticsLogEntry.isScope(entry)) {\r\n const scopeLogs = stripDiagnostics(options, entry.logs ?? []);\r\n const strippedScope = { ...entry, logs: scopeLogs };\r\n if (!strippedScope.logs) {\r\n delete strippedScope.logs;\r\n }\r\n if (entry.duration !== undefined && (options.perf === true || (typeof options.perf === \"object\" && entry.duration >= options.perf.minimumDuration))) {\r\n stripped.push(strippedScope);\r\n } else if (scopeLogs) {\r\n delete strippedScope.duration;\r\n delete strippedScope.scopeCreateTimestamp;\r\n stripped.push(strippedScope);\r\n }\r\n } else {\r\n const matchesDevSeverity = entry.severity.dev && compareDiagnosticsSeverities(entry.severity.dev, options.dev) >= 0;\r\n const matchesEditorSeverity = entry.severity.editor && compareDiagnosticsSeverities(entry.severity.editor, options.editor) >= 0;\r\n if (matchesDevSeverity || matchesEditorSeverity) {\r\n stripped.push({ ...entry });\r\n }\r\n }\r\n });\r\n return stripped.length > 0 ? stripped : undefined;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../src/presentation-backend/Utils.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 Core\r\n */\r\n\r\nimport { parse as parseVersion } from \"semver\";\r\nimport { Element, IModelDb } from \"@itwin/core-backend\";\r\nimport { DbResult, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n combineDiagnosticsSeverities,\r\n compareDiagnosticsSeverities,\r\n Diagnostics,\r\n DiagnosticsLogEntry,\r\n DiagnosticsOptions,\r\n InstanceKey,\r\n} from \"@itwin/presentation-common\";\r\n\r\nconst presentation = require(\"@itwin/presentation-common/lib/cjs/assets/locales/en/Presentation.json\"); // eslint-disable-line @typescript-eslint/no-require-imports\r\n\r\n/** @internal */\r\nexport function getLocalizedStringEN(key: string) {\r\n let result = presentation;\r\n const [namespace, identifier] = key.split(\":\", 2);\r\n if (namespace !== \"Presentation\") {\r\n return key;\r\n }\r\n const keySteps = identifier.split(\".\");\r\n for (const keyStep of keySteps) {\r\n if (keyStep in result === false) {\r\n return key;\r\n }\r\n result = result[keyStep];\r\n }\r\n return typeof result === \"string\" ? result : key;\r\n}\r\n\r\n/** @internal */\r\nexport function getElementKey(imodel: IModelDb, id: Id64String): InstanceKey | undefined {\r\n let key: InstanceKey | undefined;\r\n const query = `SELECT ECClassId FROM ${Element.classFullName} e WHERE ECInstanceId = ?`;\r\n imodel.withPreparedStatement(query, (stmt) => {\r\n try {\r\n stmt.bindId(1, id);\r\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n key = { className: stmt.getValue(0).getClassNameForClassId().replace(\".\", \":\"), id };\r\n }\r\n } catch {}\r\n });\r\n return key;\r\n}\r\n\r\n/** @internal */\r\nexport function normalizeVersion(version?: string) {\r\n if (version) {\r\n const parsedVersion = parseVersion(version, true);\r\n if (parsedVersion) {\r\n return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}`;\r\n }\r\n }\r\n return \"0.0.0\";\r\n}\r\n\r\n/**\r\n * A function that received request diagnostics and, optionally, request context.\r\n * @public\r\n */\r\nexport type BackendDiagnosticsHandler<TContext = any> = (logs: Diagnostics, requestContext?: TContext) => void;\r\n\r\n/**\r\n * Data structure for backend diagnostics options.\r\n * @public\r\n */\r\nexport interface BackendDiagnosticsOptions<TContext = any> extends DiagnosticsOptions {\r\n /**\r\n * An optional function to supply request context that'll be passed to [[handler]] when\r\n * it's called after the request is fulfilled.\r\n */\r\n requestContextSupplier?: () => TContext;\r\n\r\n /**\r\n * Request diagnostics handler function that is called after the request is fulfilled. The handler\r\n * receives request diagnostics as the first argument and, optionally, request context as the\r\n * second (see [[requestContextSupplier]]).\r\n */\r\n handler: BackendDiagnosticsHandler<TContext>;\r\n}\r\n\r\n/**\r\n * Data structure which contains backend diagnostics options.\r\n * @public\r\n */\r\nexport interface BackendDiagnosticsAttribute {\r\n /**\r\n * Backend diagnostics options.\r\n * @public\r\n */\r\n diagnostics?: BackendDiagnosticsOptions;\r\n}\r\n\r\n/** @internal */\r\nexport function combineDiagnosticsOptions(...options: Array<BackendDiagnosticsOptions | undefined>): DiagnosticsOptions | undefined {\r\n const combinedOptions: DiagnosticsOptions = {};\r\n options.forEach((d) => {\r\n if (!d) {\r\n return;\r\n }\r\n if (\r\n d.perf === true ||\r\n (typeof d.perf === \"object\" &&\r\n (!combinedOptions.perf || (typeof combinedOptions.perf === \"object\" && d.perf.minimumDuration < combinedOptions.perf.minimumDuration)))\r\n ) {\r\n combinedOptions.perf = d.perf;\r\n }\r\n const combinedDev = combineDiagnosticsSeverities(d.dev, combinedOptions.dev);\r\n if (combinedDev) {\r\n combinedOptions.dev = combinedDev;\r\n }\r\n const combinedEditor = combineDiagnosticsSeverities(d.editor, combinedOptions.editor);\r\n if (combinedEditor) {\r\n combinedOptions.editor = combinedEditor;\r\n }\r\n });\r\n return combinedOptions.dev || combinedOptions.editor || combinedOptions.perf ? combinedOptions : undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function reportDiagnostics<TContext>(diagnostics: Diagnostics, options: BackendDiagnosticsOptions<TContext>, context?: TContext) {\r\n const stripped = diagnostics.logs ? stripDiagnostics(options, diagnostics.logs) : undefined;\r\n stripped && options.handler({ logs: stripped }, context);\r\n}\r\nfunction stripDiagnostics<TEntry extends DiagnosticsLogEntry>(options: DiagnosticsOptions, diagnostics: TEntry[]) {\r\n const stripped: TEntry[] = [];\r\n diagnostics.forEach((entry) => {\r\n if (DiagnosticsLogEntry.isScope(entry)) {\r\n const scopeLogs = stripDiagnostics(options, entry.logs ?? []);\r\n const strippedScope = { ...entry, logs: scopeLogs };\r\n if (!strippedScope.logs) {\r\n delete strippedScope.logs;\r\n }\r\n if (entry.duration !== undefined && (options.perf === true || (typeof options.perf === \"object\" && entry.duration >= options.perf.minimumDuration))) {\r\n stripped.push(strippedScope);\r\n } else if (scopeLogs) {\r\n delete strippedScope.duration;\r\n delete strippedScope.scopeCreateTimestamp;\r\n stripped.push(strippedScope);\r\n }\r\n } else {\r\n const matchesDevSeverity = entry.severity.dev && compareDiagnosticsSeverities(entry.severity.dev, options.dev) >= 0;\r\n const matchesEditorSeverity = entry.severity.editor && compareDiagnosticsSeverities(entry.severity.editor, options.editor) >= 0;\r\n if (matchesDevSeverity || matchesEditorSeverity) {\r\n stripped.push({ ...entry });\r\n }\r\n }\r\n });\r\n return stripped.length > 0 ? stripped : undefined;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationRulesDomain.d.ts","sourceRoot":"","sources":["../../../../src/presentation-backend/domain/PresentationRulesDomain.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAiB,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAGrE,gBAAgB;AAChB,qBAAa,iBAAkB,SAAQ,MAAM;IAC3C,WAA2B,UAAU,IAAI,MAAM,CAE9C;IAED,uDAAuD;WACzC,cAAc;CAM7B;AAED,gBAAgB;AAEhB,yBAAiB,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"PresentationRulesDomain.d.ts","sourceRoot":"","sources":["../../../../src/presentation-backend/domain/PresentationRulesDomain.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAiB,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAGrE,gBAAgB;AAChB,qBAAa,iBAAkB,SAAQ,MAAM;IAC3C,WAA2B,UAAU,IAAI,MAAM,CAE9C;IAED,uDAAuD;WACzC,cAAc;CAM7B;AAED,gBAAgB;AAEhB,yBAAiB,iBAAiB,CAAC;IACjC,KAAY,QAAQ;QAClB,OAAO,8BAA8B;KACtC;CACF"}
|
|
@@ -50,7 +50,6 @@ exports.PresentationRules = PresentationRules;
|
|
|
50
50
|
/** @internal */
|
|
51
51
|
/* istanbul ignore next */
|
|
52
52
|
(function (PresentationRules) {
|
|
53
|
-
// eslint-disable-line no-redeclare
|
|
54
53
|
let CodeSpec;
|
|
55
54
|
(function (CodeSpec) {
|
|
56
55
|
CodeSpec["Ruleset"] = "PresentationRules:Ruleset";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationRulesDomain.js","sourceRoot":"","sources":["../../../../src/presentation-backend/domain/PresentationRulesDomain.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sDAAqE;AACrE,mEAAqD;AAErD,gBAAgB;AAChB,MAAa,iBAAkB,SAAQ,qBAAM;IACpC,MAAM,KAAc,UAAU;QACnC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,cAAc;QAC1B,IAAI,IAAI,KAAK,sBAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,sBAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAC1C,4BAAa,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAZD,8CAYC;AAED,gBAAgB;AAChB,0BAA0B;AAC1B,WAAiB,iBAAiB;IAChC,
|
|
1
|
+
{"version":3,"file":"PresentationRulesDomain.js","sourceRoot":"","sources":["../../../../src/presentation-backend/domain/PresentationRulesDomain.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sDAAqE;AACrE,mEAAqD;AAErD,gBAAgB;AAChB,MAAa,iBAAkB,SAAQ,qBAAM;IACpC,MAAM,KAAc,UAAU;QACnC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,cAAc;QAC1B,IAAI,IAAI,KAAK,sBAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,sBAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAC1C,4BAAa,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAZD,8CAYC;AAED,gBAAgB;AAChB,0BAA0B;AAC1B,WAAiB,iBAAiB;IAChC,IAAY,QAEX;IAFD,WAAY,QAAQ;QAClB,iDAAqC,CAAA;IACvC,CAAC,EAFW,QAAQ,GAAR,0BAAQ,KAAR,0BAAQ,QAEnB;AACH,CAAC,EAJgB,iBAAiB,iCAAjB,iBAAiB,QAIjC","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 Core\r\n */\r\n\r\nimport { ClassRegistry, Schema, Schemas } from \"@itwin/core-backend\";\r\nimport * as RulesetElements from \"./RulesetElements\";\r\n\r\n/** @internal */\r\nexport class PresentationRules extends Schema {\r\n public static override get schemaName(): string {\r\n return \"PresentationRules\";\r\n }\r\n\r\n /** Registers this schema and it's elements' classes */\r\n public static registerSchema() {\r\n if (this !== Schemas.getRegisteredSchema(PresentationRules.schemaName)) {\r\n Schemas.registerSchema(PresentationRules);\r\n ClassRegistry.registerModule(RulesetElements, this);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\n/* istanbul ignore next */\r\nexport namespace PresentationRules {\r\n export enum CodeSpec {\r\n Ruleset = \"PresentationRules:Ruleset\",\r\n }\r\n}\r\n"]}
|