@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 +0,0 @@
1
- {"version":3,"file":"IModelHierarchyProvider.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/IModelHierarchyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport \"../internal/DisposePolyfill.js\";\n\nimport {\n catchError,\n concat,\n defaultIfEmpty,\n EMPTY,\n filter,\n finalize,\n from,\n fromEventPattern,\n identity,\n map,\n merge,\n mergeAll,\n mergeMap,\n of,\n reduce,\n Subject,\n take,\n takeUntil,\n tap,\n} from \"rxjs\";\nimport { assert, BeEvent, Guid, StopWatch } from \"@itwin/core-bentley\";\nimport {\n createDefaultValueFormatter,\n createIModelInstanceLabelSelectClauseFactory,\n formatConcatenatedValue,\n InstanceKey,\n normalizeFullClassName,\n} from \"@itwin/presentation-shared\";\nimport { RowsLimitExceededError } from \"../HierarchyErrors.js\";\nimport { HierarchyNode } from \"../HierarchyNode.js\";\nimport { HierarchyNodeKey } from \"../HierarchyNodeKey.js\";\nimport { HierarchySearchTree } from \"../HierarchySearch.js\";\nimport {\n LOGGING_NAMESPACE as BASE_LOGGING_NAMESPACE,\n LOGGING_NAMESPACE_INTERNAL as BASE_LOGGING_NAMESPACE_INTERNAL,\n LOGGING_NAMESPACE_PERFORMANCE as BASE_LOGGING_NAMESPACE_PERFORMANCE,\n createNodeIdentifierForLogging,\n hasChildren,\n} from \"../internal/Common.js\";\nimport { eachValueFrom } from \"../internal/EachValueFrom.js\";\nimport { doLog, log } from \"../internal/LoggingUtils.js\";\nimport { partition } from \"../internal/operators/Partition.js\";\nimport { reduceToMergeMapList } from \"../internal/operators/ReduceToMergeMap.js\";\nimport { shareReplayWithErrors } from \"../internal/operators/ShareReplayWithErrors.js\";\nimport { sortNodesByLabelOperator } from \"../internal/operators/Sorting.js\";\nimport { getRxjsHierarchyDefinition } from \"../internal/RxjsHierarchyDefinition.js\";\nimport { SubscriptionScheduler } from \"../internal/SubscriptionScheduler.js\";\nimport { HierarchyCache } from \"./HierarchyCache.js\";\nimport { HierarchyNodesDefinition } from \"./IModelHierarchyDefinition.js\";\nimport { createNodesQueryClauseFactory, NodeSelectClauseColumnNames } from \"./NodeSelectQueryFactory.js\";\nimport { createDetermineChildrenOperator } from \"./operators/DetermineChildren.js\";\nimport { createGroupingOperator } from \"./operators/Grouping.js\";\nimport { createHideIfNoChildrenOperator } from \"./operators/HideIfNoChildren.js\";\nimport { createHideNodesInHierarchyOperator } from \"./operators/HideNodesInHierarchy.js\";\nimport { SearchHierarchyDefinition } from \"./SearchHierarchyDefinition.js\";\nimport { readNodes } from \"./TreeNodesReader.js\";\nimport { ECSQL_PREFIX } from \"./Utils.js\";\n\nimport type { Observable, ObservableInput, ObservedValueOf } from \"rxjs\";\nimport type { GuidString } from \"@itwin/core-bentley\";\nimport type {\n ConcatenatedValue,\n ECClassHierarchyInspector,\n ECSchemaProvider,\n ECSqlQueryDef,\n Event,\n EventArgs,\n IInstanceLabelSelectClauseFactory,\n IPrimitiveValueFormatter,\n} from \"@itwin/presentation-shared\";\nimport type { NonGroupingHierarchyNode, ParentHierarchyNode } from \"../HierarchyNode.js\";\nimport type { GenericNodeKey, IModelInstanceKey, InstancesNodeKey } from \"../HierarchyNodeKey.js\";\nimport type { GetHierarchyNodesProps, HierarchyProvider } from \"../HierarchyProvider.js\";\nimport type { RxjsHierarchyDefinition } from \"../internal/RxjsHierarchyDefinition.js\";\nimport type {\n DefineHierarchyLevelProps,\n GenericHierarchyNodeDefinition,\n HierarchyDefinition,\n InstanceNodesQueryDefinition,\n} from \"./IModelHierarchyDefinition.js\";\nimport type {\n ProcessedGroupingHierarchyNode,\n ProcessedHierarchyNode,\n SourceGenericHierarchyNode,\n SourceInstanceHierarchyNode,\n} from \"./IModelHierarchyNode.js\";\nimport type { LimitingECSqlQueryExecutor } from \"./LimitingECSqlQueryExecutor.js\";\nimport type { NodesQueryClauseFactory } from \"./NodeSelectQueryFactory.js\";\n\nconst LOGGING_NAMESPACE = `${BASE_LOGGING_NAMESPACE}.IModelHierarchyProvider`;\nconst LOGGING_NAMESPACE_INTERNAL = `${BASE_LOGGING_NAMESPACE_INTERNAL}.IModelHierarchyProvider`;\nconst LOGGING_NAMESPACE_PERFORMANCE = `${BASE_LOGGING_NAMESPACE_PERFORMANCE}.IModelHierarchyProvider`;\n\nconst DEFAULT_QUERY_CONCURRENCY = 10;\nconst DEFAULT_QUERY_CACHE_SIZE = 1;\n\n/**\n * Defines the strings used by hierarchy provider.\n * @public\n */\ninterface IModelHierarchyProviderLocalizedStrings {\n /**\n * A string for \"Unspecified\". Used for labels of property grouping nodes\n * that group by an empty value.\n */\n unspecified: string;\n\n /**\n * A string for \"Other\". Used for label of a range property grouping node that\n * groups values which don't fit into any other range.\n */\n other: string;\n}\n\n/** @public */\ntype IModelAccess = ECSchemaProvider & LimitingECSqlQueryExecutor & ECClassHierarchyInspector & { imodelKey: string };\n\n/**\n * Props for `createIModelHierarchyProvider`.\n * @public\n */\ninterface IModelHierarchyProviderProps {\n /**\n * An object that provides access to iModel's data and metadata.\n *\n * @see `ECSchemaProvider`\n * @see `LimitingECSqlQueryExecutor`\n * @see `ECClassHierarchyInspector`\n */\n imodelAccess: IModelAccess;\n\n /**\n * An event that is raised when iModel data, that may affect the hierarchy, changes. The created provider\n * subscribes to the event to know that it needs to reload the data, and unsubscribes on disposal.\n */\n imodelChanged?: Event<() => void>;\n\n /**\n * A function that returns a hierarchy definition, describing how the hierarchy that the provider should be create. The\n * function is called once during the provider's construction.\n */\n hierarchyDefinition: HierarchyDefinition;\n\n /** Maximum number of queries that the provider attempts to execute in parallel. Defaults to `10`. */\n queryConcurrency?: number;\n\n /**\n * The amount of queries whose results are stored in-memory for quick retrieval. Defaults to `1`,\n * which means only results of the last run query are cached.\n */\n queryCacheSize?: number;\n\n /** A set of localized strings to use. Defaults to English strings. */\n localizedStrings?: Partial<IModelHierarchyProviderLocalizedStrings>;\n\n /**\n * A values formatter for formatting node labels. Defaults to the\n * result of `createDefaultValueFormatter` called with default parameters. May be overridden\n * by calling `setFormatter` on the provider instance.\n */\n formatter?: IPrimitiveValueFormatter;\n\n /**\n * Props for searching the hierarchy.\n *\n * Note: this just provides a quick way to set the search when creating a new hierarchy provider, but the\n * search can be changed at any time by calling `setHierarchySearch` on the provider instance.\n */\n search?: {\n /** A list of search trees that define paths from root to search target nodes. */\n paths: HierarchySearchTree[];\n };\n\n /**\n * A factory for creating ECSQL select clauses for instance labels. The clause is injected into\n * hierarchy node queries to select labels for instance-based nodes.\n *\n * Defaults to the result of `createIModelInstanceLabelSelectClauseFactory` called with the provided `imodelAccess`.\n *\n * @see `IInstanceLabelSelectClauseFactory`\n */\n instanceLabelSelectClauseFactory?: IInstanceLabelSelectClauseFactory;\n}\n\n/**\n * Creates an instance of `HierarchyProvider` that creates a hierarchy based on given the iModel and\n * a hierarchy definition, which defines each hierarchy level through ECSQL queries.\n *\n * @public\n */\nexport function createIModelHierarchyProvider(props: IModelHierarchyProviderProps): HierarchyProvider & Disposable {\n const { imodelAccess, imodelChanged, instanceLabelSelectClauseFactory, ...restProps } = props;\n return createMergedIModelHierarchyProvider({\n ...restProps,\n imodels: [{ imodelAccess, imodelChanged, instanceLabelSelectClauseFactory }],\n });\n}\n\n/**\n * Props for `createMergedIModelHierarchyProvider`.\n * @alpha\n */\ninterface MergedIModelHierarchyProviderProps extends Omit<\n IModelHierarchyProviderProps,\n \"imodelAccess\" | \"imodelChanged\" | \"instanceLabelSelectClauseFactory\"\n> {\n /**\n * A list of iModels to create merged hierarchy for.\n *\n * **Warning:** These **must** all be different versions of the same iModel, ordered from the earliest to the\n * latest version. Not obeying this rule may result in undefined behavior.\n */\n imodels: Array<{\n /**\n * An object that provides access to iModel's data and metadata.\n *\n * @see `ECSchemaProvider`\n * @see `LimitingECSqlQueryExecutor`\n * @see `ECClassHierarchyInspector`\n */\n imodelAccess: IModelAccess;\n\n /**\n * An event that is raised when iModel data, that may affect the hierarchy, changes. The created provider\n * subscribes to the event to know that it needs to reload the data, and unsubscribes on disposal.\n */\n imodelChanged?: Event<() => void>;\n\n /**\n * A factory for creating ECSQL select clauses for instance labels. The clause is injected into\n * hierarchy node queries to select labels for instance-based nodes.\n *\n * Defaults to the result of `createIModelInstanceLabelSelectClauseFactory` called with the provided `imodelAccess`.\n *\n * @see `IInstanceLabelSelectClauseFactory`\n */\n instanceLabelSelectClauseFactory?: IInstanceLabelSelectClauseFactory;\n }>;\n}\n\n/**\n * Creates an instance of `HierarchyProvider` that creates a hierarchy based on multiple version of **the same** iModel\n * and a hierarchy definition, which defines each hierarchy level through ECSQL queries.\n *\n * **Warning:** This is an experimental API that **should not be used in production**.\n *\n * @alpha\n */\nexport function createMergedIModelHierarchyProvider(\n props: MergedIModelHierarchyProviderProps,\n): HierarchyProvider & Disposable {\n return new IModelHierarchyProviderImpl(props);\n}\n\ninterface RequestContextProp {\n requestContext: { requestId: string };\n}\n\ntype WithSourceNameOverride<T> = T & { sourceName?: string };\n\nclass IModelHierarchyProviderImpl implements HierarchyProvider {\n private _imodels: Array<\n MergedIModelHierarchyProviderProps[\"imodels\"][number] & { nodeSelectClauseFactory: NodesQueryClauseFactory }\n >;\n private _hierarchyChanged: BeEvent<(args: EventArgs<HierarchyProvider[\"hierarchyChanged\"]>) => void>;\n private _valuesFormatter: IPrimitiveValueFormatter;\n private _sourceHierarchyDefinition: RxjsHierarchyDefinition;\n private _activeHierarchyDefinition: RxjsHierarchyDefinition;\n private _localizedStrings: IModelHierarchyProviderLocalizedStrings;\n private _queryConcurrency: number;\n private _querySchedulers: Map<string, SubscriptionScheduler>;\n private _nodesCache?: HierarchyCache<HierarchyCacheEntry>;\n private _unsubscribe?: () => void;\n private _dispose = new Subject<void>();\n #componentId: GuidString;\n #componentName: string;\n #sourceName: string;\n\n public constructor(props: WithSourceNameOverride<MergedIModelHierarchyProviderProps>) {\n if (props.imodels.length === 0) {\n throw new Error(`Creating an iModel hierarchy provider requires at least one iModel.`);\n }\n\n this.#componentId = Guid.createValue();\n this.#componentName = \"IModelHierarchyProviderImpl\";\n this.#sourceName = props.sourceName ?? `${this.#componentName}:${this.#componentId}`;\n this._imodels = props.imodels.map(({ imodelAccess, imodelChanged, instanceLabelSelectClauseFactory }) => {\n if (!instanceLabelSelectClauseFactory) {\n instanceLabelSelectClauseFactory = createIModelInstanceLabelSelectClauseFactory({ imodelAccess });\n }\n const nodeSelectClauseFactory = createNodesQueryClauseFactory({ imodelAccess, instanceLabelSelectClauseFactory });\n return { imodelAccess, imodelChanged, nodeSelectClauseFactory };\n });\n this._hierarchyChanged = new BeEvent();\n this._activeHierarchyDefinition = this._sourceHierarchyDefinition = getRxjsHierarchyDefinition(\n props.hierarchyDefinition,\n );\n this._valuesFormatter = props.formatter ?? createDefaultValueFormatter();\n this._localizedStrings = { other: \"Other\", unspecified: \"Not specified\", ...props.localizedStrings };\n this._queryConcurrency = props.queryConcurrency ?? DEFAULT_QUERY_CONCURRENCY;\n this._querySchedulers = new Map();\n this.setHierarchySearch(props.search);\n\n const queryCacheSize = props.queryCacheSize ?? DEFAULT_QUERY_CACHE_SIZE;\n if (queryCacheSize !== 0) {\n this._nodesCache = new HierarchyCache({\n // we divide the size by 2, because each variation also counts as a query that we cache\n size: Math.ceil(queryCacheSize / 2),\n variationsCount: 1,\n });\n }\n\n const imodelChangeSubscription = from(this._imodels)\n .pipe(\n mergeMap(({ imodelAccess, imodelChanged }) =>\n imodelChanged\n ? fromEventPattern(\n (handler) => imodelChanged.addListener(handler),\n (handler) => imodelChanged.removeListener(handler),\n () => imodelAccess,\n )\n : EMPTY,\n ),\n )\n .subscribe(({ imodelKey }) => {\n this.invalidateHierarchyCache(`Data source changed: \"${imodelKey}\"`);\n this._dispose.next();\n this._hierarchyChanged.raiseEvent({});\n });\n this._unsubscribe = () => {\n imodelChangeSubscription.unsubscribe();\n };\n }\n\n public [Symbol.dispose]() {\n this._dispose.next();\n this._unsubscribe?.();\n }\n\n /* v8 ignore next -- @preserve */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n public get hierarchyChanged() {\n return this._hierarchyChanged;\n }\n\n private getQueryScheduler(imodelKey: string) {\n let scheduler = this._querySchedulers.get(imodelKey);\n if (!scheduler) {\n scheduler = new SubscriptionScheduler(this._queryConcurrency);\n this._querySchedulers.set(imodelKey, scheduler);\n }\n return scheduler;\n }\n\n private getPrimaryIModelAccess() {\n return this._imodels[this._imodels.length - 1].imodelAccess;\n }\n\n private invalidateHierarchyCache(reason?: string) {\n /* v8 ignore next -- @preserve */\n doLog({\n category: `${LOGGING_NAMESPACE}.Events`,\n message: () => (reason ? `${reason}: clear hierarchy cache` : `Clear hierarchy cache`),\n });\n this._nodesCache?.clear();\n }\n\n /**\n * Sets `HierarchyProvider` values formatter that formats nodes' labels. If provided `undefined`, then defaults to the\n * result of `createDefaultValueFormatter` called with default parameters.\n */\n public setFormatter(formatter: IPrimitiveValueFormatter | undefined) {\n this._valuesFormatter = formatter ?? createDefaultValueFormatter();\n this._hierarchyChanged.raiseEvent({ formatterChange: { newFormatter: this._valuesFormatter } });\n }\n\n public setHierarchySearch(props: IModelHierarchyProviderProps[\"search\"]) {\n if (!props) {\n if (this._sourceHierarchyDefinition !== this._activeHierarchyDefinition) {\n this._activeHierarchyDefinition = this._sourceHierarchyDefinition;\n this.invalidateHierarchyCache(\"Hierarchy search reset\");\n }\n this._hierarchyChanged.raiseEvent({ searchChange: { newSearch: undefined } });\n return;\n }\n this._activeHierarchyDefinition = new SearchHierarchyDefinition({\n imodelAccess: this.getPrimaryIModelAccess(),\n source: this._sourceHierarchyDefinition,\n sourceName: this.#sourceName,\n targetPaths: props.paths,\n });\n this.invalidateHierarchyCache(\"Hierarchy search set\");\n this._dispose.next();\n this._hierarchyChanged.raiseEvent({ searchChange: { newSearch: props } });\n }\n\n private onGroupingNodeCreated(groupingNode: ProcessedGroupingHierarchyNode, props: GetHierarchyNodesProps) {\n this._nodesCache?.set(\n { ...props, parentNode: groupingNode },\n { observable: from(groupingNode.children), processingStatus: \"pre-processed\" },\n );\n }\n\n private createHierarchyLevelDefinitionsObservable(\n props: Omit<DefineHierarchyLevelProps, \"imodelAccess\" | \"createSelectClause\" | \"createFilterClauses\"> &\n RequestContextProp,\n ): Observable<\n { imodelAccess: IModelAccess; imodelAccessIndex: number } & (\n | { hierarchyNodesDefinition: GenericHierarchyNodeDefinition }\n | { hierarchyNodesDefinition: InstanceNodesQueryDefinition }\n )\n > {\n const { requestContext, ...defineHierarchyLevelProps } = props;\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: () =>\n `[${requestContext.requestId}] Requesting hierarchy level definitions for ${createNodeIdentifierForLogging(props.parentNode)}`,\n });\n\n return from(this._imodels).pipe(\n mergeMap(({ imodelAccess, nodeSelectClauseFactory }, imodelAccessIndex) => {\n let parentNode = props.parentNode;\n if (\n parentNode &&\n HierarchyNode.isGeneric(parentNode) &&\n parentNode.key.source &&\n parentNode.key.source !== this.#sourceName\n ) {\n return EMPTY;\n }\n if (parentNode && HierarchyNode.isInstancesNode(parentNode)) {\n parentNode = {\n ...parentNode,\n key: {\n ...parentNode.key,\n instanceKeys: parentNode.key.instanceKeys.filter(\n (ik) => !ik.imodelKey || ik.imodelKey === imodelAccess.imodelKey,\n ),\n },\n };\n assert(HierarchyNodeKey.isInstances(parentNode.key));\n if (parentNode.key.instanceKeys.length === 0) {\n return EMPTY;\n }\n }\n return this._activeHierarchyDefinition\n .defineHierarchyLevel({\n ...defineHierarchyLevelProps,\n createSelectClause: async (selectClauseProps) =>\n nodeSelectClauseFactory.createSelectClause(selectClauseProps),\n /* v8 ignore start */\n createFilterClauses: async (filterClausesProps) =>\n nodeSelectClauseFactory.createFilterClauses(filterClausesProps),\n /* v8 ignore stop */\n parentNode,\n imodelAccess,\n })\n .pipe(\n mergeAll(),\n map(\n /* Using `as` to work around TS not understanding that `{ x: A, y: B | C }` is the same as `{ x: A } & ({ y: B } | { y: C })` */\n (hierarchyNodesDefinition) =>\n ({ imodelAccess, imodelAccessIndex, hierarchyNodesDefinition }) as ObservedValueOf<\n ReturnType<typeof this.createHierarchyLevelDefinitionsObservable>\n >,\n ),\n );\n }),\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: () =>\n `[${requestContext.requestId}] Received all hierarchy level definitions for ${createNodeIdentifierForLogging(props.parentNode)}`,\n });\n }),\n );\n }\n\n private createSourceNodesObservable(\n props: Omit<DefineHierarchyLevelProps, \"imodelAccess\" | \"createSelectClause\" | \"createFilterClauses\"> & {\n hierarchyLevelSizeLimit?: number | \"unbounded\";\n targetInstanceKeys?: InstanceKey[];\n } & RequestContextProp,\n ): SourceNodesObservable {\n const createSourceNodesFromDefinition = (\n imodelAccess: IModelAccess,\n def: GenericHierarchyNodeDefinition | InstanceNodesQueryDefinition,\n ): Observable<SourceHierarchyNode> => {\n if (HierarchyNodesDefinition.isGenericNode(def)) {\n return of({ ...def.node, key: { type: \"generic\" as const, id: def.node.key, source: this.#sourceName } });\n }\n const query = createInstanceKeysFilteredQuery(def.query, props.targetInstanceKeys);\n return this.getQueryScheduler(imodelAccess.imodelKey).scheduleSubscription(\n readNodes({\n queryExecutor: imodelAccess,\n query,\n limit: props.hierarchyLevelSizeLimit,\n parser: this._activeHierarchyDefinition.parseNode\n ? ({ row }) =>\n this._activeHierarchyDefinition.parseNode!({\n row,\n parentNode: props.parentNode,\n imodelKey: imodelAccess.imodelKey,\n })\n : undefined,\n }).pipe(\n map((node) => ({\n ...node,\n key: {\n ...node.key,\n instanceKeys: node.key.instanceKeys.map((key) => ({ ...key, imodelKey: imodelAccess.imodelKey })),\n },\n })),\n ),\n );\n };\n\n const definitions = this.createHierarchyLevelDefinitionsObservable(props);\n let sourceNodes: Observable<SourceHierarchyNode>;\n if (this._imodels.length === 1) {\n sourceNodes = definitions.pipe(\n mergeMap(({ imodelAccess, hierarchyNodesDefinition: def }) =>\n createSourceNodesFromDefinition(imodelAccess, def),\n ),\n );\n } else {\n sourceNodes = definitions.pipe(\n mergeMap(({ imodelAccess, imodelAccessIndex, hierarchyNodesDefinition: def }) =>\n createSourceNodesFromDefinition(imodelAccess, def).pipe(\n map((node: SourceHierarchyNode) => ({ imodelAccess, imodelAccessIndex, node })),\n ),\n ),\n mergeNodes,\n map(({ node }) => node),\n );\n }\n\n return sourceNodes.pipe(\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: () =>\n `[${props.requestContext.requestId}] Read all child nodes ${createNodeIdentifierForLogging(props.parentNode)}`,\n });\n }),\n shareReplayWithErrors(),\n );\n }\n\n private createPreProcessedNodesObservable(\n queryNodesObservable: SourceNodesObservable,\n props: GetHierarchyNodesProps & RequestContextProp,\n ): Observable<ProcessedHierarchyNode> {\n return queryNodesObservable.pipe(\n // we're going to be mutating the nodes, but don't want to mutate the original one, so just clone it here once\n map((node) => ({ ...node })),\n // set parent node keys on the source node\n map((node) => Object.assign(node, { parentKeys: createParentNodeKeysList(props.parentNode) })),\n // format `ConcatenatedValue` labels into string labels\n mergeMap((node) => applyLabelsFormatting(node, this._valuesFormatter)),\n // we have `ProcessedHierarchyNode` from here\n // let consumers step-in\n preProcessNodes(this._activeHierarchyDefinition, props.parentNode),\n // process hiding\n createHideIfNoChildrenOperator(\n (n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes,\n ),\n createHideNodesInHierarchyOperator(\n // note: for child nodes created because of hidden parent, we want to use parent's request props (instance filter, limit)\n (n) => this.getChildNodesObservables({ ...props, parentNode: n }).processedNodes,\n false,\n ),\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: () =>\n `[${props.requestContext.requestId}] Finished pre-processing child nodes for ${createNodeIdentifierForLogging(props.parentNode)}`,\n });\n }),\n );\n }\n\n private createProcessedNodesObservable(\n preprocessedNodesObservable: Observable<ProcessedHierarchyNode>,\n props: GetHierarchyNodesProps & RequestContextProp,\n ): Observable<ProcessedHierarchyNode> {\n return preprocessedNodesObservable.pipe(\n createGroupingOperator(\n this.getPrimaryIModelAccess(),\n props.parentNode,\n this._valuesFormatter,\n this._localizedStrings,\n undefined,\n (gn) => this.onGroupingNodeCreated(gn, props),\n ),\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: () =>\n `[${props.requestContext.requestId}] Finished grouping child nodes for ${createNodeIdentifierForLogging(props.parentNode)}`,\n });\n }),\n );\n }\n\n private createFinalizedNodesObservable(\n processedNodesObservable: Observable<ProcessedHierarchyNode>,\n props: GetHierarchyNodesProps & RequestContextProp,\n ): Observable<HierarchyNode> {\n return processedNodesObservable.pipe(\n createDetermineChildrenOperator(\n (n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes,\n ),\n postProcessNodes(this._activeHierarchyDefinition, props.parentNode),\n sortNodesByLabelOperator,\n map((n): HierarchyNode => {\n if (\"processingParams\" in n) {\n delete n.processingParams;\n }\n return { ...n, children: hasChildren(n) };\n }),\n takeUntil(this._dispose),\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: () =>\n `[${props.requestContext.requestId}] Finished finalizing child nodes for ${createNodeIdentifierForLogging(props.parentNode)}`,\n });\n }),\n );\n }\n\n private createHasNodesObservable(\n preprocessedNodesObservable: Observable<ProcessedHierarchyNode>,\n possiblyKnownChildrenObservable: SourceNodesObservable | undefined,\n props: RequestContextProp,\n ): Observable<boolean> {\n const loggingCategory = `${LOGGING_NAMESPACE_INTERNAL}.HasNodes`;\n return concat(\n (possiblyKnownChildrenObservable ?? EMPTY).pipe(filter((n) => hasChildren(n))),\n preprocessedNodesObservable,\n ).pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: loggingCategory,\n message: (n) =>\n `[${props.requestContext.requestId}] Node before mapping to 'true': ${createNodeIdentifierForLogging(n)}`,\n }),\n take(1),\n map(() => true),\n defaultIfEmpty(false),\n catchError((e: Error) => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: loggingCategory,\n message: () => `[${props.requestContext.requestId}] Error while determining children: ${e.message}`,\n });\n if (e instanceof RowsLimitExceededError) {\n return of(true);\n }\n throw e;\n }),\n /* v8 ignore next -- @preserve */\n log({ category: loggingCategory, message: (r) => `[${props.requestContext.requestId}] Result: ${r}` }),\n );\n }\n\n private getCachedObservableEntry(props: GetHierarchyNodesProps & RequestContextProp): HierarchyCacheEntry {\n const loggingCategory = `${LOGGING_NAMESPACE}.QueryResultsCache`;\n const { parentNode, ...restProps } = props;\n const cached = props.ignoreCache || !this._nodesCache ? undefined : this._nodesCache.get(props);\n if (cached) {\n /* v8 ignore next -- @preserve */\n doLog({\n category: loggingCategory,\n message: () =>\n `[${props.requestContext.requestId}] Found query nodes observable for ${createNodeIdentifierForLogging(parentNode)}`,\n });\n return cached;\n }\n\n // if we don't find an entry for a grouping node, we load its instances by getting a query and applying\n // a search based on grouped instance keys\n let targetInstanceKeys: InstanceKey[] | undefined;\n let parentNonGroupingNode: ParentHierarchyNode<NonGroupingHierarchyNode> | undefined;\n if (parentNode) {\n if (HierarchyNode.isGroupingNode(parentNode)) {\n parentNonGroupingNode = parentNode.nonGroupingAncestor;\n targetInstanceKeys = parentNode.groupedInstanceKeys;\n } else {\n // not sure why type checker doesn't pick this up\n assert(HierarchyNode.isGeneric(parentNode) || HierarchyNode.isInstancesNode(parentNode));\n parentNonGroupingNode = parentNode;\n }\n }\n\n const nonGroupingNodeChildrenRequestProps = {\n ...restProps,\n parentNode: parentNonGroupingNode,\n ...(targetInstanceKeys ? { targetInstanceKeys } : undefined),\n };\n const value = {\n observable: this.createSourceNodesObservable(nonGroupingNodeChildrenRequestProps),\n processingStatus: \"none\" as const,\n };\n this._nodesCache?.set(nonGroupingNodeChildrenRequestProps, value);\n /* v8 ignore next -- @preserve */\n doLog({\n category: loggingCategory,\n message: () =>\n `[${props.requestContext.requestId}] Saved query nodes observable for ${createNodeIdentifierForLogging(parentNode)}`,\n });\n return value;\n }\n\n private getChildNodesObservables(\n props: GetHierarchyNodesProps & { hierarchyLevelSizeLimit?: number | \"unbounded\" } & RequestContextProp,\n ) {\n const entry = this.getCachedObservableEntry(props);\n switch (entry.processingStatus) {\n case \"none\": {\n const pre = this.createPreProcessedNodesObservable(entry.observable, props);\n const post = this.createProcessedNodesObservable(pre, props);\n return {\n processedNodes: post,\n hasNodes: this.createHasNodesObservable(pre, entry.observable, props),\n finalizedNodes: this.createFinalizedNodesObservable(post, props),\n };\n }\n case \"pre-processed\": {\n const post = this.createProcessedNodesObservable(entry.observable, props);\n return {\n processedNodes: post,\n hasNodes: this.createHasNodesObservable(entry.observable, undefined, props),\n finalizedNodes: this.createFinalizedNodesObservable(post, props),\n };\n }\n }\n }\n\n /**\n * Creates and runs a query based on provided props, then processes retrieved nodes and returns them.\n */\n public getNodes(props: GetHierarchyNodesProps): AsyncIterableIterator<HierarchyNode> {\n const requestContext = { requestId: Guid.createValue() };\n const loggingCategory = `${LOGGING_NAMESPACE}.GetNodes`;\n const timer = new StopWatch(undefined, true);\n let error: any;\n let nodesCount = 0;\n /* v8 ignore next -- @preserve */\n doLog({\n category: loggingCategory,\n message: () =>\n `[${requestContext.requestId}] Requesting child nodes for ${createNodeIdentifierForLogging(props.parentNode)}`,\n });\n return eachValueFrom(\n this.getChildNodesObservables({ ...props, requestContext }).finalizedNodes.pipe(\n tap(() => ++nodesCount),\n catchError((e) => {\n error = e;\n throw e;\n }),\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: loggingCategory,\n message: () =>\n error\n ? `[${requestContext.requestId}] Error creating child nodes for ${createNodeIdentifierForLogging(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`\n : `[${requestContext.requestId}] Returned ${nodesCount} child nodes for ${createNodeIdentifierForLogging(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,\n });\n }),\n ),\n );\n }\n\n private getNodeInstanceKeysObs(\n props: Omit<GetHierarchyNodesProps, \"ignoreCache\"> & RequestContextProp,\n ): Observable<InstanceKey> {\n const { parentNode, instanceFilter, hierarchyLevelSizeLimit = \"unbounded\", requestContext } = props;\n if (parentNode && HierarchyNode.isGroupingNode(parentNode)) {\n return from(parentNode.groupedInstanceKeys);\n }\n assert(!parentNode || HierarchyNode.isGeneric(parentNode) || HierarchyNode.isInstancesNode(parentNode));\n\n // split the definitions based on whether they're for generic nodes or for instance nodes\n const hierarchyLevelDefinitions = this.createHierarchyLevelDefinitionsObservable({\n parentNode,\n instanceFilter,\n requestContext,\n });\n const [instanceDefs, genericDefs] = partition(\n hierarchyLevelDefinitions,\n (\n x,\n ): x is Omit<ObservedValueOf<typeof hierarchyLevelDefinitions>, \"hierarchyNodesDefinition\"> & {\n hierarchyNodesDefinition: InstanceNodesQueryDefinition;\n } => HierarchyNodesDefinition.isInstanceNodesQuery(x.hierarchyNodesDefinition),\n );\n\n // query instance keys and a flag whether they should be hidden\n const instanceKeys = instanceDefs.pipe(\n mergeMap(({ imodelAccess, hierarchyNodesDefinition: def }) =>\n this.getQueryScheduler(imodelAccess.imodelKey).scheduleSubscription(\n of(def.query).pipe(\n mergeMap(async (query) => {\n const ecsql = `\n SELECT\n ${NodeSelectClauseColumnNames.FullClassName},\n ${NodeSelectClauseColumnNames.ECInstanceId},\n ${NodeSelectClauseColumnNames.HideNodeInHierarchy}\n FROM (\n ${query.ecsql}\n )\n `;\n const reader = imodelAccess.createQueryReader(\n { ...query, ecsql },\n {\n rowFormat: \"Indexes\",\n limit: hierarchyLevelSizeLimit,\n restartToken: `${this.#componentName}/${this.#componentId}/node-instance-keys/${Guid.createValue()}`,\n },\n );\n return from(reader).pipe(\n map((row) => ({\n key: {\n className: normalizeFullClassName(row[0]),\n id: row[1],\n imodelKey: imodelAccess.imodelKey,\n } satisfies IModelInstanceKey,\n hide: !!row[2],\n })),\n );\n }),\n mergeAll(),\n ),\n ),\n ),\n );\n // split the instance keys observable based on whether they should be hidden or not\n const [visibleNodeInstanceKeys, hiddenNodeInstanceKeys] = partition(instanceKeys, ({ hide }) => !hide);\n\n // hidden items' handling:\n // - if a generic node is hidden, we'll want to retrieve instance keys of its children, otherwise we don't care about it,\n // - if an instance key is hidden, we want to create a merged node similar to what we do in `createHideNodesInHierarchyOperator`\n const hiddenParentNodes = merge(\n genericDefs.pipe(\n filter(({ hierarchyNodesDefinition }) => !!hierarchyNodesDefinition.node.processingParams?.hideInHierarchy),\n map(\n ({ hierarchyNodesDefinition }): GenericNodeKey => ({\n type: \"generic\",\n id: hierarchyNodesDefinition.node.key,\n source: this.#sourceName,\n }),\n ),\n ),\n hiddenNodeInstanceKeys.pipe(\n // first merge all keys by class\n reduceToMergeMapList(\n ({ key }) => key.className,\n ({ key }) => key,\n ),\n // then, for each class, create an instance key\n mergeMap((mergedMap): InstancesNodeKey[] =>\n [...mergedMap.entries()].map(([className, keys]) => ({\n type: \"instances\",\n instanceKeys: keys.map(({ id, imodelKey }) => ({ className, id, imodelKey })),\n })),\n ),\n ),\n ).pipe(map((key) => ({ key, parentKeys: [], label: \"\" })));\n\n // merge visible instance keys from this level & the ones we get recursively requesting from deeper levels\n return merge(\n visibleNodeInstanceKeys.pipe(map(({ key }) => key)),\n hiddenParentNodes.pipe(\n mergeMap((hiddenNode) => this.getNodeInstanceKeysObs({ parentNode: hiddenNode, requestContext })),\n ),\n ).pipe(takeUntil(this._dispose));\n }\n\n /**\n * Creates an iterator for all child hierarchy level instance keys, taking into account any hidden hierarchy levels\n * that there may be under the given parent node.\n */\n public getNodeInstanceKeys(props: Omit<GetHierarchyNodesProps, \"ignoreCache\">): AsyncIterableIterator<InstanceKey> {\n const requestContext = { requestId: Guid.createValue() };\n const loggingCategory = `${LOGGING_NAMESPACE}.GetNodeInstanceKeys`;\n const timer = new StopWatch(undefined, true);\n /* v8 ignore next -- @preserve */\n doLog({\n category: loggingCategory,\n message: () =>\n `[${requestContext.requestId}] Requesting keys for ${createNodeIdentifierForLogging(props.parentNode)}`,\n });\n let error: any;\n let keysCount = 0;\n return eachValueFrom(\n this.getNodeInstanceKeysObs({ ...props, requestContext }).pipe(\n tap(() => ++keysCount),\n catchError((e) => {\n error = e;\n throw e;\n }),\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: loggingCategory,\n message: () =>\n error\n ? `[${requestContext.requestId}] Error creating node instance keys for ${createNodeIdentifierForLogging(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`\n : `[${requestContext.requestId}] Returned ${keysCount} instance keys for ${createNodeIdentifierForLogging(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,\n });\n }),\n ),\n );\n }\n}\n\ntype SourceHierarchyNode =\n | SourceInstanceHierarchyNode\n | (Omit<SourceGenericHierarchyNode, \"key\"> & { key: GenericNodeKey });\ntype SourceNodesObservable = Observable<SourceHierarchyNode>;\ntype ProcessedNodesObservable = Observable<ProcessedHierarchyNode>;\ntype HierarchyCacheEntry =\n | { observable: SourceNodesObservable; processingStatus: \"none\" }\n | { observable: ProcessedNodesObservable; processingStatus: \"pre-processed\" };\n\nfunction preProcessNodes(hierarchyFactory: RxjsHierarchyDefinition, parentNode: ParentHierarchyNode | undefined) {\n return hierarchyFactory.preProcessNode ? processNodes(hierarchyFactory.preProcessNode, parentNode) : identity;\n}\n\nfunction postProcessNodes(hierarchyFactory: RxjsHierarchyDefinition, parentNode: ParentHierarchyNode | undefined) {\n return hierarchyFactory.postProcessNode ? processNodes(hierarchyFactory.postProcessNode, parentNode) : identity;\n}\n\nfunction processNodes<TNode>(\n processor: (props: { node: TNode; parentNode?: ParentHierarchyNode }) => Observable<TNode>,\n parentNode: ParentHierarchyNode | undefined,\n) {\n return (nodes: Observable<TNode>) => nodes.pipe(mergeMap((node) => processor({ node, parentNode })));\n}\n\nfunction applyLabelsFormatting<TNode extends { label: string | ConcatenatedValue }>(\n node: TNode,\n valueFormatter: IPrimitiveValueFormatter,\n): Observable<TNode & { label: string }> {\n return from(formatConcatenatedValue({ value: node.label, valueFormatter })).pipe(\n map((label) => ({ ...node, label })),\n );\n}\n\nfunction createParentNodeKeysList(parentNode: ParentHierarchyNode | undefined) {\n if (!parentNode) {\n return [];\n }\n return [...parentNode.parentKeys, parentNode.key];\n}\n\nfunction createInstanceKeysFilteredQuery(\n query: ECSqlQueryDef,\n targetInstanceKeys: InstanceKey[] | undefined,\n): ECSqlQueryDef {\n if (!targetInstanceKeys || !targetInstanceKeys.length) {\n return query;\n }\n\n if (Array.isArray(query.bindings)) {\n return {\n ...query,\n ecsql: `\n SELECT *\n FROM (${query.ecsql}) q\n JOIN IdSet(?) targetInstanceKeys ON targetInstanceKeys.id = q.ECInstanceId\n ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\n `,\n bindings: [...query.bindings, { type: \"idset\", value: targetInstanceKeys.map((k) => k.id) }],\n };\n }\n const ecsqlVarTargetInstanceKeys = `${ECSQL_PREFIX}targetInstanceKeys`;\n return {\n ...query,\n ecsql: `\n SELECT *\n FROM (${query.ecsql}) q\n JOIN IdSet(:${ecsqlVarTargetInstanceKeys}) targetInstanceKeys ON targetInstanceKeys.id = q.ECInstanceId\n ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\n `,\n bindings: {\n ...query.bindings,\n [ecsqlVarTargetInstanceKeys]: { type: \"idset\", value: targetInstanceKeys.map((k) => k.id) },\n },\n };\n}\n\ninterface MergeNodesInput {\n imodelAccess: IModelAccess;\n imodelAccessIndex: number;\n node: SourceHierarchyNode;\n}\n// TODO: MISSING_COVERAGE\n/* v8 ignore start */\nfunction mergeNodes(source: ObservableInput<MergeNodesInput>) {\n return from(source).pipe(\n reduce((acc, input) => {\n for (let i = 0; i < acc.length; ++i) {\n if (input.imodelAccess === acc[i].imodelAccess) {\n // don't attempt to merge nodes if they come from the same provider\n continue;\n }\n\n // the first argument for `tryMergeNodes` acts as the primary data source, so we have to make sure we pass\n // the node with higher `imodelAccessIndex` first\n const candidates =\n input.imodelAccessIndex > acc[i].imodelAccessIndex\n ? {\n imodelAccess: input.imodelAccess,\n imodelAccessIndex: input.imodelAccessIndex,\n primary: input.node,\n secondary: acc[i].node,\n }\n : {\n imodelAccess: acc[i].imodelAccess,\n imodelAccessIndex: acc[i].imodelAccessIndex,\n primary: acc[i].node,\n secondary: input.node,\n };\n const merged = tryMergeNodes(candidates.primary, candidates.secondary);\n if (merged) {\n acc[i] = {\n node: merged,\n imodelAccess: candidates.imodelAccess,\n imodelAccessIndex: candidates.imodelAccessIndex,\n };\n return acc;\n }\n }\n acc.push(input);\n return acc;\n }, new Array<MergeNodesInput>()),\n mergeAll(),\n );\n}\nfunction mergeSearchAttribute(\n primary: SourceHierarchyNode[\"search\"],\n secondary: SourceHierarchyNode[\"search\"],\n): SourceHierarchyNode[\"search\"] {\n if (!primary) {\n return secondary;\n }\n if (!secondary) {\n return primary;\n }\n\n const hasSearchTargetAncestor = primary.hasSearchTargetAncestor || secondary.hasSearchTargetAncestor;\n const isSearchTarget = primary.isSearchTarget || secondary.isSearchTarget;\n const searchOptions = HierarchySearchTree.mergeOptions(primary.options, secondary.options);\n\n const childrenTargetPathsBuilder = HierarchySearchTree.createBuilder();\n primary.childrenTargetPaths?.forEach((tree) => childrenTargetPathsBuilder.accept({ tree }));\n secondary.childrenTargetPaths?.forEach((tree) => childrenTargetPathsBuilder.accept({ tree }));\n const childrenTargetPaths = childrenTargetPathsBuilder.getTree();\n\n return {\n ...(hasSearchTargetAncestor ? { hasSearchTargetAncestor } : undefined),\n ...(childrenTargetPaths.length ? { childrenTargetPaths } : undefined),\n ...(isSearchTarget ? { isSearchTarget } : undefined),\n ...(searchOptions ? { options: searchOptions } : undefined),\n };\n}\nfunction mergeBaseNodeAttributes(\n primary: Omit<SourceHierarchyNode, \"key\" | \"label\" | \"extendedData\" | \"processingParams\">,\n secondary: Omit<SourceHierarchyNode, \"key\" | \"label\" | \"extendedData\" | \"processingParams\">,\n) {\n const search = mergeSearchAttribute(primary.search, secondary.search);\n return {\n ...(primary.autoExpand || secondary.autoExpand ? { autoExpand: true } : undefined),\n ...(primary.children && secondary.children ? { children: true } : undefined),\n ...(primary.supportsFiltering || secondary.supportsFiltering ? { supportsFiltering: true } : undefined),\n ...(search ? { search } : undefined),\n };\n}\nfunction tryMergeInstanceNodes(\n primary: SourceHierarchyNode,\n secondary: SourceHierarchyNode,\n): SourceHierarchyNode | undefined {\n if (\n HierarchyNode.isInstancesNode(primary) &&\n HierarchyNode.isInstancesNode(secondary) &&\n primary.key.instanceKeys.some((lhsKey) =>\n secondary.key.instanceKeys.some((rhsKey) => InstanceKey.equals(lhsKey, rhsKey)),\n )\n ) {\n return {\n ...primary,\n key: { type: \"instances\", instanceKeys: primary.key.instanceKeys.concat(secondary.key.instanceKeys) },\n ...mergeBaseNodeAttributes(primary, secondary),\n };\n }\n return undefined;\n}\nfunction tryMergeGenericNodes(\n primary: SourceHierarchyNode,\n secondary: SourceHierarchyNode,\n): SourceHierarchyNode | undefined {\n if (HierarchyNode.isGeneric(primary) && HierarchyNode.isGeneric(secondary) && primary.key.id === secondary.key.id) {\n return { ...primary, ...mergeBaseNodeAttributes(primary, secondary) };\n }\n return undefined;\n}\nfunction tryMergeNodes(primary: SourceHierarchyNode, secondary: SourceHierarchyNode): SourceHierarchyNode | undefined {\n return tryMergeInstanceNodes(primary, secondary) ?? tryMergeGenericNodes(primary, secondary) ?? undefined;\n}\n/* v8 ignore stop */\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LimitingECSqlQueryExecutor.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/LimitingECSqlQueryExecutor.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,iBAAiB,CACf,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,uBAAuB,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,GAClE,UAAU,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC;CACxD;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,kBAAkB,EAChC,YAAY,EAAE,MAAM,GAAG,WAAW,GACjC,0BAA0B,CA+C5B"}
@@ -1,126 +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.createLimitingECSqlQueryExecutor = createLimitingECSqlQueryExecutor;
8
- const core_bentley_1 = require("@itwin/core-bentley");
9
- const presentation_shared_1 = require("@itwin/presentation-shared");
10
- const HierarchyErrors_js_1 = require("../HierarchyErrors.js");
11
- const Common_js_1 = require("../internal/Common.js");
12
- const LoggingUtils_js_1 = require("../internal/LoggingUtils.js");
13
- /**
14
- * Creates an `LimitingECSqlQueryExecutor` that throws `RowsLimitExceededError` if the query exceeds given amount of rows.
15
- * @public
16
- */
17
- function createLimitingECSqlQueryExecutor(baseExecutor, defaultLimit) {
18
- return {
19
- async *createQueryReader(query, config) {
20
- const { limit: configLimit, ...restConfig } = config ?? {};
21
- const limit = configLimit ?? defaultLimit;
22
- const queryLogger = createQueryLogger(query);
23
- const releaseMainThread = (0, presentation_shared_1.createMainThreadReleaseOnTimePassedHandler)();
24
- // handle "unbounded" case without a buffer
25
- const reader = baseExecutor.createQueryReader({ ...query, ecsql: addLimit(query.ecsql, limit) }, restConfig);
26
- if (limit === "unbounded") {
27
- try {
28
- for await (const row of reader) {
29
- await releaseMainThread();
30
- queryLogger.onStep();
31
- yield row;
32
- }
33
- }
34
- finally {
35
- queryLogger.onComplete();
36
- }
37
- return;
38
- }
39
- // avoid streaming until we know the number of rows is okay
40
- const buffer = [];
41
- try {
42
- for await (const row of reader) {
43
- await releaseMainThread();
44
- queryLogger.onStep();
45
- buffer.push(row);
46
- if (buffer.length > limit) {
47
- throw new HierarchyErrors_js_1.RowsLimitExceededError(limit);
48
- }
49
- }
50
- }
51
- finally {
52
- queryLogger.onComplete();
53
- }
54
- for (const row of buffer) {
55
- await releaseMainThread();
56
- yield row;
57
- }
58
- },
59
- };
60
- }
61
- function addLimit(ecsql, limit) {
62
- if (limit === "unbounded") {
63
- return ecsql;
64
- }
65
- return `
66
- SELECT *
67
- FROM (${ecsql})
68
- LIMIT ${limit + 1}
69
- `;
70
- }
71
- const LOGGING_NAMESPACE = `${Common_js_1.LOGGING_NAMESPACE}.Queries`;
72
- const LOGGING_NAMESPACE_PERFORMANCE = `${Common_js_1.LOGGING_NAMESPACE_PERFORMANCE}.Queries`;
73
- function createQueryLogger(query, firstStepWarningThreshold = 3000, allRowsWarningThreshold = 5000) {
74
- const queryId = core_bentley_1.Guid.createValue();
75
- /* v8 ignore next -- @preserve */
76
- (0, LoggingUtils_js_1.doLog)({
77
- category: LOGGING_NAMESPACE,
78
- message: () => `Executing query [${queryId}]: ${createQueryLogMessage(query)}`,
79
- });
80
- let firstStep = true;
81
- let rowsCount = 0;
82
- const timer = new core_bentley_1.StopWatch(undefined, true);
83
- return {
84
- onStep() {
85
- if (firstStep) {
86
- /* v8 ignore next -- @preserve */
87
- (0, LoggingUtils_js_1.doLog)({
88
- category: LOGGING_NAMESPACE_PERFORMANCE,
89
- severity: timer.current.milliseconds >= firstStepWarningThreshold ? "warning" : "trace",
90
- message: () => `[${queryId}] First step took ${timer.currentSeconds} s.`,
91
- });
92
- firstStep = false;
93
- }
94
- ++rowsCount;
95
- },
96
- onComplete() {
97
- /* v8 ignore next -- @preserve */
98
- (0, LoggingUtils_js_1.doLog)({
99
- category: LOGGING_NAMESPACE_PERFORMANCE,
100
- severity: timer.current.milliseconds >= allRowsWarningThreshold ? "warning" : "trace",
101
- message: () => `[${queryId}] Query took ${timer.currentSeconds} s. for ${rowsCount} rows.`,
102
- });
103
- },
104
- };
105
- }
106
- /* v8 ignore start */
107
- function createQueryLogMessage(query) {
108
- const ctes = query.ctes?.map((cte) => ` ${(0, presentation_shared_1.trimWhitespace)(cte)}`).join(", \n");
109
- const bindings = query.bindings
110
- ? Array.isArray(query.bindings)
111
- ? `[${query.bindings.map((b) => JSON.stringify(b.value)).join(", ")}]`
112
- : JSON.stringify(query.bindings)
113
- : undefined;
114
- let output = "{\n";
115
- if (ctes) {
116
- output += ` ctes: [ \n${ctes} \n], \n`;
117
- }
118
- output += ` ecsql: ${(0, presentation_shared_1.trimWhitespace)(query.ecsql)}, \n`;
119
- if (bindings) {
120
- output += ` bindings: ${bindings}, \n`;
121
- }
122
- output += "}";
123
- return output;
124
- }
125
- /* v8 ignore stop */
126
- //# sourceMappingURL=LimitingECSqlQueryExecutor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LimitingECSqlQueryExecutor.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/LimitingECSqlQueryExecutor.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAsChG,4EAkDC;AAtFD,sDAAsD;AACtD,oEAAwG;AACxG,8DAA+D;AAC/D,qDAG+B;AAC/B,iEAAoD;AAyBpD;;;GAGG;AACH,SAAgB,gCAAgC,CAC9C,YAAgC,EAChC,YAAkC;IAElC,OAAO;QACL,KAAK,CAAC,CAAC,iBAAiB,CACtB,KAAoB,EACpB,MAAmE;YAEnE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,WAAW,IAAI,YAAY,CAAC;YAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,iBAAiB,GAAG,IAAA,gEAA0C,GAAE,CAAC;YAEvE,2CAA2C;YAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAC7G,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;wBAC/B,MAAM,iBAAiB,EAAE,CAAC;wBAC1B,WAAW,CAAC,MAAM,EAAE,CAAC;wBACrB,MAAM,GAAG,CAAC;oBACZ,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,WAAW,CAAC,UAAU,EAAE,CAAC;gBAC3B,CAAC;gBACD,OAAO;YACT,CAAC;YAED,2DAA2D;YAC3D,MAAM,MAAM,GAAoB,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBAC/B,MAAM,iBAAiB,EAAE,CAAC;oBAC1B,WAAW,CAAC,MAAM,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjB,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;wBAC1B,MAAM,IAAI,2CAAsB,CAAC,KAAK,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3B,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,MAAM,iBAAiB,EAAE,CAAC;gBAC1B,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,KAA2B;IAC1D,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO;;YAEG,KAAK;YACL,KAAK,GAAG,CAAC;GAClB,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,GAAG,6BAAsB,UAAU,CAAC;AAC9D,MAAM,6BAA6B,GAAG,GAAG,yCAAkC,UAAU,CAAC;AACtF,SAAS,iBAAiB,CAAC,KAAoB,EAAE,yBAAyB,GAAG,IAAI,EAAE,uBAAuB,GAAG,IAAI;IAC/G,MAAM,OAAO,GAAG,mBAAI,CAAC,WAAW,EAAE,CAAC;IACnC,iCAAiC;IACjC,IAAA,uBAAK,EAAC;QACJ,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,OAAO,MAAM,qBAAqB,CAAC,KAAK,CAAC,EAAE;KAC/E,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,KAAK,GAAG,IAAI,wBAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO;QACL,MAAM;YACJ,IAAI,SAAS,EAAE,CAAC;gBACd,iCAAiC;gBACjC,IAAA,uBAAK,EAAC;oBACJ,QAAQ,EAAE,6BAA6B;oBACvC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;oBACvF,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,qBAAqB,KAAK,CAAC,cAAc,KAAK;iBACzE,CAAC,CAAC;gBACH,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;YACD,EAAE,SAAS,CAAC;QACd,CAAC;QACD,UAAU;YACR,iCAAiC;YACjC,IAAA,uBAAK,EAAC;gBACJ,QAAQ,EAAE,6BAA6B;gBACvC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;gBACrF,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,gBAAgB,KAAK,CAAC,cAAc,WAAW,SAAS,QAAQ;aAC3F,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qBAAqB;AACrB,SAAS,qBAAqB,CAAC,KAAoB;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,IAAA,oCAAc,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;QAC7B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC7B,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACtE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;QAClC,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,eAAe,IAAI,UAAU,CAAC;IAC1C,CAAC;IACD,MAAM,IAAI,YAAY,IAAA,oCAAc,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,QAAQ,MAAM,CAAC;IAC1C,CAAC;IACD,MAAM,IAAI,GAAG,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,oBAAoB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Guid, StopWatch } from \"@itwin/core-bentley\";\nimport { createMainThreadReleaseOnTimePassedHandler, trimWhitespace } from \"@itwin/presentation-shared\";\nimport { RowsLimitExceededError } from \"../HierarchyErrors.js\";\nimport {\n LOGGING_NAMESPACE as BASE_LOGGING_NAMESPACE,\n LOGGING_NAMESPACE_PERFORMANCE as BASE_LOGGING_NAMESPACE_PERFORMANCE,\n} from \"../internal/Common.js\";\nimport { doLog } from \"../internal/LoggingUtils.js\";\n\nimport type {\n ECSqlQueryDef,\n ECSqlQueryExecutor,\n ECSqlQueryReaderOptions,\n ECSqlQueryRow,\n} from \"@itwin/presentation-shared\";\n\n/**\n * An interface for something that knows how to create a limiting ECSQL query reader.\n * @public\n */\nexport interface LimitingECSqlQueryExecutor {\n /**\n * Creates a query reader for given query, but makes sure it doesn't return more than the configured\n * limit of rows.\n * @throws `RowsLimitExceededError` when the query returns more than configured limit of rows.\n */\n createQueryReader(\n query: ECSqlQueryDef,\n config?: ECSqlQueryReaderOptions & { limit?: number | \"unbounded\" },\n ): ReturnType<ECSqlQueryExecutor[\"createQueryReader\"]>;\n}\n\n/**\n * Creates an `LimitingECSqlQueryExecutor` that throws `RowsLimitExceededError` if the query exceeds given amount of rows.\n * @public\n */\nexport function createLimitingECSqlQueryExecutor(\n baseExecutor: ECSqlQueryExecutor,\n defaultLimit: number | \"unbounded\",\n): LimitingECSqlQueryExecutor {\n return {\n async *createQueryReader(\n query: ECSqlQueryDef,\n config?: ECSqlQueryReaderOptions & { limit?: number | \"unbounded\" },\n ) {\n const { limit: configLimit, ...restConfig } = config ?? {};\n const limit = configLimit ?? defaultLimit;\n const queryLogger = createQueryLogger(query);\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n\n // handle \"unbounded\" case without a buffer\n const reader = baseExecutor.createQueryReader({ ...query, ecsql: addLimit(query.ecsql, limit) }, restConfig);\n if (limit === \"unbounded\") {\n try {\n for await (const row of reader) {\n await releaseMainThread();\n queryLogger.onStep();\n yield row;\n }\n } finally {\n queryLogger.onComplete();\n }\n return;\n }\n\n // avoid streaming until we know the number of rows is okay\n const buffer: ECSqlQueryRow[] = [];\n try {\n for await (const row of reader) {\n await releaseMainThread();\n queryLogger.onStep();\n buffer.push(row);\n if (buffer.length > limit) {\n throw new RowsLimitExceededError(limit);\n }\n }\n } finally {\n queryLogger.onComplete();\n }\n\n for (const row of buffer) {\n await releaseMainThread();\n yield row;\n }\n },\n };\n}\n\nfunction addLimit(ecsql: string, limit: number | \"unbounded\") {\n if (limit === \"unbounded\") {\n return ecsql;\n }\n return `\n SELECT *\n FROM (${ecsql})\n LIMIT ${limit + 1}\n `;\n}\n\nconst LOGGING_NAMESPACE = `${BASE_LOGGING_NAMESPACE}.Queries`;\nconst LOGGING_NAMESPACE_PERFORMANCE = `${BASE_LOGGING_NAMESPACE_PERFORMANCE}.Queries`;\nfunction createQueryLogger(query: ECSqlQueryDef, firstStepWarningThreshold = 3000, allRowsWarningThreshold = 5000) {\n const queryId = Guid.createValue();\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE,\n message: () => `Executing query [${queryId}]: ${createQueryLogMessage(query)}`,\n });\n\n let firstStep = true;\n let rowsCount = 0;\n const timer = new StopWatch(undefined, true);\n return {\n onStep() {\n if (firstStep) {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n severity: timer.current.milliseconds >= firstStepWarningThreshold ? \"warning\" : \"trace\",\n message: () => `[${queryId}] First step took ${timer.currentSeconds} s.`,\n });\n firstStep = false;\n }\n ++rowsCount;\n },\n onComplete() {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n severity: timer.current.milliseconds >= allRowsWarningThreshold ? \"warning\" : \"trace\",\n message: () => `[${queryId}] Query took ${timer.currentSeconds} s. for ${rowsCount} rows.`,\n });\n },\n };\n}\n\n/* v8 ignore start */\nfunction createQueryLogMessage(query: ECSqlQueryDef): string {\n const ctes = query.ctes?.map((cte) => ` ${trimWhitespace(cte)}`).join(\", \\n\");\n const bindings = query.bindings\n ? Array.isArray(query.bindings)\n ? `[${query.bindings.map((b) => JSON.stringify(b.value)).join(\", \")}]`\n : JSON.stringify(query.bindings)\n : undefined;\n let output = \"{\\n\";\n if (ctes) {\n output += ` ctes: [ \\n${ctes} \\n], \\n`;\n }\n output += ` ecsql: ${trimWhitespace(query.ecsql)}, \\n`;\n if (bindings) {\n output += ` bindings: ${bindings}, \\n`;\n }\n output += \"}\";\n return output;\n}\n/* v8 ignore stop */\n"]}
@@ -1,231 +0,0 @@
1
- import { GenericInstanceFilter } from "@itwin/core-common";
2
- import type { Id64String } from "@itwin/core-bentley";
3
- import type { EC, ECClassHierarchyInspector, ECSchemaProvider, IInstanceLabelSelectClauseFactory, Props } from "@itwin/presentation-shared";
4
- import type { HierarchyNodeAutoExpandProp } from "./IModelHierarchyNode.js";
5
- /**
6
- * Column names of the SELECT clause created by `NodeSelectClauseFactory`. Order of the names matches the order of columns
7
- * created by the factory.
8
- *
9
- * @public
10
- */
11
- export declare enum NodeSelectClauseColumnNames {
12
- /** Full class name of the instance the node represents. Type: `string` in format `{schema name}:{class name}`. */
13
- FullClassName = "FullClassName",
14
- /** ECInstance ID of the instance the node represents. Type: `Id64String`. */
15
- ECInstanceId = "ECInstanceId",
16
- /** Display label. Type: `string`. */
17
- DisplayLabel = "DisplayLabel",
18
- /**
19
- * A flag indicating if the node has children. Type: `boolean`. Values:
20
- * - `false` - node never has children.
21
- * - `true` - node always has children.
22
- * - NULL - unknown, needs to be determined by requesting children for the node.
23
- */
24
- HasChildren = "HasChildren",
25
- /** A flag indicating that a node should be hidden if it has no children. Type: `boolean`. */
26
- HideIfNoChildren = "HideIfNoChildren",
27
- /** A flag indicating that a node should be hidden and its children should be displayed instead. Type: `boolean`. */
28
- HideNodeInHierarchy = "HideNodeInHierarchy",
29
- /** A serialized JSON object for providing grouping information. */
30
- Grouping = "Grouping",
31
- /** A serialized JSON object for associating a node with additional data. */
32
- ExtendedData = "ExtendedData",
33
- /** A flag indicating the node should be auto-expanded when it's loaded. */
34
- AutoExpand = "AutoExpand",
35
- /** A flag indicating the node supports child hierarchy level filtering. */
36
- SupportsFiltering = "SupportsFiltering"
37
- }
38
- /**
39
- * A data structure for defining an ECSQL value selector.
40
- * @public
41
- */
42
- interface ECSqlValueSelector {
43
- selector: string;
44
- }
45
- /**
46
- * Props for `NodeSelectClauseFactory.createSelectClause`.
47
- * @public
48
- */
49
- interface NodeSelectClauseProps {
50
- ecClassId: ECSqlValueSelector;
51
- ecInstanceId: ECSqlValueSelector;
52
- nodeLabel: string | ECSqlValueSelector | {
53
- of: Props<IInstanceLabelSelectClauseFactory["createSelectClause"]>;
54
- };
55
- extendedData?: {
56
- [key: string]: Id64String | string | number | boolean | ECSqlValueSelector;
57
- };
58
- autoExpand?: boolean | ECSqlValueSelector;
59
- supportsFiltering?: boolean | ECSqlValueSelector;
60
- hasChildren?: boolean | ECSqlValueSelector;
61
- hideNodeInHierarchy?: boolean | ECSqlValueSelector;
62
- hideIfNoChildren?: boolean | ECSqlValueSelector;
63
- grouping?: ECSqlSelectClauseGroupingParams;
64
- }
65
- /**
66
- * A data structure for defining nodes' grouping requirements.
67
- * @public
68
- */
69
- interface ECSqlSelectClauseGroupingParams {
70
- byLabel?: ECSqlSelectClauseLabelGroupingParams;
71
- byClass?: boolean | ECSqlSelectClauseGroupingParamsBase | ECSqlValueSelector;
72
- byBaseClasses?: ECSqlSelectClauseBaseClassGroupingParams;
73
- byProperties?: ECSqlSelectClausePropertiesGroupingParams;
74
- }
75
- /**
76
- * A data structure for defining label grouping params.
77
- * @public
78
- */
79
- interface ECSqlSelectClauseLabelGroupingBaseParams {
80
- /** Label grouping option that determines whether to group nodes or to merge them. Defaults to "group".*/
81
- action?: "group" | "merge";
82
- /** Id that needs to match for nodes to be grouped or merged.*/
83
- groupId?: string | ECSqlValueSelector;
84
- }
85
- /**
86
- * A data structure for defining label merging.
87
- * @public
88
- */
89
- interface ECSqlSelectClauseLabelGroupingMergeParams extends ECSqlSelectClauseLabelGroupingBaseParams {
90
- action: "merge";
91
- }
92
- /**
93
- * A data structure for defining label grouping.
94
- * @public
95
- */
96
- interface ECSqlSelectClauseLabelGroupingGroupParams extends ECSqlSelectClauseLabelGroupingBaseParams, ECSqlSelectClauseGroupingParamsBase {
97
- action?: "group";
98
- }
99
- /**
100
- * A data structure for defining possible label grouping types.
101
- * @public
102
- */
103
- type ECSqlSelectClauseLabelGroupingParams = boolean | ECSqlValueSelector | ECSqlSelectClauseLabelGroupingMergeParams | ECSqlSelectClauseLabelGroupingGroupParams;
104
- /**
105
- * A data structure for defining base grouping parameters shared across all types of grouping.
106
- * @public
107
- */
108
- interface ECSqlSelectClauseGroupingParamsBase {
109
- hideIfNoSiblings?: boolean | ECSqlValueSelector;
110
- hideIfOneGroupedNode?: boolean | ECSqlValueSelector;
111
- autoExpand?: HierarchyNodeAutoExpandProp | ECSqlValueSelector;
112
- }
113
- /**
114
- * A data structure for defining properties grouping.
115
- * @public
116
- */
117
- interface ECSqlSelectClausePropertiesGroupingParams extends ECSqlSelectClauseGroupingParamsBase {
118
- /**
119
- * Full name of a class whose properties are used to group the node. Only has effect if the node
120
- * represents an instance of that class.
121
- *
122
- * Full class name format: `SchemaName.ClassName`.
123
- */
124
- propertiesClassName: EC.FullClassName;
125
- /**
126
- * Property grouping option that determines whether to group nodes whose grouping value is not set or is set to an empty string.
127
- *
128
- * Label of the created grouping node will be `Not Specified`.
129
- */
130
- createGroupForUnspecifiedValues?: boolean | ECSqlValueSelector;
131
- /**
132
- * Property grouping option that determines whether to group nodes whose grouping value doesn't fit within any of the provided
133
- * ranges, or is not a numeric value.
134
- *
135
- * Label of the created grouping node will be `Other`.
136
- */
137
- createGroupForOutOfRangeValues?: boolean | ECSqlValueSelector;
138
- /**
139
- * Properties of the specified class, by which the nodes should be grouped.
140
- *
141
- * Example usage:
142
- * ```ts
143
- * propertyGroups: [
144
- * {
145
- * propertyName: "type",
146
- * propertyClassAlias: "this"
147
- * },
148
- * {
149
- * propertyName: "length",
150
- * propertyClassAlias: "x",
151
- * ranges: [
152
- * { fromValue: 1, toValue: 10, rangeLabel: "Small" },
153
- * { fromValue: 11, toValue: 20, rangeLabel: "Medium" }
154
- * ]
155
- * },
156
- * ]
157
- * ```
158
- */
159
- propertyGroups: ECSqlSelectClausePropertyGroup[];
160
- }
161
- /**
162
- * A data structure for defining specific properties' grouping params.
163
- * @public
164
- */
165
- interface ECSqlSelectClausePropertyGroup {
166
- /** A string indicating the name of the property to group by. */
167
- propertyName: string;
168
- /** Alias to of the class containing the property. Used to select the property value. */
169
- propertyClassAlias: string;
170
- /** Ranges are used to group nodes by numeric properties which are within specified bounds. */
171
- ranges?: ECSqlSelectClausePropertyValueRange[];
172
- }
173
- /**
174
- * A data structure for defining boundaries for a value.
175
- * @public
176
- */
177
- interface ECSqlSelectClausePropertyValueRange {
178
- /** Defines the lower bound of the range. */
179
- fromValue: number | ECSqlValueSelector;
180
- /** Defines the upper bound of the range. */
181
- toValue: number | ECSqlValueSelector;
182
- /** Defines the range label. Will be used as grouping node's display label. */
183
- rangeLabel?: string | ECSqlValueSelector;
184
- }
185
- /**
186
- * A data structure for defining base class grouping.
187
- * @public
188
- */
189
- interface ECSqlSelectClauseBaseClassGroupingParams extends ECSqlSelectClauseGroupingParamsBase {
190
- fullClassNames: EC.FullClassName[] | ECSqlValueSelector[];
191
- }
192
- /**
193
- * An interface of a factory that knows how to create nodes' select ECSQL query.
194
- * @public
195
- */
196
- export interface NodesQueryClauseFactory {
197
- /** Create a SELECT clause in a format understood by nodes query parser used by `HierarchyProvider`. */
198
- createSelectClause(props: NodeSelectClauseProps): Promise<string>;
199
- /**
200
- * Creates the necessary ECSQL snippets to create an instance filter described by the given `GenericInstanceFilter` argument.
201
- * - `from` is set to either the `contentClass.fullName` or one of `filter.propertyClassNames`, depending on which is more specific.
202
- * - `joins` is set to a number of `JOIN` clauses required to join all relationships described by `filter.relatedInstances`.
203
- * - `where` is set to a `WHERE` clause (without the `WHERE` keyword) that filters instances by classes on
204
- * `filter.filterClassNames` and by properties as described by `filter.rules`.
205
- *
206
- * Special cases:
207
- * - If `filter` is `undefined`, `joins` and `where` are set to empty strings and `from` is set to `contentClass.fullName`.
208
- * - If the provided content class doesn't intersect with the property class in provided filter OR referenced schema items (classes/properties)
209
- * don't exist in the iModel, a special result is returned to make sure the resulting query is valid and doesn't return anything.
210
- */
211
- createFilterClauses(props: {
212
- contentClass: {
213
- fullName: EC.FullClassName;
214
- alias: string;
215
- };
216
- filter?: GenericInstanceFilter;
217
- }): Promise<{
218
- from: string;
219
- where: string;
220
- joins: string;
221
- }>;
222
- }
223
- /**
224
- * Creates an instance of `NodeSelectQueryFactory`.
225
- */
226
- export declare function createNodesQueryClauseFactory(props: {
227
- imodelAccess: ECSchemaProvider & ECClassHierarchyInspector;
228
- instanceLabelSelectClauseFactory: IInstanceLabelSelectClauseFactory;
229
- }): NodesQueryClauseFactory;
230
- export {};
231
- //# sourceMappingURL=NodeSelectQueryFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeSelectQueryFactory.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/NodeSelectQueryFactory.ts"],"names":[],"mappings":"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"}