@itwin/presentation-backend 5.2.0-dev.8 → 5.2.1

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 (64) hide show
  1. package/CHANGELOG.md +48 -1
  2. package/lib/cjs/presentation-backend/BackendLoggerCategory.js.map +1 -1
  3. package/lib/cjs/presentation-backend/ElementPropertiesHelper.js +14 -14
  4. package/lib/cjs/presentation-backend/ElementPropertiesHelper.js.map +1 -1
  5. package/lib/cjs/presentation-backend/InternalSymbols.js.map +1 -1
  6. package/lib/cjs/presentation-backend/NativePlatform.d.ts.map +1 -1
  7. package/lib/cjs/presentation-backend/NativePlatform.js +1 -0
  8. package/lib/cjs/presentation-backend/NativePlatform.js.map +1 -1
  9. package/lib/cjs/presentation-backend/Presentation.js.map +1 -1
  10. package/lib/cjs/presentation-backend/PresentationIpcHandler.js.map +1 -1
  11. package/lib/cjs/presentation-backend/PresentationManager.d.ts +26 -0
  12. package/lib/cjs/presentation-backend/PresentationManager.d.ts.map +1 -1
  13. package/lib/cjs/presentation-backend/PresentationManager.js +18 -0
  14. package/lib/cjs/presentation-backend/PresentationManager.js.map +1 -1
  15. package/lib/cjs/presentation-backend/PresentationManagerDetail.d.ts.map +1 -1
  16. package/lib/cjs/presentation-backend/PresentationManagerDetail.js +6 -0
  17. package/lib/cjs/presentation-backend/PresentationManagerDetail.js.map +1 -1
  18. package/lib/cjs/presentation-backend/PresentationRpcImpl.d.ts.map +1 -1
  19. package/lib/cjs/presentation-backend/PresentationRpcImpl.js +2 -0
  20. package/lib/cjs/presentation-backend/PresentationRpcImpl.js.map +1 -1
  21. package/lib/cjs/presentation-backend/RulesetEmbedder.js +3 -3
  22. package/lib/cjs/presentation-backend/RulesetEmbedder.js.map +1 -1
  23. package/lib/cjs/presentation-backend/RulesetManager.js.map +1 -1
  24. package/lib/cjs/presentation-backend/RulesetVariablesManager.js.map +1 -1
  25. package/lib/cjs/presentation-backend/SelectionScopesHelper.js +16 -16
  26. package/lib/cjs/presentation-backend/SelectionScopesHelper.js.map +1 -1
  27. package/lib/cjs/presentation-backend/TemporaryStorage.js.map +1 -1
  28. package/lib/cjs/presentation-backend/Utils.js.map +1 -1
  29. package/lib/cjs/presentation-backend/domain/PresentationRulesDomain.js.map +1 -1
  30. package/lib/cjs/presentation-backend/domain/RulesetElements.js.map +1 -1
  31. package/lib/cjs/presentation-backend-internal.js.map +1 -1
  32. package/lib/cjs/presentation-backend.js.map +1 -1
  33. package/lib/esm/presentation-backend/BackendLoggerCategory.js.map +1 -1
  34. package/lib/esm/presentation-backend/ElementPropertiesHelper.js +14 -14
  35. package/lib/esm/presentation-backend/ElementPropertiesHelper.js.map +1 -1
  36. package/lib/esm/presentation-backend/InternalSymbols.js.map +1 -1
  37. package/lib/esm/presentation-backend/NativePlatform.d.ts.map +1 -1
  38. package/lib/esm/presentation-backend/NativePlatform.js +1 -0
  39. package/lib/esm/presentation-backend/NativePlatform.js.map +1 -1
  40. package/lib/esm/presentation-backend/Presentation.js.map +1 -1
  41. package/lib/esm/presentation-backend/PresentationIpcHandler.js.map +1 -1
  42. package/lib/esm/presentation-backend/PresentationManager.d.ts +26 -0
  43. package/lib/esm/presentation-backend/PresentationManager.d.ts.map +1 -1
  44. package/lib/esm/presentation-backend/PresentationManager.js +18 -0
  45. package/lib/esm/presentation-backend/PresentationManager.js.map +1 -1
  46. package/lib/esm/presentation-backend/PresentationManagerDetail.d.ts.map +1 -1
  47. package/lib/esm/presentation-backend/PresentationManagerDetail.js +6 -0
  48. package/lib/esm/presentation-backend/PresentationManagerDetail.js.map +1 -1
  49. package/lib/esm/presentation-backend/PresentationRpcImpl.d.ts.map +1 -1
  50. package/lib/esm/presentation-backend/PresentationRpcImpl.js +2 -0
  51. package/lib/esm/presentation-backend/PresentationRpcImpl.js.map +1 -1
  52. package/lib/esm/presentation-backend/RulesetEmbedder.js +3 -3
  53. package/lib/esm/presentation-backend/RulesetEmbedder.js.map +1 -1
  54. package/lib/esm/presentation-backend/RulesetManager.js.map +1 -1
  55. package/lib/esm/presentation-backend/RulesetVariablesManager.js.map +1 -1
  56. package/lib/esm/presentation-backend/SelectionScopesHelper.js +16 -16
  57. package/lib/esm/presentation-backend/SelectionScopesHelper.js.map +1 -1
  58. package/lib/esm/presentation-backend/TemporaryStorage.js.map +1 -1
  59. package/lib/esm/presentation-backend/Utils.js.map +1 -1
  60. package/lib/esm/presentation-backend/domain/PresentationRulesDomain.js.map +1 -1
  61. package/lib/esm/presentation-backend/domain/RulesetElements.js.map +1 -1
  62. package/lib/esm/presentation-backend-internal.js.map +1 -1
  63. package/lib/esm/presentation-backend.js.map +1 -1
  64. package/package.json +14 -14
package/CHANGELOG.md CHANGED
@@ -1,6 +1,53 @@
1
1
  # Change Log - @itwin/presentation-backend
2
2
 
3
- This log was last generated on Thu, 14 Aug 2025 19:42:13 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 09 Oct 2025 17:10:26 GMT and should not be manually modified.
4
+
5
+ ## 5.2.1
6
+ Thu, 09 Oct 2025 17:10:26 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 5.2.0
11
+ Wed, 01 Oct 2025 20:22:54 GMT
12
+
13
+ ### Updates
14
+
15
+ - Deprecated hierarchies-related APIs
16
+
17
+ ## 5.1.9
18
+ Wed, 24 Sep 2025 17:38:08 GMT
19
+
20
+ _Version update only_
21
+
22
+ ## 5.1.8
23
+ Wed, 17 Sep 2025 17:17:16 GMT
24
+
25
+ _Version update only_
26
+
27
+ ## 5.1.7
28
+ Tue, 09 Sep 2025 19:28:04 GMT
29
+
30
+ _Version update only_
31
+
32
+ ## 5.1.6
33
+ Mon, 08 Sep 2025 13:53:47 GMT
34
+
35
+ _Version update only_
36
+
37
+ ## 5.1.5
38
+ Thu, 04 Sep 2025 13:51:09 GMT
39
+
40
+ _Version update only_
41
+
42
+ ## 5.1.4
43
+ Fri, 22 Aug 2025 14:22:33 GMT
44
+
45
+ _Version update only_
46
+
47
+ ## 5.1.3
48
+ Wed, 20 Aug 2025 13:57:10 GMT
49
+
50
+ _Version update only_
4
51
 
5
52
  ## 5.1.2
6
53
  Thu, 14 Aug 2025 19:38:08 GMT
@@ -1 +1 @@
1
- {"version":3,"file":"BackendLoggerCategory.js","sourceRoot":"","sources":["../../../src/presentation-backend/BackendLoggerCategory.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH;;;;;GAKG;AACH,IAAY,iCAWX;AAXD,WAAY,iCAAiC;IAC3C,qEAAgC,CAAA;IAEhC,+FAA+F;IAC/F,qGAAgE,CAAA;IAEhE,mEAAmE;IACnE,qEAAgC,CAAA;IAEhC,mEAAmE;IACnE,qEAAgC,CAAA;AAClC,CAAC,EAXW,iCAAiC,iDAAjC,iCAAiC,QAW5C;AAED;;;;;GAKG;AACH,IAAY,uCAuCX;AAvCD,WAAY,uCAAuC;IACjD,kEAAuB,CAAA;IACvB,8FAAmD,CAAA;IACnD,0GAA+D,CAAA;IAC/D,gHAAqE,CAAA;IAErE,4EAAiC,CAAA;IACjC,oGAAyD,CAAA;IACzD,wFAA6C,CAAA;IAC7C,mGAAwD,CAAA;IACxD,+GAAoE,CAAA;IACpE,4FAAiD,CAAA;IACjD,0FAA+C,CAAA;IAC/C,kHAAuE,CAAA;IACvE,0GAA+D,CAAA;IAC/D,wFAA6C,CAAA;IAC7C,8GAAmE,CAAA;IACnE,wGAA6D,CAAA;IAC7D,wGAA6D,CAAA;IAE7D,gEAAgE;IAChE,kHAAkH;IAClH,sGAA2D,CAAA;IAC3D,8FAA8F;IAC9F,oGAAyD,CAAA;IACzD,sGAAsG;IACtG,wGAA6D,CAAA;IAC7D,kHAAkH;IAClH,kHAAuE,CAAA;IACvE,0GAA0G;IAC1G,8GAAmE,CAAA;IACnE,gHAAgH;IAChH,0HAA+E,CAAA;IAC/E,oGAAoG;IACpG,sGAA2D,CAAA;IAC3D,qGAAqG;IACrG,sGAA2D,CAAA;IAC3D,+GAA+G;IAC/G,0HAA+E,CAAA;AACjF,CAAC,EAvCW,uCAAuC,uDAAvC,uCAAuC,QAuClD","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/** @packageDocumentation\n * @module Logging\n */\n\n/**\n * Logger categories used by this package\n * @note All logger categories in this package start with the `presentation-backend` prefix.\n * @see [Logger]($bentley)\n * @public\n */\nexport enum PresentationBackendLoggerCategory {\n Package = \"presentation-backend\",\n\n /** The logger category used by the [[PresentationManager]] class and other related classes. */\n PresentationManager = \"presentation-backend.PresentationManager\",\n\n /** The logger category used by Presentation RPC implementation. */\n Rpc = \"presentation-backend.Rpc\",\n\n /** The logger category used by Presentation IPC implementation. */\n Ipc = \"presentation-backend.Ipc\",\n}\n\n/**\n * Logger categories used by this package\n * @note Logger categories used by the [[PresentationManager]] native addon.\n * @see [Logger]($bentley)\n * @public\n */\nexport enum PresentationBackendNativeLoggerCategory {\n ECObjects = \"ECObjects\",\n ECObjects_ECExpressions = \"ECObjects.ECExpressions\",\n ECObjects_ECExpressions_Parse = \"ECObjects.ECExpressions.Parse\",\n ECObjects_ECExpressions_Evaluate = \"ECObjects.ECExpressions.Evaluate\",\n\n ECPresentation = \"ECPresentation\",\n ECPresentation_Connections = \"ECPresentation.Connections\",\n ECPresentation_Tasks = \"ECPresentation.Tasks\",\n ECPresentation_Hierarchies = \"ECPresentation.Navigation\",\n ECPresentation_Hierarchies_Cache = \"ECPresentation.Navigation.Cache\",\n ECPresentation_Content = \"ECPresentation.Content\",\n ECPresentation_Update = \"ECPresentation.Update\",\n ECPresentation_Update_Hierarchies = \"ECPresentation.Update.Hierarchies\",\n ECPresentation_Update_Content = \"ECPresentation.Update.Content\",\n ECPresentation_Rules = \"ECPresentation.Rules\",\n ECPresentation_RulesetVariables = \"ECPresentation.RulesetVariables\",\n ECPresentation_ECExpressions = \"ECPresentation.ECExpressions\",\n ECPresentation_Serialization = \"ECPresentation.Serialization\",\n\n /* eslint-disable @typescript-eslint/no-duplicate-enum-values */\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. The logging namespace is not used anymore. */\n ECPresentation_Localization = \"ECPresentation.Localization\",\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation]] */\n ECPresentation_RulesEngine = \"ECPresentation.RulesEngine\",\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Content]] */\n ECPresentation_RulesEngine_Content = \"ECPresentation.Content\",\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. The logging namespace is not used anymore. */\n ECPresentation_RulesEngine_Localization = \"ECPresentation.Localization\",\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Hierarchies]] */\n ECPresentation_RulesEngine_Navigation = \"ECPresentation.Navigation\",\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Hierarchies_Cache]] */\n ECPresentation_RulesEngine_Navigation_Cache = \"ECPresentation.Navigation.Cache\",\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Tasks]] */\n ECPresentation_RulesEngine_Threads = \"ECPresentation.Tasks\",\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Update]] */\n ECPresentation_RulesEngine_Update = \"ECPresentation.Update\",\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_RulesetVariables]] */\n ECPresentation_RulesEngine_RulesetVariables = \"ECPresentation.RulesetVariables\",\n}\n"]}
1
+ {"version":3,"file":"BackendLoggerCategory.js","sourceRoot":"","sources":["../../../src/presentation-backend/BackendLoggerCategory.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH;;;;;GAKG;AACH,IAAY,iCAWX;AAXD,WAAY,iCAAiC;IAC3C,qEAAgC,CAAA;IAEhC,+FAA+F;IAC/F,qGAAgE,CAAA;IAEhE,mEAAmE;IACnE,qEAAgC,CAAA;IAEhC,mEAAmE;IACnE,qEAAgC,CAAA;AAClC,CAAC,EAXW,iCAAiC,iDAAjC,iCAAiC,QAW5C;AAED;;;;;GAKG;AACH,IAAY,uCAuCX;AAvCD,WAAY,uCAAuC;IACjD,kEAAuB,CAAA;IACvB,8FAAmD,CAAA;IACnD,0GAA+D,CAAA;IAC/D,gHAAqE,CAAA;IAErE,4EAAiC,CAAA;IACjC,oGAAyD,CAAA;IACzD,wFAA6C,CAAA;IAC7C,mGAAwD,CAAA;IACxD,+GAAoE,CAAA;IACpE,4FAAiD,CAAA;IACjD,0FAA+C,CAAA;IAC/C,kHAAuE,CAAA;IACvE,0GAA+D,CAAA;IAC/D,wFAA6C,CAAA;IAC7C,8GAAmE,CAAA;IACnE,wGAA6D,CAAA;IAC7D,wGAA6D,CAAA;IAE7D,gEAAgE;IAChE,kHAAkH;IAClH,sGAA2D,CAAA;IAC3D,8FAA8F;IAC9F,oGAAyD,CAAA;IACzD,sGAAsG;IACtG,wGAA6D,CAAA;IAC7D,kHAAkH;IAClH,kHAAuE,CAAA;IACvE,0GAA0G;IAC1G,8GAAmE,CAAA;IACnE,gHAAgH;IAChH,0HAA+E,CAAA;IAC/E,oGAAoG;IACpG,sGAA2D,CAAA;IAC3D,qGAAqG;IACrG,sGAA2D,CAAA;IAC3D,+GAA+G;IAC/G,0HAA+E,CAAA;AACjF,CAAC,EAvCW,uCAAuC,uDAAvC,uCAAuC,QAuClD","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Logging\r\n */\r\n\r\n/**\r\n * Logger categories used by this package\r\n * @note All logger categories in this package start with the `presentation-backend` prefix.\r\n * @see [Logger]($bentley)\r\n * @public\r\n */\r\nexport enum PresentationBackendLoggerCategory {\r\n Package = \"presentation-backend\",\r\n\r\n /** The logger category used by the [[PresentationManager]] class and other related classes. */\r\n PresentationManager = \"presentation-backend.PresentationManager\",\r\n\r\n /** The logger category used by Presentation RPC implementation. */\r\n Rpc = \"presentation-backend.Rpc\",\r\n\r\n /** The logger category used by Presentation IPC implementation. */\r\n Ipc = \"presentation-backend.Ipc\",\r\n}\r\n\r\n/**\r\n * Logger categories used by this package\r\n * @note Logger categories used by the [[PresentationManager]] native addon.\r\n * @see [Logger]($bentley)\r\n * @public\r\n */\r\nexport enum PresentationBackendNativeLoggerCategory {\r\n ECObjects = \"ECObjects\",\r\n ECObjects_ECExpressions = \"ECObjects.ECExpressions\",\r\n ECObjects_ECExpressions_Parse = \"ECObjects.ECExpressions.Parse\",\r\n ECObjects_ECExpressions_Evaluate = \"ECObjects.ECExpressions.Evaluate\",\r\n\r\n ECPresentation = \"ECPresentation\",\r\n ECPresentation_Connections = \"ECPresentation.Connections\",\r\n ECPresentation_Tasks = \"ECPresentation.Tasks\",\r\n ECPresentation_Hierarchies = \"ECPresentation.Navigation\",\r\n ECPresentation_Hierarchies_Cache = \"ECPresentation.Navigation.Cache\",\r\n ECPresentation_Content = \"ECPresentation.Content\",\r\n ECPresentation_Update = \"ECPresentation.Update\",\r\n ECPresentation_Update_Hierarchies = \"ECPresentation.Update.Hierarchies\",\r\n ECPresentation_Update_Content = \"ECPresentation.Update.Content\",\r\n ECPresentation_Rules = \"ECPresentation.Rules\",\r\n ECPresentation_RulesetVariables = \"ECPresentation.RulesetVariables\",\r\n ECPresentation_ECExpressions = \"ECPresentation.ECExpressions\",\r\n ECPresentation_Serialization = \"ECPresentation.Serialization\",\r\n\r\n /* eslint-disable @typescript-eslint/no-duplicate-enum-values */\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. The logging namespace is not used anymore. */\r\n ECPresentation_Localization = \"ECPresentation.Localization\",\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation]] */\r\n ECPresentation_RulesEngine = \"ECPresentation.RulesEngine\",\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Content]] */\r\n ECPresentation_RulesEngine_Content = \"ECPresentation.Content\",\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. The logging namespace is not used anymore. */\r\n ECPresentation_RulesEngine_Localization = \"ECPresentation.Localization\",\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Hierarchies]] */\r\n ECPresentation_RulesEngine_Navigation = \"ECPresentation.Navigation\",\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Hierarchies_Cache]] */\r\n ECPresentation_RulesEngine_Navigation_Cache = \"ECPresentation.Navigation.Cache\",\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Tasks]] */\r\n ECPresentation_RulesEngine_Threads = \"ECPresentation.Tasks\",\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_Update]] */\r\n ECPresentation_RulesEngine_Update = \"ECPresentation.Update\",\r\n /** @deprecated in 4.0 - will not be removed until after 2026-06-13. Use [[ECPresentation_RulesetVariables]] */\r\n ECPresentation_RulesEngine_RulesetVariables = \"ECPresentation.RulesetVariables\",\r\n}\r\n"]}
@@ -111,11 +111,11 @@ function getElementClassesFromIds(imodel, elementIds) {
111
111
  return (0, rxjs_1.range)(0, elementIds.length / elementIdsBatchSize).pipe((0, rxjs_1.mergeMap)((batchIndex) => {
112
112
  const idsFrom = batchIndex * elementIdsBatchSize;
113
113
  const idsTo = Math.min(idsFrom + elementIdsBatchSize, elementIds.length);
114
- return (0, rxjs_1.from)(imodel.createQueryReader(`
115
- SELECT ec_classname(e.ECClassId) className, GROUP_CONCAT(IdToHex(e.ECInstanceId)) ids
116
- FROM bis.Element e
117
- WHERE e.ECInstanceId IN (${elementIds.slice(idsFrom, idsTo).join(",")})
118
- GROUP BY e.ECClassId
114
+ return (0, rxjs_1.from)(imodel.createQueryReader(`
115
+ SELECT ec_classname(e.ECClassId) className, GROUP_CONCAT(IdToHex(e.ECInstanceId)) ids
116
+ FROM bis.Element e
117
+ WHERE e.ECInstanceId IN (${elementIds.slice(idsFrom, idsTo).join(",")})
118
+ GROUP BY e.ECClassId
119
119
  `));
120
120
  }), (0, rxjs_1.map)((row) => ({ className: row.className, ids: row.ids.split(",") })), (0, rxjs_1.groupBy)(({ className }) => className), (0, rxjs_1.mergeMap)((groups) => groups.pipe((0, rxjs_1.reduce)((acc, g) => {
121
121
  g.ids.forEach((id) => acc.ids.push(id));
@@ -127,10 +127,10 @@ function getElementClassesFromIds(imodel, elementIds) {
127
127
  }
128
128
  /** Given a list of full class names, get a stream of actual class names that have instances. */
129
129
  function getClassesWithInstances(imodel, fullClassNames) {
130
- return (0, rxjs_1.from)(fullClassNames).pipe((0, rxjs_1.mergeMap)((fullClassName) => (0, rxjs_1.from)(imodel.createQueryReader(`
131
- SELECT ec_classname(e.ECClassId, 's.c') className
132
- FROM ${getECSqlName(fullClassName)} e
133
- GROUP BY e.ECClassId
130
+ return (0, rxjs_1.from)(fullClassNames).pipe((0, rxjs_1.mergeMap)((fullClassName) => (0, rxjs_1.from)(imodel.createQueryReader(`
131
+ SELECT ec_classname(e.ECClassId, 's.c') className
132
+ FROM ${getECSqlName(fullClassName)} e
133
+ GROUP BY e.ECClassId
134
134
  `))), (0, rxjs_1.map)((row) => row.className));
135
135
  }
136
136
  /**
@@ -177,15 +177,15 @@ async function getElementsCount(db, classNames) {
177
177
  const classNameRegExp = new RegExp(/^[\w]+[.:][\w]+$/);
178
178
  const invalidName = classNames.find((name) => !name.match(classNameRegExp));
179
179
  if (invalidName) {
180
- throw new presentation_common_1.PresentationError(presentation_common_1.PresentationStatus.InvalidArgument, `Encountered invalid class name - ${invalidName}.
180
+ throw new presentation_common_1.PresentationError(presentation_common_1.PresentationStatus.InvalidArgument, `Encountered invalid class name - ${invalidName}.
181
181
  Valid class name formats: "<schema name or alias>.<class name>", "<schema name or alias>:<class name>"`);
182
182
  }
183
183
  return `e.ECClassId IS (${classNames.join(",")})`;
184
184
  })();
185
- const query = `
186
- SELECT COUNT(e.ECInstanceId) AS elementCount
187
- FROM bis.Element e
188
- ${whereClause ? `WHERE ${whereClause}` : ""}
185
+ const query = `
186
+ SELECT COUNT(e.ECInstanceId) AS elementCount
187
+ FROM bis.Element e
188
+ ${whereClause ? `WHERE ${whereClause}` : ""}
189
189
  `;
190
190
  for await (const row of db.createQueryReader(query)) {
191
191
  return row.elementCount;
@@ -1 +1 @@
1
- {"version":3,"file":"ElementPropertiesHelper.js","sourceRoot":"","sources":["../../../src/presentation-backend/ElementPropertiesHelper.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/** @packageDocumentation\n * @module Core\n */\n\nimport { bufferCount, defer, from, groupBy, map, mergeMap, Observable, ObservedValueOf, of, range, reduce } from \"rxjs\";\nimport { IModelDb } from \"@itwin/core-backend\";\nimport { Id64, Id64Array, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport { QueryRowProxy } from \"@itwin/core-common\";\nimport {\n ContentDescriptorRequestOptions,\n ContentRequestOptions,\n Descriptor,\n Item,\n KeySet,\n PresentationError,\n PresentationStatus,\n Ruleset,\n RulesetVariable,\n} from \"@itwin/presentation-common\";\n\n/** @internal */\nexport function parseFullClassName(fullClassName: string): [string, string] {\n const [schemaName, className] = fullClassName.split(/[:\\.]/);\n return [schemaName, className];\n}\n\nfunction getECSqlName(fullClassName: string) {\n const [schemaName, className] = parseFullClassName(fullClassName);\n return `[${schemaName}].[${className}]`;\n}\n\n/** @internal */\nexport function getContentItemsObservableFromElementIds(\n imodel: IModelDb,\n contentDescriptorGetter: (\n partialProps: Pick<ContentDescriptorRequestOptions<IModelDb, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\">,\n ) => Promise<Descriptor | undefined>,\n contentSetGetter: (\n partialProps: Pick<ContentRequestOptions<IModelDb, Descriptor, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\" | \"descriptor\">,\n ) => Promise<Item[]>,\n elementIds: Id64String[],\n classParallelism: number,\n batchesParallelism: number,\n batchSize: number,\n): { itemBatches: Observable<{ descriptor: Descriptor; items: Item[] }>; count: Observable<number> } {\n return {\n itemBatches: getElementClassesFromIds(imodel, elementIds).pipe(\n mergeMap(\n ({ classFullName, ids }) =>\n getBatchedClassContentItems(\n classFullName,\n contentDescriptorGetter,\n contentSetGetter,\n () => createIdBatches(OrderedId64Iterable.sortArray(ids), batchSize),\n batchesParallelism,\n ),\n classParallelism,\n ),\n ),\n count: of(elementIds.length),\n };\n}\n\n/** @internal */\nexport function getContentItemsObservableFromClassNames(\n imodel: IModelDb,\n contentDescriptorGetter: (\n partialProps: Pick<ContentDescriptorRequestOptions<IModelDb, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\">,\n ) => Promise<Descriptor | undefined>,\n contentSetGetter: (\n partialProps: Pick<ContentRequestOptions<IModelDb, Descriptor, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\" | \"descriptor\">,\n ) => Promise<Item[]>,\n elementClasses: string[],\n classParallelism: number,\n batchesParallelism: number,\n batchSize: number,\n): { itemBatches: Observable<{ descriptor: Descriptor; items: Item[] }>; count: Observable<number> } {\n return {\n itemBatches: getClassesWithInstances(imodel, elementClasses).pipe(\n mergeMap(\n (classFullName) =>\n getBatchedClassContentItems(\n classFullName,\n contentDescriptorGetter,\n contentSetGetter,\n () => getBatchedClassElementIds(imodel, classFullName, batchSize),\n batchesParallelism,\n ),\n classParallelism,\n ),\n ),\n count: from(getElementsCount(imodel, elementClasses)),\n };\n}\n\nfunction getBatchedClassContentItems(\n classFullName: string,\n contentDescriptorGetter: (\n partialProps: Pick<ContentDescriptorRequestOptions<IModelDb, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\">,\n ) => Promise<Descriptor | undefined>,\n contentSetGetter: (\n partialProps: Pick<ContentRequestOptions<IModelDb, Descriptor, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\" | \"descriptor\">,\n ) => Promise<Item[]>,\n batcher: () => Observable<Array<{ from: Id64String; to: Id64String }>>,\n batchesParallelism: number,\n): Observable<{ descriptor: Descriptor; items: Item[] }> {\n return defer(async () => {\n const ruleset = createClassContentRuleset(classFullName);\n const keys = new KeySet();\n const descriptor = await contentDescriptorGetter({ rulesetOrId: ruleset, keys });\n if (!descriptor) {\n throw new PresentationError(PresentationStatus.Error, `Failed to get descriptor for class ${classFullName}`);\n }\n return { descriptor, keys, ruleset };\n }).pipe(\n // create elements' id batches\n mergeMap((x) => batcher().pipe(map((batch) => ({ ...x, batch })))),\n // request content for each batch, filter by IDs for performance\n mergeMap(\n ({ descriptor, keys, ruleset, batch }) =>\n defer(async () => {\n const filteringDescriptor = new Descriptor(descriptor);\n filteringDescriptor.instanceFilter = {\n selectClassName: classFullName,\n expression: createElementIdsECExpressionFilter(batch),\n };\n return contentSetGetter({\n rulesetOrId: ruleset,\n keys,\n descriptor: filteringDescriptor,\n });\n }).pipe(map((items) => ({ descriptor, items }))),\n batchesParallelism,\n ),\n );\n}\n\nfunction createElementIdsECExpressionFilter(batch: Array<{ from: Id64String; to: Id64String }>): string {\n let filter = \"\";\n function appendCondition(cond: string) {\n if (filter.length > 0) {\n filter += \" OR \";\n }\n filter += cond;\n }\n for (const item of batch) {\n if (item.from === item.to) {\n appendCondition(`this.ECInstanceId = ${item.from}`);\n } else {\n appendCondition(`this.ECInstanceId >= ${item.from} AND this.ECInstanceId <= ${item.to}`);\n }\n }\n return filter;\n}\n\nfunction createClassContentRuleset(fullClassName: string): Ruleset {\n const [schemaName, className] = parseFullClassName(fullClassName);\n return {\n id: `content/class-descriptor/${fullClassName}`,\n rules: [\n {\n ruleType: \"Content\",\n specifications: [\n {\n specType: \"ContentInstancesOfSpecificClasses\",\n classes: {\n schemaName,\n classNames: [className],\n arePolymorphic: false,\n },\n handlePropertiesPolymorphically: true,\n },\n ],\n },\n ],\n };\n}\n\n/** Given a list of element ids, group them by class name. */\nfunction getElementClassesFromIds(imodel: IModelDb, elementIds: string[]): Observable<{ classFullName: string; ids: Id64Array }> {\n const elementIdsBatchSize = 5000;\n return range(0, elementIds.length / elementIdsBatchSize).pipe(\n mergeMap((batchIndex) => {\n const idsFrom = batchIndex * elementIdsBatchSize;\n const idsTo = Math.min(idsFrom + elementIdsBatchSize, elementIds.length);\n return from(\n imodel.createQueryReader(\n `\n SELECT ec_classname(e.ECClassId) className, GROUP_CONCAT(IdToHex(e.ECInstanceId)) ids\n FROM bis.Element e\n WHERE e.ECInstanceId IN (${elementIds.slice(idsFrom, idsTo).join(\",\")})\n GROUP BY e.ECClassId\n `,\n ),\n );\n }),\n map((row: QueryRowProxy): { className: string; ids: Id64Array } => ({ className: row.className, ids: row.ids.split(\",\") })),\n groupBy(({ className }) => className),\n mergeMap((groups) =>\n groups.pipe(\n reduce<ObservedValueOf<typeof groups>, { classFullName: string; ids: Id64Array }>(\n (acc, g) => {\n g.ids.forEach((id) => acc.ids.push(id));\n return {\n classFullName: g.className,\n ids: acc.ids,\n };\n },\n { classFullName: \"\", ids: [] },\n ),\n ),\n ),\n );\n}\n\n/** Given a list of full class names, get a stream of actual class names that have instances. */\nfunction getClassesWithInstances(imodel: IModelDb, fullClassNames: string[]): Observable<string> {\n return from(fullClassNames).pipe(\n mergeMap((fullClassName) =>\n from(\n imodel.createQueryReader(\n `\n SELECT ec_classname(e.ECClassId, 's.c') className\n FROM ${getECSqlName(fullClassName)} e\n GROUP BY e.ECClassId\n `,\n ),\n ),\n ),\n map((row: QueryRowProxy): string => row.className),\n );\n}\n\n/**\n * Given a sorted list of ECInstanceIds and a batch size, create a stream of batches. Because the IDs won't necessarily\n * be sequential, a batch is defined a list of from-to pairs.\n * @internal\n */\nexport function createIdBatches(sortedIds: Id64String[], batchSize: number): Observable<Array<{ from: Id64String; to: Id64String }>> {\n return range(0, sortedIds.length / batchSize).pipe(\n map((batchIndex) => {\n const sequences = new Array<{ from: Id64String; to: Id64String }>();\n const startIndex = batchIndex * batchSize;\n const endIndex = Math.min((batchIndex + 1) * batchSize, sortedIds.length) - 1;\n let fromId = sortedIds[startIndex];\n let to = {\n id: sortedIds[startIndex],\n localId: Id64.getLocalId(sortedIds[startIndex]),\n };\n for (let i = startIndex + 1; i <= endIndex; ++i) {\n const currLocalId = Id64.getLocalId(sortedIds[i]);\n if (currLocalId !== to.localId + 1) {\n sequences.push({ from: fromId, to: sortedIds[i - 1] });\n fromId = sortedIds[i];\n }\n to = { id: sortedIds[i], localId: currLocalId };\n }\n sequences.push({ from: fromId, to: sortedIds[endIndex] });\n return sequences;\n }),\n );\n}\n\n/**\n * Query all ECInstanceIds from given class and stream from-to pairs that batch the items into batches of `batchSize` size.\n * @internal\n */\nexport function getBatchedClassElementIds(imodel: IModelDb, fullClassName: string, batchSize: number): Observable<Array<{ from: Id64String; to: Id64String }>> {\n return from(imodel.createQueryReader(`SELECT IdToHex(ECInstanceId) id FROM ${getECSqlName(fullClassName)} ORDER BY ECInstanceId`)).pipe(\n map((row): Id64String => row.id),\n bufferCount(batchSize),\n map((batch) => [{ from: batch[0], to: batch[batch.length - 1] }]),\n );\n}\n\n/** @internal */\nexport async function getElementsCount(db: IModelDb, classNames: string[]) {\n const whereClause = (() => {\n if (classNames === undefined || classNames.length === 0) {\n return undefined;\n }\n // check if list contains only valid class names\n const classNameRegExp = new RegExp(/^[\\w]+[.:][\\w]+$/);\n const invalidName = classNames.find((name) => !name.match(classNameRegExp));\n if (invalidName) {\n throw new PresentationError(\n PresentationStatus.InvalidArgument,\n `Encountered invalid class name - ${invalidName}.\n Valid class name formats: \"<schema name or alias>.<class name>\", \"<schema name or alias>:<class name>\"`,\n );\n }\n return `e.ECClassId IS (${classNames.join(\",\")})`;\n })();\n const query = `\n SELECT COUNT(e.ECInstanceId) AS elementCount\n FROM bis.Element e\n ${whereClause ? `WHERE ${whereClause}` : \"\"}\n `;\n for await (const row of db.createQueryReader(query)) {\n return row.elementCount;\n }\n return 0;\n}\n"]}
1
+ {"version":3,"file":"ElementPropertiesHelper.js","sourceRoot":"","sources":["../../../src/presentation-backend/ElementPropertiesHelper.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { bufferCount, defer, from, groupBy, map, mergeMap, Observable, ObservedValueOf, of, range, reduce } from \"rxjs\";\r\nimport { IModelDb } from \"@itwin/core-backend\";\r\nimport { Id64, Id64Array, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\nimport { QueryRowProxy } from \"@itwin/core-common\";\r\nimport {\r\n ContentDescriptorRequestOptions,\r\n ContentRequestOptions,\r\n Descriptor,\r\n Item,\r\n KeySet,\r\n PresentationError,\r\n PresentationStatus,\r\n Ruleset,\r\n RulesetVariable,\r\n} from \"@itwin/presentation-common\";\r\n\r\n/** @internal */\r\nexport function parseFullClassName(fullClassName: string): [string, string] {\r\n const [schemaName, className] = fullClassName.split(/[:\\.]/);\r\n return [schemaName, className];\r\n}\r\n\r\nfunction getECSqlName(fullClassName: string) {\r\n const [schemaName, className] = parseFullClassName(fullClassName);\r\n return `[${schemaName}].[${className}]`;\r\n}\r\n\r\n/** @internal */\r\nexport function getContentItemsObservableFromElementIds(\r\n imodel: IModelDb,\r\n contentDescriptorGetter: (\r\n partialProps: Pick<ContentDescriptorRequestOptions<IModelDb, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\">,\r\n ) => Promise<Descriptor | undefined>,\r\n contentSetGetter: (\r\n partialProps: Pick<ContentRequestOptions<IModelDb, Descriptor, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\" | \"descriptor\">,\r\n ) => Promise<Item[]>,\r\n elementIds: Id64String[],\r\n classParallelism: number,\r\n batchesParallelism: number,\r\n batchSize: number,\r\n): { itemBatches: Observable<{ descriptor: Descriptor; items: Item[] }>; count: Observable<number> } {\r\n return {\r\n itemBatches: getElementClassesFromIds(imodel, elementIds).pipe(\r\n mergeMap(\r\n ({ classFullName, ids }) =>\r\n getBatchedClassContentItems(\r\n classFullName,\r\n contentDescriptorGetter,\r\n contentSetGetter,\r\n () => createIdBatches(OrderedId64Iterable.sortArray(ids), batchSize),\r\n batchesParallelism,\r\n ),\r\n classParallelism,\r\n ),\r\n ),\r\n count: of(elementIds.length),\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getContentItemsObservableFromClassNames(\r\n imodel: IModelDb,\r\n contentDescriptorGetter: (\r\n partialProps: Pick<ContentDescriptorRequestOptions<IModelDb, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\">,\r\n ) => Promise<Descriptor | undefined>,\r\n contentSetGetter: (\r\n partialProps: Pick<ContentRequestOptions<IModelDb, Descriptor, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\" | \"descriptor\">,\r\n ) => Promise<Item[]>,\r\n elementClasses: string[],\r\n classParallelism: number,\r\n batchesParallelism: number,\r\n batchSize: number,\r\n): { itemBatches: Observable<{ descriptor: Descriptor; items: Item[] }>; count: Observable<number> } {\r\n return {\r\n itemBatches: getClassesWithInstances(imodel, elementClasses).pipe(\r\n mergeMap(\r\n (classFullName) =>\r\n getBatchedClassContentItems(\r\n classFullName,\r\n contentDescriptorGetter,\r\n contentSetGetter,\r\n () => getBatchedClassElementIds(imodel, classFullName, batchSize),\r\n batchesParallelism,\r\n ),\r\n classParallelism,\r\n ),\r\n ),\r\n count: from(getElementsCount(imodel, elementClasses)),\r\n };\r\n}\r\n\r\nfunction getBatchedClassContentItems(\r\n classFullName: string,\r\n contentDescriptorGetter: (\r\n partialProps: Pick<ContentDescriptorRequestOptions<IModelDb, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\">,\r\n ) => Promise<Descriptor | undefined>,\r\n contentSetGetter: (\r\n partialProps: Pick<ContentRequestOptions<IModelDb, Descriptor, KeySet, RulesetVariable>, \"rulesetOrId\" | \"keys\" | \"descriptor\">,\r\n ) => Promise<Item[]>,\r\n batcher: () => Observable<Array<{ from: Id64String; to: Id64String }>>,\r\n batchesParallelism: number,\r\n): Observable<{ descriptor: Descriptor; items: Item[] }> {\r\n return defer(async () => {\r\n const ruleset = createClassContentRuleset(classFullName);\r\n const keys = new KeySet();\r\n const descriptor = await contentDescriptorGetter({ rulesetOrId: ruleset, keys });\r\n if (!descriptor) {\r\n throw new PresentationError(PresentationStatus.Error, `Failed to get descriptor for class ${classFullName}`);\r\n }\r\n return { descriptor, keys, ruleset };\r\n }).pipe(\r\n // create elements' id batches\r\n mergeMap((x) => batcher().pipe(map((batch) => ({ ...x, batch })))),\r\n // request content for each batch, filter by IDs for performance\r\n mergeMap(\r\n ({ descriptor, keys, ruleset, batch }) =>\r\n defer(async () => {\r\n const filteringDescriptor = new Descriptor(descriptor);\r\n filteringDescriptor.instanceFilter = {\r\n selectClassName: classFullName,\r\n expression: createElementIdsECExpressionFilter(batch),\r\n };\r\n return contentSetGetter({\r\n rulesetOrId: ruleset,\r\n keys,\r\n descriptor: filteringDescriptor,\r\n });\r\n }).pipe(map((items) => ({ descriptor, items }))),\r\n batchesParallelism,\r\n ),\r\n );\r\n}\r\n\r\nfunction createElementIdsECExpressionFilter(batch: Array<{ from: Id64String; to: Id64String }>): string {\r\n let filter = \"\";\r\n function appendCondition(cond: string) {\r\n if (filter.length > 0) {\r\n filter += \" OR \";\r\n }\r\n filter += cond;\r\n }\r\n for (const item of batch) {\r\n if (item.from === item.to) {\r\n appendCondition(`this.ECInstanceId = ${item.from}`);\r\n } else {\r\n appendCondition(`this.ECInstanceId >= ${item.from} AND this.ECInstanceId <= ${item.to}`);\r\n }\r\n }\r\n return filter;\r\n}\r\n\r\nfunction createClassContentRuleset(fullClassName: string): Ruleset {\r\n const [schemaName, className] = parseFullClassName(fullClassName);\r\n return {\r\n id: `content/class-descriptor/${fullClassName}`,\r\n rules: [\r\n {\r\n ruleType: \"Content\",\r\n specifications: [\r\n {\r\n specType: \"ContentInstancesOfSpecificClasses\",\r\n classes: {\r\n schemaName,\r\n classNames: [className],\r\n arePolymorphic: false,\r\n },\r\n handlePropertiesPolymorphically: true,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n}\r\n\r\n/** Given a list of element ids, group them by class name. */\r\nfunction getElementClassesFromIds(imodel: IModelDb, elementIds: string[]): Observable<{ classFullName: string; ids: Id64Array }> {\r\n const elementIdsBatchSize = 5000;\r\n return range(0, elementIds.length / elementIdsBatchSize).pipe(\r\n mergeMap((batchIndex) => {\r\n const idsFrom = batchIndex * elementIdsBatchSize;\r\n const idsTo = Math.min(idsFrom + elementIdsBatchSize, elementIds.length);\r\n return from(\r\n imodel.createQueryReader(\r\n `\r\n SELECT ec_classname(e.ECClassId) className, GROUP_CONCAT(IdToHex(e.ECInstanceId)) ids\r\n FROM bis.Element e\r\n WHERE e.ECInstanceId IN (${elementIds.slice(idsFrom, idsTo).join(\",\")})\r\n GROUP BY e.ECClassId\r\n `,\r\n ),\r\n );\r\n }),\r\n map((row: QueryRowProxy): { className: string; ids: Id64Array } => ({ className: row.className, ids: row.ids.split(\",\") })),\r\n groupBy(({ className }) => className),\r\n mergeMap((groups) =>\r\n groups.pipe(\r\n reduce<ObservedValueOf<typeof groups>, { classFullName: string; ids: Id64Array }>(\r\n (acc, g) => {\r\n g.ids.forEach((id) => acc.ids.push(id));\r\n return {\r\n classFullName: g.className,\r\n ids: acc.ids,\r\n };\r\n },\r\n { classFullName: \"\", ids: [] },\r\n ),\r\n ),\r\n ),\r\n );\r\n}\r\n\r\n/** Given a list of full class names, get a stream of actual class names that have instances. */\r\nfunction getClassesWithInstances(imodel: IModelDb, fullClassNames: string[]): Observable<string> {\r\n return from(fullClassNames).pipe(\r\n mergeMap((fullClassName) =>\r\n from(\r\n imodel.createQueryReader(\r\n `\r\n SELECT ec_classname(e.ECClassId, 's.c') className\r\n FROM ${getECSqlName(fullClassName)} e\r\n GROUP BY e.ECClassId\r\n `,\r\n ),\r\n ),\r\n ),\r\n map((row: QueryRowProxy): string => row.className),\r\n );\r\n}\r\n\r\n/**\r\n * Given a sorted list of ECInstanceIds and a batch size, create a stream of batches. Because the IDs won't necessarily\r\n * be sequential, a batch is defined a list of from-to pairs.\r\n * @internal\r\n */\r\nexport function createIdBatches(sortedIds: Id64String[], batchSize: number): Observable<Array<{ from: Id64String; to: Id64String }>> {\r\n return range(0, sortedIds.length / batchSize).pipe(\r\n map((batchIndex) => {\r\n const sequences = new Array<{ from: Id64String; to: Id64String }>();\r\n const startIndex = batchIndex * batchSize;\r\n const endIndex = Math.min((batchIndex + 1) * batchSize, sortedIds.length) - 1;\r\n let fromId = sortedIds[startIndex];\r\n let to = {\r\n id: sortedIds[startIndex],\r\n localId: Id64.getLocalId(sortedIds[startIndex]),\r\n };\r\n for (let i = startIndex + 1; i <= endIndex; ++i) {\r\n const currLocalId = Id64.getLocalId(sortedIds[i]);\r\n if (currLocalId !== to.localId + 1) {\r\n sequences.push({ from: fromId, to: sortedIds[i - 1] });\r\n fromId = sortedIds[i];\r\n }\r\n to = { id: sortedIds[i], localId: currLocalId };\r\n }\r\n sequences.push({ from: fromId, to: sortedIds[endIndex] });\r\n return sequences;\r\n }),\r\n );\r\n}\r\n\r\n/**\r\n * Query all ECInstanceIds from given class and stream from-to pairs that batch the items into batches of `batchSize` size.\r\n * @internal\r\n */\r\nexport function getBatchedClassElementIds(imodel: IModelDb, fullClassName: string, batchSize: number): Observable<Array<{ from: Id64String; to: Id64String }>> {\r\n return from(imodel.createQueryReader(`SELECT IdToHex(ECInstanceId) id FROM ${getECSqlName(fullClassName)} ORDER BY ECInstanceId`)).pipe(\r\n map((row): Id64String => row.id),\r\n bufferCount(batchSize),\r\n map((batch) => [{ from: batch[0], to: batch[batch.length - 1] }]),\r\n );\r\n}\r\n\r\n/** @internal */\r\nexport async function getElementsCount(db: IModelDb, classNames: string[]) {\r\n const whereClause = (() => {\r\n if (classNames === undefined || classNames.length === 0) {\r\n return undefined;\r\n }\r\n // check if list contains only valid class names\r\n const classNameRegExp = new RegExp(/^[\\w]+[.:][\\w]+$/);\r\n const invalidName = classNames.find((name) => !name.match(classNameRegExp));\r\n if (invalidName) {\r\n throw new PresentationError(\r\n PresentationStatus.InvalidArgument,\r\n `Encountered invalid class name - ${invalidName}.\r\n Valid class name formats: \"<schema name or alias>.<class name>\", \"<schema name or alias>:<class name>\"`,\r\n );\r\n }\r\n return `e.ECClassId IS (${classNames.join(\",\")})`;\r\n })();\r\n const query = `\r\n SELECT COUNT(e.ECInstanceId) AS elementCount\r\n FROM bis.Element e\r\n ${whereClause ? `WHERE ${whereClause}` : \"\"}\r\n `;\r\n for await (const row of db.createQueryReader(query)) {\r\n return row.elementCount;\r\n }\r\n return 0;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"InternalSymbols.js","sourceRoot":"","sources":["../../../src/presentation-backend/InternalSymbols.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG,yDAAyD;AACzD;;GAEG;;;AAEH,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,GAAG,IAAI,gDAAgD,CAAC;AACjE,CAAC;AAEY,QAAA,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC","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/* eslint-disable @typescript-eslint/naming-convention */\n/** @packageDocumentation\n * @module Core\n */\n\nfunction sym(name: string): string {\n return `${name}_presentation-backend_INTERNAL_ONLY_DO_NOT_USE`;\n}\n\nexport const _presentation_manager_detail = Symbol.for(sym(\"presentation_manager_detail\"));\n"]}
1
+ {"version":3,"file":"InternalSymbols.js","sourceRoot":"","sources":["../../../src/presentation-backend/InternalSymbols.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG,yDAAyD;AACzD;;GAEG;;;AAEH,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,GAAG,IAAI,gDAAgD,CAAC;AACjE,CAAC;AAEY,QAAA,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nfunction sym(name: string): string {\r\n return `${name}_presentation-backend_INTERNAL_ONLY_DO_NOT_USE`;\r\n}\r\n\r\nexport const _presentation_manager_detail = Symbol.for(sym(\"presentation_manager_detail\"));\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NativePlatform.d.ts","sourceRoot":"","sources":["../../../src/presentation-backend/NativePlatform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativePlatform.d.ts","sourceRoot":"","sources":["../../../src/presentation-backend/NativePlatform.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,7 @@ const createDefaultNativePlatform = (props) => {
70
70
  return class {
71
71
  _nativeAddon;
72
72
  constructor() {
73
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
73
74
  const cacheConfig = props.cacheConfig ?? { mode: PresentationManager_js_1.HierarchyCacheMode.Disk, directory: "" };
74
75
  const defaultFormats = props.defaultFormats ? this.getSerializedDefaultFormatsMap(props.defaultFormats) : {};
75
76
  this._nativeAddon = new core_backend_1.IModelNative.platform.ECPresentationManager({ ...props, cacheConfig, defaultFormats });
@@ -1 +1 @@
1
- {"version":3,"file":"NativePlatform.js","sourceRoot":"","sources":["../../../src/presentation-backend/NativePlatform.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/** @packageDocumentation\n * @module Core\n */\n\nimport { _nativeDb, IModelDb, IModelJsNative, IModelNative } from \"@itwin/core-backend\";\nimport { assert, BeEvent } from \"@itwin/core-bentley\";\nimport { FormatProps } from \"@itwin/core-quantity\";\nimport {\n DiagnosticsScopeLogs,\n NodeKey,\n PresentationError,\n PresentationStatus,\n UpdateInfo,\n VariableValue,\n VariableValueJSON,\n VariableValueTypes,\n} from \"@itwin/presentation-common\";\nimport { HierarchyCacheMode } from \"./PresentationManager.js\";\n\n/** @internal */\nexport enum NativePlatformRequestTypes {\n GetRootNodes = \"GetRootNodes\",\n GetRootNodesCount = \"GetRootNodesCount\",\n GetChildren = \"GetChildren\",\n GetChildrenCount = \"GetChildrenCount\",\n GetNodesDescriptor = \"GetNodesDescriptor\",\n GetNodePaths = \"GetNodePaths\",\n GetFilteredNodePaths = \"GetFilteredNodePaths\",\n GetContentSources = \"GetContentSources\",\n GetContentDescriptor = \"GetContentDescriptor\",\n GetContentSetSize = \"GetContentSetSize\",\n GetContentSet = \"GetContentSet\",\n GetContent = \"GetContent\",\n GetPagedDistinctValues = \"GetPagedDistinctValues\",\n GetDisplayLabel = \"GetDisplayLabel\",\n CompareHierarchies = \"CompareHierarchies\",\n}\n\n/**\n * Enumeration of unit systems supported by native presentation manager.\n * @internal\n */\nexport enum NativePresentationUnitSystem {\n Metric = \"metric\",\n BritishImperial = \"british-imperial\",\n UsCustomary = \"us-customary\",\n UsSurvey = \"us-survey\",\n}\n\n/** @internal */\nexport interface NativePresentationDefaultUnitFormats {\n [phenomenon: string]: Array<{\n unitSystems: NativePresentationUnitSystem[];\n format: FormatProps;\n }>;\n}\n\n/** @internal */\nexport interface NativePresentationKeySetJSON {\n instanceKeys: Array<[string, string[]]>;\n nodeKeys: NodeKey[];\n}\n\n/** @internal */\nexport interface NativePlatformResponse<TResult> {\n result: TResult;\n diagnostics?: DiagnosticsScopeLogs;\n}\n\n/** @internal */\nexport interface NativePlatformDefinition extends Disposable {\n getImodelAddon(imodel: IModelDb): any;\n\n setupRulesetDirectories(directories: string[]): NativePlatformResponse<void>;\n setupSupplementalRulesetDirectories(directories: string[]): NativePlatformResponse<void>;\n\n forceLoadSchemas(db: any): Promise<NativePlatformResponse<void>>;\n\n registerSupplementalRuleset(serializedRulesetJson: string): NativePlatformResponse<string>;\n getRulesets(rulesetId: string): NativePlatformResponse<string>;\n addRuleset(serializedRulesetJson: string): NativePlatformResponse<string>;\n removeRuleset(rulesetId: string, hash: string): NativePlatformResponse<boolean>;\n clearRulesets(): NativePlatformResponse<void>;\n\n handleRequest(db: any, options: string, cancelEvent?: BeEvent<() => void>): Promise<NativePlatformResponse<string>>;\n\n getRulesetVariableValue(rulesetId: string, variableId: string, type: VariableValueTypes): NativePlatformResponse<VariableValue>;\n setRulesetVariableValue(rulesetId: string, variableId: string, type: VariableValueTypes, value: VariableValue): NativePlatformResponse<void>;\n unsetRulesetVariableValue(rulesetId: string, variableId: string): NativePlatformResponse<void>;\n}\n\n/** @internal */\nexport interface DefaultNativePlatformProps {\n id: string;\n taskAllocationsMap: { [priority: number]: number };\n updateCallback: (info: UpdateInfo | undefined) => void;\n cacheConfig?: IModelJsNative.ECPresentationHierarchyCacheConfig;\n contentCacheSize?: number;\n workerConnectionCacheSize?: number;\n defaultFormats?: NativePresentationDefaultUnitFormats;\n useMmap?: boolean | number;\n}\n\n/** @internal */\nexport class PresentationNativePlatformResponseError extends PresentationError {\n public readonly diagnostics?: DiagnosticsScopeLogs;\n public constructor(errorResponse: IModelJsNative.ECPresentationManagerResponse<unknown>) {\n assert(!!errorResponse.error);\n super(getPresentationStatusFromNativeResponseStatus(errorResponse.error.status), errorResponse.error.message);\n this.diagnostics = errorResponse.diagnostics;\n }\n}\n\nfunction getPresentationStatusFromNativeResponseStatus(nativeResponseStatus: IModelJsNative.ECPresentationStatus): PresentationStatus {\n switch (nativeResponseStatus) {\n case IModelJsNative.ECPresentationStatus.InvalidArgument:\n return PresentationStatus.InvalidArgument;\n case IModelJsNative.ECPresentationStatus.ResultSetTooLarge:\n return PresentationStatus.ResultSetTooLarge;\n case IModelJsNative.ECPresentationStatus.Canceled:\n return PresentationStatus.Canceled;\n }\n return PresentationStatus.Error;\n}\n\n/** @internal */\nexport const createDefaultNativePlatform = (props: DefaultNativePlatformProps): new () => NativePlatformDefinition => {\n // note the implementation is constructed here to make PresentationManager\n // usable without loading the actual addon (if addon is set to something other)\n return class implements NativePlatformDefinition {\n private _nativeAddon: IModelJsNative.ECPresentationManager;\n public constructor() {\n const cacheConfig = props.cacheConfig ?? { mode: HierarchyCacheMode.Disk, directory: \"\" };\n const defaultFormats = props.defaultFormats ? this.getSerializedDefaultFormatsMap(props.defaultFormats) : {};\n this._nativeAddon = new IModelNative.platform.ECPresentationManager({ ...props, cacheConfig, defaultFormats });\n }\n private getSerializedDefaultFormatsMap(defaultMap: NativePresentationDefaultUnitFormats) {\n const res: {\n [phenomenon: string]: Array<{\n unitSystems: string[];\n serializedFormat: string;\n }>;\n } = {};\n Object.entries(defaultMap).forEach(([phenomenon, formats]) => {\n res[phenomenon] = formats.map((value) => ({ unitSystems: value.unitSystems, serializedFormat: JSON.stringify(value.format) }));\n });\n return res;\n }\n private createSuccessResponse<T>(response: IModelJsNative.ECPresentationManagerResponse<T>): NativePlatformResponse<T> {\n const retValue: NativePlatformResponse<T> = { result: response.result! };\n if (response.diagnostics) {\n retValue.diagnostics = response.diagnostics;\n }\n return retValue;\n }\n private handleResult<T>(response: IModelJsNative.ECPresentationManagerResponse<T>): NativePlatformResponse<T> {\n if (response.error) {\n throw new PresentationNativePlatformResponseError(response);\n }\n return this.createSuccessResponse(response);\n }\n private handleConvertedResult<TSource, TTarget>(\n response: IModelJsNative.ECPresentationManagerResponse<TSource>,\n conv: (s: TSource) => TTarget,\n ): NativePlatformResponse<TTarget> {\n return this.handleResult<TTarget>(\n (response.result ? { ...response, result: conv(response.result) } : response) as IModelJsNative.ECPresentationManagerResponse<TTarget>,\n );\n }\n private handleVoidResult(response: IModelJsNative.ECPresentationManagerResponse<void>): NativePlatformResponse<void> {\n if (response.error) {\n throw new PresentationNativePlatformResponseError(response);\n }\n return this.createSuccessResponse(response);\n }\n public [Symbol.dispose]() {\n this._nativeAddon.dispose();\n }\n public async forceLoadSchemas(db: any): Promise<NativePlatformResponse<void>> {\n const response = await this._nativeAddon.forceLoadSchemas(db);\n if (response.error) {\n throw new PresentationError(PresentationStatus.Error, response.error.message);\n }\n return this.createSuccessResponse(response);\n }\n public setupRulesetDirectories(directories: string[]) {\n return this.handleVoidResult(this._nativeAddon.setupRulesetDirectories(directories));\n }\n public setupSupplementalRulesetDirectories(directories: string[]) {\n return this.handleVoidResult(this._nativeAddon.setupSupplementalRulesetDirectories(directories));\n }\n public getImodelAddon(imodel: IModelDb): any {\n if (!imodel.isOpen) {\n throw new PresentationError(PresentationStatus.InvalidArgument, \"imodel\");\n }\n return imodel[_nativeDb];\n }\n public registerSupplementalRuleset(serializedRulesetJson: string) {\n return this.handleResult<string>(this._nativeAddon.registerSupplementalRuleset(serializedRulesetJson));\n }\n public getRulesets(rulesetId: string) {\n return this.handleResult<string>(this._nativeAddon.getRulesets(rulesetId));\n }\n public addRuleset(serializedRulesetJson: string) {\n return this.handleResult<string>(this._nativeAddon.addRuleset(serializedRulesetJson));\n }\n public removeRuleset(rulesetId: string, hash: string) {\n return this.handleResult<boolean>(this._nativeAddon.removeRuleset(rulesetId, hash));\n }\n public clearRulesets() {\n return this.handleVoidResult(this._nativeAddon.clearRulesets());\n }\n public async handleRequest(db: any, options: string, cancelEvent?: BeEvent<() => void>) {\n const response = this._nativeAddon.handleRequest(db, options);\n cancelEvent?.addOnce(() => response.cancel());\n const result = await response.result;\n return this.handleConvertedResult<Buffer, string>(result, (buffer) => buffer.toString());\n }\n public getRulesetVariableValue(rulesetId: string, variableId: string, type: VariableValueTypes) {\n return this.handleResult<VariableValue>(this._nativeAddon.getRulesetVariableValue(rulesetId, variableId, type));\n }\n public setRulesetVariableValue(rulesetId: string, variableId: string, type: VariableValueTypes, value: VariableValueJSON) {\n return this.handleVoidResult(this._nativeAddon.setRulesetVariableValue(rulesetId, variableId, type, value));\n }\n public unsetRulesetVariableValue(rulesetId: string, variableId: string) {\n return this.handleVoidResult(this._nativeAddon.unsetRulesetVariableValue(rulesetId, variableId));\n }\n };\n};\n"]}
1
+ {"version":3,"file":"NativePlatform.js","sourceRoot":"","sources":["../../../src/presentation-backend/NativePlatform.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { _nativeDb, IModelDb, IModelJsNative, IModelNative } from \"@itwin/core-backend\";\r\nimport { assert, BeEvent } from \"@itwin/core-bentley\";\r\nimport { FormatProps } from \"@itwin/core-quantity\";\r\nimport {\r\n DiagnosticsScopeLogs,\r\n NodeKey,\r\n PresentationError,\r\n PresentationStatus,\r\n UpdateInfo,\r\n VariableValue,\r\n VariableValueJSON,\r\n VariableValueTypes,\r\n} from \"@itwin/presentation-common\";\r\nimport { HierarchyCacheMode } from \"./PresentationManager.js\";\r\n\r\n/** @internal */\r\nexport enum NativePlatformRequestTypes {\r\n GetRootNodes = \"GetRootNodes\",\r\n GetRootNodesCount = \"GetRootNodesCount\",\r\n GetChildren = \"GetChildren\",\r\n GetChildrenCount = \"GetChildrenCount\",\r\n GetNodesDescriptor = \"GetNodesDescriptor\",\r\n GetNodePaths = \"GetNodePaths\",\r\n GetFilteredNodePaths = \"GetFilteredNodePaths\",\r\n GetContentSources = \"GetContentSources\",\r\n GetContentDescriptor = \"GetContentDescriptor\",\r\n GetContentSetSize = \"GetContentSetSize\",\r\n GetContentSet = \"GetContentSet\",\r\n GetContent = \"GetContent\",\r\n GetPagedDistinctValues = \"GetPagedDistinctValues\",\r\n GetDisplayLabel = \"GetDisplayLabel\",\r\n CompareHierarchies = \"CompareHierarchies\",\r\n}\r\n\r\n/**\r\n * Enumeration of unit systems supported by native presentation manager.\r\n * @internal\r\n */\r\nexport enum NativePresentationUnitSystem {\r\n Metric = \"metric\",\r\n BritishImperial = \"british-imperial\",\r\n UsCustomary = \"us-customary\",\r\n UsSurvey = \"us-survey\",\r\n}\r\n\r\n/** @internal */\r\nexport interface NativePresentationDefaultUnitFormats {\r\n [phenomenon: string]: Array<{\r\n unitSystems: NativePresentationUnitSystem[];\r\n format: FormatProps;\r\n }>;\r\n}\r\n\r\n/** @internal */\r\nexport interface NativePresentationKeySetJSON {\r\n instanceKeys: Array<[string, string[]]>;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n nodeKeys: NodeKey[];\r\n}\r\n\r\n/** @internal */\r\nexport interface NativePlatformResponse<TResult> {\r\n result: TResult;\r\n diagnostics?: DiagnosticsScopeLogs;\r\n}\r\n\r\n/** @internal */\r\nexport interface NativePlatformDefinition extends Disposable {\r\n getImodelAddon(imodel: IModelDb): any;\r\n\r\n setupRulesetDirectories(directories: string[]): NativePlatformResponse<void>;\r\n setupSupplementalRulesetDirectories(directories: string[]): NativePlatformResponse<void>;\r\n\r\n forceLoadSchemas(db: any): Promise<NativePlatformResponse<void>>;\r\n\r\n registerSupplementalRuleset(serializedRulesetJson: string): NativePlatformResponse<string>;\r\n getRulesets(rulesetId: string): NativePlatformResponse<string>;\r\n addRuleset(serializedRulesetJson: string): NativePlatformResponse<string>;\r\n removeRuleset(rulesetId: string, hash: string): NativePlatformResponse<boolean>;\r\n clearRulesets(): NativePlatformResponse<void>;\r\n\r\n handleRequest(db: any, options: string, cancelEvent?: BeEvent<() => void>): Promise<NativePlatformResponse<string>>;\r\n\r\n getRulesetVariableValue(rulesetId: string, variableId: string, type: VariableValueTypes): NativePlatformResponse<VariableValue>;\r\n setRulesetVariableValue(rulesetId: string, variableId: string, type: VariableValueTypes, value: VariableValue): NativePlatformResponse<void>;\r\n unsetRulesetVariableValue(rulesetId: string, variableId: string): NativePlatformResponse<void>;\r\n}\r\n\r\n/** @internal */\r\nexport interface DefaultNativePlatformProps {\r\n id: string;\r\n taskAllocationsMap: { [priority: number]: number };\r\n updateCallback: (info: UpdateInfo | undefined) => void;\r\n cacheConfig?: IModelJsNative.ECPresentationHierarchyCacheConfig;\r\n contentCacheSize?: number;\r\n workerConnectionCacheSize?: number;\r\n defaultFormats?: NativePresentationDefaultUnitFormats;\r\n useMmap?: boolean | number;\r\n}\r\n\r\n/** @internal */\r\nexport class PresentationNativePlatformResponseError extends PresentationError {\r\n public readonly diagnostics?: DiagnosticsScopeLogs;\r\n public constructor(errorResponse: IModelJsNative.ECPresentationManagerResponse<unknown>) {\r\n assert(!!errorResponse.error);\r\n super(getPresentationStatusFromNativeResponseStatus(errorResponse.error.status), errorResponse.error.message);\r\n this.diagnostics = errorResponse.diagnostics;\r\n }\r\n}\r\n\r\nfunction getPresentationStatusFromNativeResponseStatus(nativeResponseStatus: IModelJsNative.ECPresentationStatus): PresentationStatus {\r\n switch (nativeResponseStatus) {\r\n case IModelJsNative.ECPresentationStatus.InvalidArgument:\r\n return PresentationStatus.InvalidArgument;\r\n case IModelJsNative.ECPresentationStatus.ResultSetTooLarge:\r\n return PresentationStatus.ResultSetTooLarge;\r\n case IModelJsNative.ECPresentationStatus.Canceled:\r\n return PresentationStatus.Canceled;\r\n }\r\n return PresentationStatus.Error;\r\n}\r\n\r\n/** @internal */\r\nexport const createDefaultNativePlatform = (props: DefaultNativePlatformProps): new () => NativePlatformDefinition => {\r\n // note the implementation is constructed here to make PresentationManager\r\n // usable without loading the actual addon (if addon is set to something other)\r\n return class implements NativePlatformDefinition {\r\n private _nativeAddon: IModelJsNative.ECPresentationManager;\r\n public constructor() {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n const cacheConfig = props.cacheConfig ?? { mode: HierarchyCacheMode.Disk, directory: \"\" };\r\n const defaultFormats = props.defaultFormats ? this.getSerializedDefaultFormatsMap(props.defaultFormats) : {};\r\n this._nativeAddon = new IModelNative.platform.ECPresentationManager({ ...props, cacheConfig, defaultFormats });\r\n }\r\n private getSerializedDefaultFormatsMap(defaultMap: NativePresentationDefaultUnitFormats) {\r\n const res: {\r\n [phenomenon: string]: Array<{\r\n unitSystems: string[];\r\n serializedFormat: string;\r\n }>;\r\n } = {};\r\n Object.entries(defaultMap).forEach(([phenomenon, formats]) => {\r\n res[phenomenon] = formats.map((value) => ({ unitSystems: value.unitSystems, serializedFormat: JSON.stringify(value.format) }));\r\n });\r\n return res;\r\n }\r\n private createSuccessResponse<T>(response: IModelJsNative.ECPresentationManagerResponse<T>): NativePlatformResponse<T> {\r\n const retValue: NativePlatformResponse<T> = { result: response.result! };\r\n if (response.diagnostics) {\r\n retValue.diagnostics = response.diagnostics;\r\n }\r\n return retValue;\r\n }\r\n private handleResult<T>(response: IModelJsNative.ECPresentationManagerResponse<T>): NativePlatformResponse<T> {\r\n if (response.error) {\r\n throw new PresentationNativePlatformResponseError(response);\r\n }\r\n return this.createSuccessResponse(response);\r\n }\r\n private handleConvertedResult<TSource, TTarget>(\r\n response: IModelJsNative.ECPresentationManagerResponse<TSource>,\r\n conv: (s: TSource) => TTarget,\r\n ): NativePlatformResponse<TTarget> {\r\n return this.handleResult<TTarget>(\r\n (response.result ? { ...response, result: conv(response.result) } : response) as IModelJsNative.ECPresentationManagerResponse<TTarget>,\r\n );\r\n }\r\n private handleVoidResult(response: IModelJsNative.ECPresentationManagerResponse<void>): NativePlatformResponse<void> {\r\n if (response.error) {\r\n throw new PresentationNativePlatformResponseError(response);\r\n }\r\n return this.createSuccessResponse(response);\r\n }\r\n public [Symbol.dispose]() {\r\n this._nativeAddon.dispose();\r\n }\r\n public async forceLoadSchemas(db: any): Promise<NativePlatformResponse<void>> {\r\n const response = await this._nativeAddon.forceLoadSchemas(db);\r\n if (response.error) {\r\n throw new PresentationError(PresentationStatus.Error, response.error.message);\r\n }\r\n return this.createSuccessResponse(response);\r\n }\r\n public setupRulesetDirectories(directories: string[]) {\r\n return this.handleVoidResult(this._nativeAddon.setupRulesetDirectories(directories));\r\n }\r\n public setupSupplementalRulesetDirectories(directories: string[]) {\r\n return this.handleVoidResult(this._nativeAddon.setupSupplementalRulesetDirectories(directories));\r\n }\r\n public getImodelAddon(imodel: IModelDb): any {\r\n if (!imodel.isOpen) {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, \"imodel\");\r\n }\r\n return imodel[_nativeDb];\r\n }\r\n public registerSupplementalRuleset(serializedRulesetJson: string) {\r\n return this.handleResult<string>(this._nativeAddon.registerSupplementalRuleset(serializedRulesetJson));\r\n }\r\n public getRulesets(rulesetId: string) {\r\n return this.handleResult<string>(this._nativeAddon.getRulesets(rulesetId));\r\n }\r\n public addRuleset(serializedRulesetJson: string) {\r\n return this.handleResult<string>(this._nativeAddon.addRuleset(serializedRulesetJson));\r\n }\r\n public removeRuleset(rulesetId: string, hash: string) {\r\n return this.handleResult<boolean>(this._nativeAddon.removeRuleset(rulesetId, hash));\r\n }\r\n public clearRulesets() {\r\n return this.handleVoidResult(this._nativeAddon.clearRulesets());\r\n }\r\n public async handleRequest(db: any, options: string, cancelEvent?: BeEvent<() => void>) {\r\n const response = this._nativeAddon.handleRequest(db, options);\r\n cancelEvent?.addOnce(() => response.cancel());\r\n const result = await response.result;\r\n return this.handleConvertedResult<Buffer, string>(result, (buffer) => buffer.toString());\r\n }\r\n public getRulesetVariableValue(rulesetId: string, variableId: string, type: VariableValueTypes) {\r\n return this.handleResult<VariableValue>(this._nativeAddon.getRulesetVariableValue(rulesetId, variableId, type));\r\n }\r\n public setRulesetVariableValue(rulesetId: string, variableId: string, type: VariableValueTypes, value: VariableValueJSON) {\r\n return this.handleVoidResult(this._nativeAddon.setRulesetVariableValue(rulesetId, variableId, type, value));\r\n }\r\n public unsetRulesetVariableValue(rulesetId: string, variableId: string) {\r\n return this.handleVoidResult(this._nativeAddon.unsetRulesetVariableValue(rulesetId, variableId));\r\n }\r\n };\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Presentation.js","sourceRoot":"","sources":["../../../src/presentation-backend/Presentation.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/** @packageDocumentation\n * @module Core\n */\n\nimport { BriefcaseDb, IModelHost, IpcHost } from \"@itwin/core-backend\";\nimport { DisposeFunc, Logger } from \"@itwin/core-bentley\";\nimport { RpcManager } from \"@itwin/core-common\";\nimport { PresentationError, PresentationRpcInterface, PresentationStatus } from \"@itwin/presentation-common\";\nimport { PresentationBackendLoggerCategory } from \"./BackendLoggerCategory.js\";\nimport { PresentationIpcHandler } from \"./PresentationIpcHandler.js\";\nimport { PresentationManager, PresentationManagerProps } from \"./PresentationManager.js\";\nimport { PresentationRpcImpl } from \"./PresentationRpcImpl.js\";\nimport { FactoryBasedTemporaryStorage } from \"./TemporaryStorage.js\";\nimport { _presentation_manager_detail } from \"./InternalSymbols.js\";\n\n/**\n * Properties that can be used to configure [[Presentation]] API.\n * @public\n */\nexport interface PresentationProps extends Omit<PresentationManagerProps, \"enableSchemasPreload\"> {\n /**\n * Time in milliseconds after which the request will timeout.\n */\n requestTimeout?: number;\n\n /**\n * Should schemas preloading be enabled. If true, [[Presentation]] library listens\n * for `BriefcaseDb.onOpened` event and force pre-loads all ECSchemas.\n */\n enableSchemasPreload?: boolean;\n\n /**\n * How much time should an unused client manager be stored in memory\n * before it's disposed.\n */\n unusedClientLifetime?: number;\n}\n\ninterface PresentationInternalProps {\n /**\n * Factory method for creating separate managers for each client\n */\n clientManagerFactory?: (clientId: string, props: PresentationManagerProps) => PresentationManager;\n}\n\n/**\n * Props for initializing the [[Presentation]] library for using multiple [[PresentationManager]]\n * instances, one for each frontend.\n *\n * @public\n * @deprecated in 4.8 - will not be removed until after 2026-06-13. Use [[PresentationProps]] instead.\n */\nexport type MultiManagerPresentationProps = PresentationProps;\n\n/**\n * Base props for initializing the [[Presentation]] library.\n *\n * @public\n * @deprecated in 4.8 - will not be removed until after 2026-06-13. Use [[PresentationProps]] instead.\n */\nexport type PresentationPropsBase = PresentationProps;\n\n/**\n * Props for initializing the [[Presentation]] library with ability to use a single\n * [[PresentationManager]] instance for handling all requests.\n *\n * @public\n * @deprecated in 4.8 - will not be removed until after 2026-06-13. Use [[PresentationProps]] instead.\n */\nexport type SingleManagerPresentationProps = Omit<PresentationProps, \"unusedClientLifetime\">;\n\ninterface ClientStoreItem {\n manager: PresentationManager;\n}\n\n/**\n * Static class used to statically set up Presentation library for the backend.\n * Basically what it does is:\n * - Register a RPC implementation\n * - Create a singleton [[PresentationManager]] instance\n * - Subscribe for [IModelHost.onBeforeShutdown]($core-backend) event and terminate\n * the presentation manager when that happens.\n *\n * @public\n */\nexport class Presentation {\n private static _initProps: (PresentationProps & PresentationInternalProps) | undefined;\n private static _clientsStorage: FactoryBasedTemporaryStorage<ClientStoreItem> | undefined;\n private static _disposeIpcHandler: DisposeFunc | undefined;\n private static _shutdownListener: DisposeFunc | undefined;\n private static _disposeIModelOpenedListener: DisposeFunc | undefined;\n private static _rpcImpl: PresentationRpcImpl | undefined;\n\n /* c8 ignore next */\n private constructor() {}\n\n /** Properties used to initialize the presentation framework */\n public static get initProps(): PresentationProps | undefined {\n return this._initProps;\n }\n\n /**\n * Initializes Presentation library for the backend.\n *\n * See [Setting up iTwin.js Presentation library documentation page]($docs/presentation/setup/index.md#backend) for an example.\n *\n * **Important:** The method should be called after a call to [IModelHost.startup]($core-backend)\n *\n * @param props Optional properties for [[PresentationManager]]\n */\n public static initialize(props?: PresentationProps): void {\n this._initProps = props || {};\n this._shutdownListener = IModelHost.onBeforeShutdown.addListener(() => Presentation.terminate());\n\n this._rpcImpl = new PresentationRpcImpl({\n requestTimeout: this._initProps.requestTimeout,\n });\n RpcManager.registerImpl(PresentationRpcInterface, PresentationRpcImpl);\n RpcManager.supplyImplInstance(PresentationRpcInterface, this._rpcImpl);\n\n if (IpcHost.isValid) {\n this._disposeIpcHandler = PresentationIpcHandler.register();\n }\n\n this._clientsStorage = new FactoryBasedTemporaryStorage<ClientStoreItem>({\n factory: this.createClientManager.bind(this),\n cleanupHandler: (_id, storeItem) => this.disposeClientManager(_id, storeItem),\n // cleanup unused managers every minute\n cleanupInterval: 60 * 1000,\n // by default, manager is disposed after 1 hour of being unused\n unusedValueLifetime: this._initProps.unusedClientLifetime ?? 60 * 60 * 1000,\n // add some logging\n /* c8 ignore next 5 */\n onDisposedSingle: (id: string) =>\n Logger.logInfo(\n PresentationBackendLoggerCategory.PresentationManager,\n `Disposed PresentationManager instance with ID: ${id}. Total instances: ${this._clientsStorage!.values.length}.`,\n ),\n /* c8 ignore next */\n onDisposedAll: () => Logger.logInfo(PresentationBackendLoggerCategory.PresentationManager, `Disposed all PresentationManager instances.`),\n });\n\n if (this._initProps.enableSchemasPreload) {\n this._disposeIModelOpenedListener = BriefcaseDb.onOpened.addListener(this.onIModelOpened);\n }\n }\n\n /**\n * Terminates Presentation. Consumers don't need to call this as it's automatically\n * called on [IModelHost.onBeforeShutdown]($core-backend) event.\n */\n public static terminate(): void {\n if (this._clientsStorage) {\n this._clientsStorage[Symbol.dispose]();\n this._clientsStorage = undefined;\n }\n if (this._disposeIModelOpenedListener) {\n this._disposeIModelOpenedListener();\n this._disposeIModelOpenedListener = undefined;\n }\n if (this._shutdownListener) {\n this._shutdownListener();\n this._shutdownListener = undefined;\n }\n RpcManager.unregisterImpl(PresentationRpcInterface);\n if (this._rpcImpl) {\n this._rpcImpl[Symbol.dispose]();\n this._rpcImpl = undefined;\n }\n if (this._disposeIpcHandler) {\n this._disposeIpcHandler();\n }\n this._initProps = undefined;\n }\n\n private static createClientManager(clientId: string, onManagerUsed: () => void): ClientStoreItem {\n const manager =\n Presentation._initProps && Presentation._initProps.clientManagerFactory\n ? Presentation._initProps.clientManagerFactory(clientId, Presentation._initProps)\n : new PresentationManager({\n ...Presentation._initProps,\n // @ts-expect-error internal prop\n id: clientId,\n });\n manager.onUsed.addListener(onManagerUsed);\n Logger.logInfo(\n PresentationBackendLoggerCategory.PresentationManager,\n `Created a PresentationManager instance with ID: ${clientId}. Total instances: ${this._clientsStorage!.values.length}.`,\n );\n return { manager };\n }\n\n private static disposeClientManager(_id: string, storeItem: ClientStoreItem) {\n storeItem.manager[Symbol.dispose]();\n }\n\n /**\n * Get an instance of [[PresentationManager]] for specific client\n * @param clientId ID of the client requesting presentation data. If no\n * ID is provided, the default [[PresentationManager]] is returned.\n */\n public static getManager(clientId?: string): PresentationManager {\n if (this._clientsStorage) {\n return this._clientsStorage.getValue(clientId || \"\").manager;\n }\n throw new PresentationError(PresentationStatus.NotInitialized, \"Presentation must be first initialized by calling Presentation.initialize\");\n }\n\n /**\n * Get the time in milliseconds that backend should respond in .\n */\n public static getRequestTimeout(): number {\n if (this._rpcImpl === undefined) {\n throw new PresentationError(PresentationStatus.NotInitialized, \"Presentation must be first initialized by calling Presentation.initialize\");\n }\n return this._rpcImpl.requestTimeout;\n }\n\n private static onIModelOpened = (imodel: BriefcaseDb) => {\n const manager = this.getManager();\n const imodelAddon = manager[_presentation_manager_detail].getNativePlatform().getImodelAddon(imodel);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n manager[_presentation_manager_detail].getNativePlatform().forceLoadSchemas(imodelAddon);\n };\n}\n"]}
1
+ {"version":3,"file":"Presentation.js","sourceRoot":"","sources":["../../../src/presentation-backend/Presentation.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,sDAAuE;AACvE,sDAA0D;AAC1D,oDAAgD;AAChD,oEAA6G;AAC7G,yEAA+E;AAC/E,2EAAqE;AACrE,qEAAyF;AACzF,qEAA+D;AAC/D,+DAAqE;AACrE,6DAAoE;AA8DpE;;;;;;;;;GASG;AACH,MAAa,YAAY;IACf,MAAM,CAAC,UAAU,CAA8D;IAC/E,MAAM,CAAC,eAAe,CAA4D;IAClF,MAAM,CAAC,kBAAkB,CAA0B;IACnD,MAAM,CAAC,iBAAiB,CAA0B;IAClD,MAAM,CAAC,4BAA4B,CAA0B;IAC7D,MAAM,CAAC,QAAQ,CAAkC;IAEzD,oBAAoB;IACpB,gBAAuB,CAAC;IAExB,+DAA+D;IACxD,MAAM,KAAK,SAAS;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,UAAU,CAAC,KAAyB;QAChD,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,yBAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;QAEjG,IAAI,CAAC,QAAQ,GAAG,IAAI,4CAAmB,CAAC;YACtC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;SAC/C,CAAC,CAAC;QACH,wBAAU,CAAC,YAAY,CAAC,8CAAwB,EAAE,4CAAmB,CAAC,CAAC;QACvE,wBAAU,CAAC,kBAAkB,CAAC,8CAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvE,IAAI,sBAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,GAAG,kDAAsB,CAAC,QAAQ,EAAE,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,kDAA4B,CAAkB;YACvE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,cAAc,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC;YAC7E,uCAAuC;YACvC,eAAe,EAAE,EAAE,GAAG,IAAI;YAC1B,+DAA+D;YAC/D,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,oBAAoB,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;YAC3E,mBAAmB;YACnB,sBAAsB;YACtB,gBAAgB,EAAE,CAAC,EAAU,EAAE,EAAE,CAC/B,qBAAM,CAAC,OAAO,CACZ,4DAAiC,CAAC,mBAAmB,EACrD,kDAAkD,EAAE,sBAAsB,IAAI,CAAC,eAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CACjH;YACH,oBAAoB;YACpB,aAAa,EAAE,GAAG,EAAE,CAAC,qBAAM,CAAC,OAAO,CAAC,4DAAiC,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1I,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;YACzC,IAAI,CAAC,4BAA4B,GAAG,0BAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,SAAS;QACrB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACtC,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC;QAChD,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACrC,CAAC;QACD,wBAAU,CAAC,cAAc,CAAC,8CAAwB,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,QAAgB,EAAE,aAAyB;QAC5E,MAAM,OAAO,GACX,YAAY,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU,CAAC,oBAAoB;YACrE,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC;YACjF,CAAC,CAAC,IAAI,4CAAmB,CAAC;gBACtB,GAAG,YAAY,CAAC,UAAU;gBAC1B,iCAAiC;gBACjC,EAAE,EAAE,QAAQ;aACb,CAAC,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC1C,qBAAM,CAAC,OAAO,CACZ,4DAAiC,CAAC,mBAAmB,EACrD,mDAAmD,QAAQ,sBAAsB,IAAI,CAAC,eAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CACxH,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,GAAW,EAAE,SAA0B;QACzE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,UAAU,CAAC,QAAiB;QACxC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,uCAAiB,CAAC,wCAAkB,CAAC,cAAc,EAAE,2EAA2E,CAAC,CAAC;IAC9I,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,uCAAiB,CAAC,wCAAkB,CAAC,cAAc,EAAE,2EAA2E,CAAC,CAAC;QAC9I,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;IACtC,CAAC;IAEO,MAAM,CAAC,cAAc,GAAG,CAAC,MAAmB,EAAE,EAAE;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,OAAO,CAAC,iDAA4B,CAAC,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrG,mEAAmE;QACnE,OAAO,CAAC,iDAA4B,CAAC,CAAC,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC1F,CAAC,CAAC;;AA1IJ,oCA2IC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { BriefcaseDb, IModelHost, IpcHost } from \"@itwin/core-backend\";\r\nimport { DisposeFunc, Logger } from \"@itwin/core-bentley\";\r\nimport { RpcManager } from \"@itwin/core-common\";\r\nimport { PresentationError, PresentationRpcInterface, PresentationStatus } from \"@itwin/presentation-common\";\r\nimport { PresentationBackendLoggerCategory } from \"./BackendLoggerCategory.js\";\r\nimport { PresentationIpcHandler } from \"./PresentationIpcHandler.js\";\r\nimport { PresentationManager, PresentationManagerProps } from \"./PresentationManager.js\";\r\nimport { PresentationRpcImpl } from \"./PresentationRpcImpl.js\";\r\nimport { FactoryBasedTemporaryStorage } from \"./TemporaryStorage.js\";\r\nimport { _presentation_manager_detail } from \"./InternalSymbols.js\";\r\n\r\n/**\r\n * Properties that can be used to configure [[Presentation]] API.\r\n * @public\r\n */\r\nexport interface PresentationProps extends Omit<PresentationManagerProps, \"enableSchemasPreload\"> {\r\n /**\r\n * Time in milliseconds after which the request will timeout.\r\n */\r\n requestTimeout?: number;\r\n\r\n /**\r\n * Should schemas preloading be enabled. If true, [[Presentation]] library listens\r\n * for `BriefcaseDb.onOpened` event and force pre-loads all ECSchemas.\r\n */\r\n enableSchemasPreload?: boolean;\r\n\r\n /**\r\n * How much time should an unused client manager be stored in memory\r\n * before it's disposed.\r\n */\r\n unusedClientLifetime?: number;\r\n}\r\n\r\ninterface PresentationInternalProps {\r\n /**\r\n * Factory method for creating separate managers for each client\r\n */\r\n clientManagerFactory?: (clientId: string, props: PresentationManagerProps) => PresentationManager;\r\n}\r\n\r\n/**\r\n * Props for initializing the [[Presentation]] library for using multiple [[PresentationManager]]\r\n * instances, one for each frontend.\r\n *\r\n * @public\r\n * @deprecated in 4.8 - will not be removed until after 2026-06-13. Use [[PresentationProps]] instead.\r\n */\r\nexport type MultiManagerPresentationProps = PresentationProps;\r\n\r\n/**\r\n * Base props for initializing the [[Presentation]] library.\r\n *\r\n * @public\r\n * @deprecated in 4.8 - will not be removed until after 2026-06-13. Use [[PresentationProps]] instead.\r\n */\r\nexport type PresentationPropsBase = PresentationProps;\r\n\r\n/**\r\n * Props for initializing the [[Presentation]] library with ability to use a single\r\n * [[PresentationManager]] instance for handling all requests.\r\n *\r\n * @public\r\n * @deprecated in 4.8 - will not be removed until after 2026-06-13. Use [[PresentationProps]] instead.\r\n */\r\nexport type SingleManagerPresentationProps = Omit<PresentationProps, \"unusedClientLifetime\">;\r\n\r\ninterface ClientStoreItem {\r\n manager: PresentationManager;\r\n}\r\n\r\n/**\r\n * Static class used to statically set up Presentation library for the backend.\r\n * Basically what it does is:\r\n * - Register a RPC implementation\r\n * - Create a singleton [[PresentationManager]] instance\r\n * - Subscribe for [IModelHost.onBeforeShutdown]($core-backend) event and terminate\r\n * the presentation manager when that happens.\r\n *\r\n * @public\r\n */\r\nexport class Presentation {\r\n private static _initProps: (PresentationProps & PresentationInternalProps) | undefined;\r\n private static _clientsStorage: FactoryBasedTemporaryStorage<ClientStoreItem> | undefined;\r\n private static _disposeIpcHandler: DisposeFunc | undefined;\r\n private static _shutdownListener: DisposeFunc | undefined;\r\n private static _disposeIModelOpenedListener: DisposeFunc | undefined;\r\n private static _rpcImpl: PresentationRpcImpl | undefined;\r\n\r\n /* c8 ignore next */\r\n private constructor() {}\r\n\r\n /** Properties used to initialize the presentation framework */\r\n public static get initProps(): PresentationProps | undefined {\r\n return this._initProps;\r\n }\r\n\r\n /**\r\n * Initializes Presentation library for the backend.\r\n *\r\n * See [Setting up iTwin.js Presentation library documentation page]($docs/presentation/setup/index.md#backend) for an example.\r\n *\r\n * **Important:** The method should be called after a call to [IModelHost.startup]($core-backend)\r\n *\r\n * @param props Optional properties for [[PresentationManager]]\r\n */\r\n public static initialize(props?: PresentationProps): void {\r\n this._initProps = props || {};\r\n this._shutdownListener = IModelHost.onBeforeShutdown.addListener(() => Presentation.terminate());\r\n\r\n this._rpcImpl = new PresentationRpcImpl({\r\n requestTimeout: this._initProps.requestTimeout,\r\n });\r\n RpcManager.registerImpl(PresentationRpcInterface, PresentationRpcImpl);\r\n RpcManager.supplyImplInstance(PresentationRpcInterface, this._rpcImpl);\r\n\r\n if (IpcHost.isValid) {\r\n this._disposeIpcHandler = PresentationIpcHandler.register();\r\n }\r\n\r\n this._clientsStorage = new FactoryBasedTemporaryStorage<ClientStoreItem>({\r\n factory: this.createClientManager.bind(this),\r\n cleanupHandler: (_id, storeItem) => this.disposeClientManager(_id, storeItem),\r\n // cleanup unused managers every minute\r\n cleanupInterval: 60 * 1000,\r\n // by default, manager is disposed after 1 hour of being unused\r\n unusedValueLifetime: this._initProps.unusedClientLifetime ?? 60 * 60 * 1000,\r\n // add some logging\r\n /* c8 ignore next 5 */\r\n onDisposedSingle: (id: string) =>\r\n Logger.logInfo(\r\n PresentationBackendLoggerCategory.PresentationManager,\r\n `Disposed PresentationManager instance with ID: ${id}. Total instances: ${this._clientsStorage!.values.length}.`,\r\n ),\r\n /* c8 ignore next */\r\n onDisposedAll: () => Logger.logInfo(PresentationBackendLoggerCategory.PresentationManager, `Disposed all PresentationManager instances.`),\r\n });\r\n\r\n if (this._initProps.enableSchemasPreload) {\r\n this._disposeIModelOpenedListener = BriefcaseDb.onOpened.addListener(this.onIModelOpened);\r\n }\r\n }\r\n\r\n /**\r\n * Terminates Presentation. Consumers don't need to call this as it's automatically\r\n * called on [IModelHost.onBeforeShutdown]($core-backend) event.\r\n */\r\n public static terminate(): void {\r\n if (this._clientsStorage) {\r\n this._clientsStorage[Symbol.dispose]();\r\n this._clientsStorage = undefined;\r\n }\r\n if (this._disposeIModelOpenedListener) {\r\n this._disposeIModelOpenedListener();\r\n this._disposeIModelOpenedListener = undefined;\r\n }\r\n if (this._shutdownListener) {\r\n this._shutdownListener();\r\n this._shutdownListener = undefined;\r\n }\r\n RpcManager.unregisterImpl(PresentationRpcInterface);\r\n if (this._rpcImpl) {\r\n this._rpcImpl[Symbol.dispose]();\r\n this._rpcImpl = undefined;\r\n }\r\n if (this._disposeIpcHandler) {\r\n this._disposeIpcHandler();\r\n }\r\n this._initProps = undefined;\r\n }\r\n\r\n private static createClientManager(clientId: string, onManagerUsed: () => void): ClientStoreItem {\r\n const manager =\r\n Presentation._initProps && Presentation._initProps.clientManagerFactory\r\n ? Presentation._initProps.clientManagerFactory(clientId, Presentation._initProps)\r\n : new PresentationManager({\r\n ...Presentation._initProps,\r\n // @ts-expect-error internal prop\r\n id: clientId,\r\n });\r\n manager.onUsed.addListener(onManagerUsed);\r\n Logger.logInfo(\r\n PresentationBackendLoggerCategory.PresentationManager,\r\n `Created a PresentationManager instance with ID: ${clientId}. Total instances: ${this._clientsStorage!.values.length}.`,\r\n );\r\n return { manager };\r\n }\r\n\r\n private static disposeClientManager(_id: string, storeItem: ClientStoreItem) {\r\n storeItem.manager[Symbol.dispose]();\r\n }\r\n\r\n /**\r\n * Get an instance of [[PresentationManager]] for specific client\r\n * @param clientId ID of the client requesting presentation data. If no\r\n * ID is provided, the default [[PresentationManager]] is returned.\r\n */\r\n public static getManager(clientId?: string): PresentationManager {\r\n if (this._clientsStorage) {\r\n return this._clientsStorage.getValue(clientId || \"\").manager;\r\n }\r\n throw new PresentationError(PresentationStatus.NotInitialized, \"Presentation must be first initialized by calling Presentation.initialize\");\r\n }\r\n\r\n /**\r\n * Get the time in milliseconds that backend should respond in .\r\n */\r\n public static getRequestTimeout(): number {\r\n if (this._rpcImpl === undefined) {\r\n throw new PresentationError(PresentationStatus.NotInitialized, \"Presentation must be first initialized by calling Presentation.initialize\");\r\n }\r\n return this._rpcImpl.requestTimeout;\r\n }\r\n\r\n private static onIModelOpened = (imodel: BriefcaseDb) => {\r\n const manager = this.getManager();\r\n const imodelAddon = manager[_presentation_manager_detail].getNativePlatform().getImodelAddon(imodel);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n manager[_presentation_manager_detail].getNativePlatform().forceLoadSchemas(imodelAddon);\r\n };\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationIpcHandler.js","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationIpcHandler.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,sDAAiD;AACjD,oEAA6D;AAC7D,kEAA8G;AAC9G,uDAAiD;AAEjD,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,yBAAU;IAC7C,WAAW,GAAG,wCAA6B,CAAC;IAE5C,KAAK,CAAC,kBAAkB,CAAC,MAAqE;QACnG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACjD,MAAM,cAAc,GAAG,qCAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1D,8BAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3H,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,MAAuE;QACvG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QACnD,8BAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtE,CAAC;CACF;AAbD,wDAaC","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/** @packageDocumentation\n * @module RPC\n */\n\nimport { IpcHandler } from \"@itwin/core-backend\";\nimport { RulesetVariable } from \"@itwin/presentation-common\";\nimport { PRESENTATION_IPC_CHANNEL_NAME, PresentationIpcInterface } from \"@itwin/presentation-common/internal\";\nimport { Presentation } from \"./Presentation.js\";\n\n/** @internal */\nexport class PresentationIpcHandler extends IpcHandler implements PresentationIpcInterface {\n public channelName = PRESENTATION_IPC_CHANNEL_NAME;\n\n public async setRulesetVariable(params: Parameters<PresentationIpcInterface[\"setRulesetVariable\"]>[0]): Promise<void> {\n const { clientId, rulesetId, variable } = params;\n const parsedVariable = RulesetVariable.fromJSON(variable);\n Presentation.getManager(clientId).vars(rulesetId).setValue(parsedVariable.id, parsedVariable.type, parsedVariable.value);\n }\n\n public async unsetRulesetVariable(params: Parameters<PresentationIpcInterface[\"unsetRulesetVariable\"]>[0]): Promise<void> {\n const { clientId, rulesetId, variableId } = params;\n Presentation.getManager(clientId).vars(rulesetId).unset(variableId);\n }\n}\n"]}
1
+ {"version":3,"file":"PresentationIpcHandler.js","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationIpcHandler.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,sDAAiD;AACjD,oEAA6D;AAC7D,kEAA8G;AAC9G,uDAAiD;AAEjD,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,yBAAU;IAC7C,WAAW,GAAG,wCAA6B,CAAC;IAE5C,KAAK,CAAC,kBAAkB,CAAC,MAAqE;QACnG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACjD,MAAM,cAAc,GAAG,qCAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1D,8BAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3H,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,MAAuE;QACvG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QACnD,8BAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtE,CAAC;CACF;AAbD,wDAaC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RPC\r\n */\r\n\r\nimport { IpcHandler } from \"@itwin/core-backend\";\r\nimport { RulesetVariable } from \"@itwin/presentation-common\";\r\nimport { PRESENTATION_IPC_CHANNEL_NAME, PresentationIpcInterface } from \"@itwin/presentation-common/internal\";\r\nimport { Presentation } from \"./Presentation.js\";\r\n\r\n/** @internal */\r\nexport class PresentationIpcHandler extends IpcHandler implements PresentationIpcInterface {\r\n public channelName = PRESENTATION_IPC_CHANNEL_NAME;\r\n\r\n public async setRulesetVariable(params: Parameters<PresentationIpcInterface[\"setRulesetVariable\"]>[0]): Promise<void> {\r\n const { clientId, rulesetId, variable } = params;\r\n const parsedVariable = RulesetVariable.fromJSON(variable);\r\n Presentation.getManager(clientId).vars(rulesetId).setValue(parsedVariable.id, parsedVariable.type, parsedVariable.value);\r\n }\r\n\r\n public async unsetRulesetVariable(params: Parameters<PresentationIpcInterface[\"unsetRulesetVariable\"]>[0]): Promise<void> {\r\n const { clientId, rulesetId, variableId } = params;\r\n Presentation.getManager(clientId).vars(rulesetId).unset(variableId);\r\n }\r\n}\r\n"]}
@@ -14,6 +14,8 @@ import { BackendDiagnosticsAttribute, BackendDiagnosticsOptions } from "./Utils.
14
14
  /**
15
15
  * Presentation hierarchy cache mode.
16
16
  * @public
17
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
18
+ * package for creating hierarchies.
17
19
  */
18
20
  export declare enum HierarchyCacheMode {
19
21
  /**
@@ -36,11 +38,15 @@ export declare enum HierarchyCacheMode {
36
38
  /**
37
39
  * Configuration for hierarchy cache.
38
40
  * @public
41
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
42
+ * package for creating hierarchies.
39
43
  */
40
44
  export type HierarchyCacheConfig = MemoryHierarchyCacheConfig | DiskHierarchyCacheConfig | HybridCacheConfig;
41
45
  /**
42
46
  * Base interface for all [[HierarchyCacheConfig]] implementations.
43
47
  * @public
48
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
49
+ * package for creating hierarchies.
44
50
  */
45
51
  export interface HierarchyCacheConfigBase {
46
52
  mode: HierarchyCacheMode;
@@ -50,6 +56,8 @@ export interface HierarchyCacheConfigBase {
50
56
  *
51
57
  * @see [Memory cache documentation page]($docs/presentation/advanced/Caching.md#memory-cache)
52
58
  * @public
59
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
60
+ * package for creating hierarchies.
53
61
  */
54
62
  export interface MemoryHierarchyCacheConfig extends HierarchyCacheConfigBase {
55
63
  mode: HierarchyCacheMode.Memory;
@@ -59,6 +67,8 @@ export interface MemoryHierarchyCacheConfig extends HierarchyCacheConfigBase {
59
67
  *
60
68
  * @see [Disk cache documentation page]($docs/presentation/advanced/Caching.md#disk-cache)
61
69
  * @public
70
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
71
+ * package for creating hierarchies.
62
72
  */
63
73
  export interface DiskHierarchyCacheConfig extends HierarchyCacheConfigBase {
64
74
  mode: HierarchyCacheMode.Disk;
@@ -82,6 +92,8 @@ export interface DiskHierarchyCacheConfig extends HierarchyCacheConfigBase {
82
92
  *
83
93
  * @see [Hybrid cache documentation page]($docs/presentation/advanced/Caching.md#hybrid-cache)
84
94
  * @public
95
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
96
+ * package for creating hierarchies.
85
97
  */
86
98
  export interface HybridCacheConfig extends HierarchyCacheConfigBase {
87
99
  mode: HierarchyCacheMode.Hybrid;
@@ -111,6 +123,8 @@ export interface PresentationManagerCachingConfig {
111
123
  * Hierarchies-related caching options.
112
124
  *
113
125
  * @see [Hierarchies cache documentation page]($docs/presentation/advanced/Caching.md#hierarchies-cache)
126
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
127
+ * package for creating hierarchies.
114
128
  */
115
129
  hierarchies?: HierarchyCacheConfig;
116
130
  /**
@@ -296,28 +310,38 @@ export declare class PresentationManager {
296
310
  /**
297
311
  * Retrieves nodes
298
312
  * @public
313
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
314
+ * package for creating hierarchies.
299
315
  */
300
316
  getNodes(requestOptions: WithCancelEvent<Prioritized<Paged<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>>> & BackendDiagnosticsAttribute): Promise<Node[]>;
301
317
  /**
302
318
  * Retrieves nodes count
303
319
  * @public
320
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
321
+ * package for creating hierarchies.
304
322
  */
305
323
  getNodesCount(requestOptions: WithCancelEvent<Prioritized<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute): Promise<number>;
306
324
  /**
307
325
  * Retrieves hierarchy level descriptor
308
326
  * @public
327
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
328
+ * package for creating hierarchies.
309
329
  */
310
330
  getNodesDescriptor(requestOptions: WithCancelEvent<Prioritized<HierarchyLevelDescriptorRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute): Promise<Descriptor | undefined>;
311
331
  /**
312
332
  * Retrieves paths from root nodes to children nodes according to specified instance key paths. Intersecting paths will be merged.
313
333
  * TODO: Return results in pages
314
334
  * @public
335
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
336
+ * package for creating hierarchies.
315
337
  */
316
338
  getNodePaths(requestOptions: WithCancelEvent<Prioritized<FilterByInstancePathsHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute): Promise<NodePathElement[]>;
317
339
  /**
318
340
  * Retrieves paths from root nodes to nodes containing filter text in their label.
319
341
  * TODO: Return results in pages
320
342
  * @public
343
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
344
+ * package for creating hierarchies.
321
345
  */
322
346
  getFilteredNodePaths(requestOptions: WithCancelEvent<Prioritized<FilterByTextHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute): Promise<NodePathElement[]>;
323
347
  /**
@@ -392,6 +416,8 @@ export declare class PresentationManager {
392
416
  /**
393
417
  * Compares two hierarchies specified in the request options
394
418
  * @public
419
+ * @deprecated in 5.2 - will not be removed until after 2026-10-01. Use the new [@itwin/presentation-hierarchies](https://github.com/iTwin/presentation/blob/master/packages/hierarchies/README.md)
420
+ * package for creating hierarchies.
395
421
  */
396
422
  compareHierarchies(requestOptions: HierarchyCompareOptions<IModelDb, NodeKey>): Promise<HierarchyCompareInfo>;
397
423
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationManager.d.ts","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PresentationManager.d.ts","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationManager.ts"],"names":[],"mappings":"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"}