@itwin/presentation-hierarchies 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/lib/cjs/hierarchies/HierarchyErrors.d.ts +1 -1
- package/lib/cjs/hierarchies/HierarchyErrors.js +1 -1
- package/lib/cjs/hierarchies/HierarchyErrors.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyFiltering.d.ts +12 -11
- package/lib/cjs/hierarchies/HierarchyFiltering.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyFiltering.js +16 -21
- package/lib/cjs/hierarchies/HierarchyFiltering.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNode.d.ts +10 -10
- package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNode.js +13 -13
- package/lib/cjs/hierarchies/HierarchyNode.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts +4 -4
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts +13 -13
- package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.js +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts +6 -6
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyProvider.js +6 -6
- package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
- package/lib/cjs/hierarchies/Logging.d.ts +2 -2
- package/lib/cjs/hierarchies/Logging.js +3 -3
- package/lib/cjs/hierarchies/Logging.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts +9 -18
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js +104 -50
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/HierarchyCache.js +2 -2
- package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +14 -14
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts +23 -23
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js +5 -5
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts +8 -8
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +95 -87
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js +17 -14
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts +16 -16
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +2 -2
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +10 -10
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +5 -10
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts +4 -4
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +5 -3
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/Utils.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/Utils.js +2 -2
- package/lib/cjs/hierarchies/imodel/Utils.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js +8 -8
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts +3 -3
- package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/Grouping.js +42 -42
- package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +16 -16
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js +25 -25
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js +2 -2
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +3 -3
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +3 -3
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +3 -3
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +2 -2
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js +2 -2
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -2
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +3 -3
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +13 -18
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
- package/lib/cjs/hierarchies/internal/Common.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/Common.js +2 -1
- package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
- package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/EachValueFrom.js +3 -0
- package/lib/cjs/hierarchies/internal/EachValueFrom.js.map +1 -1
- package/lib/cjs/hierarchies/internal/LoggingUtils.js +2 -2
- package/lib/cjs/hierarchies/internal/LoggingUtils.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/Sorting.js +2 -2
- package/lib/cjs/hierarchies/internal/operators/Sorting.js.map +1 -1
- package/lib/cjs/presentation-hierarchies.d.ts +13 -13
- package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
- package/lib/cjs/presentation-hierarchies.js +29 -29
- package/lib/cjs/presentation-hierarchies.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyErrors.d.ts +1 -1
- package/lib/esm/hierarchies/HierarchyErrors.js +1 -1
- package/lib/esm/hierarchies/HierarchyErrors.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyFiltering.d.ts +12 -11
- package/lib/esm/hierarchies/HierarchyFiltering.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyFiltering.js +16 -21
- package/lib/esm/hierarchies/HierarchyFiltering.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNode.d.ts +10 -10
- package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNode.js +3 -3
- package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts +4 -4
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.js +1 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.d.ts +13 -13
- package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.js +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyProvider.d.ts +6 -6
- package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyProvider.js +3 -3
- package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
- package/lib/esm/hierarchies/Logging.d.ts +2 -2
- package/lib/esm/hierarchies/Logging.js +3 -3
- package/lib/esm/hierarchies/Logging.js.map +1 -1
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts +9 -18
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js +92 -38
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.js +1 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts +14 -14
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts +23 -23
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js +2 -2
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +8 -8
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +49 -41
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js +11 -8
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts +16 -16
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js +2 -2
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +10 -10
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +5 -10
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts +4 -4
- package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js +6 -4
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +1 -1
- package/lib/esm/hierarchies/imodel/Utils.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/Utils.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/Utils.js +1 -1
- package/lib/esm/hierarchies/imodel/Utils.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js +6 -6
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts +3 -3
- package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/Grouping.js +22 -22
- package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js +10 -10
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js +14 -14
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.js +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +3 -3
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +2 -2
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +3 -3
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +3 -3
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +9 -14
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
- package/lib/esm/hierarchies/internal/Common.d.ts +1 -1
- package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/Common.js +2 -1
- package/lib/esm/hierarchies/internal/Common.js.map +1 -1
- package/lib/esm/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/EachValueFrom.js +3 -0
- package/lib/esm/hierarchies/internal/EachValueFrom.js.map +1 -1
- package/lib/esm/hierarchies/internal/LoggingUtils.js +1 -1
- package/lib/esm/hierarchies/internal/LoggingUtils.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.js +1 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.js.map +1 -1
- package/lib/esm/presentation-hierarchies.d.ts +13 -13
- package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
- package/lib/esm/presentation-hierarchies.js +13 -13
- package/lib/esm/presentation-hierarchies.js.map +1 -1
- package/package.json +24 -15
|
@@ -8,36 +8,36 @@ exports.createIModelHierarchyProvider = createIModelHierarchyProvider;
|
|
|
8
8
|
const rxjs_1 = require("rxjs");
|
|
9
9
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
10
10
|
const presentation_shared_1 = require("@itwin/presentation-shared");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const LOGGING_NAMESPACE = `${
|
|
32
|
-
const LOGGING_NAMESPACE_INTERNAL = `${
|
|
33
|
-
const LOGGING_NAMESPACE_PERFORMANCE = `${
|
|
11
|
+
const HierarchyErrors_js_1 = require("../HierarchyErrors.js");
|
|
12
|
+
const HierarchyNode_js_1 = require("../HierarchyNode.js");
|
|
13
|
+
const HierarchyNodeKey_js_1 = require("../HierarchyNodeKey.js");
|
|
14
|
+
const Common_js_1 = require("../internal/Common.js");
|
|
15
|
+
const EachValueFrom_js_1 = require("../internal/EachValueFrom.js");
|
|
16
|
+
const LoggingUtils_js_1 = require("../internal/LoggingUtils.js");
|
|
17
|
+
const Partition_js_1 = require("../internal/operators/Partition.js");
|
|
18
|
+
const ReduceToMergeMap_js_1 = require("../internal/operators/ReduceToMergeMap.js");
|
|
19
|
+
const ShareReplayWithErrors_js_1 = require("../internal/operators/ShareReplayWithErrors.js");
|
|
20
|
+
const Sorting_js_1 = require("../internal/operators/Sorting.js");
|
|
21
|
+
const SubscriptionScheduler_js_1 = require("../internal/SubscriptionScheduler.js");
|
|
22
|
+
const FilteringHierarchyDefinition_js_1 = require("./FilteringHierarchyDefinition.js");
|
|
23
|
+
const HierarchyCache_js_1 = require("./HierarchyCache.js");
|
|
24
|
+
const IModelHierarchyDefinition_js_1 = require("./IModelHierarchyDefinition.js");
|
|
25
|
+
const NodeSelectQueryFactory_js_1 = require("./NodeSelectQueryFactory.js");
|
|
26
|
+
const DetermineChildren_js_1 = require("./operators/DetermineChildren.js");
|
|
27
|
+
const Grouping_js_1 = require("./operators/Grouping.js");
|
|
28
|
+
const HideIfNoChildren_js_1 = require("./operators/HideIfNoChildren.js");
|
|
29
|
+
const HideNodesInHierarchy_js_1 = require("./operators/HideNodesInHierarchy.js");
|
|
30
|
+
const TreeNodesReader_js_1 = require("./TreeNodesReader.js");
|
|
31
|
+
const LOGGING_NAMESPACE = `${Common_js_1.LOGGING_NAMESPACE}.IModelHierarchyProvider`;
|
|
32
|
+
const LOGGING_NAMESPACE_INTERNAL = `${Common_js_1.LOGGING_NAMESPACE_INTERNAL}.IModelHierarchyProvider`;
|
|
33
|
+
const LOGGING_NAMESPACE_PERFORMANCE = `${Common_js_1.LOGGING_NAMESPACE_PERFORMANCE}.IModelHierarchyProvider`;
|
|
34
34
|
const DEFAULT_QUERY_CONCURRENCY = 10;
|
|
35
35
|
const DEFAULT_QUERY_CACHE_SIZE = 1;
|
|
36
36
|
/**
|
|
37
37
|
* Creates an instance of `HierarchyProvider` that creates a hierarchy based on given iModel and
|
|
38
38
|
* a hierarchy definition, which defines each hierarchy level through ECSQL queries.
|
|
39
39
|
*
|
|
40
|
-
* @
|
|
40
|
+
* @public
|
|
41
41
|
*/
|
|
42
42
|
function createIModelHierarchyProvider(props) {
|
|
43
43
|
return new IModelHierarchyProviderImpl(props);
|
|
@@ -59,11 +59,11 @@ class IModelHierarchyProviderImpl {
|
|
|
59
59
|
this._activeHierarchyDefinition = this._sourceHierarchyDefinition = props.hierarchyDefinition;
|
|
60
60
|
this._valuesFormatter = props?.formatter ?? (0, presentation_shared_1.createDefaultValueFormatter)();
|
|
61
61
|
this._localizedStrings = { other: "Other", unspecified: "Not specified", ...props?.localizedStrings };
|
|
62
|
-
this._queryScheduler = new
|
|
62
|
+
this._queryScheduler = new SubscriptionScheduler_js_1.SubscriptionScheduler(props.queryConcurrency ?? DEFAULT_QUERY_CONCURRENCY);
|
|
63
63
|
this.setHierarchyFilter(props.filtering);
|
|
64
64
|
const queryCacheSize = props.queryCacheSize ?? DEFAULT_QUERY_CACHE_SIZE;
|
|
65
65
|
if (queryCacheSize !== 0) {
|
|
66
|
-
this._nodesCache = new
|
|
66
|
+
this._nodesCache = new HierarchyCache_js_1.HierarchyCache({
|
|
67
67
|
// we divide the size by 2, because each variation also counts as a query that we cache
|
|
68
68
|
size: Math.ceil(queryCacheSize / 2),
|
|
69
69
|
variationsCount: 1,
|
|
@@ -82,9 +82,9 @@ class IModelHierarchyProviderImpl {
|
|
|
82
82
|
return this._imodelChanged;
|
|
83
83
|
}
|
|
84
84
|
invalidateHierarchyCache(reason) {
|
|
85
|
-
(0,
|
|
85
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
86
86
|
category: `${LOGGING_NAMESPACE}.Events`,
|
|
87
|
-
message: /*
|
|
87
|
+
message: /* c8 ignore next */ () => (reason ? `${reason}: clear hierarchy cache` : `Clear hierarchy cache`),
|
|
88
88
|
});
|
|
89
89
|
this._nodesCache?.clear();
|
|
90
90
|
}
|
|
@@ -103,7 +103,7 @@ class IModelHierarchyProviderImpl {
|
|
|
103
103
|
}
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
|
-
this._activeHierarchyDefinition = new
|
|
106
|
+
this._activeHierarchyDefinition = new FilteringHierarchyDefinition_js_1.FilteringHierarchyDefinition({
|
|
107
107
|
imodelAccess: this._imodelAccess,
|
|
108
108
|
source: this._sourceHierarchyDefinition,
|
|
109
109
|
nodeIdentifierPaths: props.paths,
|
|
@@ -116,16 +116,16 @@ class IModelHierarchyProviderImpl {
|
|
|
116
116
|
}
|
|
117
117
|
createHierarchyLevelDefinitionsObservable(props) {
|
|
118
118
|
const { requestContext, ...defineHierarchyLevelProps } = props;
|
|
119
|
-
(0,
|
|
119
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
120
120
|
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
121
|
-
message: /*
|
|
121
|
+
message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting hierarchy level definitions for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
|
|
122
122
|
});
|
|
123
123
|
return (0, rxjs_1.from)((0, rxjs_1.defer)(async () => {
|
|
124
124
|
let parentNode = props.parentNode;
|
|
125
|
-
if (parentNode &&
|
|
125
|
+
if (parentNode && HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) && parentNode.key.source && parentNode.key.source !== this._imodelAccess.imodelKey) {
|
|
126
126
|
return [];
|
|
127
127
|
}
|
|
128
|
-
if (parentNode &&
|
|
128
|
+
if (parentNode && HierarchyNode_js_1.HierarchyNode.isInstancesNode(parentNode)) {
|
|
129
129
|
parentNode = {
|
|
130
130
|
...parentNode,
|
|
131
131
|
key: {
|
|
@@ -133,31 +133,38 @@ class IModelHierarchyProviderImpl {
|
|
|
133
133
|
instanceKeys: parentNode.key.instanceKeys.filter((ik) => !ik.imodelKey || ik.imodelKey === this._imodelAccess.imodelKey),
|
|
134
134
|
},
|
|
135
135
|
};
|
|
136
|
-
(0, core_bentley_1.assert)(
|
|
136
|
+
(0, core_bentley_1.assert)(HierarchyNodeKey_js_1.HierarchyNodeKey.isInstances(parentNode.key));
|
|
137
137
|
if (parentNode.key.instanceKeys.length === 0) {
|
|
138
138
|
return [];
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
return this._activeHierarchyDefinition.defineHierarchyLevel({ ...defineHierarchyLevelProps, parentNode });
|
|
142
|
-
})).pipe((0, rxjs_1.mergeAll)(), (0, rxjs_1.finalize)(() => (0,
|
|
142
|
+
})).pipe((0, rxjs_1.mergeAll)(), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
|
|
143
143
|
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
144
|
-
message: /*
|
|
144
|
+
message: /* c8 ignore next */ () => `[${requestContext.requestId}] Received all hierarchy level definitions for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
|
|
145
145
|
})));
|
|
146
146
|
}
|
|
147
147
|
createSourceNodesObservable(props) {
|
|
148
148
|
// pipe definitions to nodes and put "share replay" on it
|
|
149
149
|
return this.createHierarchyLevelDefinitionsObservable(props).pipe((0, rxjs_1.mergeMap)((def) => {
|
|
150
|
-
if (
|
|
150
|
+
if (IModelHierarchyDefinition_js_1.HierarchyNodesDefinition.isGenericNode(def)) {
|
|
151
151
|
return (0, rxjs_1.of)({ ...def.node, key: { type: "generic", id: def.node.key, source: this._imodelAccess.imodelKey } });
|
|
152
152
|
}
|
|
153
|
-
return this._queryScheduler.scheduleSubscription((0, rxjs_1.of)(def.query).pipe((0, rxjs_1.map)((query) => filterQueryByInstanceKeys(query, props.filteredInstanceKeys)), (0, rxjs_1.mergeMap)((query) => (0,
|
|
153
|
+
return this._queryScheduler.scheduleSubscription((0, rxjs_1.of)(def.query).pipe((0, rxjs_1.map)((query) => filterQueryByInstanceKeys(query, props.filteredInstanceKeys)), (0, rxjs_1.mergeMap)((query) => (0, TreeNodesReader_js_1.readNodes)({
|
|
154
|
+
queryExecutor: this._imodelAccess,
|
|
155
|
+
query,
|
|
156
|
+
limit: props.hierarchyLevelSizeLimit,
|
|
157
|
+
parser: this._activeHierarchyDefinition.parseNode
|
|
158
|
+
? async (row) => this._activeHierarchyDefinition.parseNode(row, props.parentNode)
|
|
159
|
+
: undefined,
|
|
160
|
+
})), (0, rxjs_1.map)((node) => ({
|
|
154
161
|
...node,
|
|
155
162
|
key: { ...node.key, instanceKeys: node.key.instanceKeys.map((key) => ({ ...key, imodelKey: this._imodelAccess.imodelKey })) },
|
|
156
163
|
}))));
|
|
157
|
-
}), (0, rxjs_1.finalize)(() => (0,
|
|
164
|
+
}), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
|
|
158
165
|
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
159
|
-
message: /*
|
|
160
|
-
})), (0,
|
|
166
|
+
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Read all child nodes ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
|
|
167
|
+
})), (0, ShareReplayWithErrors_js_1.shareReplayWithErrors)());
|
|
161
168
|
}
|
|
162
169
|
createPreProcessedNodesObservable(queryNodesObservable, props) {
|
|
163
170
|
return queryNodesObservable.pipe(
|
|
@@ -170,57 +177,56 @@ class IModelHierarchyProviderImpl {
|
|
|
170
177
|
// we have `ProcessedHierarchyNode` from here
|
|
171
178
|
preProcessNodes(this._activeHierarchyDefinition),
|
|
172
179
|
// process hiding
|
|
173
|
-
(0,
|
|
180
|
+
(0, HideIfNoChildren_js_1.createHideIfNoChildrenOperator)((n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes), (0, HideNodesInHierarchy_js_1.createHideNodesInHierarchyOperator)(
|
|
174
181
|
// note: for child nodes created because of hidden parent, we want to use parent's request props (instance filter, limit)
|
|
175
|
-
(n) => this.getChildNodesObservables({ ...props, parentNode: n }).processedNodes, false), (0, rxjs_1.finalize)(() => (0,
|
|
182
|
+
(n) => this.getChildNodesObservables({ ...props, parentNode: n }).processedNodes, false), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
|
|
176
183
|
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
177
|
-
message: /*
|
|
184
|
+
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished pre-processing child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
|
|
178
185
|
})));
|
|
179
186
|
}
|
|
180
187
|
createProcessedNodesObservable(preprocessedNodesObservable, props) {
|
|
181
|
-
return preprocessedNodesObservable.pipe((0,
|
|
188
|
+
return preprocessedNodesObservable.pipe((0, Grouping_js_1.createGroupingOperator)(this._imodelAccess, props.parentNode, this._valuesFormatter, this._localizedStrings, (gn) => this.onGroupingNodeCreated(gn, props)), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
|
|
182
189
|
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
183
|
-
message: /*
|
|
190
|
+
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished grouping child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
|
|
184
191
|
})));
|
|
185
192
|
}
|
|
186
193
|
createFinalizedNodesObservable(processedNodesObservable, props) {
|
|
187
|
-
return processedNodesObservable.pipe((0,
|
|
194
|
+
return processedNodesObservable.pipe((0, DetermineChildren_js_1.createDetermineChildrenOperator)((n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes), postProcessNodes(this._activeHierarchyDefinition), Sorting_js_1.sortNodesByLabelOperator, (0, rxjs_1.map)((n) => {
|
|
188
195
|
if ("processingParams" in n) {
|
|
189
196
|
delete n.processingParams;
|
|
190
197
|
}
|
|
191
198
|
return Object.assign(n, {
|
|
192
|
-
children: (0,
|
|
199
|
+
children: (0, Common_js_1.hasChildren)(n),
|
|
193
200
|
});
|
|
194
|
-
}), (0, rxjs_1.takeUntil)(this._dispose), (0, rxjs_1.finalize)(() => (0,
|
|
201
|
+
}), (0, rxjs_1.takeUntil)(this._dispose), (0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
|
|
195
202
|
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
196
|
-
message: /*
|
|
203
|
+
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished finalizing child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
|
|
197
204
|
})));
|
|
198
205
|
}
|
|
199
206
|
createHasNodesObservable(preprocessedNodesObservable, possiblyKnownChildrenObservable, props) {
|
|
200
207
|
const loggingCategory = `${LOGGING_NAMESPACE_INTERNAL}.HasNodes`;
|
|
201
|
-
return (0, rxjs_1.concat)((possiblyKnownChildrenObservable ?? rxjs_1.EMPTY).pipe((0, rxjs_1.filter)((n) => (0,
|
|
208
|
+
return (0, rxjs_1.concat)((possiblyKnownChildrenObservable ?? rxjs_1.EMPTY).pipe((0, rxjs_1.filter)((n) => (0, Common_js_1.hasChildren)(n))), preprocessedNodesObservable).pipe((0, LoggingUtils_js_1.log)({
|
|
202
209
|
category: loggingCategory,
|
|
203
|
-
message: /*
|
|
210
|
+
message: /* c8 ignore next */ (n) => `[${props.requestContext.requestId}] Node before mapping to 'true': ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}`,
|
|
204
211
|
}), (0, rxjs_1.take)(1), (0, rxjs_1.map)(() => true), (0, rxjs_1.defaultIfEmpty)(false), (0, rxjs_1.catchError)((e) => {
|
|
205
|
-
(0,
|
|
212
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
206
213
|
category: loggingCategory,
|
|
207
|
-
message: /*
|
|
214
|
+
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Error while determining children: ${e.message}`,
|
|
208
215
|
});
|
|
209
|
-
if (e instanceof
|
|
216
|
+
if (e instanceof HierarchyErrors_js_1.RowsLimitExceededError) {
|
|
210
217
|
return (0, rxjs_1.of)(true);
|
|
211
218
|
}
|
|
212
219
|
throw e;
|
|
213
|
-
}), (0,
|
|
220
|
+
}), (0, LoggingUtils_js_1.log)({ category: loggingCategory, message: /* c8 ignore next */ (r) => `[${props.requestContext.requestId}] Result: ${r}` }));
|
|
214
221
|
}
|
|
215
222
|
getCachedObservableEntry(props) {
|
|
216
223
|
const loggingCategory = `${LOGGING_NAMESPACE}.QueryResultsCache`;
|
|
217
224
|
const { parentNode, ...restProps } = props;
|
|
218
225
|
const cached = props.ignoreCache || !this._nodesCache ? undefined : this._nodesCache.get(props);
|
|
219
226
|
if (cached) {
|
|
220
|
-
|
|
221
|
-
(0, LoggingUtils_1.doLog)({
|
|
227
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
222
228
|
category: loggingCategory,
|
|
223
|
-
message: /*
|
|
229
|
+
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Found query nodes observable for ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)}`,
|
|
224
230
|
});
|
|
225
231
|
return cached;
|
|
226
232
|
}
|
|
@@ -229,13 +235,13 @@ class IModelHierarchyProviderImpl {
|
|
|
229
235
|
let filteredInstanceKeys;
|
|
230
236
|
let parentNonGroupingNode;
|
|
231
237
|
if (parentNode) {
|
|
232
|
-
if (
|
|
238
|
+
if (HierarchyNode_js_1.HierarchyNode.isGroupingNode(parentNode)) {
|
|
233
239
|
parentNonGroupingNode = parentNode.nonGroupingAncestor;
|
|
234
240
|
filteredInstanceKeys = parentNode.groupedInstanceKeys;
|
|
235
241
|
}
|
|
236
242
|
else {
|
|
237
243
|
// not sure why type checker doesn't pick this up
|
|
238
|
-
(0, core_bentley_1.assert)(
|
|
244
|
+
(0, core_bentley_1.assert)(HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) || HierarchyNode_js_1.HierarchyNode.isInstancesNode(parentNode));
|
|
239
245
|
parentNonGroupingNode = parentNode;
|
|
240
246
|
}
|
|
241
247
|
}
|
|
@@ -246,9 +252,9 @@ class IModelHierarchyProviderImpl {
|
|
|
246
252
|
};
|
|
247
253
|
const value = { observable: this.createSourceNodesObservable(nonGroupingNodeChildrenRequestProps), processingStatus: "none" };
|
|
248
254
|
this._nodesCache?.set(nonGroupingNodeChildrenRequestProps, value);
|
|
249
|
-
(0,
|
|
255
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
250
256
|
category: loggingCategory,
|
|
251
|
-
message: /*
|
|
257
|
+
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Saved query nodes observable for ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)}`,
|
|
252
258
|
});
|
|
253
259
|
return value;
|
|
254
260
|
}
|
|
@@ -283,38 +289,39 @@ class IModelHierarchyProviderImpl {
|
|
|
283
289
|
const timer = new core_bentley_1.StopWatch(undefined, true);
|
|
284
290
|
let error;
|
|
285
291
|
let nodesCount = 0;
|
|
286
|
-
(0,
|
|
292
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
287
293
|
category: loggingCategory,
|
|
288
|
-
message: /*
|
|
294
|
+
message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
|
|
289
295
|
});
|
|
290
|
-
return (0,
|
|
296
|
+
return (0, EachValueFrom_js_1.eachValueFrom)(this.getChildNodesObservables({ ...props, requestContext }).finalizedNodes.pipe((0, rxjs_1.tap)(() => ++nodesCount), (0, rxjs_1.catchError)((e) => {
|
|
291
297
|
error = e;
|
|
292
298
|
throw e;
|
|
293
299
|
}), (0, rxjs_1.finalize)(() => {
|
|
294
|
-
(0,
|
|
300
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
295
301
|
category: loggingCategory,
|
|
296
|
-
message: /*
|
|
297
|
-
|
|
298
|
-
|
|
302
|
+
message: /* c8 ignore next */ () =>
|
|
303
|
+
/* c8 ignore next 3 */ error
|
|
304
|
+
? `[${requestContext.requestId}] Error creating child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`
|
|
305
|
+
: `[${requestContext.requestId}] Returned ${nodesCount} child nodes for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,
|
|
299
306
|
});
|
|
300
307
|
})));
|
|
301
308
|
}
|
|
302
309
|
getNodeInstanceKeysObs(props) {
|
|
303
310
|
const { parentNode, instanceFilter, hierarchyLevelSizeLimit = "unbounded", requestContext } = props;
|
|
304
|
-
if (parentNode &&
|
|
311
|
+
if (parentNode && HierarchyNode_js_1.HierarchyNode.isGroupingNode(parentNode)) {
|
|
305
312
|
return (0, rxjs_1.from)(parentNode.groupedInstanceKeys);
|
|
306
313
|
}
|
|
307
|
-
(0, core_bentley_1.assert)(!parentNode ||
|
|
314
|
+
(0, core_bentley_1.assert)(!parentNode || HierarchyNode_js_1.HierarchyNode.isGeneric(parentNode) || HierarchyNode_js_1.HierarchyNode.isInstancesNode(parentNode));
|
|
308
315
|
const hierarchyLevelDefinitions = this.createHierarchyLevelDefinitionsObservable({ parentNode, instanceFilter, requestContext });
|
|
309
316
|
// split the definitions based on whether they're for generic nodes or for instance nodes
|
|
310
|
-
const [genericDefs, instanceDefs] = (0,
|
|
317
|
+
const [genericDefs, instanceDefs] = (0, Partition_js_1.partition)(hierarchyLevelDefinitions, IModelHierarchyDefinition_js_1.HierarchyNodesDefinition.isGenericNode);
|
|
311
318
|
// query instance keys and a flag whether they should be hidden
|
|
312
319
|
const instanceKeys = instanceDefs.pipe((0, rxjs_1.mergeMap)((def) => this._queryScheduler.scheduleSubscription((0, rxjs_1.of)(def.query).pipe((0, rxjs_1.mergeMap)(async (query) => {
|
|
313
320
|
const ecsql = `
|
|
314
321
|
SELECT
|
|
315
|
-
${
|
|
316
|
-
${
|
|
317
|
-
${
|
|
322
|
+
${NodeSelectQueryFactory_js_1.NodeSelectClauseColumnNames.FullClassName},
|
|
323
|
+
${NodeSelectQueryFactory_js_1.NodeSelectClauseColumnNames.ECInstanceId},
|
|
324
|
+
${NodeSelectQueryFactory_js_1.NodeSelectClauseColumnNames.HideNodeInHierarchy}
|
|
318
325
|
FROM (
|
|
319
326
|
${query.ecsql}
|
|
320
327
|
)
|
|
@@ -330,7 +337,7 @@ class IModelHierarchyProviderImpl {
|
|
|
330
337
|
})));
|
|
331
338
|
}), (0, rxjs_1.mergeAll)()))));
|
|
332
339
|
// split the instance keys observable based on whether they should be hidden or not
|
|
333
|
-
const [visibleNodeInstanceKeys, hiddenNodeInstanceKeys] = (0,
|
|
340
|
+
const [visibleNodeInstanceKeys, hiddenNodeInstanceKeys] = (0, Partition_js_1.partition)(instanceKeys, ({ hide }) => !hide);
|
|
334
341
|
// hidden items' handling:
|
|
335
342
|
// - if a generic node is hidden, we'll want to retrieve instance keys of its children, otherwise we don't care about it,
|
|
336
343
|
// - if an instance key is hidden, we want to create a merged node similar to what we do in `createHideNodesInHierarchyOperator`
|
|
@@ -340,7 +347,7 @@ class IModelHierarchyProviderImpl {
|
|
|
340
347
|
source: this._imodelAccess.imodelKey,
|
|
341
348
|
}))), hiddenNodeInstanceKeys.pipe(
|
|
342
349
|
// first merge all keys by class
|
|
343
|
-
(0,
|
|
350
|
+
(0, ReduceToMergeMap_js_1.reduceToMergeMapList)(({ key }) => key.className, ({ key }) => key.id),
|
|
344
351
|
// then, for each class, create an instance key
|
|
345
352
|
(0, rxjs_1.mergeMap)((mergedMap) => [...mergedMap.entries()].map(([className, ids]) => ({
|
|
346
353
|
type: "instances",
|
|
@@ -361,21 +368,22 @@ class IModelHierarchyProviderImpl {
|
|
|
361
368
|
const requestContext = { requestId: core_bentley_1.Guid.createValue() };
|
|
362
369
|
const loggingCategory = `${LOGGING_NAMESPACE}.GetNodeInstanceKeys`;
|
|
363
370
|
const timer = new core_bentley_1.StopWatch(undefined, true);
|
|
364
|
-
(0,
|
|
371
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
365
372
|
category: loggingCategory,
|
|
366
|
-
message: /*
|
|
373
|
+
message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}`,
|
|
367
374
|
});
|
|
368
375
|
let error;
|
|
369
376
|
let keysCount = 0;
|
|
370
|
-
return (0,
|
|
377
|
+
return (0, EachValueFrom_js_1.eachValueFrom)(this.getNodeInstanceKeysObs({ ...props, requestContext }).pipe((0, rxjs_1.tap)(() => ++keysCount), (0, rxjs_1.catchError)((e) => {
|
|
371
378
|
error = e;
|
|
372
379
|
throw e;
|
|
373
380
|
}), (0, rxjs_1.finalize)(() => {
|
|
374
|
-
(0,
|
|
381
|
+
(0, LoggingUtils_js_1.doLog)({
|
|
375
382
|
category: loggingCategory,
|
|
376
|
-
message: /*
|
|
377
|
-
|
|
378
|
-
|
|
383
|
+
message: /* c8 ignore next */ () =>
|
|
384
|
+
/* c8 ignore next 3 */ error
|
|
385
|
+
? `[${requestContext.requestId}] Error creating node instance keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`
|
|
386
|
+
: `[${requestContext.requestId}] Returned ${keysCount} instance keys for ${(0, Common_js_1.createNodeIdentifierForLogging)(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,
|
|
379
387
|
});
|
|
380
388
|
})));
|
|
381
389
|
}
|
|
@@ -413,7 +421,6 @@ function filterQueryByInstanceKeys(query, filteredInstanceKeys) {
|
|
|
413
421
|
return query;
|
|
414
422
|
}
|
|
415
423
|
const MAX_ALLOWED_BINDINGS = 1000;
|
|
416
|
-
// istanbul ignore else
|
|
417
424
|
if (filteredInstanceKeys.length < MAX_ALLOWED_BINDINGS) {
|
|
418
425
|
return {
|
|
419
426
|
...query,
|
|
@@ -425,7 +432,7 @@ function filterQueryByInstanceKeys(query, filteredInstanceKeys) {
|
|
|
425
432
|
bindings: [...(query.bindings ?? []), ...filteredInstanceKeys.map((k) => ({ type: "id", value: k.id }))],
|
|
426
433
|
};
|
|
427
434
|
}
|
|
428
|
-
|
|
435
|
+
/* c8 ignore start */
|
|
429
436
|
return {
|
|
430
437
|
...query,
|
|
431
438
|
ecsql: `
|
|
@@ -435,5 +442,6 @@ function filterQueryByInstanceKeys(query, filteredInstanceKeys) {
|
|
|
435
442
|
`,
|
|
436
443
|
bindings: [...(query.bindings ?? []), { type: "idset", value: filteredInstanceKeys.map((k) => k.id) }],
|
|
437
444
|
};
|
|
445
|
+
/* c8 ignore end */
|
|
438
446
|
}
|
|
439
447
|
//# sourceMappingURL=IModelHierarchyProvider.js.map
|