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