@itwin/presentation-hierarchies 2.0.0-alpha.15 → 2.0.0-alpha.17

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 (424) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/README.md +6 -17
  3. package/lib/hierarchies/HierarchyErrors.d.ts.map +1 -0
  4. package/lib/hierarchies/HierarchyErrors.js.map +1 -0
  5. package/lib/hierarchies/HierarchyMerge.d.ts.map +1 -0
  6. package/lib/hierarchies/HierarchyMerge.js.map +1 -0
  7. package/lib/hierarchies/HierarchyNode.d.ts.map +1 -0
  8. package/lib/hierarchies/HierarchyNode.js.map +1 -0
  9. package/lib/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -0
  10. package/lib/hierarchies/HierarchyNodeIdentifier.js.map +1 -0
  11. package/lib/{esm/hierarchies → hierarchies}/HierarchyNodeKey.d.ts +4 -4
  12. package/lib/hierarchies/HierarchyNodeKey.d.ts.map +1 -0
  13. package/lib/{esm/hierarchies → hierarchies}/HierarchyNodeKey.js +5 -5
  14. package/lib/hierarchies/HierarchyNodeKey.js.map +1 -0
  15. package/lib/hierarchies/HierarchyProvider.d.ts.map +1 -0
  16. package/lib/hierarchies/HierarchyProvider.js.map +1 -0
  17. package/lib/hierarchies/HierarchySearch.d.ts.map +1 -0
  18. package/lib/hierarchies/HierarchySearch.js.map +1 -0
  19. package/lib/hierarchies/Logging.d.ts.map +1 -0
  20. package/lib/hierarchies/Logging.js.map +1 -0
  21. package/lib/hierarchies/imodel/HierarchyCache.d.ts.map +1 -0
  22. package/lib/hierarchies/imodel/HierarchyCache.js.map +1 -0
  23. package/lib/{esm/hierarchies → hierarchies}/imodel/IModelHierarchyDefinition.d.ts +3 -34
  24. package/lib/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -0
  25. package/lib/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -0
  26. package/lib/{esm/hierarchies → hierarchies}/imodel/IModelHierarchyNode.d.ts +2 -2
  27. package/lib/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -0
  28. package/lib/hierarchies/imodel/IModelHierarchyNode.js.map +1 -0
  29. package/lib/{cjs/hierarchies → hierarchies}/imodel/IModelHierarchyProvider.d.ts +20 -2
  30. package/lib/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -0
  31. package/lib/{esm/hierarchies → hierarchies}/imodel/IModelHierarchyProvider.js +27 -21
  32. package/lib/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -0
  33. package/lib/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -0
  34. package/lib/{esm/hierarchies → hierarchies}/imodel/LimitingECSqlQueryExecutor.js +6 -2
  35. package/lib/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -0
  36. package/lib/{esm/hierarchies → hierarchies}/imodel/NodeSelectQueryFactory.d.ts +8 -7
  37. package/lib/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -0
  38. package/lib/{esm/hierarchies → hierarchies}/imodel/NodeSelectQueryFactory.js +16 -11
  39. package/lib/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -0
  40. package/lib/{esm/hierarchies → hierarchies}/imodel/PredicateBasedHierarchyDefinition.d.ts +2 -2
  41. package/lib/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -0
  42. package/lib/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -0
  43. package/lib/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -0
  44. package/lib/{esm/hierarchies → hierarchies}/imodel/SearchHierarchyDefinition.js +3 -4
  45. package/lib/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -0
  46. package/lib/{esm/hierarchies → hierarchies}/imodel/TreeNodesReader.d.ts +1 -1
  47. package/lib/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -0
  48. package/lib/{esm/hierarchies → hierarchies}/imodel/TreeNodesReader.js +2 -5
  49. package/lib/hierarchies/imodel/TreeNodesReader.js.map +1 -0
  50. package/lib/{esm/hierarchies → hierarchies}/imodel/Utils.d.ts +1 -0
  51. package/lib/hierarchies/imodel/Utils.d.ts.map +1 -0
  52. package/lib/{esm/hierarchies → hierarchies}/imodel/Utils.js +1 -0
  53. package/lib/hierarchies/imodel/Utils.js.map +1 -0
  54. package/lib/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -0
  55. package/lib/hierarchies/imodel/operators/DetermineChildren.js.map +1 -0
  56. package/lib/hierarchies/imodel/operators/Grouping.d.ts.map +1 -0
  57. package/lib/hierarchies/imodel/operators/Grouping.js.map +1 -0
  58. package/lib/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -0
  59. package/lib/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -0
  60. package/lib/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -0
  61. package/lib/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -0
  62. package/lib/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -0
  63. package/lib/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -0
  64. package/lib/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -0
  65. package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/BaseClassGrouping.js +4 -4
  66. package/lib/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -0
  67. package/lib/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -0
  68. package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/ClassGrouping.js +3 -3
  69. package/lib/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -0
  70. package/lib/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -0
  71. package/lib/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -0
  72. package/lib/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -0
  73. package/lib/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -0
  74. package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/grouping/PropertiesGrouping.d.ts +1 -1
  75. package/lib/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -0
  76. package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/PropertiesGrouping.js +10 -9
  77. package/lib/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -0
  78. package/lib/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -0
  79. package/lib/hierarchies/imodel/operators/grouping/Shared.js.map +1 -0
  80. package/lib/hierarchies/internal/Common.d.ts.map +1 -0
  81. package/lib/hierarchies/internal/Common.js.map +1 -0
  82. package/lib/hierarchies/internal/DisposePolyfill.d.ts.map +1 -0
  83. package/lib/hierarchies/internal/DisposePolyfill.js.map +1 -0
  84. package/lib/hierarchies/internal/EachValueFrom.d.ts.map +1 -0
  85. package/lib/hierarchies/internal/EachValueFrom.js.map +1 -0
  86. package/lib/hierarchies/internal/LoggingUtils.d.ts.map +1 -0
  87. package/lib/hierarchies/internal/LoggingUtils.js.map +1 -0
  88. package/lib/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -0
  89. package/lib/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -0
  90. package/lib/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -0
  91. package/lib/hierarchies/internal/SubscriptionScheduler.js.map +1 -0
  92. package/lib/hierarchies/internal/operators/Partition.d.ts.map +1 -0
  93. package/lib/hierarchies/internal/operators/Partition.js.map +1 -0
  94. package/lib/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -0
  95. package/lib/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -0
  96. package/lib/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -0
  97. package/lib/hierarchies/internal/operators/ReleaseMainThread.js.map +1 -0
  98. package/lib/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +1 -0
  99. package/lib/hierarchies/internal/operators/ShareReplayWithErrors.js.map +1 -0
  100. package/lib/hierarchies/internal/operators/Sorting.d.ts.map +1 -0
  101. package/lib/hierarchies/internal/operators/Sorting.js.map +1 -0
  102. package/lib/hierarchies/internal/operators/TapOnce.d.ts.map +1 -0
  103. package/lib/hierarchies/internal/operators/TapOnce.js.map +1 -0
  104. package/lib/{esm/presentation-hierarchies.d.ts → presentation-hierarchies.d.ts} +0 -2
  105. package/lib/presentation-hierarchies.d.ts.map +1 -0
  106. package/lib/{esm/presentation-hierarchies.js → presentation-hierarchies.js} +0 -1
  107. package/lib/presentation-hierarchies.js.map +1 -0
  108. package/package.json +19 -21
  109. package/lib/cjs/hierarchies/HierarchyErrors.d.ts.map +0 -1
  110. package/lib/cjs/hierarchies/HierarchyErrors.js +0 -20
  111. package/lib/cjs/hierarchies/HierarchyErrors.js.map +0 -1
  112. package/lib/cjs/hierarchies/HierarchyMerge.d.ts.map +0 -1
  113. package/lib/cjs/hierarchies/HierarchyMerge.js +0 -43
  114. package/lib/cjs/hierarchies/HierarchyMerge.js.map +0 -1
  115. package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +0 -1
  116. package/lib/cjs/hierarchies/HierarchyNode.js +0 -82
  117. package/lib/cjs/hierarchies/HierarchyNode.js.map +0 -1
  118. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts.map +0 -1
  119. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js +0 -52
  120. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js.map +0 -1
  121. package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts +0 -162
  122. package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +0 -1
  123. package/lib/cjs/hierarchies/HierarchyNodeKey.js +0 -166
  124. package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +0 -1
  125. package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +0 -1
  126. package/lib/cjs/hierarchies/HierarchyProvider.js +0 -64
  127. package/lib/cjs/hierarchies/HierarchyProvider.js.map +0 -1
  128. package/lib/cjs/hierarchies/HierarchySearch.d.ts.map +0 -1
  129. package/lib/cjs/hierarchies/HierarchySearch.js +0 -468
  130. package/lib/cjs/hierarchies/HierarchySearch.js.map +0 -1
  131. package/lib/cjs/hierarchies/Logging.d.ts.map +0 -1
  132. package/lib/cjs/hierarchies/Logging.js +0 -27
  133. package/lib/cjs/hierarchies/Logging.js.map +0 -1
  134. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +0 -1
  135. package/lib/cjs/hierarchies/imodel/HierarchyCache.js +0 -81
  136. package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +0 -1
  137. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +0 -175
  138. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +0 -1
  139. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js +0 -21
  140. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +0 -1
  141. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts +0 -234
  142. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +0 -1
  143. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js +0 -29
  144. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +0 -1
  145. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +0 -1
  146. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +0 -651
  147. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +0 -1
  148. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +0 -1
  149. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js +0 -122
  150. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +0 -1
  151. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts +0 -230
  152. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +0 -1
  153. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +0 -624
  154. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +0 -1
  155. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +0 -140
  156. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +0 -1
  157. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +0 -94
  158. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +0 -1
  159. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +0 -1
  160. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js +0 -268
  161. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js.map +0 -1
  162. package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts +0 -35
  163. package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +0 -1
  164. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +0 -51
  165. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +0 -1
  166. package/lib/cjs/hierarchies/imodel/Utils.d.ts +0 -4
  167. package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +0 -1
  168. package/lib/cjs/hierarchies/imodel/Utils.js +0 -71
  169. package/lib/cjs/hierarchies/imodel/Utils.js.map +0 -1
  170. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +0 -1
  171. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js +0 -40
  172. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +0 -1
  173. package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +0 -1
  174. package/lib/cjs/hierarchies/imodel/operators/Grouping.js +0 -176
  175. package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +0 -1
  176. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +0 -1
  177. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +0 -75
  178. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +0 -1
  179. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +0 -1
  180. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js +0 -84
  181. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +0 -1
  182. package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +0 -1
  183. package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js +0 -26
  184. package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js.map +0 -1
  185. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +0 -1
  186. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +0 -113
  187. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +0 -1
  188. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +0 -1
  189. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +0 -54
  190. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +0 -1
  191. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +0 -1
  192. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js +0 -49
  193. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +0 -1
  194. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +0 -1
  195. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js +0 -52
  196. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +0 -1
  197. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +0 -1
  198. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +0 -310
  199. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +0 -1
  200. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +0 -1
  201. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js +0 -31
  202. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +0 -1
  203. package/lib/cjs/hierarchies/internal/Common.d.ts.map +0 -1
  204. package/lib/cjs/hierarchies/internal/Common.js +0 -91
  205. package/lib/cjs/hierarchies/internal/Common.js.map +0 -1
  206. package/lib/cjs/hierarchies/internal/DisposePolyfill.d.ts +0 -1
  207. package/lib/cjs/hierarchies/internal/DisposePolyfill.d.ts.map +0 -1
  208. package/lib/cjs/hierarchies/internal/DisposePolyfill.js +0 -11
  209. package/lib/cjs/hierarchies/internal/DisposePolyfill.js.map +0 -1
  210. package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts.map +0 -1
  211. package/lib/cjs/hierarchies/internal/EachValueFrom.js +0 -111
  212. package/lib/cjs/hierarchies/internal/EachValueFrom.js.map +0 -1
  213. package/lib/cjs/hierarchies/internal/LoggingUtils.d.ts.map +0 -1
  214. package/lib/cjs/hierarchies/internal/LoggingUtils.js +0 -37
  215. package/lib/cjs/hierarchies/internal/LoggingUtils.js.map +0 -1
  216. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +0 -1
  217. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +0 -28
  218. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +0 -1
  219. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts.map +0 -1
  220. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js +0 -54
  221. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js.map +0 -1
  222. package/lib/cjs/hierarchies/internal/operators/Partition.d.ts.map +0 -1
  223. package/lib/cjs/hierarchies/internal/operators/Partition.js +0 -60
  224. package/lib/cjs/hierarchies/internal/operators/Partition.js.map +0 -1
  225. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +0 -1
  226. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js +0 -50
  227. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js.map +0 -1
  228. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +0 -1
  229. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.js +0 -24
  230. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.js.map +0 -1
  231. package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +0 -1
  232. package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.js +0 -23
  233. package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.js.map +0 -1
  234. package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts.map +0 -1
  235. package/lib/cjs/hierarchies/internal/operators/Sorting.js +0 -25
  236. package/lib/cjs/hierarchies/internal/operators/Sorting.js.map +0 -1
  237. package/lib/cjs/hierarchies/internal/operators/TapOnce.d.ts.map +0 -1
  238. package/lib/cjs/hierarchies/internal/operators/TapOnce.js +0 -19
  239. package/lib/cjs/hierarchies/internal/operators/TapOnce.js.map +0 -1
  240. package/lib/cjs/package.json +0 -1
  241. package/lib/cjs/presentation-hierarchies.d.ts +0 -26
  242. package/lib/cjs/presentation-hierarchies.d.ts.map +0 -1
  243. package/lib/cjs/presentation-hierarchies.js +0 -43
  244. package/lib/cjs/presentation-hierarchies.js.map +0 -1
  245. package/lib/esm/hierarchies/HierarchyErrors.d.ts +0 -9
  246. package/lib/esm/hierarchies/HierarchyErrors.d.ts.map +0 -1
  247. package/lib/esm/hierarchies/HierarchyErrors.js.map +0 -1
  248. package/lib/esm/hierarchies/HierarchyMerge.d.ts +0 -19
  249. package/lib/esm/hierarchies/HierarchyMerge.d.ts.map +0 -1
  250. package/lib/esm/hierarchies/HierarchyMerge.js.map +0 -1
  251. package/lib/esm/hierarchies/HierarchyNode.d.ts +0 -149
  252. package/lib/esm/hierarchies/HierarchyNode.d.ts.map +0 -1
  253. package/lib/esm/hierarchies/HierarchyNode.js.map +0 -1
  254. package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts +0 -31
  255. package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts.map +0 -1
  256. package/lib/esm/hierarchies/HierarchyNodeIdentifier.js.map +0 -1
  257. package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +0 -1
  258. package/lib/esm/hierarchies/HierarchyNodeKey.js.map +0 -1
  259. package/lib/esm/hierarchies/HierarchyProvider.d.ts +0 -134
  260. package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +0 -1
  261. package/lib/esm/hierarchies/HierarchyProvider.js.map +0 -1
  262. package/lib/esm/hierarchies/HierarchySearch.d.ts +0 -297
  263. package/lib/esm/hierarchies/HierarchySearch.d.ts.map +0 -1
  264. package/lib/esm/hierarchies/HierarchySearch.js.map +0 -1
  265. package/lib/esm/hierarchies/Logging.d.ts +0 -13
  266. package/lib/esm/hierarchies/Logging.d.ts.map +0 -1
  267. package/lib/esm/hierarchies/Logging.js.map +0 -1
  268. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts +0 -18
  269. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +0 -1
  270. package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +0 -1
  271. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +0 -1
  272. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +0 -1
  273. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +0 -1
  274. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +0 -1
  275. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +0 -120
  276. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +0 -1
  277. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +0 -1
  278. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts +0 -21
  279. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +0 -1
  280. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +0 -1
  281. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +0 -1
  282. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +0 -1
  283. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +0 -1
  284. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +0 -1
  285. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts +0 -35
  286. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +0 -1
  287. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js.map +0 -1
  288. package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +0 -1
  289. package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +0 -1
  290. package/lib/esm/hierarchies/imodel/Utils.d.ts.map +0 -1
  291. package/lib/esm/hierarchies/imodel/Utils.js.map +0 -1
  292. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts +0 -11
  293. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +0 -1
  294. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +0 -1
  295. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts +0 -26
  296. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +0 -1
  297. package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +0 -1
  298. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts +0 -11
  299. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +0 -1
  300. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +0 -1
  301. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts +0 -11
  302. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +0 -1
  303. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +0 -1
  304. package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts +0 -4
  305. package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +0 -1
  306. package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.js.map +0 -1
  307. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +0 -11
  308. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +0 -1
  309. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +0 -1
  310. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +0 -7
  311. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +0 -1
  312. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +0 -1
  313. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts +0 -4
  314. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +0 -1
  315. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +0 -1
  316. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +0 -5
  317. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +0 -1
  318. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +0 -1
  319. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +0 -32
  320. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +0 -1
  321. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +0 -1
  322. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts +0 -5
  323. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +0 -1
  324. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +0 -1
  325. package/lib/esm/hierarchies/internal/Common.d.ts +0 -61
  326. package/lib/esm/hierarchies/internal/Common.d.ts.map +0 -1
  327. package/lib/esm/hierarchies/internal/Common.js.map +0 -1
  328. package/lib/esm/hierarchies/internal/DisposePolyfill.d.ts.map +0 -1
  329. package/lib/esm/hierarchies/internal/DisposePolyfill.js.map +0 -1
  330. package/lib/esm/hierarchies/internal/EachValueFrom.d.ts +0 -12
  331. package/lib/esm/hierarchies/internal/EachValueFrom.d.ts.map +0 -1
  332. package/lib/esm/hierarchies/internal/EachValueFrom.js.map +0 -1
  333. package/lib/esm/hierarchies/internal/LoggingUtils.d.ts +0 -12
  334. package/lib/esm/hierarchies/internal/LoggingUtils.d.ts.map +0 -1
  335. package/lib/esm/hierarchies/internal/LoggingUtils.js.map +0 -1
  336. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts +0 -75
  337. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +0 -1
  338. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +0 -1
  339. package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts +0 -17
  340. package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts.map +0 -1
  341. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js.map +0 -1
  342. package/lib/esm/hierarchies/internal/operators/Partition.d.ts +0 -7
  343. package/lib/esm/hierarchies/internal/operators/Partition.d.ts.map +0 -1
  344. package/lib/esm/hierarchies/internal/operators/Partition.js.map +0 -1
  345. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts +0 -22
  346. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +0 -1
  347. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.js.map +0 -1
  348. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts +0 -7
  349. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +0 -1
  350. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.js.map +0 -1
  351. package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.d.ts +0 -9
  352. package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +0 -1
  353. package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.js.map +0 -1
  354. package/lib/esm/hierarchies/internal/operators/Sorting.d.ts +0 -13
  355. package/lib/esm/hierarchies/internal/operators/Sorting.d.ts.map +0 -1
  356. package/lib/esm/hierarchies/internal/operators/Sorting.js.map +0 -1
  357. package/lib/esm/hierarchies/internal/operators/TapOnce.d.ts +0 -4
  358. package/lib/esm/hierarchies/internal/operators/TapOnce.d.ts.map +0 -1
  359. package/lib/esm/hierarchies/internal/operators/TapOnce.js.map +0 -1
  360. package/lib/esm/presentation-hierarchies.d.ts.map +0 -1
  361. package/lib/esm/presentation-hierarchies.js.map +0 -1
  362. /package/lib/{cjs/hierarchies → hierarchies}/HierarchyErrors.d.ts +0 -0
  363. /package/lib/{esm/hierarchies → hierarchies}/HierarchyErrors.js +0 -0
  364. /package/lib/{cjs/hierarchies → hierarchies}/HierarchyMerge.d.ts +0 -0
  365. /package/lib/{esm/hierarchies → hierarchies}/HierarchyMerge.js +0 -0
  366. /package/lib/{cjs/hierarchies → hierarchies}/HierarchyNode.d.ts +0 -0
  367. /package/lib/{esm/hierarchies → hierarchies}/HierarchyNode.js +0 -0
  368. /package/lib/{cjs/hierarchies → hierarchies}/HierarchyNodeIdentifier.d.ts +0 -0
  369. /package/lib/{esm/hierarchies → hierarchies}/HierarchyNodeIdentifier.js +0 -0
  370. /package/lib/{cjs/hierarchies → hierarchies}/HierarchyProvider.d.ts +0 -0
  371. /package/lib/{esm/hierarchies → hierarchies}/HierarchyProvider.js +0 -0
  372. /package/lib/{cjs/hierarchies → hierarchies}/HierarchySearch.d.ts +0 -0
  373. /package/lib/{esm/hierarchies → hierarchies}/HierarchySearch.js +0 -0
  374. /package/lib/{cjs/hierarchies → hierarchies}/Logging.d.ts +0 -0
  375. /package/lib/{esm/hierarchies → hierarchies}/Logging.js +0 -0
  376. /package/lib/{cjs/hierarchies → hierarchies}/imodel/HierarchyCache.d.ts +0 -0
  377. /package/lib/{esm/hierarchies → hierarchies}/imodel/HierarchyCache.js +0 -0
  378. /package/lib/{esm/hierarchies → hierarchies}/imodel/IModelHierarchyDefinition.js +0 -0
  379. /package/lib/{esm/hierarchies → hierarchies}/imodel/IModelHierarchyNode.js +0 -0
  380. /package/lib/{cjs/hierarchies → hierarchies}/imodel/LimitingECSqlQueryExecutor.d.ts +0 -0
  381. /package/lib/{esm/hierarchies → hierarchies}/imodel/PredicateBasedHierarchyDefinition.js +0 -0
  382. /package/lib/{cjs/hierarchies → hierarchies}/imodel/SearchHierarchyDefinition.d.ts +0 -0
  383. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/DetermineChildren.d.ts +0 -0
  384. /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/DetermineChildren.js +0 -0
  385. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/Grouping.d.ts +0 -0
  386. /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/Grouping.js +0 -0
  387. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/HideIfNoChildren.d.ts +0 -0
  388. /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/HideIfNoChildren.js +0 -0
  389. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/HideNodesInHierarchy.d.ts +0 -0
  390. /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/HideNodesInHierarchy.js +0 -0
  391. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/grouping/AutoExpand.d.ts +0 -0
  392. /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/AutoExpand.js +0 -0
  393. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/grouping/BaseClassGrouping.d.ts +0 -0
  394. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/grouping/ClassGrouping.d.ts +0 -0
  395. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/grouping/GroupHiding.d.ts +0 -0
  396. /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/GroupHiding.js +0 -0
  397. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/grouping/LabelGrouping.d.ts +0 -0
  398. /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/LabelGrouping.js +0 -0
  399. /package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/grouping/Shared.d.ts +0 -0
  400. /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/Shared.js +0 -0
  401. /package/lib/{cjs/hierarchies → hierarchies}/internal/Common.d.ts +0 -0
  402. /package/lib/{esm/hierarchies → hierarchies}/internal/Common.js +0 -0
  403. /package/lib/{esm/hierarchies → hierarchies}/internal/DisposePolyfill.d.ts +0 -0
  404. /package/lib/{esm/hierarchies → hierarchies}/internal/DisposePolyfill.js +0 -0
  405. /package/lib/{cjs/hierarchies → hierarchies}/internal/EachValueFrom.d.ts +0 -0
  406. /package/lib/{esm/hierarchies → hierarchies}/internal/EachValueFrom.js +0 -0
  407. /package/lib/{cjs/hierarchies → hierarchies}/internal/LoggingUtils.d.ts +0 -0
  408. /package/lib/{esm/hierarchies → hierarchies}/internal/LoggingUtils.js +0 -0
  409. /package/lib/{cjs/hierarchies → hierarchies}/internal/RxjsHierarchyDefinition.d.ts +0 -0
  410. /package/lib/{esm/hierarchies → hierarchies}/internal/RxjsHierarchyDefinition.js +0 -0
  411. /package/lib/{cjs/hierarchies → hierarchies}/internal/SubscriptionScheduler.d.ts +0 -0
  412. /package/lib/{esm/hierarchies → hierarchies}/internal/SubscriptionScheduler.js +0 -0
  413. /package/lib/{cjs/hierarchies → hierarchies}/internal/operators/Partition.d.ts +0 -0
  414. /package/lib/{esm/hierarchies → hierarchies}/internal/operators/Partition.js +0 -0
  415. /package/lib/{cjs/hierarchies → hierarchies}/internal/operators/ReduceToMergeMap.d.ts +0 -0
  416. /package/lib/{esm/hierarchies → hierarchies}/internal/operators/ReduceToMergeMap.js +0 -0
  417. /package/lib/{cjs/hierarchies → hierarchies}/internal/operators/ReleaseMainThread.d.ts +0 -0
  418. /package/lib/{esm/hierarchies → hierarchies}/internal/operators/ReleaseMainThread.js +0 -0
  419. /package/lib/{cjs/hierarchies → hierarchies}/internal/operators/ShareReplayWithErrors.d.ts +0 -0
  420. /package/lib/{esm/hierarchies → hierarchies}/internal/operators/ShareReplayWithErrors.js +0 -0
  421. /package/lib/{cjs/hierarchies → hierarchies}/internal/operators/Sorting.d.ts +0 -0
  422. /package/lib/{esm/hierarchies → hierarchies}/internal/operators/Sorting.js +0 -0
  423. /package/lib/{cjs/hierarchies → hierarchies}/internal/operators/TapOnce.d.ts +0 -0
  424. /package/lib/{esm/hierarchies → hierarchies}/internal/operators/TapOnce.js +0 -0
@@ -1,651 +0,0 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.createIModelHierarchyProvider = createIModelHierarchyProvider;
8
- exports.createMergedIModelHierarchyProvider = createMergedIModelHierarchyProvider;
9
- require("../internal/DisposePolyfill.js");
10
- const rxjs_1 = require("rxjs");
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const presentation_shared_1 = require("@itwin/presentation-shared");
13
- const HierarchyErrors_js_1 = require("../HierarchyErrors.js");
14
- const HierarchyNode_js_1 = require("../HierarchyNode.js");
15
- const HierarchyNodeKey_js_1 = require("../HierarchyNodeKey.js");
16
- const HierarchySearch_js_1 = require("../HierarchySearch.js");
17
- const Common_js_1 = require("../internal/Common.js");
18
- const EachValueFrom_js_1 = require("../internal/EachValueFrom.js");
19
- const LoggingUtils_js_1 = require("../internal/LoggingUtils.js");
20
- const Partition_js_1 = require("../internal/operators/Partition.js");
21
- const ReduceToMergeMap_js_1 = require("../internal/operators/ReduceToMergeMap.js");
22
- const ShareReplayWithErrors_js_1 = require("../internal/operators/ShareReplayWithErrors.js");
23
- const Sorting_js_1 = require("../internal/operators/Sorting.js");
24
- const RxjsHierarchyDefinition_js_1 = require("../internal/RxjsHierarchyDefinition.js");
25
- const SubscriptionScheduler_js_1 = require("../internal/SubscriptionScheduler.js");
26
- const HierarchyCache_js_1 = require("./HierarchyCache.js");
27
- const IModelHierarchyDefinition_js_1 = require("./IModelHierarchyDefinition.js");
28
- const NodeSelectQueryFactory_js_1 = require("./NodeSelectQueryFactory.js");
29
- const DetermineChildren_js_1 = require("./operators/DetermineChildren.js");
30
- const Grouping_js_1 = require("./operators/Grouping.js");
31
- const HideIfNoChildren_js_1 = require("./operators/HideIfNoChildren.js");
32
- const HideNodesInHierarchy_js_1 = require("./operators/HideNodesInHierarchy.js");
33
- const SearchHierarchyDefinition_js_1 = require("./SearchHierarchyDefinition.js");
34
- const TreeNodesReader_js_1 = require("./TreeNodesReader.js");
35
- const LOGGING_NAMESPACE = `${Common_js_1.LOGGING_NAMESPACE}.IModelHierarchyProvider`;
36
- const LOGGING_NAMESPACE_INTERNAL = `${Common_js_1.LOGGING_NAMESPACE_INTERNAL}.IModelHierarchyProvider`;
37
- const LOGGING_NAMESPACE_PERFORMANCE = `${Common_js_1.LOGGING_NAMESPACE_PERFORMANCE}.IModelHierarchyProvider`;
38
- const DEFAULT_QUERY_CONCURRENCY = 10;
39
- const DEFAULT_QUERY_CACHE_SIZE = 1;
40
- /**
41
- * Creates an instance of `HierarchyProvider` that creates a hierarchy based on given the iModel and
42
- * a hierarchy definition, which defines each hierarchy level through ECSQL queries.
43
- *
44
- * @public
45
- */
46
- function createIModelHierarchyProvider(props) {
47
- const { imodelAccess, imodelChanged, ...restProps } = props;
48
- return createMergedIModelHierarchyProvider({ ...restProps, imodels: [{ imodelAccess, imodelChanged }] });
49
- }
50
- /**
51
- * Creates an instance of `HierarchyProvider` that creates a hierarchy based on multiple version of **the same** iModel
52
- * and a hierarchy definition, which defines each hierarchy level through ECSQL queries.
53
- *
54
- * **Warning:** This is an experimental API that **should not be used in production**.
55
- *
56
- * @alpha
57
- */
58
- function createMergedIModelHierarchyProvider(props) {
59
- return new IModelHierarchyProviderImpl(props);
60
- }
61
- class IModelHierarchyProviderImpl {
62
- _imodels;
63
- _hierarchyChanged;
64
- _valuesFormatter;
65
- _sourceHierarchyDefinition;
66
- _activeHierarchyDefinition;
67
- _localizedStrings;
68
- _queryConcurrency;
69
- _querySchedulers;
70
- _nodesCache;
71
- _unsubscribe;
72
- _dispose = new rxjs_1.Subject();
73
- #componentId;
74
- #componentName;
75
- #sourceName;
76
- constructor(props) {
77
- if (props.imodels.length === 0) {
78
- throw new Error(`Creating an iModel hierarchy provider requires at least one iModel.`);
79
- }
80
- this.#componentId = core_bentley_1.Guid.createValue();
81
- this.#componentName = "IModelHierarchyProviderImpl";
82
- this.#sourceName = props.sourceName ?? `${this.#componentName}:${this.#componentId}`;
83
- this._imodels = props.imodels.map(({ imodelAccess, imodelChanged }) => {
84
- const instanceLabelSelectClauseFactory = (0, presentation_shared_1.createIModelInstanceLabelSelectClauseFactory)({ imodelAccess });
85
- const nodeSelectClauseFactory = (0, NodeSelectQueryFactory_js_1.createNodesQueryClauseFactory)({ imodelAccess, instanceLabelSelectClauseFactory });
86
- return { imodelAccess, imodelChanged, instanceLabelSelectClauseFactory, nodeSelectClauseFactory };
87
- });
88
- this._hierarchyChanged = new core_bentley_1.BeEvent();
89
- this._activeHierarchyDefinition = this._sourceHierarchyDefinition = (0, RxjsHierarchyDefinition_js_1.getRxjsHierarchyDefinition)(props.hierarchyDefinition);
90
- this._valuesFormatter = props.formatter ?? (0, presentation_shared_1.createDefaultValueFormatter)();
91
- this._localizedStrings = { other: "Other", unspecified: "Not specified", ...props.localizedStrings };
92
- this._queryConcurrency = props.queryConcurrency ?? DEFAULT_QUERY_CONCURRENCY;
93
- this._querySchedulers = new Map();
94
- this.setHierarchySearch(props.search);
95
- const queryCacheSize = props.queryCacheSize ?? DEFAULT_QUERY_CACHE_SIZE;
96
- if (queryCacheSize !== 0) {
97
- this._nodesCache = new HierarchyCache_js_1.HierarchyCache({
98
- // we divide the size by 2, because each variation also counts as a query that we cache
99
- size: Math.ceil(queryCacheSize / 2),
100
- variationsCount: 1,
101
- });
102
- }
103
- const imodelChangeSubscription = (0, rxjs_1.from)(this._imodels)
104
- .pipe((0, rxjs_1.mergeMap)(({ imodelAccess, imodelChanged }) => imodelChanged
105
- ? (0, rxjs_1.fromEventPattern)((handler) => imodelChanged.addListener(handler), (handler) => imodelChanged.removeListener(handler), () => imodelAccess)
106
- : rxjs_1.EMPTY))
107
- .subscribe(({ imodelKey }) => {
108
- this.invalidateHierarchyCache(`Data source changed: "${imodelKey}"`);
109
- this._dispose.next();
110
- this._hierarchyChanged.raiseEvent({});
111
- });
112
- this._unsubscribe = () => {
113
- imodelChangeSubscription.unsubscribe();
114
- };
115
- }
116
- [Symbol.dispose]() {
117
- this._dispose.next();
118
- this._unsubscribe?.();
119
- }
120
- /* v8 ignore next -- @preserve */
121
- dispose() {
122
- this[Symbol.dispose]();
123
- }
124
- get hierarchyChanged() {
125
- return this._hierarchyChanged;
126
- }
127
- getQueryScheduler(imodelKey) {
128
- let scheduler = this._querySchedulers.get(imodelKey);
129
- if (!scheduler) {
130
- scheduler = new SubscriptionScheduler_js_1.SubscriptionScheduler(this._queryConcurrency);
131
- this._querySchedulers.set(imodelKey, scheduler);
132
- }
133
- return scheduler;
134
- }
135
- getPrimaryIModelAccess() {
136
- return this._imodels[this._imodels.length - 1].imodelAccess;
137
- }
138
- invalidateHierarchyCache(reason) {
139
- /* v8 ignore next -- @preserve */
140
- (0, LoggingUtils_js_1.doLog)({
141
- category: `${LOGGING_NAMESPACE}.Events`,
142
- message: () => (reason ? `${reason}: clear hierarchy cache` : `Clear hierarchy cache`),
143
- });
144
- this._nodesCache?.clear();
145
- }
146
- /**
147
- * Sets `HierarchyProvider` values formatter that formats nodes' labels. If provided `undefined`, then defaults to the
148
- * result of `createDefaultValueFormatter` called with default parameters.
149
- */
150
- setFormatter(formatter) {
151
- this._valuesFormatter = formatter ?? (0, presentation_shared_1.createDefaultValueFormatter)();
152
- this._hierarchyChanged.raiseEvent({ formatterChange: { newFormatter: this._valuesFormatter } });
153
- }
154
- setHierarchySearch(props) {
155
- if (!props) {
156
- if (this._sourceHierarchyDefinition !== this._activeHierarchyDefinition) {
157
- this._activeHierarchyDefinition = this._sourceHierarchyDefinition;
158
- this.invalidateHierarchyCache("Hierarchy search reset");
159
- }
160
- this._hierarchyChanged.raiseEvent({ searchChange: { newSearch: undefined } });
161
- return;
162
- }
163
- this._activeHierarchyDefinition = new SearchHierarchyDefinition_js_1.SearchHierarchyDefinition({
164
- imodelAccess: this.getPrimaryIModelAccess(),
165
- source: this._sourceHierarchyDefinition,
166
- sourceName: this.#sourceName,
167
- targetPaths: props.paths,
168
- });
169
- this.invalidateHierarchyCache("Hierarchy search set");
170
- this._dispose.next();
171
- this._hierarchyChanged.raiseEvent({ searchChange: { newSearch: props } });
172
- }
173
- onGroupingNodeCreated(groupingNode, props) {
174
- this._nodesCache?.set({ ...props, parentNode: groupingNode }, { observable: (0, rxjs_1.from)(groupingNode.children), processingStatus: "pre-processed" });
175
- }
176
- createHierarchyLevelDefinitionsObservable(props) {
177
- const { requestContext, ...defineHierarchyLevelProps } = props;
178
- /* v8 ignore next -- @preserve */
179
- (0, LoggingUtils_js_1.doLog)({
180
- category: LOGGING_NAMESPACE_PERFORMANCE,
181
- message: () => `[${requestContext.requestId}] Requesting hierarchy level definitions for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
182
- });
183
- return (0, rxjs_1.from)(this._imodels).pipe((0, rxjs_1.mergeMap)(({ imodelAccess, instanceLabelSelectClauseFactory, nodeSelectClauseFactory }, imodelAccessIndex) => {
184
- let parentNode = props.parentNode;
185
- if (parentNode &&
186
- HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) &&
187
- parentNode.key.source &&
188
- parentNode.key.source !== this.#sourceName) {
189
- return rxjs_1.EMPTY;
190
- }
191
- if (parentNode && HierarchyNode_js_1.HierarchyNode.isInstancesNode(parentNode)) {
192
- parentNode = {
193
- ...parentNode,
194
- key: {
195
- ...parentNode.key,
196
- instanceKeys: parentNode.key.instanceKeys.filter((ik) => !ik.imodelKey || ik.imodelKey === imodelAccess.imodelKey),
197
- },
198
- };
199
- (0, core_bentley_1.assert)(HierarchyNodeKey_js_1.HierarchyNodeKey.isInstances(parentNode.key));
200
- if (parentNode.key.instanceKeys.length === 0) {
201
- return rxjs_1.EMPTY;
202
- }
203
- }
204
- return this._activeHierarchyDefinition
205
- .defineHierarchyLevel({
206
- ...defineHierarchyLevelProps,
207
- parentNode,
208
- imodelAccess,
209
- instanceLabelSelectClauseFactory,
210
- nodeSelectClauseFactory,
211
- })
212
- .pipe((0, rxjs_1.mergeAll)(), (0, rxjs_1.map)(
213
- /* Using `as` to work around TS not understanding that `{ x: A, y: B | C }` is the same as `{ x: A } & ({ y: B } | { y: C })` */
214
- (hierarchyNodesDefinition) => ({ imodelAccess, imodelAccessIndex, hierarchyNodesDefinition })));
215
- }), (0, rxjs_1.finalize)(() => {
216
- /* v8 ignore next -- @preserve */
217
- (0, LoggingUtils_js_1.doLog)({
218
- category: LOGGING_NAMESPACE_PERFORMANCE,
219
- message: () => `[${requestContext.requestId}] Received all hierarchy level definitions for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
220
- });
221
- }));
222
- }
223
- createSourceNodesObservable(props) {
224
- const createSourceNodesFromDefinition = (imodelAccess, def) => {
225
- if (IModelHierarchyDefinition_js_1.HierarchyNodesDefinition.isGenericNode(def)) {
226
- return (0, rxjs_1.of)({ ...def.node, key: { type: "generic", id: def.node.key, source: this.#sourceName } });
227
- }
228
- const query = createInstanceKeysFilteredQuery(def.query, props.targetInstanceKeys);
229
- return this.getQueryScheduler(imodelAccess.imodelKey).scheduleSubscription((0, TreeNodesReader_js_1.readNodes)({
230
- queryExecutor: imodelAccess,
231
- query,
232
- limit: props.hierarchyLevelSizeLimit,
233
- parser: this._activeHierarchyDefinition.parseNode
234
- ? ({ row }) => this._activeHierarchyDefinition.parseNode({
235
- row,
236
- parentNode: props.parentNode,
237
- imodelKey: imodelAccess.imodelKey,
238
- })
239
- : undefined,
240
- }).pipe((0, rxjs_1.map)((node) => ({
241
- ...node,
242
- key: {
243
- ...node.key,
244
- instanceKeys: node.key.instanceKeys.map((key) => ({ ...key, imodelKey: imodelAccess.imodelKey })),
245
- },
246
- }))));
247
- };
248
- const definitions = this.createHierarchyLevelDefinitionsObservable(props);
249
- let sourceNodes;
250
- if (this._imodels.length === 1) {
251
- sourceNodes = definitions.pipe((0, rxjs_1.mergeMap)(({ imodelAccess, hierarchyNodesDefinition: def }) => createSourceNodesFromDefinition(imodelAccess, def)));
252
- }
253
- else {
254
- 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));
255
- }
256
- return sourceNodes.pipe((0, rxjs_1.finalize)(() => {
257
- /* v8 ignore next -- @preserve */
258
- (0, LoggingUtils_js_1.doLog)({
259
- category: LOGGING_NAMESPACE_PERFORMANCE,
260
- message: () => `[${props.requestContext.requestId}] Read all child nodes ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
261
- });
262
- }), (0, ShareReplayWithErrors_js_1.shareReplayWithErrors)());
263
- }
264
- createPreProcessedNodesObservable(queryNodesObservable, props) {
265
- return queryNodesObservable.pipe(
266
- // we're going to be mutating the nodes, but don't want to mutate the original one, so just clone it here once
267
- (0, rxjs_1.map)((node) => ({ ...node })),
268
- // set parent node keys on the source node
269
- (0, rxjs_1.map)((node) => Object.assign(node, { parentKeys: createParentNodeKeysList(props.parentNode) })),
270
- // format `ConcatenatedValue` labels into string labels
271
- (0, rxjs_1.mergeMap)((node) => applyLabelsFormatting(node, this._valuesFormatter)),
272
- // we have `ProcessedHierarchyNode` from here
273
- // let consumers step-in
274
- preProcessNodes(this._activeHierarchyDefinition, props.parentNode),
275
- // process hiding
276
- (0, HideIfNoChildren_js_1.createHideIfNoChildrenOperator)((n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes), (0, HideNodesInHierarchy_js_1.createHideNodesInHierarchyOperator)(
277
- // note: for child nodes created because of hidden parent, we want to use parent's request props (instance filter, limit)
278
- (n) => this.getChildNodesObservables({ ...props, parentNode: n }).processedNodes, false), (0, rxjs_1.finalize)(() => {
279
- /* v8 ignore next -- @preserve */
280
- (0, LoggingUtils_js_1.doLog)({
281
- category: LOGGING_NAMESPACE_PERFORMANCE,
282
- message: () => `[${props.requestContext.requestId}] Finished pre-processing child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
283
- });
284
- }));
285
- }
286
- createProcessedNodesObservable(preprocessedNodesObservable, props) {
287
- 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)(() => {
288
- /* v8 ignore next -- @preserve */
289
- (0, LoggingUtils_js_1.doLog)({
290
- category: LOGGING_NAMESPACE_PERFORMANCE,
291
- message: () => `[${props.requestContext.requestId}] Finished grouping child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
292
- });
293
- }));
294
- }
295
- createFinalizedNodesObservable(processedNodesObservable, props) {
296
- 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) => {
297
- if ("processingParams" in n) {
298
- delete n.processingParams;
299
- }
300
- return { ...n, children: (0, Common_js_1.hasChildren)(n) };
301
- }), (0, rxjs_1.takeUntil)(this._dispose), (0, rxjs_1.finalize)(() => {
302
- /* v8 ignore next -- @preserve */
303
- (0, LoggingUtils_js_1.doLog)({
304
- category: LOGGING_NAMESPACE_PERFORMANCE,
305
- message: () => `[${props.requestContext.requestId}] Finished finalizing child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
306
- });
307
- }));
308
- }
309
- createHasNodesObservable(preprocessedNodesObservable, possiblyKnownChildrenObservable, props) {
310
- const loggingCategory = `${LOGGING_NAMESPACE_INTERNAL}.HasNodes`;
311
- return (0, rxjs_1.concat)((possiblyKnownChildrenObservable ?? rxjs_1.EMPTY).pipe((0, rxjs_1.filter)((n) => (0, Common_js_1.hasChildren)(n))), preprocessedNodesObservable).pipe(
312
- /* v8 ignore next -- @preserve */
313
- (0, LoggingUtils_js_1.log)({
314
- category: loggingCategory,
315
- message: (n) => `[${props.requestContext.requestId}] Node before mapping to 'true': ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}`,
316
- }), (0, rxjs_1.take)(1), (0, rxjs_1.map)(() => true), (0, rxjs_1.defaultIfEmpty)(false), (0, rxjs_1.catchError)((e) => {
317
- /* v8 ignore next -- @preserve */
318
- (0, LoggingUtils_js_1.doLog)({
319
- category: loggingCategory,
320
- message: () => `[${props.requestContext.requestId}] Error while determining children: ${e.message}`,
321
- });
322
- if (e instanceof HierarchyErrors_js_1.RowsLimitExceededError) {
323
- return (0, rxjs_1.of)(true);
324
- }
325
- throw e;
326
- }),
327
- /* v8 ignore next -- @preserve */
328
- (0, LoggingUtils_js_1.log)({ category: loggingCategory, message: (r) => `[${props.requestContext.requestId}] Result: ${r}` }));
329
- }
330
- getCachedObservableEntry(props) {
331
- const loggingCategory = `${LOGGING_NAMESPACE}.QueryResultsCache`;
332
- const { parentNode, ...restProps } = props;
333
- const cached = props.ignoreCache || !this._nodesCache ? undefined : this._nodesCache.get(props);
334
- if (cached) {
335
- /* v8 ignore next -- @preserve */
336
- (0, LoggingUtils_js_1.doLog)({
337
- category: loggingCategory,
338
- message: () => `[${props.requestContext.requestId}] Found query nodes observable for ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)}`,
339
- });
340
- return cached;
341
- }
342
- // if we don't find an entry for a grouping node, we load its instances by getting a query and applying
343
- // a search based on grouped instance keys
344
- let targetInstanceKeys;
345
- let parentNonGroupingNode;
346
- if (parentNode) {
347
- if (HierarchyNode_js_1.HierarchyNode.isGroupingNode(parentNode)) {
348
- parentNonGroupingNode = parentNode.nonGroupingAncestor;
349
- targetInstanceKeys = parentNode.groupedInstanceKeys;
350
- }
351
- else {
352
- // not sure why type checker doesn't pick this up
353
- (0, core_bentley_1.assert)(HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) || HierarchyNode_js_1.HierarchyNode.isInstancesNode(parentNode));
354
- parentNonGroupingNode = parentNode;
355
- }
356
- }
357
- const nonGroupingNodeChildrenRequestProps = {
358
- ...restProps,
359
- parentNode: parentNonGroupingNode,
360
- ...(targetInstanceKeys ? { targetInstanceKeys } : undefined),
361
- };
362
- const value = {
363
- observable: this.createSourceNodesObservable(nonGroupingNodeChildrenRequestProps),
364
- processingStatus: "none",
365
- };
366
- this._nodesCache?.set(nonGroupingNodeChildrenRequestProps, value);
367
- /* v8 ignore next -- @preserve */
368
- (0, LoggingUtils_js_1.doLog)({
369
- category: loggingCategory,
370
- message: () => `[${props.requestContext.requestId}] Saved query nodes observable for ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)}`,
371
- });
372
- return value;
373
- }
374
- getChildNodesObservables(props) {
375
- const entry = this.getCachedObservableEntry(props);
376
- switch (entry.processingStatus) {
377
- case "none": {
378
- const pre = this.createPreProcessedNodesObservable(entry.observable, props);
379
- const post = this.createProcessedNodesObservable(pre, props);
380
- return {
381
- processedNodes: post,
382
- hasNodes: this.createHasNodesObservable(pre, entry.observable, props),
383
- finalizedNodes: this.createFinalizedNodesObservable(post, props),
384
- };
385
- }
386
- case "pre-processed": {
387
- const post = this.createProcessedNodesObservable(entry.observable, props);
388
- return {
389
- processedNodes: post,
390
- hasNodes: this.createHasNodesObservable(entry.observable, undefined, props),
391
- finalizedNodes: this.createFinalizedNodesObservable(post, props),
392
- };
393
- }
394
- }
395
- }
396
- /**
397
- * Creates and runs a query based on provided props, then processes retrieved nodes and returns them.
398
- */
399
- getNodes(props) {
400
- const requestContext = { requestId: core_bentley_1.Guid.createValue() };
401
- const loggingCategory = `${LOGGING_NAMESPACE}.GetNodes`;
402
- const timer = new core_bentley_1.StopWatch(undefined, true);
403
- let error;
404
- let nodesCount = 0;
405
- /* v8 ignore next -- @preserve */
406
- (0, LoggingUtils_js_1.doLog)({
407
- category: loggingCategory,
408
- message: () => `[${requestContext.requestId}] Requesting child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
409
- });
410
- return (0, EachValueFrom_js_1.eachValueFrom)(this.getChildNodesObservables({ ...props, requestContext }).finalizedNodes.pipe((0, rxjs_1.tap)(() => ++nodesCount), (0, rxjs_1.catchError)((e) => {
411
- error = e;
412
- throw e;
413
- }), (0, rxjs_1.finalize)(() => {
414
- /* v8 ignore next -- @preserve */
415
- (0, LoggingUtils_js_1.doLog)({
416
- category: loggingCategory,
417
- message: () => error
418
- ? `[${requestContext.requestId}] Error creating child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`
419
- : `[${requestContext.requestId}] Returned ${nodesCount} child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,
420
- });
421
- })));
422
- }
423
- getNodeInstanceKeysObs(props) {
424
- const { parentNode, instanceFilter, hierarchyLevelSizeLimit = "unbounded", requestContext } = props;
425
- if (parentNode && HierarchyNode_js_1.HierarchyNode.isGroupingNode(parentNode)) {
426
- return (0, rxjs_1.from)(parentNode.groupedInstanceKeys);
427
- }
428
- (0, core_bentley_1.assert)(!parentNode || HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) || HierarchyNode_js_1.HierarchyNode.isInstancesNode(parentNode));
429
- // split the definitions based on whether they're for generic nodes or for instance nodes
430
- const hierarchyLevelDefinitions = this.createHierarchyLevelDefinitionsObservable({
431
- parentNode,
432
- instanceFilter,
433
- requestContext,
434
- });
435
- const [instanceDefs, genericDefs] = (0, Partition_js_1.partition)(hierarchyLevelDefinitions, (x) => IModelHierarchyDefinition_js_1.HierarchyNodesDefinition.isInstanceNodesQuery(x.hierarchyNodesDefinition));
436
- // query instance keys and a flag whether they should be hidden
437
- 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) => {
438
- const ecsql = `
439
- SELECT
440
- ${NodeSelectQueryFactory_js_1.NodeSelectClauseColumnNames.FullClassName},
441
- ${NodeSelectQueryFactory_js_1.NodeSelectClauseColumnNames.ECInstanceId},
442
- ${NodeSelectQueryFactory_js_1.NodeSelectClauseColumnNames.HideNodeInHierarchy}
443
- FROM (
444
- ${query.ecsql}
445
- )
446
- `;
447
- const reader = imodelAccess.createQueryReader({ ...query, ecsql }, {
448
- rowFormat: "Indexes",
449
- limit: hierarchyLevelSizeLimit,
450
- restartToken: `${this.#componentName}/${this.#componentId}/node-instance-keys/${core_bentley_1.Guid.createValue()}`,
451
- });
452
- return (0, rxjs_1.from)(reader).pipe((0, rxjs_1.map)((row) => ({
453
- key: {
454
- className: (0, presentation_shared_1.normalizeFullClassName)(row[0]),
455
- id: row[1],
456
- imodelKey: imodelAccess.imodelKey,
457
- },
458
- hide: !!row[2],
459
- })));
460
- }), (0, rxjs_1.mergeAll)()))));
461
- // split the instance keys observable based on whether they should be hidden or not
462
- const [visibleNodeInstanceKeys, hiddenNodeInstanceKeys] = (0, Partition_js_1.partition)(instanceKeys, ({ hide }) => !hide);
463
- // hidden items' handling:
464
- // - if a generic node is hidden, we'll want to retrieve instance keys of its children, otherwise we don't care about it,
465
- // - if an instance key is hidden, we want to create a merged node similar to what we do in `createHideNodesInHierarchyOperator`
466
- const hiddenParentNodes = (0, rxjs_1.merge)(genericDefs.pipe((0, rxjs_1.filter)(({ hierarchyNodesDefinition }) => !!hierarchyNodesDefinition.node.processingParams?.hideInHierarchy), (0, rxjs_1.map)(({ hierarchyNodesDefinition }) => ({
467
- type: "generic",
468
- id: hierarchyNodesDefinition.node.key,
469
- source: this.#sourceName,
470
- }))), hiddenNodeInstanceKeys.pipe(
471
- // first merge all keys by class
472
- (0, ReduceToMergeMap_js_1.reduceToMergeMapList)(({ key }) => key.className, ({ key }) => key),
473
- // then, for each class, create an instance key
474
- (0, rxjs_1.mergeMap)((mergedMap) => [...mergedMap.entries()].map(([className, keys]) => ({
475
- type: "instances",
476
- instanceKeys: keys.map(({ id, imodelKey }) => ({ className, id, imodelKey })),
477
- }))))).pipe((0, rxjs_1.map)((key) => ({ key, parentKeys: [], label: "" })));
478
- // merge visible instance keys from this level & the ones we get recursively requesting from deeper levels
479
- 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));
480
- }
481
- /**
482
- * Creates an iterator for all child hierarchy level instance keys, taking into account any hidden hierarchy levels
483
- * that there may be under the given parent node.
484
- */
485
- getNodeInstanceKeys(props) {
486
- const requestContext = { requestId: core_bentley_1.Guid.createValue() };
487
- const loggingCategory = `${LOGGING_NAMESPACE}.GetNodeInstanceKeys`;
488
- const timer = new core_bentley_1.StopWatch(undefined, true);
489
- /* v8 ignore next -- @preserve */
490
- (0, LoggingUtils_js_1.doLog)({
491
- category: loggingCategory,
492
- message: () => `[${requestContext.requestId}] Requesting keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
493
- });
494
- let error;
495
- let keysCount = 0;
496
- return (0, EachValueFrom_js_1.eachValueFrom)(this.getNodeInstanceKeysObs({ ...props, requestContext }).pipe((0, rxjs_1.tap)(() => ++keysCount), (0, rxjs_1.catchError)((e) => {
497
- error = e;
498
- throw e;
499
- }), (0, rxjs_1.finalize)(() => {
500
- /* v8 ignore next -- @preserve */
501
- (0, LoggingUtils_js_1.doLog)({
502
- category: loggingCategory,
503
- message: () => error
504
- ? `[${requestContext.requestId}] Error creating node instance keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`
505
- : `[${requestContext.requestId}] Returned ${keysCount} instance keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,
506
- });
507
- })));
508
- }
509
- }
510
- function preProcessNodes(hierarchyFactory, parentNode) {
511
- return hierarchyFactory.preProcessNode ? processNodes(hierarchyFactory.preProcessNode, parentNode) : rxjs_1.identity;
512
- }
513
- function postProcessNodes(hierarchyFactory, parentNode) {
514
- return hierarchyFactory.postProcessNode ? processNodes(hierarchyFactory.postProcessNode, parentNode) : rxjs_1.identity;
515
- }
516
- function processNodes(processor, parentNode) {
517
- return (nodes) => nodes.pipe((0, rxjs_1.mergeMap)((node) => processor({ node, parentNode })));
518
- }
519
- function applyLabelsFormatting(node, valueFormatter) {
520
- return (0, rxjs_1.from)((0, presentation_shared_1.formatConcatenatedValue)({ value: node.label, valueFormatter })).pipe((0, rxjs_1.map)((label) => ({ ...node, label })));
521
- }
522
- function createParentNodeKeysList(parentNode) {
523
- if (!parentNode) {
524
- return [];
525
- }
526
- return [...parentNode.parentKeys, parentNode.key];
527
- }
528
- function createInstanceKeysFilteredQuery(query, targetInstanceKeys) {
529
- if (!targetInstanceKeys || !targetInstanceKeys.length) {
530
- return query;
531
- }
532
- const MAX_ALLOWED_BINDINGS = 1000;
533
- // TODO: MISSING_COVERAGE
534
- /* v8 ignore else -- @preserve */
535
- if (targetInstanceKeys.length < MAX_ALLOWED_BINDINGS) {
536
- return {
537
- ...query,
538
- ecsql: `
539
- SELECT *
540
- FROM (${query.ecsql}) q
541
- WHERE q.ECInstanceId IN (${targetInstanceKeys.map(() => "?").join(",")})
542
- `,
543
- bindings: [
544
- ...(query.bindings ?? []),
545
- ...targetInstanceKeys.map((k) => ({ type: "id", value: k.id })),
546
- ],
547
- };
548
- }
549
- /* v8 ignore start */
550
- return {
551
- ...query,
552
- ecsql: `
553
- SELECT *
554
- FROM (${query.ecsql}) q
555
- WHERE InVirtualSet(?, q.ECInstanceId)
556
- `,
557
- bindings: [...(query.bindings ?? []), { type: "idset", value: targetInstanceKeys.map((k) => k.id) }],
558
- };
559
- /* v8 ignore stop */
560
- }
561
- // TODO: MISSING_COVERAGE
562
- /* v8 ignore start */
563
- function mergeNodes(source) {
564
- return (0, rxjs_1.from)(source).pipe((0, rxjs_1.reduce)((acc, input) => {
565
- for (let i = 0; i < acc.length; ++i) {
566
- if (input.imodelAccess === acc[i].imodelAccess) {
567
- // don't attempt to merge nodes if they come from the same provider
568
- continue;
569
- }
570
- // the first argument for `tryMergeNodes` acts as the primary data source, so we have to make sure we pass
571
- // the node with higher `imodelAccessIndex` first
572
- const candidates = input.imodelAccessIndex > acc[i].imodelAccessIndex
573
- ? {
574
- imodelAccess: input.imodelAccess,
575
- imodelAccessIndex: input.imodelAccessIndex,
576
- primary: input.node,
577
- secondary: acc[i].node,
578
- }
579
- : {
580
- imodelAccess: acc[i].imodelAccess,
581
- imodelAccessIndex: acc[i].imodelAccessIndex,
582
- primary: acc[i].node,
583
- secondary: input.node,
584
- };
585
- const merged = tryMergeNodes(candidates.primary, candidates.secondary);
586
- if (merged) {
587
- acc[i] = {
588
- node: merged,
589
- imodelAccess: candidates.imodelAccess,
590
- imodelAccessIndex: candidates.imodelAccessIndex,
591
- };
592
- return acc;
593
- }
594
- }
595
- acc.push(input);
596
- return acc;
597
- }, new Array()), (0, rxjs_1.mergeAll)());
598
- }
599
- function mergeSearchAttribute(primary, secondary) {
600
- if (!primary) {
601
- return secondary;
602
- }
603
- if (!secondary) {
604
- return primary;
605
- }
606
- const hasSearchTargetAncestor = primary.hasSearchTargetAncestor || secondary.hasSearchTargetAncestor;
607
- const isSearchTarget = primary.isSearchTarget || secondary.isSearchTarget;
608
- const searchOptions = HierarchySearch_js_1.HierarchySearchTree.mergeOptions(primary.options, secondary.options);
609
- const childrenTargetPathsBuilder = HierarchySearch_js_1.HierarchySearchTree.createBuilder();
610
- primary.childrenTargetPaths?.forEach((tree) => childrenTargetPathsBuilder.accept({ tree }));
611
- secondary.childrenTargetPaths?.forEach((tree) => childrenTargetPathsBuilder.accept({ tree }));
612
- const childrenTargetPaths = childrenTargetPathsBuilder.getTree();
613
- return {
614
- ...(hasSearchTargetAncestor ? { hasSearchTargetAncestor } : undefined),
615
- ...(childrenTargetPaths.length ? { childrenTargetPaths } : undefined),
616
- ...(isSearchTarget ? { isSearchTarget } : undefined),
617
- ...(searchOptions ? { options: searchOptions } : undefined),
618
- };
619
- }
620
- function mergeBaseNodeAttributes(primary, secondary) {
621
- const search = mergeSearchAttribute(primary.search, secondary.search);
622
- return {
623
- ...(primary.autoExpand || secondary.autoExpand ? { autoExpand: true } : undefined),
624
- ...(primary.children && secondary.children ? { children: true } : undefined),
625
- ...(primary.supportsFiltering || secondary.supportsFiltering ? { supportsFiltering: true } : undefined),
626
- ...(search ? { search } : undefined),
627
- };
628
- }
629
- function tryMergeInstanceNodes(primary, secondary) {
630
- if (HierarchyNode_js_1.HierarchyNode.isInstancesNode(primary) &&
631
- HierarchyNode_js_1.HierarchyNode.isInstancesNode(secondary) &&
632
- primary.key.instanceKeys.some((lhsKey) => secondary.key.instanceKeys.some((rhsKey) => presentation_shared_1.InstanceKey.equals(lhsKey, rhsKey)))) {
633
- return {
634
- ...primary,
635
- key: { type: "instances", instanceKeys: primary.key.instanceKeys.concat(secondary.key.instanceKeys) },
636
- ...mergeBaseNodeAttributes(primary, secondary),
637
- };
638
- }
639
- return undefined;
640
- }
641
- function tryMergeGenericNodes(primary, secondary) {
642
- if (HierarchyNode_js_1.HierarchyNode.isGeneric(primary) && HierarchyNode_js_1.HierarchyNode.isGeneric(secondary) && primary.key.id === secondary.key.id) {
643
- return { ...primary, ...mergeBaseNodeAttributes(primary, secondary) };
644
- }
645
- return undefined;
646
- }
647
- function tryMergeNodes(primary, secondary) {
648
- return tryMergeInstanceNodes(primary, secondary) ?? tryMergeGenericNodes(primary, secondary) ?? undefined;
649
- }
650
- /* v8 ignore stop */
651
- //# sourceMappingURL=IModelHierarchyProvider.js.map