@itwin/presentation-hierarchies 2.0.0-alpha.14 → 2.0.0-alpha.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/CHANGELOG.md +142 -0
  2. package/README.md +12 -22
  3. package/lib/cjs/hierarchies/HierarchyMerge.d.ts +1 -1
  4. package/lib/cjs/hierarchies/HierarchyMerge.d.ts.map +1 -1
  5. package/lib/cjs/hierarchies/HierarchyMerge.js +1 -1
  6. package/lib/cjs/hierarchies/HierarchyMerge.js.map +1 -1
  7. package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
  8. package/lib/cjs/hierarchies/HierarchyNode.js.map +1 -1
  9. package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  10. package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
  11. package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
  12. package/lib/cjs/hierarchies/HierarchyProvider.js +7 -3
  13. package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
  14. package/lib/cjs/hierarchies/HierarchySearch.d.ts.map +1 -1
  15. package/lib/cjs/hierarchies/HierarchySearch.js +19 -12
  16. package/lib/cjs/hierarchies/HierarchySearch.js.map +1 -1
  17. package/lib/cjs/hierarchies/Logging.js +1 -1
  18. package/lib/cjs/hierarchies/Logging.js.map +1 -1
  19. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  20. package/lib/cjs/hierarchies/imodel/HierarchyCache.js +1 -4
  21. package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -1
  22. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +4 -2
  23. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  24. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  25. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  26. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  27. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts +20 -2
  28. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  29. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +157 -85
  30. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  31. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  32. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js +12 -9
  33. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  34. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts +4 -3
  35. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  36. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +44 -68
  37. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  38. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  39. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +2 -1
  40. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  41. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -1
  42. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js +11 -4
  43. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -1
  44. package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
  45. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +3 -5
  46. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +1 -1
  47. package/lib/cjs/hierarchies/imodel/Utils.d.ts +1 -0
  48. package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +1 -1
  49. package/lib/cjs/hierarchies/imodel/Utils.js +21 -7
  50. package/lib/cjs/hierarchies/imodel/Utils.js.map +1 -1
  51. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  52. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js +10 -4
  53. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  54. package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  55. package/lib/cjs/hierarchies/imodel/operators/Grouping.js +32 -18
  56. package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +1 -1
  57. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  58. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +31 -9
  59. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  60. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  61. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js +30 -14
  62. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  63. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  64. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +4 -6
  65. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  66. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  67. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +4 -9
  68. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  69. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  70. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -5
  71. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  72. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  73. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -10
  74. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  75. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  76. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +24 -28
  77. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  78. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  79. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js +3 -1
  80. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  81. package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
  82. package/lib/cjs/hierarchies/internal/Common.js +2 -2
  83. package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
  84. package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
  85. package/lib/cjs/hierarchies/internal/EachValueFrom.js +0 -2
  86. package/lib/cjs/hierarchies/internal/EachValueFrom.js.map +1 -1
  87. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  88. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +3 -1
  89. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  90. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  91. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js +1 -4
  92. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  93. package/lib/cjs/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  94. package/lib/cjs/hierarchies/internal/operators/Partition.js.map +1 -1
  95. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
  96. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
  97. package/lib/cjs/presentation-hierarchies.d.ts +2 -4
  98. package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
  99. package/lib/cjs/presentation-hierarchies.js +1 -4
  100. package/lib/cjs/presentation-hierarchies.js.map +1 -1
  101. package/lib/esm/hierarchies/HierarchyMerge.d.ts +1 -1
  102. package/lib/esm/hierarchies/HierarchyMerge.d.ts.map +1 -1
  103. package/lib/esm/hierarchies/HierarchyMerge.js +1 -1
  104. package/lib/esm/hierarchies/HierarchyMerge.js.map +1 -1
  105. package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
  106. package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
  107. package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  108. package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
  109. package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
  110. package/lib/esm/hierarchies/HierarchyProvider.js +7 -3
  111. package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
  112. package/lib/esm/hierarchies/HierarchySearch.d.ts.map +1 -1
  113. package/lib/esm/hierarchies/HierarchySearch.js +19 -12
  114. package/lib/esm/hierarchies/HierarchySearch.js.map +1 -1
  115. package/lib/esm/hierarchies/Logging.js +1 -1
  116. package/lib/esm/hierarchies/Logging.js.map +1 -1
  117. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  118. package/lib/esm/hierarchies/imodel/HierarchyCache.js +1 -4
  119. package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -1
  120. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts +4 -2
  121. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  122. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  123. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  124. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  125. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +20 -2
  126. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  127. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +160 -88
  128. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  129. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  130. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js +13 -10
  131. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  132. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts +4 -3
  133. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  134. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js +45 -69
  135. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  136. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  137. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +2 -1
  138. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  139. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -1
  140. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js +11 -4
  141. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -1
  142. package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
  143. package/lib/esm/hierarchies/imodel/TreeNodesReader.js +3 -5
  144. package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +1 -1
  145. package/lib/esm/hierarchies/imodel/Utils.d.ts +1 -0
  146. package/lib/esm/hierarchies/imodel/Utils.d.ts.map +1 -1
  147. package/lib/esm/hierarchies/imodel/Utils.js +20 -7
  148. package/lib/esm/hierarchies/imodel/Utils.js.map +1 -1
  149. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  150. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js +11 -5
  151. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  152. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  153. package/lib/esm/hierarchies/imodel/operators/Grouping.js +33 -19
  154. package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +1 -1
  155. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  156. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js +32 -10
  157. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  158. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  159. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js +31 -15
  160. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  161. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  162. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +5 -7
  163. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  164. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  165. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js +5 -10
  166. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  167. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  168. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -5
  169. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  170. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  171. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -10
  172. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  173. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  174. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +24 -28
  175. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  176. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  177. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js +3 -1
  178. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  179. package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
  180. package/lib/esm/hierarchies/internal/Common.js +2 -2
  181. package/lib/esm/hierarchies/internal/Common.js.map +1 -1
  182. package/lib/esm/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
  183. package/lib/esm/hierarchies/internal/EachValueFrom.js +0 -2
  184. package/lib/esm/hierarchies/internal/EachValueFrom.js.map +1 -1
  185. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  186. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js +3 -1
  187. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  188. package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  189. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js +1 -4
  190. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  191. package/lib/esm/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  192. package/lib/esm/hierarchies/internal/operators/Partition.js.map +1 -1
  193. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
  194. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
  195. package/lib/esm/presentation-hierarchies.d.ts +2 -4
  196. package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
  197. package/lib/esm/presentation-hierarchies.js +2 -3
  198. package/lib/esm/presentation-hierarchies.js.map +1 -1
  199. package/package.json +17 -25
@@ -1 +1 @@
1
- {"version":3,"file":"IModelHierarchyProvider.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/IModelHierarchyProvider.ts"],"names":[],"mappings":"AAKA,OAAO,gCAAgC,CAAC;AA6BxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA4B5D,OAAO,KAAK,EAEV,yBAAyB,EACzB,gBAAgB,EAGhB,KAAK,EAEL,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAA0B,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEzF,OAAO,KAAK,EAGV,mBAAmB,EAEpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AASlF;;;GAGG;AACH,UAAU,uCAAuC;IAC/C;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,cAAc;AACd,KAAK,YAAY,GAAG,gBAAgB,GAAG,0BAA0B,GAAG,yBAAyB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtH;;;GAGG;AACH,UAAU,4BAA4B;IACpC;;;;;;OAMG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAElC;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAC;IAEzC,qGAAqG;IACrG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAEpE;;;;OAIG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAErC;;;;;OAKG;IACH,MAAM,CAAC,EAAE;QACP,iFAAiF;QACjF,KAAK,EAAE,mBAAmB,EAAE,CAAC;KAC9B,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,4BAA4B,GAAG,iBAAiB,GAAG,UAAU,CAGjH;AAED;;;GAGG;AACH,UAAU,kCAAmC,SAAQ,IAAI,CAAC,4BAA4B,EAAE,cAAc,GAAG,eAAe,CAAC;IACvH;;;;;OAKG;IACH,OAAO,EAAE,KAAK,CAAC;QACb;;;;;;WAMG;QACH,YAAY,EAAE,YAAY,CAAC;QAE3B;;;WAGG;QACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;KACnC,CAAC,CAAC;CACJ;AAED;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,kCAAkC,GAAG,iBAAiB,GAAG,UAAU,CAE7H"}
1
+ {"version":3,"file":"IModelHierarchyProvider.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/IModelHierarchyProvider.ts"],"names":[],"mappings":"AAKA,OAAO,gCAAgC,CAAC;AAkCxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA6B5D,OAAO,KAAK,EAEV,yBAAyB,EACzB,gBAAgB,EAEhB,KAAK,EAEL,iCAAiC,EACjC,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAA0B,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEzF,OAAO,KAAK,EAGV,mBAAmB,EAEpB,MAAM,gCAAgC,CAAC;AAOxC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAUlF;;;GAGG;AACH,UAAU,uCAAuC;IAC/C;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,cAAc;AACd,KAAK,YAAY,GAAG,gBAAgB,GAAG,0BAA0B,GAAG,yBAAyB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtH;;;GAGG;AACH,UAAU,4BAA4B;IACpC;;;;;;OAMG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAElC;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAC;IAEzC,qGAAqG;IACrG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAEpE;;;;OAIG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAErC;;;;;OAKG;IACH,MAAM,CAAC,EAAE;QACP,iFAAiF;QACjF,KAAK,EAAE,mBAAmB,EAAE,CAAC;KAC9B,CAAC;IAEF;;;;;;;OAOG;IACH,gCAAgC,CAAC,EAAE,iCAAiC,CAAC;CACtE;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,4BAA4B,GAAG,iBAAiB,GAAG,UAAU,CAMjH;AAED;;;GAGG;AACH,UAAU,kCAAmC,SAAQ,IAAI,CACvD,4BAA4B,EAC5B,cAAc,GAAG,eAAe,GAAG,kCAAkC,CACtE;IACC;;;;;OAKG;IACH,OAAO,EAAE,KAAK,CAAC;QACb;;;;;;WAMG;QACH,YAAY,EAAE,YAAY,CAAC;QAE3B;;;WAGG;QACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAElC;;;;;;;WAOG;QACH,gCAAgC,CAAC,EAAE,iCAAiC,CAAC;KACtE,CAAC,CAAC;CACJ;AAED;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,kCAAkC,GACxC,iBAAiB,GAAG,UAAU,CAEhC"}
@@ -32,6 +32,7 @@ const HideIfNoChildren_js_1 = require("./operators/HideIfNoChildren.js");
32
32
  const HideNodesInHierarchy_js_1 = require("./operators/HideNodesInHierarchy.js");
33
33
  const SearchHierarchyDefinition_js_1 = require("./SearchHierarchyDefinition.js");
34
34
  const TreeNodesReader_js_1 = require("./TreeNodesReader.js");
35
+ const Utils_js_1 = require("./Utils.js");
35
36
  const LOGGING_NAMESPACE = `${Common_js_1.LOGGING_NAMESPACE}.IModelHierarchyProvider`;
36
37
  const LOGGING_NAMESPACE_INTERNAL = `${Common_js_1.LOGGING_NAMESPACE_INTERNAL}.IModelHierarchyProvider`;
37
38
  const LOGGING_NAMESPACE_PERFORMANCE = `${Common_js_1.LOGGING_NAMESPACE_PERFORMANCE}.IModelHierarchyProvider`;
@@ -44,8 +45,11 @@ const DEFAULT_QUERY_CACHE_SIZE = 1;
44
45
  * @public
45
46
  */
46
47
  function createIModelHierarchyProvider(props) {
47
- const { imodelAccess, imodelChanged, ...restProps } = props;
48
- return createMergedIModelHierarchyProvider({ ...restProps, imodels: [{ imodelAccess, imodelChanged }] });
48
+ const { imodelAccess, imodelChanged, instanceLabelSelectClauseFactory, ...restProps } = props;
49
+ return createMergedIModelHierarchyProvider({
50
+ ...restProps,
51
+ imodels: [{ imodelAccess, imodelChanged, instanceLabelSelectClauseFactory }],
52
+ });
49
53
  }
50
54
  /**
51
55
  * Creates an instance of `HierarchyProvider` that creates a hierarchy based on multiple version of **the same** iModel
@@ -79,9 +83,14 @@ class IModelHierarchyProviderImpl {
79
83
  }
80
84
  this.#componentId = core_bentley_1.Guid.createValue();
81
85
  this.#componentName = "IModelHierarchyProviderImpl";
82
- /* c8 ignore next */
83
86
  this.#sourceName = props.sourceName ?? `${this.#componentName}:${this.#componentId}`;
84
- this._imodels = props.imodels;
87
+ this._imodels = props.imodels.map(({ imodelAccess, imodelChanged, instanceLabelSelectClauseFactory }) => {
88
+ if (!instanceLabelSelectClauseFactory) {
89
+ instanceLabelSelectClauseFactory = (0, presentation_shared_1.createIModelInstanceLabelSelectClauseFactory)({ imodelAccess });
90
+ }
91
+ const nodeSelectClauseFactory = (0, NodeSelectQueryFactory_js_1.createNodesQueryClauseFactory)({ imodelAccess, instanceLabelSelectClauseFactory });
92
+ return { imodelAccess, imodelChanged, nodeSelectClauseFactory };
93
+ });
85
94
  this._hierarchyChanged = new core_bentley_1.BeEvent();
86
95
  this._activeHierarchyDefinition = this._sourceHierarchyDefinition = (0, RxjsHierarchyDefinition_js_1.getRxjsHierarchyDefinition)(props.hierarchyDefinition);
87
96
  this._valuesFormatter = props.formatter ?? (0, presentation_shared_1.createDefaultValueFormatter)();
@@ -114,7 +123,7 @@ class IModelHierarchyProviderImpl {
114
123
  this._dispose.next();
115
124
  this._unsubscribe?.();
116
125
  }
117
- /* c8 ignore next 3 */
126
+ /* v8 ignore next -- @preserve */
118
127
  dispose() {
119
128
  this[Symbol.dispose]();
120
129
  }
@@ -133,9 +142,10 @@ class IModelHierarchyProviderImpl {
133
142
  return this._imodels[this._imodels.length - 1].imodelAccess;
134
143
  }
135
144
  invalidateHierarchyCache(reason) {
145
+ /* v8 ignore next -- @preserve */
136
146
  (0, LoggingUtils_js_1.doLog)({
137
147
  category: `${LOGGING_NAMESPACE}.Events`,
138
- message: /* c8 ignore next */ () => (reason ? `${reason}: clear hierarchy cache` : `Clear hierarchy cache`),
148
+ message: () => (reason ? `${reason}: clear hierarchy cache` : `Clear hierarchy cache`),
139
149
  });
140
150
  this._nodesCache?.clear();
141
151
  }
@@ -171,13 +181,17 @@ class IModelHierarchyProviderImpl {
171
181
  }
172
182
  createHierarchyLevelDefinitionsObservable(props) {
173
183
  const { requestContext, ...defineHierarchyLevelProps } = props;
184
+ /* v8 ignore next -- @preserve */
174
185
  (0, LoggingUtils_js_1.doLog)({
175
186
  category: LOGGING_NAMESPACE_PERFORMANCE,
176
- message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting hierarchy level definitions for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
187
+ message: () => `[${requestContext.requestId}] Requesting hierarchy level definitions for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
177
188
  });
178
- return (0, rxjs_1.from)(this._imodels).pipe((0, rxjs_1.mergeMap)(({ imodelAccess }, imodelAccessIndex) => {
189
+ return (0, rxjs_1.from)(this._imodels).pipe((0, rxjs_1.mergeMap)(({ imodelAccess, nodeSelectClauseFactory }, imodelAccessIndex) => {
179
190
  let parentNode = props.parentNode;
180
- if (parentNode && HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) && parentNode.key.source && parentNode.key.source !== this.#sourceName) {
191
+ if (parentNode &&
192
+ HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) &&
193
+ parentNode.key.source &&
194
+ parentNode.key.source !== this.#sourceName) {
181
195
  return rxjs_1.EMPTY;
182
196
  }
183
197
  if (parentNode && HierarchyNode_js_1.HierarchyNode.isInstancesNode(parentNode)) {
@@ -193,38 +207,67 @@ class IModelHierarchyProviderImpl {
193
207
  return rxjs_1.EMPTY;
194
208
  }
195
209
  }
196
- return this._activeHierarchyDefinition.defineHierarchyLevel({ ...defineHierarchyLevelProps, parentNode, imodelAccess }).pipe((0, rxjs_1.mergeAll)(), (0, rxjs_1.map)(
210
+ return this._activeHierarchyDefinition
211
+ .defineHierarchyLevel({
212
+ ...defineHierarchyLevelProps,
213
+ createSelectClause: async (selectClauseProps) => nodeSelectClauseFactory.createSelectClause(selectClauseProps),
214
+ /* v8 ignore start */
215
+ createFilterClauses: async (filterClausesProps) => nodeSelectClauseFactory.createFilterClauses(filterClausesProps),
216
+ /* v8 ignore stop */
217
+ parentNode,
218
+ imodelAccess,
219
+ })
220
+ .pipe((0, rxjs_1.mergeAll)(), (0, rxjs_1.map)(
197
221
  /* Using `as` to work around TS not understanding that `{ x: A, y: B | C }` is the same as `{ x: A } & ({ y: B } | { y: C })` */
198
222
  (hierarchyNodesDefinition) => ({ imodelAccess, imodelAccessIndex, hierarchyNodesDefinition })));
199
- }), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
200
- category: LOGGING_NAMESPACE_PERFORMANCE,
201
- message: /* c8 ignore next */ () => `[${requestContext.requestId}] Received all hierarchy level definitions for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
202
- })));
223
+ }), (0, rxjs_1.finalize)(() => {
224
+ /* v8 ignore next -- @preserve */
225
+ (0, LoggingUtils_js_1.doLog)({
226
+ category: LOGGING_NAMESPACE_PERFORMANCE,
227
+ message: () => `[${requestContext.requestId}] Received all hierarchy level definitions for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
228
+ });
229
+ }));
203
230
  }
204
231
  createSourceNodesObservable(props) {
205
- // pipe definitions to nodes and put "share replay" on it
206
- return this.createHierarchyLevelDefinitionsObservable(props).pipe((0, rxjs_1.mergeMap)(({ imodelAccess, imodelAccessIndex, hierarchyNodesDefinition: def }) => (0, rxjs_1.defer)(() => {
232
+ const createSourceNodesFromDefinition = (imodelAccess, def) => {
207
233
  if (IModelHierarchyDefinition_js_1.HierarchyNodesDefinition.isGenericNode(def)) {
208
- return (0, rxjs_1.of)({
209
- ...def.node,
210
- key: { type: "generic", id: def.node.key, source: this.#sourceName },
211
- });
234
+ return (0, rxjs_1.of)({ ...def.node, key: { type: "generic", id: def.node.key, source: this.#sourceName } });
212
235
  }
213
- return this.getQueryScheduler(imodelAccess.imodelKey).scheduleSubscription((0, rxjs_1.of)(def.query).pipe((0, rxjs_1.map)((query) => createInstanceKeysFilteredQuery(query, props.targetInstanceKeys)), (0, rxjs_1.mergeMap)((query) => (0, TreeNodesReader_js_1.readNodes)({
236
+ const query = createInstanceKeysFilteredQuery(def.query, props.targetInstanceKeys);
237
+ return this.getQueryScheduler(imodelAccess.imodelKey).scheduleSubscription((0, TreeNodesReader_js_1.readNodes)({
214
238
  queryExecutor: imodelAccess,
215
239
  query,
216
240
  limit: props.hierarchyLevelSizeLimit,
217
241
  parser: this._activeHierarchyDefinition.parseNode
218
- ? ({ row }) => this._activeHierarchyDefinition.parseNode({ row, parentNode: props.parentNode, imodelKey: imodelAccess.imodelKey })
242
+ ? ({ row }) => this._activeHierarchyDefinition.parseNode({
243
+ row,
244
+ parentNode: props.parentNode,
245
+ imodelKey: imodelAccess.imodelKey,
246
+ })
219
247
  : undefined,
220
- })), (0, rxjs_1.map)((node) => ({
248
+ }).pipe((0, rxjs_1.map)((node) => ({
221
249
  ...node,
222
- key: { ...node.key, instanceKeys: node.key.instanceKeys.map((key) => ({ ...key, imodelKey: imodelAccess.imodelKey })) },
250
+ key: {
251
+ ...node.key,
252
+ instanceKeys: node.key.instanceKeys.map((key) => ({ ...key, imodelKey: imodelAccess.imodelKey })),
253
+ },
223
254
  }))));
224
- }).pipe((0, rxjs_1.map)((node) => ({ imodelAccess, imodelAccessIndex, node })))), mergeNodes, (0, rxjs_1.map)(({ node }) => node), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
225
- category: LOGGING_NAMESPACE_PERFORMANCE,
226
- message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Read all child nodes ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
227
- })), (0, ShareReplayWithErrors_js_1.shareReplayWithErrors)());
255
+ };
256
+ const definitions = this.createHierarchyLevelDefinitionsObservable(props);
257
+ let sourceNodes;
258
+ if (this._imodels.length === 1) {
259
+ sourceNodes = definitions.pipe((0, rxjs_1.mergeMap)(({ imodelAccess, hierarchyNodesDefinition: def }) => createSourceNodesFromDefinition(imodelAccess, def)));
260
+ }
261
+ else {
262
+ sourceNodes = definitions.pipe((0, rxjs_1.mergeMap)(({ imodelAccess, imodelAccessIndex, hierarchyNodesDefinition: def }) => createSourceNodesFromDefinition(imodelAccess, def).pipe((0, rxjs_1.map)((node) => ({ imodelAccess, imodelAccessIndex, node })))), mergeNodes, (0, rxjs_1.map)(({ node }) => node));
263
+ }
264
+ return sourceNodes.pipe((0, rxjs_1.finalize)(() => {
265
+ /* v8 ignore next -- @preserve */
266
+ (0, LoggingUtils_js_1.doLog)({
267
+ category: LOGGING_NAMESPACE_PERFORMANCE,
268
+ message: () => `[${props.requestContext.requestId}] Read all child nodes ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
269
+ });
270
+ }), (0, ShareReplayWithErrors_js_1.shareReplayWithErrors)());
228
271
  }
229
272
  createPreProcessedNodesObservable(queryNodesObservable, props) {
230
273
  return queryNodesObservable.pipe(
@@ -240,16 +283,22 @@ class IModelHierarchyProviderImpl {
240
283
  // process hiding
241
284
  (0, HideIfNoChildren_js_1.createHideIfNoChildrenOperator)((n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes), (0, HideNodesInHierarchy_js_1.createHideNodesInHierarchyOperator)(
242
285
  // note: for child nodes created because of hidden parent, we want to use parent's request props (instance filter, limit)
243
- (n) => this.getChildNodesObservables({ ...props, parentNode: n }).processedNodes, false), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
244
- category: LOGGING_NAMESPACE_PERFORMANCE,
245
- message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished pre-processing child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
246
- })));
286
+ (n) => this.getChildNodesObservables({ ...props, parentNode: n }).processedNodes, false), (0, rxjs_1.finalize)(() => {
287
+ /* v8 ignore next -- @preserve */
288
+ (0, LoggingUtils_js_1.doLog)({
289
+ category: LOGGING_NAMESPACE_PERFORMANCE,
290
+ message: () => `[${props.requestContext.requestId}] Finished pre-processing child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
291
+ });
292
+ }));
247
293
  }
248
294
  createProcessedNodesObservable(preprocessedNodesObservable, props) {
249
- return preprocessedNodesObservable.pipe((0, Grouping_js_1.createGroupingOperator)(this.getPrimaryIModelAccess(), props.parentNode, this._valuesFormatter, this._localizedStrings, undefined, (gn) => this.onGroupingNodeCreated(gn, props)), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
250
- category: LOGGING_NAMESPACE_PERFORMANCE,
251
- message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished grouping child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
252
- })));
295
+ return preprocessedNodesObservable.pipe((0, Grouping_js_1.createGroupingOperator)(this.getPrimaryIModelAccess(), props.parentNode, this._valuesFormatter, this._localizedStrings, undefined, (gn) => this.onGroupingNodeCreated(gn, props)), (0, rxjs_1.finalize)(() => {
296
+ /* v8 ignore next -- @preserve */
297
+ (0, LoggingUtils_js_1.doLog)({
298
+ category: LOGGING_NAMESPACE_PERFORMANCE,
299
+ message: () => `[${props.requestContext.requestId}] Finished grouping child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
300
+ });
301
+ }));
253
302
  }
254
303
  createFinalizedNodesObservable(processedNodesObservable, props) {
255
304
  return processedNodesObservable.pipe((0, DetermineChildren_js_1.createDetermineChildrenOperator)((n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes), postProcessNodes(this._activeHierarchyDefinition, props.parentNode), Sorting_js_1.sortNodesByLabelOperator, (0, rxjs_1.map)((n) => {
@@ -257,35 +306,44 @@ class IModelHierarchyProviderImpl {
257
306
  delete n.processingParams;
258
307
  }
259
308
  return { ...n, children: (0, Common_js_1.hasChildren)(n) };
260
- }), (0, rxjs_1.takeUntil)(this._dispose), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
261
- category: LOGGING_NAMESPACE_PERFORMANCE,
262
- message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished finalizing child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
263
- })));
309
+ }), (0, rxjs_1.takeUntil)(this._dispose), (0, rxjs_1.finalize)(() => {
310
+ /* v8 ignore next -- @preserve */
311
+ (0, LoggingUtils_js_1.doLog)({
312
+ category: LOGGING_NAMESPACE_PERFORMANCE,
313
+ message: () => `[${props.requestContext.requestId}] Finished finalizing child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
314
+ });
315
+ }));
264
316
  }
265
317
  createHasNodesObservable(preprocessedNodesObservable, possiblyKnownChildrenObservable, props) {
266
318
  const loggingCategory = `${LOGGING_NAMESPACE_INTERNAL}.HasNodes`;
267
- return (0, rxjs_1.concat)((possiblyKnownChildrenObservable ?? rxjs_1.EMPTY).pipe((0, rxjs_1.filter)((n) => (0, Common_js_1.hasChildren)(n))), preprocessedNodesObservable).pipe((0, LoggingUtils_js_1.log)({
319
+ return (0, rxjs_1.concat)((possiblyKnownChildrenObservable ?? rxjs_1.EMPTY).pipe((0, rxjs_1.filter)((n) => (0, Common_js_1.hasChildren)(n))), preprocessedNodesObservable).pipe(
320
+ /* v8 ignore next -- @preserve */
321
+ (0, LoggingUtils_js_1.log)({
268
322
  category: loggingCategory,
269
- message: /* c8 ignore next */ (n) => `[${props.requestContext.requestId}] Node before mapping to 'true': ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}`,
323
+ message: (n) => `[${props.requestContext.requestId}] Node before mapping to 'true': ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}`,
270
324
  }), (0, rxjs_1.take)(1), (0, rxjs_1.map)(() => true), (0, rxjs_1.defaultIfEmpty)(false), (0, rxjs_1.catchError)((e) => {
325
+ /* v8 ignore next -- @preserve */
271
326
  (0, LoggingUtils_js_1.doLog)({
272
327
  category: loggingCategory,
273
- message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Error while determining children: ${e.message}`,
328
+ message: () => `[${props.requestContext.requestId}] Error while determining children: ${e.message}`,
274
329
  });
275
330
  if (e instanceof HierarchyErrors_js_1.RowsLimitExceededError) {
276
331
  return (0, rxjs_1.of)(true);
277
332
  }
278
333
  throw e;
279
- }), (0, LoggingUtils_js_1.log)({ category: loggingCategory, message: /* c8 ignore next */ (r) => `[${props.requestContext.requestId}] Result: ${r}` }));
334
+ }),
335
+ /* v8 ignore next -- @preserve */
336
+ (0, LoggingUtils_js_1.log)({ category: loggingCategory, message: (r) => `[${props.requestContext.requestId}] Result: ${r}` }));
280
337
  }
281
338
  getCachedObservableEntry(props) {
282
339
  const loggingCategory = `${LOGGING_NAMESPACE}.QueryResultsCache`;
283
340
  const { parentNode, ...restProps } = props;
284
341
  const cached = props.ignoreCache || !this._nodesCache ? undefined : this._nodesCache.get(props);
285
342
  if (cached) {
343
+ /* v8 ignore next -- @preserve */
286
344
  (0, LoggingUtils_js_1.doLog)({
287
345
  category: loggingCategory,
288
- message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Found query nodes observable for ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)}`,
346
+ message: () => `[${props.requestContext.requestId}] Found query nodes observable for ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)}`,
289
347
  });
290
348
  return cached;
291
349
  }
@@ -309,11 +367,15 @@ class IModelHierarchyProviderImpl {
309
367
  parentNode: parentNonGroupingNode,
310
368
  ...(targetInstanceKeys ? { targetInstanceKeys } : undefined),
311
369
  };
312
- const value = { observable: this.createSourceNodesObservable(nonGroupingNodeChildrenRequestProps), processingStatus: "none" };
370
+ const value = {
371
+ observable: this.createSourceNodesObservable(nonGroupingNodeChildrenRequestProps),
372
+ processingStatus: "none",
373
+ };
313
374
  this._nodesCache?.set(nonGroupingNodeChildrenRequestProps, value);
375
+ /* v8 ignore next -- @preserve */
314
376
  (0, LoggingUtils_js_1.doLog)({
315
377
  category: loggingCategory,
316
- message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Saved query nodes observable for ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)}`,
378
+ message: () => `[${props.requestContext.requestId}] Saved query nodes observable for ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)}`,
317
379
  });
318
380
  return value;
319
381
  }
@@ -348,18 +410,19 @@ class IModelHierarchyProviderImpl {
348
410
  const timer = new core_bentley_1.StopWatch(undefined, true);
349
411
  let error;
350
412
  let nodesCount = 0;
413
+ /* v8 ignore next -- @preserve */
351
414
  (0, LoggingUtils_js_1.doLog)({
352
415
  category: loggingCategory,
353
- message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
416
+ message: () => `[${requestContext.requestId}] Requesting child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
354
417
  });
355
418
  return (0, EachValueFrom_js_1.eachValueFrom)(this.getChildNodesObservables({ ...props, requestContext }).finalizedNodes.pipe((0, rxjs_1.tap)(() => ++nodesCount), (0, rxjs_1.catchError)((e) => {
356
419
  error = e;
357
420
  throw e;
358
421
  }), (0, rxjs_1.finalize)(() => {
422
+ /* v8 ignore next -- @preserve */
359
423
  (0, LoggingUtils_js_1.doLog)({
360
424
  category: loggingCategory,
361
- message: /* c8 ignore next */ () =>
362
- /* c8 ignore next 3 */ error
425
+ message: () => error
363
426
  ? `[${requestContext.requestId}] Error creating child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`
364
427
  : `[${requestContext.requestId}] Returned ${nodesCount} child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,
365
428
  });
@@ -372,7 +435,11 @@ class IModelHierarchyProviderImpl {
372
435
  }
373
436
  (0, core_bentley_1.assert)(!parentNode || HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) || HierarchyNode_js_1.HierarchyNode.isInstancesNode(parentNode));
374
437
  // split the definitions based on whether they're for generic nodes or for instance nodes
375
- const hierarchyLevelDefinitions = this.createHierarchyLevelDefinitionsObservable({ parentNode, instanceFilter, requestContext });
438
+ const hierarchyLevelDefinitions = this.createHierarchyLevelDefinitionsObservable({
439
+ parentNode,
440
+ instanceFilter,
441
+ requestContext,
442
+ });
376
443
  const [instanceDefs, genericDefs] = (0, Partition_js_1.partition)(hierarchyLevelDefinitions, (x) => IModelHierarchyDefinition_js_1.HierarchyNodesDefinition.isInstanceNodesQuery(x.hierarchyNodesDefinition));
377
444
  // query instance keys and a flag whether they should be hidden
378
445
  const instanceKeys = instanceDefs.pipe((0, rxjs_1.mergeMap)(({ imodelAccess, hierarchyNodesDefinition: def }) => this.getQueryScheduler(imodelAccess.imodelKey).scheduleSubscription((0, rxjs_1.of)(def.query).pipe((0, rxjs_1.mergeMap)(async (query) => {
@@ -415,11 +482,7 @@ class IModelHierarchyProviderImpl {
415
482
  (0, rxjs_1.mergeMap)((mergedMap) => [...mergedMap.entries()].map(([className, keys]) => ({
416
483
  type: "instances",
417
484
  instanceKeys: keys.map(({ id, imodelKey }) => ({ className, id, imodelKey })),
418
- }))))).pipe((0, rxjs_1.map)((key) => ({
419
- key,
420
- parentKeys: [],
421
- label: "",
422
- })));
485
+ }))))).pipe((0, rxjs_1.map)((key) => ({ key, parentKeys: [], label: "" })));
423
486
  // merge visible instance keys from this level & the ones we get recursively requesting from deeper levels
424
487
  return (0, rxjs_1.merge)(visibleNodeInstanceKeys.pipe((0, rxjs_1.map)(({ key }) => key)), hiddenParentNodes.pipe((0, rxjs_1.mergeMap)((hiddenNode) => this.getNodeInstanceKeysObs({ parentNode: hiddenNode, requestContext })))).pipe((0, rxjs_1.takeUntil)(this._dispose));
425
488
  }
@@ -431,9 +494,10 @@ class IModelHierarchyProviderImpl {
431
494
  const requestContext = { requestId: core_bentley_1.Guid.createValue() };
432
495
  const loggingCategory = `${LOGGING_NAMESPACE}.GetNodeInstanceKeys`;
433
496
  const timer = new core_bentley_1.StopWatch(undefined, true);
497
+ /* v8 ignore next -- @preserve */
434
498
  (0, LoggingUtils_js_1.doLog)({
435
499
  category: loggingCategory,
436
- message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
500
+ message: () => `[${requestContext.requestId}] Requesting keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
437
501
  });
438
502
  let error;
439
503
  let keysCount = 0;
@@ -441,10 +505,10 @@ class IModelHierarchyProviderImpl {
441
505
  error = e;
442
506
  throw e;
443
507
  }), (0, rxjs_1.finalize)(() => {
508
+ /* v8 ignore next -- @preserve */
444
509
  (0, LoggingUtils_js_1.doLog)({
445
510
  category: loggingCategory,
446
- message: /* c8 ignore next */ () =>
447
- /* c8 ignore next 3 */ error
511
+ message: () => error
448
512
  ? `[${requestContext.requestId}] Error creating node instance keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`
449
513
  : `[${requestContext.requestId}] Returned ${keysCount} instance keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,
450
514
  });
@@ -461,13 +525,7 @@ function processNodes(processor, parentNode) {
461
525
  return (nodes) => nodes.pipe((0, rxjs_1.mergeMap)((node) => processor({ node, parentNode })));
462
526
  }
463
527
  function applyLabelsFormatting(node, valueFormatter) {
464
- return (0, rxjs_1.from)((0, presentation_shared_1.formatConcatenatedValue)({
465
- value: node.label,
466
- valueFormatter,
467
- })).pipe((0, rxjs_1.map)((label) => ({
468
- ...node,
469
- label,
470
- })));
528
+ return (0, rxjs_1.from)((0, presentation_shared_1.formatConcatenatedValue)({ value: node.label, valueFormatter })).pipe((0, rxjs_1.map)((label) => ({ ...node, label })));
471
529
  }
472
530
  function createParentNodeKeysList(parentNode) {
473
531
  if (!parentNode) {
@@ -479,30 +537,35 @@ function createInstanceKeysFilteredQuery(query, targetInstanceKeys) {
479
537
  if (!targetInstanceKeys || !targetInstanceKeys.length) {
480
538
  return query;
481
539
  }
482
- const MAX_ALLOWED_BINDINGS = 1000;
483
- if (targetInstanceKeys.length < MAX_ALLOWED_BINDINGS) {
540
+ if (Array.isArray(query.bindings)) {
484
541
  return {
485
542
  ...query,
486
543
  ecsql: `
487
544
  SELECT *
488
545
  FROM (${query.ecsql}) q
489
- WHERE q.ECInstanceId IN (${targetInstanceKeys.map(() => "?").join(",")})
546
+ JOIN IdSet(?) targetInstanceKeys ON targetInstanceKeys.id = q.ECInstanceId
547
+ ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES
490
548
  `,
491
- bindings: [...(query.bindings ?? []), ...targetInstanceKeys.map((k) => ({ type: "id", value: k.id }))],
549
+ bindings: [...query.bindings, { type: "idset", value: targetInstanceKeys.map((k) => k.id) }],
492
550
  };
493
551
  }
494
- /* c8 ignore start */
552
+ const ecsqlVarTargetInstanceKeys = `${Utils_js_1.ECSQL_PREFIX}targetInstanceKeys`;
495
553
  return {
496
554
  ...query,
497
555
  ecsql: `
498
556
  SELECT *
499
557
  FROM (${query.ecsql}) q
500
- WHERE InVirtualSet(?, q.ECInstanceId)
558
+ JOIN IdSet(:${ecsqlVarTargetInstanceKeys}) targetInstanceKeys ON targetInstanceKeys.id = q.ECInstanceId
559
+ ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES
501
560
  `,
502
- bindings: [...(query.bindings ?? []), { type: "idset", value: targetInstanceKeys.map((k) => k.id) }],
561
+ bindings: {
562
+ ...query.bindings,
563
+ [ecsqlVarTargetInstanceKeys]: { type: "idset", value: targetInstanceKeys.map((k) => k.id) },
564
+ },
503
565
  };
504
- /* c8 ignore end */
505
566
  }
567
+ // TODO: MISSING_COVERAGE
568
+ /* v8 ignore start */
506
569
  function mergeNodes(source) {
507
570
  return (0, rxjs_1.from)(source).pipe((0, rxjs_1.reduce)((acc, input) => {
508
571
  for (let i = 0; i < acc.length; ++i) {
@@ -513,11 +576,25 @@ function mergeNodes(source) {
513
576
  // the first argument for `tryMergeNodes` acts as the primary data source, so we have to make sure we pass
514
577
  // the node with higher `imodelAccessIndex` first
515
578
  const candidates = input.imodelAccessIndex > acc[i].imodelAccessIndex
516
- ? { imodelAccess: input.imodelAccess, imodelAccessIndex: input.imodelAccessIndex, primary: input.node, secondary: acc[i].node }
517
- : { imodelAccess: acc[i].imodelAccess, imodelAccessIndex: acc[i].imodelAccessIndex, primary: acc[i].node, secondary: input.node };
579
+ ? {
580
+ imodelAccess: input.imodelAccess,
581
+ imodelAccessIndex: input.imodelAccessIndex,
582
+ primary: input.node,
583
+ secondary: acc[i].node,
584
+ }
585
+ : {
586
+ imodelAccess: acc[i].imodelAccess,
587
+ imodelAccessIndex: acc[i].imodelAccessIndex,
588
+ primary: acc[i].node,
589
+ secondary: input.node,
590
+ };
518
591
  const merged = tryMergeNodes(candidates.primary, candidates.secondary);
519
592
  if (merged) {
520
- acc[i] = { node: merged, imodelAccess: candidates.imodelAccess, imodelAccessIndex: candidates.imodelAccessIndex };
593
+ acc[i] = {
594
+ node: merged,
595
+ imodelAccess: candidates.imodelAccess,
596
+ imodelAccessIndex: candidates.imodelAccessIndex,
597
+ };
521
598
  return acc;
522
599
  }
523
600
  }
@@ -561,10 +638,7 @@ function tryMergeInstanceNodes(primary, secondary) {
561
638
  primary.key.instanceKeys.some((lhsKey) => secondary.key.instanceKeys.some((rhsKey) => presentation_shared_1.InstanceKey.equals(lhsKey, rhsKey)))) {
562
639
  return {
563
640
  ...primary,
564
- key: {
565
- type: "instances",
566
- instanceKeys: primary.key.instanceKeys.concat(secondary.key.instanceKeys),
567
- },
641
+ key: { type: "instances", instanceKeys: primary.key.instanceKeys.concat(secondary.key.instanceKeys) },
568
642
  ...mergeBaseNodeAttributes(primary, secondary),
569
643
  };
570
644
  }
@@ -572,14 +646,12 @@ function tryMergeInstanceNodes(primary, secondary) {
572
646
  }
573
647
  function tryMergeGenericNodes(primary, secondary) {
574
648
  if (HierarchyNode_js_1.HierarchyNode.isGeneric(primary) && HierarchyNode_js_1.HierarchyNode.isGeneric(secondary) && primary.key.id === secondary.key.id) {
575
- return {
576
- ...primary,
577
- ...mergeBaseNodeAttributes(primary, secondary),
578
- };
649
+ return { ...primary, ...mergeBaseNodeAttributes(primary, secondary) };
579
650
  }
580
651
  return undefined;
581
652
  }
582
653
  function tryMergeNodes(primary, secondary) {
583
654
  return tryMergeInstanceNodes(primary, secondary) ?? tryMergeGenericNodes(primary, secondary) ?? undefined;
584
655
  }
656
+ /* v8 ignore stop */
585
657
  //# sourceMappingURL=IModelHierarchyProvider.js.map