@itwin/core-backend 3.4.0-dev.43 → 3.4.0-dev.44

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 (219) hide show
  1. package/lib/cjs/AliCloudStorageService.d.ts +17 -17
  2. package/lib/cjs/AliCloudStorageService.js +68 -68
  3. package/lib/cjs/AliCloudStorageService.js.map +1 -1
  4. package/lib/cjs/BackendHubAccess.d.ts +224 -224
  5. package/lib/cjs/BackendHubAccess.js +41 -41
  6. package/lib/cjs/BackendHubAccess.js.map +1 -1
  7. package/lib/cjs/BackendLoggerCategory.d.ts +82 -82
  8. package/lib/cjs/BackendLoggerCategory.js +90 -90
  9. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  10. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  11. package/lib/cjs/BisCoreSchema.js +60 -60
  12. package/lib/cjs/BisCoreSchema.js.map +1 -1
  13. package/lib/cjs/BriefcaseManager.d.ts +165 -165
  14. package/lib/cjs/BriefcaseManager.js +405 -405
  15. package/lib/cjs/BriefcaseManager.js.map +1 -1
  16. package/lib/cjs/Category.d.ts +153 -153
  17. package/lib/cjs/Category.js +243 -243
  18. package/lib/cjs/Category.js.map +1 -1
  19. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  20. package/lib/cjs/ChangeSummaryManager.js +445 -445
  21. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  22. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  23. package/lib/cjs/ChangedElementsDb.js +165 -165
  24. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  25. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  26. package/lib/cjs/ChangedElementsManager.js +88 -88
  27. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  28. package/lib/cjs/CheckpointManager.d.ts +122 -122
  29. package/lib/cjs/CheckpointManager.js +354 -354
  30. package/lib/cjs/CheckpointManager.js.map +1 -1
  31. package/lib/cjs/ClassRegistry.d.ts +71 -71
  32. package/lib/cjs/ClassRegistry.js +213 -213
  33. package/lib/cjs/ClassRegistry.js.map +1 -1
  34. package/lib/cjs/CloudSqlite.d.ts +328 -328
  35. package/lib/cjs/CloudSqlite.js +135 -135
  36. package/lib/cjs/CloudSqlite.js.map +1 -1
  37. package/lib/cjs/CloudStorageBackend.d.ts +46 -46
  38. package/lib/cjs/CloudStorageBackend.js +164 -164
  39. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  40. package/lib/cjs/CodeService.d.ts +391 -391
  41. package/lib/cjs/CodeService.js +61 -61
  42. package/lib/cjs/CodeService.js.map +1 -1
  43. package/lib/cjs/CodeSpecs.d.ts +50 -50
  44. package/lib/cjs/CodeSpecs.js +112 -112
  45. package/lib/cjs/CodeSpecs.js.map +1 -1
  46. package/lib/cjs/ConcurrentQuery.d.ts +11 -11
  47. package/lib/cjs/ConcurrentQuery.js +30 -30
  48. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  49. package/lib/cjs/CustomViewState3dCreator.d.ts +32 -32
  50. package/lib/cjs/CustomViewState3dCreator.js +99 -99
  51. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  52. package/lib/cjs/DevTools.d.ts +71 -71
  53. package/lib/cjs/DevTools.js +154 -154
  54. package/lib/cjs/DevTools.js.map +1 -1
  55. package/lib/cjs/DisplayStyle.d.ts +106 -106
  56. package/lib/cjs/DisplayStyle.js +256 -256
  57. package/lib/cjs/DisplayStyle.js.map +1 -1
  58. package/lib/cjs/ECDb.d.ts +191 -191
  59. package/lib/cjs/ECDb.js +350 -350
  60. package/lib/cjs/ECDb.js.map +1 -1
  61. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  62. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  63. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  64. package/lib/cjs/ECSqlStatement.d.ts +466 -466
  65. package/lib/cjs/ECSqlStatement.js +791 -791
  66. package/lib/cjs/ECSqlStatement.js.map +1 -1
  67. package/lib/cjs/Element.d.ts +1109 -1109
  68. package/lib/cjs/Element.js +1421 -1421
  69. package/lib/cjs/Element.js.map +1 -1
  70. package/lib/cjs/ElementAspect.d.ts +156 -156
  71. package/lib/cjs/ElementAspect.js +178 -178
  72. package/lib/cjs/ElementAspect.js.map +1 -1
  73. package/lib/cjs/ElementGraphics.d.ts +9 -9
  74. package/lib/cjs/ElementGraphics.js +41 -41
  75. package/lib/cjs/ElementGraphics.js.map +1 -1
  76. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  77. package/lib/cjs/ElementTreeWalker.js +409 -409
  78. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  79. package/lib/cjs/Entity.d.ts +76 -76
  80. package/lib/cjs/Entity.js +82 -82
  81. package/lib/cjs/Entity.js.map +1 -1
  82. package/lib/cjs/ExportGraphics.d.ts +317 -317
  83. package/lib/cjs/ExportGraphics.js +208 -208
  84. package/lib/cjs/ExportGraphics.js.map +1 -1
  85. package/lib/cjs/ExternalSource.d.ts +94 -94
  86. package/lib/cjs/ExternalSource.js +125 -125
  87. package/lib/cjs/ExternalSource.js.map +1 -1
  88. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  89. package/lib/cjs/GeoCoordConfig.js +82 -82
  90. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  91. package/lib/cjs/GeometrySummary.d.ts +4 -4
  92. package/lib/cjs/GeometrySummary.js +380 -380
  93. package/lib/cjs/GeometrySummary.js.map +1 -1
  94. package/lib/cjs/HubMock.d.ts +93 -93
  95. package/lib/cjs/HubMock.js +190 -190
  96. package/lib/cjs/HubMock.js.map +1 -1
  97. package/lib/cjs/IModelCloneContext.d.ts +85 -85
  98. package/lib/cjs/IModelCloneContext.js +150 -150
  99. package/lib/cjs/IModelCloneContext.js.map +1 -1
  100. package/lib/cjs/IModelDb.d.ts +1164 -1164
  101. package/lib/cjs/IModelDb.js +2321 -2321
  102. package/lib/cjs/IModelDb.js.map +1 -1
  103. package/lib/cjs/IModelHost.d.ts +347 -347
  104. package/lib/cjs/IModelHost.js +457 -457
  105. package/lib/cjs/IModelHost.js.map +1 -1
  106. package/lib/cjs/IModelJsFs.d.ts +62 -62
  107. package/lib/cjs/IModelJsFs.js +140 -140
  108. package/lib/cjs/IModelJsFs.js.map +1 -1
  109. package/lib/cjs/IpcHost.d.ts +98 -98
  110. package/lib/cjs/IpcHost.js +234 -234
  111. package/lib/cjs/IpcHost.js.map +1 -1
  112. package/lib/cjs/LineStyle.d.ts +311 -311
  113. package/lib/cjs/LineStyle.js +295 -295
  114. package/lib/cjs/LineStyle.js.map +1 -1
  115. package/lib/cjs/LocalHub.d.ts +162 -162
  116. package/lib/cjs/LocalHub.js +587 -587
  117. package/lib/cjs/LocalHub.js.map +1 -1
  118. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  119. package/lib/cjs/LocalhostIpcHost.js +81 -81
  120. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  121. package/lib/cjs/Material.d.ts +103 -103
  122. package/lib/cjs/Material.js +147 -147
  123. package/lib/cjs/Material.js.map +1 -1
  124. package/lib/cjs/Model.d.ts +386 -386
  125. package/lib/cjs/Model.js +468 -468
  126. package/lib/cjs/Model.js.map +1 -1
  127. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  128. package/lib/cjs/NativeAppStorage.js +202 -202
  129. package/lib/cjs/NativeAppStorage.js.map +1 -1
  130. package/lib/cjs/NativeHost.d.ts +52 -52
  131. package/lib/cjs/NativeHost.js +168 -168
  132. package/lib/cjs/NativeHost.js.map +1 -1
  133. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  134. package/lib/cjs/NavigationRelationship.js +225 -225
  135. package/lib/cjs/NavigationRelationship.js.map +1 -1
  136. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  137. package/lib/cjs/PromiseMemoizer.js +95 -95
  138. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  139. package/lib/cjs/PropertyStore.d.ts +132 -132
  140. package/lib/cjs/PropertyStore.js +11 -11
  141. package/lib/cjs/PropertyStore.js.map +1 -1
  142. package/lib/cjs/Relationship.d.ts +400 -400
  143. package/lib/cjs/Relationship.js +465 -465
  144. package/lib/cjs/Relationship.js.map +1 -1
  145. package/lib/cjs/RpcBackend.d.ts +28 -28
  146. package/lib/cjs/RpcBackend.js +126 -126
  147. package/lib/cjs/RpcBackend.js.map +1 -1
  148. package/lib/cjs/SQLiteDb.d.ts +219 -219
  149. package/lib/cjs/SQLiteDb.js +214 -214
  150. package/lib/cjs/SQLiteDb.js.map +1 -1
  151. package/lib/cjs/Schema.d.ts +55 -55
  152. package/lib/cjs/Schema.js +83 -83
  153. package/lib/cjs/Schema.js.map +1 -1
  154. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  155. package/lib/cjs/ServerBasedLocks.js +168 -168
  156. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  157. package/lib/cjs/SqliteStatement.d.ts +283 -283
  158. package/lib/cjs/SqliteStatement.js +448 -448
  159. package/lib/cjs/SqliteStatement.js.map +1 -1
  160. package/lib/cjs/Texture.d.ts +58 -58
  161. package/lib/cjs/Texture.js +82 -82
  162. package/lib/cjs/Texture.js.map +1 -1
  163. package/lib/cjs/TxnManager.d.ts +202 -202
  164. package/lib/cjs/TxnManager.js +353 -353
  165. package/lib/cjs/TxnManager.js.map +1 -1
  166. package/lib/cjs/ViewDefinition.d.ts +435 -435
  167. package/lib/cjs/ViewDefinition.js +629 -629
  168. package/lib/cjs/ViewDefinition.js.map +1 -1
  169. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  170. package/lib/cjs/ViewStateHydrator.js +103 -103
  171. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  172. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  173. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  174. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  175. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  176. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  177. package/lib/cjs/core-backend.d.ts +178 -178
  178. package/lib/cjs/core-backend.js +198 -198
  179. package/lib/cjs/core-backend.js.map +1 -1
  180. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  181. package/lib/cjs/domains/FunctionalElements.js +145 -145
  182. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  183. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  184. package/lib/cjs/domains/FunctionalSchema.js +40 -40
  185. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  186. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  187. package/lib/cjs/domains/GenericElements.js +263 -263
  188. package/lib/cjs/domains/GenericElements.js.map +1 -1
  189. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  190. package/lib/cjs/domains/GenericSchema.js +28 -28
  191. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  192. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  193. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  194. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  195. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +45 -45
  196. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +262 -262
  197. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  198. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +20 -20
  199. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +195 -195
  200. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  201. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  202. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +165 -165
  203. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  204. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  205. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +43 -43
  206. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  207. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  208. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  209. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  210. package/lib/cjs/workspace/Settings.d.ts +186 -186
  211. package/lib/cjs/workspace/Settings.js +152 -152
  212. package/lib/cjs/workspace/Settings.js.map +1 -1
  213. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  214. package/lib/cjs/workspace/SettingsSchemas.js +191 -191
  215. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  216. package/lib/cjs/workspace/Workspace.d.ts +405 -405
  217. package/lib/cjs/workspace/Workspace.js +539 -539
  218. package/lib/cjs/workspace/Workspace.js.map +1 -1
  219. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"IModelReadRpcImpl.js","sourceRoot":"","sources":["../../../src/rpc-impl/IModelReadRpcImpl.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 RpcInterface\r\n */\r\n\r\nimport { BentleyStatus, CompressedId64Set, GuidString, Id64, Id64String, IModelStatus, Logger } from \"@itwin/core-bentley\";\r\nimport {\r\n Code, CodeProps, CustomViewState3dCreatorOptions, CustomViewState3dProps, DbBlobRequest, DbBlobResponse, DbQueryRequest, DbQueryResponse, ElementLoadOptions, ElementLoadProps,\r\n ElementProps, EntityMetaData, EntityQueryParams, FontMapProps, GeoCoordinatesRequestProps, GeoCoordinatesResponseProps, GeometryContainmentRequestProps,\r\n GeometryContainmentResponseProps, GeometrySummaryRequestProps, HydrateViewStateRequestProps, HydrateViewStateResponseProps, ImageSourceFormat, IModel,\r\n IModelConnectionProps, IModelCoordinatesRequestProps, IModelCoordinatesResponseProps, IModelError, IModelReadRpcInterface, IModelRpcOpenProps,\r\n IModelRpcProps, MassPropertiesPerCandidateRequestProps, MassPropertiesPerCandidateResponseProps, MassPropertiesRequestProps, MassPropertiesResponseProps, ModelProps, NoContentError, RpcInterface, RpcManager, SnapRequestProps, SnapResponseProps,\r\n SubCategoryResultRow, SyncMode, TextureData, TextureLoadProps, ViewStateLoadProps,ViewStateProps,\r\n} from \"@itwin/core-common\";\r\nimport { Range3d, Range3dProps } from \"@itwin/core-geometry\";\r\nimport { SpatialCategory } from \"../Category\";\r\nimport { ConcurrentQuery } from \"../ConcurrentQuery\";\r\nimport { generateGeometrySummaries } from \"../GeometrySummary\";\r\nimport { DictionaryModel } from \"../Model\";\r\nimport { RpcBriefcaseUtility } from \"./RpcBriefcaseUtility\";\r\nimport { RpcTrace } from \"../RpcBackend\";\r\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\r\nimport { CustomViewState3dCreator } from \"../CustomViewState3dCreator\";\r\nimport { ViewStateHydrator } from \"../ViewStateHydrator\";\r\n\r\n/** The backend implementation of IModelReadRpcInterface.\r\n * @internal\r\n */\r\nexport class IModelReadRpcImpl extends RpcInterface implements IModelReadRpcInterface {\r\n\r\n public static register() { RpcManager.registerImpl(IModelReadRpcInterface, IModelReadRpcImpl); }\r\n\r\n public async getConnectionProps(tokenProps: IModelRpcOpenProps): Promise<IModelConnectionProps> {\r\n return RpcBriefcaseUtility.openWithTimeout(RpcTrace.expectCurrentActivity, tokenProps, SyncMode.FixedVersion);\r\n }\r\n\r\n public async getCustomViewState3dData(tokenProps: IModelRpcProps, options: CustomViewState3dCreatorOptions): Promise<CustomViewState3dProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const viewCreator = new CustomViewState3dCreator(iModelDb);\r\n return viewCreator.getCustomViewState3dData(options);\r\n }\r\n\r\n public async hydrateViewState(tokenProps: IModelRpcProps, options: HydrateViewStateRequestProps): Promise<HydrateViewStateResponseProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const viewHydrater = new ViewStateHydrator(iModelDb);\r\n return viewHydrater.getHydrateResponseProps(options);\r\n }\r\n\r\n public async querySubCategories(tokenProps: IModelRpcProps, compressedCategoryIds: CompressedId64Set): Promise<SubCategoryResultRow[]> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const decompressedIds = CompressedId64Set.decompressArray(compressedCategoryIds);\r\n return iModelDb.querySubCategories(decompressedIds);\r\n }\r\n\r\n public async queryRows(tokenProps: IModelRpcProps, request: DbQueryRequest): Promise<DbQueryResponse> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n if (iModelDb.isReadonly && request.usePrimaryConn === true) {\r\n Logger.logWarning(BackendLoggerCategory.IModelDb, \"usePrimaryConn is only supported on imodel that is opened in read/write mode. The option will be ignored.\", request);\r\n request.usePrimaryConn = false;\r\n }\r\n return ConcurrentQuery.executeQueryRequest(iModelDb.nativeDb, request);\r\n }\r\n public async queryBlob(tokenProps: IModelRpcProps, request: DbBlobRequest): Promise<DbBlobResponse> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n if (iModelDb.isReadonly && request.usePrimaryConn === true) {\r\n Logger.logWarning(BackendLoggerCategory.IModelDb, \"usePrimaryConn is only supported on imodel that is opened in read/write mode. The option will be ignored.\", request);\r\n request.usePrimaryConn = false;\r\n }\r\n return ConcurrentQuery.executeBlobRequest(iModelDb.nativeDb, request);\r\n }\r\n public async queryModelRanges(tokenProps: IModelRpcProps, modelIdsList: Id64String[]): Promise<Range3dProps[]> {\r\n const modelIds = new Set(modelIdsList);\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const ranges: Range3dProps[] = [];\r\n for (const id of modelIds) {\r\n try {\r\n ranges.push(iModelDb.nativeDb.queryModelExtents({ id }).modelExtents);\r\n } catch (err: any) {\r\n if ((err as IModelError).errorNumber === IModelStatus.NoGeometry) { // if there was no geometry, just return null range\r\n ranges.push(new Range3d());\r\n continue;\r\n }\r\n\r\n if (modelIds.size === 1)\r\n throw err; // if they're asking for more than one model, don't throw on error.\r\n continue;\r\n }\r\n }\r\n return ranges;\r\n }\r\n\r\n public async getModelProps(tokenProps: IModelRpcProps, modelIdsList: Id64String[]): Promise<ModelProps[]> {\r\n const modelIds = new Set(modelIdsList);\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const modelJsonArray: ModelProps[] = [];\r\n for (const id of modelIds) {\r\n try {\r\n const modelProps = iModelDb.models.getModelJson({ id });\r\n modelJsonArray.push(modelProps);\r\n } catch (error) {\r\n if (modelIds.size === 1)\r\n throw error; // if they're asking for more than one model, don't throw on error.\r\n }\r\n }\r\n return modelJsonArray;\r\n }\r\n\r\n public async queryModelProps(tokenProps: IModelRpcProps, params: EntityQueryParams): Promise<ModelProps[]> {\r\n const ids = await this.queryEntityIds(tokenProps, params);\r\n return this.getModelProps(tokenProps, [...ids]);\r\n }\r\n\r\n public async getElementProps(tokenProps: IModelRpcProps, elementIdsList: Id64String[]): Promise<ElementProps[]> {\r\n const elementIds = new Set(elementIdsList);\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const elementProps: ElementProps[] = [];\r\n for (const id of elementIds) {\r\n try {\r\n elementProps.push(iModelDb.elements.getElementJson({ id }));\r\n } catch (error) {\r\n if (elementIds.size === 1)\r\n throw error; // if they're asking for more than one element, don't throw on error.\r\n }\r\n }\r\n return elementProps;\r\n }\r\n\r\n public async loadElementProps(tokenProps: IModelRpcProps, identifier: Id64String | GuidString | CodeProps, options?: ElementLoadOptions): Promise<ElementProps | undefined> {\r\n const props: ElementLoadProps = options ? { ...options } : {};\r\n if (typeof identifier === \"string\") {\r\n if (Id64.isId64(identifier))\r\n props.id = identifier;\r\n else\r\n props.federationGuid = identifier;\r\n } else {\r\n props.code = Code.fromJSON(identifier);\r\n }\r\n\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.elements.tryGetElementProps(props);\r\n }\r\n\r\n public async getGeometrySummary(tokenProps: IModelRpcProps, request: GeometrySummaryRequestProps): Promise<string> {\r\n const iModel = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return generateGeometrySummaries(request, iModel);\r\n }\r\n\r\n public async queryElementProps(tokenProps: IModelRpcProps, params: EntityQueryParams): Promise<ElementProps[]> {\r\n const ids = await this.queryEntityIds(tokenProps, params);\r\n const res = this.getElementProps(tokenProps, [...ids]);\r\n return res;\r\n }\r\n\r\n public async queryEntityIds(tokenProps: IModelRpcProps, params: EntityQueryParams): Promise<Id64String[]> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const res = iModelDb.queryEntityIds(params);\r\n return [...res];\r\n }\r\n\r\n public async getClassHierarchy(tokenProps: IModelRpcProps, classFullName: string): Promise<string[]> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const classArray: string[] = [];\r\n while (true) {\r\n const classMetaData: EntityMetaData = iModelDb.getMetaData(classFullName);\r\n classArray.push(classFullName);\r\n if (!classMetaData.baseClasses || classMetaData.baseClasses.length === 0)\r\n break;\r\n\r\n classFullName = classMetaData.baseClasses[0];\r\n }\r\n return classArray;\r\n }\r\n\r\n public async getAllCodeSpecs(tokenProps: IModelRpcProps): Promise<any[]> {\r\n const codeSpecs: any[] = [];\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n iModelDb.withPreparedStatement(\"SELECT ECInstanceId AS id, name, jsonProperties FROM BisCore.CodeSpec\", (statement) => {\r\n for (const row of statement)\r\n codeSpecs.push({ id: row.id, name: row.name, jsonProperties: JSON.parse(row.jsonProperties) });\r\n });\r\n return codeSpecs;\r\n }\r\n\r\n public async getViewStateData(tokenProps: IModelRpcProps, viewDefinitionId: string, options?: ViewStateLoadProps): Promise<ViewStateProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.views.getViewStateData(viewDefinitionId, options);\r\n }\r\n\r\n public async readFontJson(tokenProps: IModelRpcProps): Promise<FontMapProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.nativeDb.readFontMap();\r\n }\r\n\r\n public async requestSnap(tokenProps: IModelRpcProps, sessionId: string, props: SnapRequestProps): Promise<SnapResponseProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.requestSnap(sessionId, props);\r\n }\r\n\r\n public async cancelSnap(tokenProps: IModelRpcProps, sessionId: string): Promise<void> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.cancelSnap(sessionId);\r\n }\r\n\r\n public async getGeometryContainment(tokenProps: IModelRpcProps, props: GeometryContainmentRequestProps): Promise<GeometryContainmentResponseProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.getGeometryContainment(props);\r\n }\r\n\r\n public async getMassProperties(tokenProps: IModelRpcProps, props: MassPropertiesRequestProps): Promise<MassPropertiesResponseProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.getMassProperties(props);\r\n }\r\n\r\n public async getMassPropertiesPerCandidate(tokenProps: IModelRpcProps, props: MassPropertiesPerCandidateRequestProps): Promise<MassPropertiesPerCandidateResponseProps[]> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n\r\n const getSingleCandidateMassProperties = async (candidate: string) => {\r\n try {\r\n const massPropResults: MassPropertiesResponseProps[] = [];\r\n\r\n for (const op of props.operations) {\r\n const massProperties = await iModelDb.getMassProperties({ operation: op, candidates: [candidate] });\r\n massPropResults.push(massProperties);\r\n }\r\n\r\n let singleCandidateResult: MassPropertiesPerCandidateResponseProps = { status: BentleyStatus.ERROR, candidate };\r\n\r\n if (massPropResults.some((r) => r.status !== BentleyStatus.ERROR)) {\r\n singleCandidateResult.status = BentleyStatus.SUCCESS;\r\n for (const r of massPropResults.filter((mpr) => mpr.status !== BentleyStatus.ERROR)) {\r\n singleCandidateResult = { ...singleCandidateResult, ...r };\r\n }\r\n }\r\n\r\n return singleCandidateResult;\r\n } catch {\r\n return { status: BentleyStatus.ERROR, candidate };\r\n }\r\n };\r\n\r\n const promises: Promise<MassPropertiesPerCandidateResponseProps>[] = [];\r\n\r\n for (const candidate of CompressedId64Set.iterable(props.candidates)) {\r\n promises.push(getSingleCandidateMassProperties(candidate));\r\n }\r\n\r\n return Promise.all(promises);\r\n }\r\n\r\n public async getToolTipMessage(tokenProps: IModelRpcProps, id: string): Promise<string[]> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const el = iModelDb.elements.getElement(id);\r\n return (el === undefined) ? [] : el.getToolTipMessage();\r\n }\r\n\r\n /** Send a view thumbnail to the frontend. This is a binary transfer with the metadata in a 16-byte prefix header.\r\n * @deprecated\r\n */\r\n public async getViewThumbnail(_tokenProps: IModelRpcProps, _viewId: string): Promise<Uint8Array> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, _tokenProps);\r\n const thumbnail = iModelDb.views.getThumbnail(_viewId);\r\n if (undefined === thumbnail || 0 === thumbnail.image.length)\r\n throw new NoContentError();\r\n\r\n const val = new Uint8Array(thumbnail.image.length + 16); // allocate a new buffer 16 bytes larger than the image size\r\n new Uint32Array(val.buffer, 0, 4).set([thumbnail.image.length, thumbnail.format === \"jpeg\" ? ImageSourceFormat.Jpeg : ImageSourceFormat.Png, thumbnail.width, thumbnail.height]); // Put the metadata in the first 16 bytes.\r\n val.set(thumbnail.image, 16); // put the image data at offset 16 after metadata\r\n return val;\r\n }\r\n\r\n public async getDefaultViewId(tokenProps: IModelRpcProps): Promise<Id64String> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const spec = { namespace: \"dgn_View\", name: \"DefaultView\" };\r\n const blob = iModelDb.queryFilePropertyBlob(spec);\r\n if (undefined === blob || 8 !== blob.length)\r\n return Id64.invalid;\r\n\r\n const view = new Uint32Array(blob.buffer);\r\n return Id64.fromUint32Pair(view[0], view[1]);\r\n }\r\n public async getSpatialCategoryId(tokenProps: IModelRpcProps, categoryName: string): Promise<Id64String | undefined> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n const dictionary: DictionaryModel = iModelDb.models.getModel<DictionaryModel>(IModel.dictionaryId);\r\n return SpatialCategory.queryCategoryIdByName(iModelDb, dictionary.id, categoryName);\r\n }\r\n\r\n public async getIModelCoordinatesFromGeoCoordinates(tokenProps: IModelRpcProps, props: IModelCoordinatesRequestProps): Promise<IModelCoordinatesResponseProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.getIModelCoordinatesFromGeoCoordinates(props);\r\n }\r\n\r\n public async getGeoCoordinatesFromIModelCoordinates(tokenProps: IModelRpcProps, props: GeoCoordinatesRequestProps): Promise<GeoCoordinatesResponseProps> {\r\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return iModelDb.getGeoCoordinatesFromIModelCoordinates(props);\r\n }\r\n\r\n public async queryTextureData(tokenProps: IModelRpcProps, textureLoadProps: TextureLoadProps): Promise<TextureData | undefined> {\r\n const db = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\r\n return db.queryTextureData(textureLoadProps);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"IModelReadRpcImpl.js","sourceRoot":"","sources":["../../../src/rpc-impl/IModelReadRpcImpl.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA2H;AAC3H,oDAO4B;AAC5B,wDAA6D;AAC7D,0CAA8C;AAC9C,wDAAqD;AACrD,wDAA+D;AAE/D,+DAA4D;AAC5D,8CAAyC;AACzC,oEAAiE;AACjE,0EAAuE;AACvE,4DAAyD;AAEzD;;GAEG;AACH,MAAa,iBAAkB,SAAQ,0BAAY;IAE1C,MAAM,CAAC,QAAQ,KAAK,wBAAU,CAAC,YAAY,CAAC,oCAAsB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAEzF,KAAK,CAAC,kBAAkB,CAAC,UAA8B;QAC5D,OAAO,yCAAmB,CAAC,eAAe,CAAC,qBAAQ,CAAC,qBAAqB,EAAE,UAAU,EAAE,sBAAQ,CAAC,YAAY,CAAC,CAAC;IAChH,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,UAA0B,EAAE,OAAwC;QACxG,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,WAAW,GAAG,IAAI,mDAAwB,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,UAA0B,EAAE,OAAqC;QAC7F,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,YAAY,GAAG,IAAI,qCAAiB,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,UAA0B,EAAE,qBAAwC;QAClG,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,eAAe,GAAG,gCAAiB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;QACjF,OAAO,QAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,UAA0B,EAAE,OAAuB;QACxE,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,IAAI,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE;YAC1D,qBAAM,CAAC,UAAU,CAAC,6CAAqB,CAAC,QAAQ,EAAE,2GAA2G,EAAE,OAAO,CAAC,CAAC;YACxK,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;SAChC;QACD,OAAO,iCAAe,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IACM,KAAK,CAAC,SAAS,CAAC,UAA0B,EAAE,OAAsB;QACvE,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,IAAI,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE;YAC1D,qBAAM,CAAC,UAAU,CAAC,6CAAqB,CAAC,QAAQ,EAAE,2GAA2G,EAAE,OAAO,CAAC,CAAC;YACxK,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;SAChC;QACD,OAAO,iCAAe,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IACM,KAAK,CAAC,gBAAgB,CAAC,UAA0B,EAAE,YAA0B;QAClF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;YACzB,IAAI;gBACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;aACvE;YAAC,OAAO,GAAQ,EAAE;gBACjB,IAAK,GAAmB,CAAC,WAAW,KAAK,2BAAY,CAAC,UAAU,EAAE,EAAE,mDAAmD;oBACrH,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAO,EAAE,CAAC,CAAC;oBAC3B,SAAS;iBACV;gBAED,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;oBACrB,MAAM,GAAG,CAAC,CAAC,mEAAmE;gBAChF,SAAS;aACV;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,UAA0B,EAAE,YAA0B;QAC/E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,cAAc,GAAiB,EAAE,CAAC;QACxC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;YACzB,IAAI;gBACF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxD,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACjC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;oBACrB,MAAM,KAAK,CAAC,CAAC,mEAAmE;aACnF;SACF;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,UAA0B,EAAE,MAAyB;QAChF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,UAA0B,EAAE,cAA4B;QACnF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,YAAY,GAAmB,EAAE,CAAC;QACxC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;YAC3B,IAAI;gBACF,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aAC7D;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;oBACvB,MAAM,KAAK,CAAC,CAAC,qEAAqE;aACrF;SACF;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,UAA0B,EAAE,UAA+C,EAAE,OAA4B;QACrI,MAAM,KAAK,GAAqB,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAClC,IAAI,mBAAI,CAAC,MAAM,CAAC,UAAU,CAAC;gBACzB,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC;;gBAEtB,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;SACrC;aAAM;YACL,KAAK,CAAC,IAAI,GAAG,kBAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACxC;QAED,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,UAA0B,EAAE,OAAoC;QAC9F,MAAM,MAAM,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAChH,OAAO,IAAA,2CAAyB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAA0B,EAAE,MAAyB;QAClF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,UAA0B,EAAE,MAAyB;QAC/E,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAA0B,EAAE,aAAqB;QAC9E,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,OAAO,IAAI,EAAE;YACX,MAAM,aAAa,GAAmB,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC1E,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBACtE,MAAM;YAER,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC9C;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,UAA0B;QACrD,MAAM,SAAS,GAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,QAAQ,CAAC,qBAAqB,CAAC,uEAAuE,EAAE,CAAC,SAAS,EAAE,EAAE;YACpH,KAAK,MAAM,GAAG,IAAI,SAAS;gBACzB,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,UAA0B,EAAE,gBAAwB,EAAE,OAA4B;QAC9G,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAA0B;QAClD,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,UAA0B,EAAE,SAAiB,EAAE,KAAuB;QAC7F,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,UAA0B,EAAE,SAAiB;QACnE,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,UAA0B,EAAE,KAAsC;QACpG,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAA0B,EAAE,KAAiC;QAC1F,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,6BAA6B,CAAC,UAA0B,EAAE,KAA6C;QAClH,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAElH,MAAM,gCAAgC,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;YACnE,IAAI;gBACF,MAAM,eAAe,GAAkC,EAAE,CAAC;gBAE1D,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;oBACjC,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBACpG,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACtC;gBAED,IAAI,qBAAqB,GAA4C,EAAE,MAAM,EAAE,4BAAa,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;gBAEhH,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,4BAAa,CAAC,KAAK,CAAC,EAAE;oBACjE,qBAAqB,CAAC,MAAM,GAAG,4BAAa,CAAC,OAAO,CAAC;oBACrD,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,4BAAa,CAAC,KAAK,CAAC,EAAE;wBACnF,qBAAqB,GAAG,EAAE,GAAG,qBAAqB,EAAE,GAAG,CAAC,EAAE,CAAC;qBAC5D;iBACF;gBAED,OAAO,qBAAqB,CAAC;aAC9B;YAAC,MAAM;gBACN,OAAO,EAAE,MAAM,EAAE,4BAAa,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;aACnD;QACH,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAuD,EAAE,CAAC;QAExE,KAAK,MAAM,SAAS,IAAI,gCAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YACpE,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC;SAC5D;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAA0B,EAAE,EAAU;QACnE,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAC1D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,WAA2B,EAAE,OAAe;QACxE,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACnH,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,MAAM;YACzD,MAAM,IAAI,4BAAc,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,4DAA4D;QACrH,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,+BAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,+BAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAI,0CAA0C;QAC/N,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,iDAAiD;QAC/E,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,UAA0B;QACtD,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,IAAI,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;YACzC,OAAO,mBAAI,CAAC,OAAO,CAAC;QAEtB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,mBAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACM,KAAK,CAAC,oBAAoB,CAAC,UAA0B,EAAE,YAAoB;QAChF,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,UAAU,GAAoB,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAkB,oBAAM,CAAC,YAAY,CAAC,CAAC;QACnG,OAAO,0BAAe,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACtF,CAAC;IAEM,KAAK,CAAC,sCAAsC,CAAC,UAA0B,EAAE,KAAoC;QAClH,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAEM,KAAK,CAAC,sCAAsC,CAAC,UAA0B,EAAE,KAAiC;QAC/G,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,QAAQ,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,UAA0B,EAAE,gBAAkC;QAC1F,MAAM,EAAE,GAAG,MAAM,yCAAmB,CAAC,cAAc,CAAC,qBAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC5G,OAAO,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;CACF;AAhRD,8CAgRC","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 RpcInterface\n */\n\nimport { BentleyStatus, CompressedId64Set, GuidString, Id64, Id64String, IModelStatus, Logger } from \"@itwin/core-bentley\";\nimport {\n Code, CodeProps, CustomViewState3dCreatorOptions, CustomViewState3dProps, DbBlobRequest, DbBlobResponse, DbQueryRequest, DbQueryResponse, ElementLoadOptions, ElementLoadProps,\n ElementProps, EntityMetaData, EntityQueryParams, FontMapProps, GeoCoordinatesRequestProps, GeoCoordinatesResponseProps, GeometryContainmentRequestProps,\n GeometryContainmentResponseProps, GeometrySummaryRequestProps, HydrateViewStateRequestProps, HydrateViewStateResponseProps, ImageSourceFormat, IModel,\n IModelConnectionProps, IModelCoordinatesRequestProps, IModelCoordinatesResponseProps, IModelError, IModelReadRpcInterface, IModelRpcOpenProps,\n IModelRpcProps, MassPropertiesPerCandidateRequestProps, MassPropertiesPerCandidateResponseProps, MassPropertiesRequestProps, MassPropertiesResponseProps, ModelProps, NoContentError, RpcInterface, RpcManager, SnapRequestProps, SnapResponseProps,\n SubCategoryResultRow, SyncMode, TextureData, TextureLoadProps, ViewStateLoadProps,ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Range3d, Range3dProps } from \"@itwin/core-geometry\";\nimport { SpatialCategory } from \"../Category\";\nimport { ConcurrentQuery } from \"../ConcurrentQuery\";\nimport { generateGeometrySummaries } from \"../GeometrySummary\";\nimport { DictionaryModel } from \"../Model\";\nimport { RpcBriefcaseUtility } from \"./RpcBriefcaseUtility\";\nimport { RpcTrace } from \"../RpcBackend\";\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\nimport { CustomViewState3dCreator } from \"../CustomViewState3dCreator\";\nimport { ViewStateHydrator } from \"../ViewStateHydrator\";\n\n/** The backend implementation of IModelReadRpcInterface.\n * @internal\n */\nexport class IModelReadRpcImpl extends RpcInterface implements IModelReadRpcInterface {\n\n public static register() { RpcManager.registerImpl(IModelReadRpcInterface, IModelReadRpcImpl); }\n\n public async getConnectionProps(tokenProps: IModelRpcOpenProps): Promise<IModelConnectionProps> {\n return RpcBriefcaseUtility.openWithTimeout(RpcTrace.expectCurrentActivity, tokenProps, SyncMode.FixedVersion);\n }\n\n public async getCustomViewState3dData(tokenProps: IModelRpcProps, options: CustomViewState3dCreatorOptions): Promise<CustomViewState3dProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const viewCreator = new CustomViewState3dCreator(iModelDb);\n return viewCreator.getCustomViewState3dData(options);\n }\n\n public async hydrateViewState(tokenProps: IModelRpcProps, options: HydrateViewStateRequestProps): Promise<HydrateViewStateResponseProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const viewHydrater = new ViewStateHydrator(iModelDb);\n return viewHydrater.getHydrateResponseProps(options);\n }\n\n public async querySubCategories(tokenProps: IModelRpcProps, compressedCategoryIds: CompressedId64Set): Promise<SubCategoryResultRow[]> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const decompressedIds = CompressedId64Set.decompressArray(compressedCategoryIds);\n return iModelDb.querySubCategories(decompressedIds);\n }\n\n public async queryRows(tokenProps: IModelRpcProps, request: DbQueryRequest): Promise<DbQueryResponse> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n if (iModelDb.isReadonly && request.usePrimaryConn === true) {\n Logger.logWarning(BackendLoggerCategory.IModelDb, \"usePrimaryConn is only supported on imodel that is opened in read/write mode. The option will be ignored.\", request);\n request.usePrimaryConn = false;\n }\n return ConcurrentQuery.executeQueryRequest(iModelDb.nativeDb, request);\n }\n public async queryBlob(tokenProps: IModelRpcProps, request: DbBlobRequest): Promise<DbBlobResponse> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n if (iModelDb.isReadonly && request.usePrimaryConn === true) {\n Logger.logWarning(BackendLoggerCategory.IModelDb, \"usePrimaryConn is only supported on imodel that is opened in read/write mode. The option will be ignored.\", request);\n request.usePrimaryConn = false;\n }\n return ConcurrentQuery.executeBlobRequest(iModelDb.nativeDb, request);\n }\n public async queryModelRanges(tokenProps: IModelRpcProps, modelIdsList: Id64String[]): Promise<Range3dProps[]> {\n const modelIds = new Set(modelIdsList);\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const ranges: Range3dProps[] = [];\n for (const id of modelIds) {\n try {\n ranges.push(iModelDb.nativeDb.queryModelExtents({ id }).modelExtents);\n } catch (err: any) {\n if ((err as IModelError).errorNumber === IModelStatus.NoGeometry) { // if there was no geometry, just return null range\n ranges.push(new Range3d());\n continue;\n }\n\n if (modelIds.size === 1)\n throw err; // if they're asking for more than one model, don't throw on error.\n continue;\n }\n }\n return ranges;\n }\n\n public async getModelProps(tokenProps: IModelRpcProps, modelIdsList: Id64String[]): Promise<ModelProps[]> {\n const modelIds = new Set(modelIdsList);\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const modelJsonArray: ModelProps[] = [];\n for (const id of modelIds) {\n try {\n const modelProps = iModelDb.models.getModelJson({ id });\n modelJsonArray.push(modelProps);\n } catch (error) {\n if (modelIds.size === 1)\n throw error; // if they're asking for more than one model, don't throw on error.\n }\n }\n return modelJsonArray;\n }\n\n public async queryModelProps(tokenProps: IModelRpcProps, params: EntityQueryParams): Promise<ModelProps[]> {\n const ids = await this.queryEntityIds(tokenProps, params);\n return this.getModelProps(tokenProps, [...ids]);\n }\n\n public async getElementProps(tokenProps: IModelRpcProps, elementIdsList: Id64String[]): Promise<ElementProps[]> {\n const elementIds = new Set(elementIdsList);\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const elementProps: ElementProps[] = [];\n for (const id of elementIds) {\n try {\n elementProps.push(iModelDb.elements.getElementJson({ id }));\n } catch (error) {\n if (elementIds.size === 1)\n throw error; // if they're asking for more than one element, don't throw on error.\n }\n }\n return elementProps;\n }\n\n public async loadElementProps(tokenProps: IModelRpcProps, identifier: Id64String | GuidString | CodeProps, options?: ElementLoadOptions): Promise<ElementProps | undefined> {\n const props: ElementLoadProps = options ? { ...options } : {};\n if (typeof identifier === \"string\") {\n if (Id64.isId64(identifier))\n props.id = identifier;\n else\n props.federationGuid = identifier;\n } else {\n props.code = Code.fromJSON(identifier);\n }\n\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.elements.tryGetElementProps(props);\n }\n\n public async getGeometrySummary(tokenProps: IModelRpcProps, request: GeometrySummaryRequestProps): Promise<string> {\n const iModel = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return generateGeometrySummaries(request, iModel);\n }\n\n public async queryElementProps(tokenProps: IModelRpcProps, params: EntityQueryParams): Promise<ElementProps[]> {\n const ids = await this.queryEntityIds(tokenProps, params);\n const res = this.getElementProps(tokenProps, [...ids]);\n return res;\n }\n\n public async queryEntityIds(tokenProps: IModelRpcProps, params: EntityQueryParams): Promise<Id64String[]> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const res = iModelDb.queryEntityIds(params);\n return [...res];\n }\n\n public async getClassHierarchy(tokenProps: IModelRpcProps, classFullName: string): Promise<string[]> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const classArray: string[] = [];\n while (true) {\n const classMetaData: EntityMetaData = iModelDb.getMetaData(classFullName);\n classArray.push(classFullName);\n if (!classMetaData.baseClasses || classMetaData.baseClasses.length === 0)\n break;\n\n classFullName = classMetaData.baseClasses[0];\n }\n return classArray;\n }\n\n public async getAllCodeSpecs(tokenProps: IModelRpcProps): Promise<any[]> {\n const codeSpecs: any[] = [];\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n iModelDb.withPreparedStatement(\"SELECT ECInstanceId AS id, name, jsonProperties FROM BisCore.CodeSpec\", (statement) => {\n for (const row of statement)\n codeSpecs.push({ id: row.id, name: row.name, jsonProperties: JSON.parse(row.jsonProperties) });\n });\n return codeSpecs;\n }\n\n public async getViewStateData(tokenProps: IModelRpcProps, viewDefinitionId: string, options?: ViewStateLoadProps): Promise<ViewStateProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.views.getViewStateData(viewDefinitionId, options);\n }\n\n public async readFontJson(tokenProps: IModelRpcProps): Promise<FontMapProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.nativeDb.readFontMap();\n }\n\n public async requestSnap(tokenProps: IModelRpcProps, sessionId: string, props: SnapRequestProps): Promise<SnapResponseProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.requestSnap(sessionId, props);\n }\n\n public async cancelSnap(tokenProps: IModelRpcProps, sessionId: string): Promise<void> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.cancelSnap(sessionId);\n }\n\n public async getGeometryContainment(tokenProps: IModelRpcProps, props: GeometryContainmentRequestProps): Promise<GeometryContainmentResponseProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.getGeometryContainment(props);\n }\n\n public async getMassProperties(tokenProps: IModelRpcProps, props: MassPropertiesRequestProps): Promise<MassPropertiesResponseProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.getMassProperties(props);\n }\n\n public async getMassPropertiesPerCandidate(tokenProps: IModelRpcProps, props: MassPropertiesPerCandidateRequestProps): Promise<MassPropertiesPerCandidateResponseProps[]> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n\n const getSingleCandidateMassProperties = async (candidate: string) => {\n try {\n const massPropResults: MassPropertiesResponseProps[] = [];\n\n for (const op of props.operations) {\n const massProperties = await iModelDb.getMassProperties({ operation: op, candidates: [candidate] });\n massPropResults.push(massProperties);\n }\n\n let singleCandidateResult: MassPropertiesPerCandidateResponseProps = { status: BentleyStatus.ERROR, candidate };\n\n if (massPropResults.some((r) => r.status !== BentleyStatus.ERROR)) {\n singleCandidateResult.status = BentleyStatus.SUCCESS;\n for (const r of massPropResults.filter((mpr) => mpr.status !== BentleyStatus.ERROR)) {\n singleCandidateResult = { ...singleCandidateResult, ...r };\n }\n }\n\n return singleCandidateResult;\n } catch {\n return { status: BentleyStatus.ERROR, candidate };\n }\n };\n\n const promises: Promise<MassPropertiesPerCandidateResponseProps>[] = [];\n\n for (const candidate of CompressedId64Set.iterable(props.candidates)) {\n promises.push(getSingleCandidateMassProperties(candidate));\n }\n\n return Promise.all(promises);\n }\n\n public async getToolTipMessage(tokenProps: IModelRpcProps, id: string): Promise<string[]> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const el = iModelDb.elements.getElement(id);\n return (el === undefined) ? [] : el.getToolTipMessage();\n }\n\n /** Send a view thumbnail to the frontend. This is a binary transfer with the metadata in a 16-byte prefix header.\n * @deprecated\n */\n public async getViewThumbnail(_tokenProps: IModelRpcProps, _viewId: string): Promise<Uint8Array> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, _tokenProps);\n const thumbnail = iModelDb.views.getThumbnail(_viewId);\n if (undefined === thumbnail || 0 === thumbnail.image.length)\n throw new NoContentError();\n\n const val = new Uint8Array(thumbnail.image.length + 16); // allocate a new buffer 16 bytes larger than the image size\n new Uint32Array(val.buffer, 0, 4).set([thumbnail.image.length, thumbnail.format === \"jpeg\" ? ImageSourceFormat.Jpeg : ImageSourceFormat.Png, thumbnail.width, thumbnail.height]); // Put the metadata in the first 16 bytes.\n val.set(thumbnail.image, 16); // put the image data at offset 16 after metadata\n return val;\n }\n\n public async getDefaultViewId(tokenProps: IModelRpcProps): Promise<Id64String> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const spec = { namespace: \"dgn_View\", name: \"DefaultView\" };\n const blob = iModelDb.queryFilePropertyBlob(spec);\n if (undefined === blob || 8 !== blob.length)\n return Id64.invalid;\n\n const view = new Uint32Array(blob.buffer);\n return Id64.fromUint32Pair(view[0], view[1]);\n }\n public async getSpatialCategoryId(tokenProps: IModelRpcProps, categoryName: string): Promise<Id64String | undefined> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n const dictionary: DictionaryModel = iModelDb.models.getModel<DictionaryModel>(IModel.dictionaryId);\n return SpatialCategory.queryCategoryIdByName(iModelDb, dictionary.id, categoryName);\n }\n\n public async getIModelCoordinatesFromGeoCoordinates(tokenProps: IModelRpcProps, props: IModelCoordinatesRequestProps): Promise<IModelCoordinatesResponseProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.getIModelCoordinatesFromGeoCoordinates(props);\n }\n\n public async getGeoCoordinatesFromIModelCoordinates(tokenProps: IModelRpcProps, props: GeoCoordinatesRequestProps): Promise<GeoCoordinatesResponseProps> {\n const iModelDb = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return iModelDb.getGeoCoordinatesFromIModelCoordinates(props);\n }\n\n public async queryTextureData(tokenProps: IModelRpcProps, textureLoadProps: TextureLoadProps): Promise<TextureData | undefined> {\n const db = await RpcBriefcaseUtility.findOpenIModel(RpcTrace.expectCurrentActivity.accessToken, tokenProps);\n return db.queryTextureData(textureLoadProps);\n }\n}\n"]}
@@ -1,21 +1,21 @@
1
- /** @packageDocumentation
2
- * @module RpcInterface
3
- */
4
- import { Id64Array } from "@itwin/core-bentley";
5
- import { CloudStorageContainerDescriptor, CloudStorageContainerUrl, ElementGraphicsRequestProps, IModelRpcProps, IModelTileRpcInterface, IModelTileTreeProps, RpcInterface, TileContentIdentifier, TileContentSource, TileTreeContentIds, TileVersionInfo } from "@itwin/core-common";
6
- /** @internal */
7
- export declare class IModelTileRpcImpl extends RpcInterface implements IModelTileRpcInterface {
8
- static register(): void;
9
- requestTileTreeProps(tokenProps: IModelRpcProps, treeId: string): Promise<IModelTileTreeProps>;
10
- purgeTileTrees(tokenProps: IModelRpcProps, modelIds: Id64Array | undefined): Promise<void>;
11
- generateTileContent(tokenProps: IModelRpcProps, treeId: string, contentId: string, guid: string | undefined): Promise<TileContentSource>;
12
- retrieveTileContent(tokenProps: IModelRpcProps, key: TileContentIdentifier): Promise<Uint8Array>;
13
- getTileCacheContainerUrl(_tokenProps: IModelRpcProps, id: CloudStorageContainerDescriptor): Promise<CloudStorageContainerUrl>;
14
- isUsingExternalTileCache(): Promise<boolean>;
15
- queryVersionInfo(): Promise<TileVersionInfo>;
16
- /** @internal */
17
- requestElementGraphics(rpcProps: IModelRpcProps, request: ElementGraphicsRequestProps): Promise<Uint8Array | undefined>;
18
- }
19
- /** @internal */
20
- export declare function cancelTileContentRequests(tokenProps: IModelRpcProps, contentIds: TileTreeContentIds[]): Promise<void>;
1
+ /** @packageDocumentation
2
+ * @module RpcInterface
3
+ */
4
+ import { Id64Array } from "@itwin/core-bentley";
5
+ import { CloudStorageContainerDescriptor, CloudStorageContainerUrl, ElementGraphicsRequestProps, IModelRpcProps, IModelTileRpcInterface, IModelTileTreeProps, RpcInterface, TileContentIdentifier, TileContentSource, TileTreeContentIds, TileVersionInfo } from "@itwin/core-common";
6
+ /** @internal */
7
+ export declare class IModelTileRpcImpl extends RpcInterface implements IModelTileRpcInterface {
8
+ static register(): void;
9
+ requestTileTreeProps(tokenProps: IModelRpcProps, treeId: string): Promise<IModelTileTreeProps>;
10
+ purgeTileTrees(tokenProps: IModelRpcProps, modelIds: Id64Array | undefined): Promise<void>;
11
+ generateTileContent(tokenProps: IModelRpcProps, treeId: string, contentId: string, guid: string | undefined): Promise<TileContentSource>;
12
+ retrieveTileContent(tokenProps: IModelRpcProps, key: TileContentIdentifier): Promise<Uint8Array>;
13
+ getTileCacheContainerUrl(_tokenProps: IModelRpcProps, id: CloudStorageContainerDescriptor): Promise<CloudStorageContainerUrl>;
14
+ isUsingExternalTileCache(): Promise<boolean>;
15
+ queryVersionInfo(): Promise<TileVersionInfo>;
16
+ /** @internal */
17
+ requestElementGraphics(rpcProps: IModelRpcProps, request: ElementGraphicsRequestProps): Promise<Uint8Array | undefined>;
18
+ }
19
+ /** @internal */
20
+ export declare function cancelTileContentRequests(tokenProps: IModelRpcProps, contentIds: TileTreeContentIds[]): Promise<void>;
21
21
  //# sourceMappingURL=IModelTileRpcImpl.d.ts.map
@@ -1,196 +1,196 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module RpcInterface
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.cancelTileContentRequests = exports.IModelTileRpcImpl = void 0;
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_common_1 = require("@itwin/core-common");
13
- const BackendLoggerCategory_1 = require("../BackendLoggerCategory");
14
- const IModelDb_1 = require("../IModelDb");
15
- const IModelHost_1 = require("../IModelHost");
16
- const PromiseMemoizer_1 = require("../PromiseMemoizer");
17
- const RpcBackend_1 = require("../RpcBackend");
18
- const RpcBriefcaseUtility_1 = require("./RpcBriefcaseUtility");
19
- function generateTileRequestKey(props) {
20
- var _a;
21
- const token = props.tokenProps;
22
- return `${JSON.stringify({
23
- key: token.key,
24
- iTwinId: token.iTwinId,
25
- iModelId: token.iModelId,
26
- changesetId: (_a = token.changeset) === null || _a === void 0 ? void 0 : _a.id,
27
- })}:${props.treeId}`;
28
- }
29
- class TileRequestMemoizer extends PromiseMemoizer_1.PromiseMemoizer {
30
- constructor(memoizeFn, generateKeyFn) {
31
- super(memoizeFn, generateKeyFn);
32
- this._loggerCategory = BackendLoggerCategory_1.BackendLoggerCategory.IModelTileRequestRpc;
33
- this._superMemoize = this.memoize;
34
- this.memoize = (props) => {
35
- return this._superMemoize(props);
36
- };
37
- this._superDeleteMemoized = this.deleteMemoized;
38
- this.deleteMemoized = (props) => {
39
- this._superDeleteMemoized(props);
40
- };
41
- }
42
- makeMetadata(props) {
43
- const meta = { ...props.tokenProps };
44
- this.addMetadata(meta, props);
45
- return meta;
46
- }
47
- log(status, props) {
48
- const descr = `${this._operationName}(${this.stringify(props)})`;
49
- core_bentley_1.Logger.logTrace(this._loggerCategory, `Backend ${status} ${descr}`, () => this.makeMetadata(props));
50
- }
51
- async perform(props) {
52
- this.log("received", props);
53
- const tileQP = this.memoize(props);
54
- await core_bentley_1.BeDuration.race(this._timeoutMilliseconds, tileQP.promise).catch(() => { });
55
- // Note: Rejections must be caught so that the memoization entry can be deleted
56
- if (tileQP.isPending) {
57
- this.log("issuing pending status for", props);
58
- throw new core_common_1.RpcPendingResponse();
59
- }
60
- this.deleteMemoized(props);
61
- if (tileQP.isFulfilled) {
62
- this.log("completed", props);
63
- (0, core_bentley_1.assert)(undefined !== tileQP.result);
64
- return tileQP.result;
65
- }
66
- (0, core_bentley_1.assert)(tileQP.isRejected);
67
- this.log("rejected", props);
68
- throw tileQP.error; // eslint-disable-line no-throw-literal
69
- }
70
- }
71
- async function getTileTreeProps(props) {
72
- (0, core_bentley_1.assert)(undefined !== props.accessToken);
73
- const db = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(props.accessToken, props.tokenProps);
74
- return db.tiles.requestTileTreeProps(props.treeId);
75
- }
76
- class RequestTileTreePropsMemoizer extends TileRequestMemoizer {
77
- constructor() {
78
- super(getTileTreeProps, generateTileRequestKey);
79
- IModelHost_1.IModelHost.onBeforeShutdown.addOnce(() => {
80
- this.dispose();
81
- RequestTileTreePropsMemoizer._instance = undefined;
82
- });
83
- }
84
- get _timeoutMilliseconds() { return IModelHost_1.IModelHost.tileTreeRequestTimeout; }
85
- get _operationName() { return "requestTileTreeProps"; }
86
- stringify(props) { return props.treeId; }
87
- addMetadata(meta, props) {
88
- meta.treeId = props.treeId;
89
- }
90
- static async perform(props) {
91
- if (undefined === this._instance)
92
- this._instance = new RequestTileTreePropsMemoizer();
93
- return this._instance.perform(props);
94
- }
95
- }
96
- async function getTileContent(props) {
97
- var _a;
98
- (0, core_bentley_1.assert)(undefined !== props.accessToken);
99
- const db = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(props.accessToken, props.tokenProps);
100
- const tile = await db.tiles.requestTileContent(props.treeId, props.contentId);
101
- // ###TODO: Verify the guid supplied by the front-end matches the guid stored in the model?
102
- if (IModelHost_1.IModelHost.usingExternalTileCache) {
103
- await ((_a = IModelHost_1.IModelHost.tileUploader) === null || _a === void 0 ? void 0 : _a.cacheTile(props.tokenProps, props.treeId, props.contentId, tile.content, props.guid, {
104
- backendName: IModelHost_1.IModelHost.applicationId,
105
- tileGenerationTime: tile.elapsedSeconds.toString(),
106
- tileSize: tile.content.byteLength.toString(),
107
- }));
108
- return core_common_1.TileContentSource.ExternalCache;
109
- }
110
- return core_common_1.TileContentSource.Backend;
111
- }
112
- function generateTileContentKey(props) {
113
- return `${generateTileRequestKey(props)}:${props.contentId}`;
114
- }
115
- class RequestTileContentMemoizer extends TileRequestMemoizer {
116
- constructor() {
117
- super(getTileContent, generateTileContentKey);
118
- IModelHost_1.IModelHost.onBeforeShutdown.addOnce(() => {
119
- this.dispose();
120
- RequestTileContentMemoizer._instance = undefined;
121
- });
122
- }
123
- get _timeoutMilliseconds() { return IModelHost_1.IModelHost.tileContentRequestTimeout; }
124
- get _operationName() { return "requestTileContent"; }
125
- stringify(props) { return `${props.treeId}:${props.contentId}`; }
126
- addMetadata(meta, props) {
127
- meta.treeId = props.treeId;
128
- meta.contentId = props.contentId;
129
- }
130
- static get instance() {
131
- if (undefined === this._instance)
132
- this._instance = new RequestTileContentMemoizer();
133
- return this._instance;
134
- }
135
- static async perform(props) {
136
- return this.instance.perform(props);
137
- }
138
- }
139
- /** @internal */
140
- class IModelTileRpcImpl extends core_common_1.RpcInterface {
141
- static register() { core_common_1.RpcManager.registerImpl(core_common_1.IModelTileRpcInterface, IModelTileRpcImpl); }
142
- async requestTileTreeProps(tokenProps, treeId) {
143
- return RequestTileTreePropsMemoizer.perform({ accessToken: RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps, treeId });
144
- }
145
- async purgeTileTrees(tokenProps, modelIds) {
146
- // `undefined` gets forwarded as `null`...
147
- if (null === modelIds)
148
- modelIds = undefined;
149
- const db = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps);
150
- return db.nativeDb.purgeTileTrees(modelIds);
151
- }
152
- async generateTileContent(tokenProps, treeId, contentId, guid) {
153
- return RequestTileContentMemoizer.perform({ accessToken: RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps, treeId, contentId, guid });
154
- }
155
- async retrieveTileContent(tokenProps, key) {
156
- const db = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps);
157
- return db.tiles.getTileContent(key.treeId, key.contentId);
158
- }
159
- async getTileCacheContainerUrl(_tokenProps, id) {
160
- const invocation = core_common_1.RpcInvocation.current(this);
161
- if (!IModelHost_1.IModelHost.usingExternalTileCache) {
162
- return core_common_1.CloudStorageContainerUrl.empty();
163
- }
164
- const expiry = core_common_1.CloudStorageTileCache.getCache().supplyExpiryForContainerUrl(id);
165
- const clientIp = (IModelHost_1.IModelHost.restrictTileUrlsByClientIp && invocation.request.ip) ? invocation.request.ip : undefined;
166
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
167
- return IModelHost_1.IModelHost.tileCacheService.obtainContainerUrl(id, expiry, clientIp);
168
- }
169
- async isUsingExternalTileCache() {
170
- return IModelHost_1.IModelHost.usingExternalTileCache;
171
- }
172
- async queryVersionInfo() {
173
- return IModelHost_1.IModelHost.platform.getTileVersionInfo();
174
- }
175
- /** @internal */
176
- async requestElementGraphics(rpcProps, request) {
177
- const iModel = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, rpcProps);
178
- return iModel.generateElementGraphics(request);
179
- }
180
- }
181
- exports.IModelTileRpcImpl = IModelTileRpcImpl;
182
- /** @internal */
183
- async function cancelTileContentRequests(tokenProps, contentIds) {
184
- const iModel = IModelDb_1.IModelDb.findByKey(tokenProps.key);
185
- const props = { tokenProps, treeId: "", contentId: "" };
186
- for (const entry of contentIds) {
187
- props.treeId = entry.treeId;
188
- for (const contentId of entry.contentIds) {
189
- props.contentId = contentId;
190
- RequestTileContentMemoizer.instance.deleteMemoized(props);
191
- }
192
- iModel.nativeDb.cancelTileContentRequests(entry.treeId, entry.contentIds);
193
- }
194
- }
195
- exports.cancelTileContentRequests = cancelTileContentRequests;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module RpcInterface
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.cancelTileContentRequests = exports.IModelTileRpcImpl = void 0;
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_common_1 = require("@itwin/core-common");
13
+ const BackendLoggerCategory_1 = require("../BackendLoggerCategory");
14
+ const IModelDb_1 = require("../IModelDb");
15
+ const IModelHost_1 = require("../IModelHost");
16
+ const PromiseMemoizer_1 = require("../PromiseMemoizer");
17
+ const RpcBackend_1 = require("../RpcBackend");
18
+ const RpcBriefcaseUtility_1 = require("./RpcBriefcaseUtility");
19
+ function generateTileRequestKey(props) {
20
+ var _a;
21
+ const token = props.tokenProps;
22
+ return `${JSON.stringify({
23
+ key: token.key,
24
+ iTwinId: token.iTwinId,
25
+ iModelId: token.iModelId,
26
+ changesetId: (_a = token.changeset) === null || _a === void 0 ? void 0 : _a.id,
27
+ })}:${props.treeId}`;
28
+ }
29
+ class TileRequestMemoizer extends PromiseMemoizer_1.PromiseMemoizer {
30
+ constructor(memoizeFn, generateKeyFn) {
31
+ super(memoizeFn, generateKeyFn);
32
+ this._loggerCategory = BackendLoggerCategory_1.BackendLoggerCategory.IModelTileRequestRpc;
33
+ this._superMemoize = this.memoize;
34
+ this.memoize = (props) => {
35
+ return this._superMemoize(props);
36
+ };
37
+ this._superDeleteMemoized = this.deleteMemoized;
38
+ this.deleteMemoized = (props) => {
39
+ this._superDeleteMemoized(props);
40
+ };
41
+ }
42
+ makeMetadata(props) {
43
+ const meta = { ...props.tokenProps };
44
+ this.addMetadata(meta, props);
45
+ return meta;
46
+ }
47
+ log(status, props) {
48
+ const descr = `${this._operationName}(${this.stringify(props)})`;
49
+ core_bentley_1.Logger.logTrace(this._loggerCategory, `Backend ${status} ${descr}`, () => this.makeMetadata(props));
50
+ }
51
+ async perform(props) {
52
+ this.log("received", props);
53
+ const tileQP = this.memoize(props);
54
+ await core_bentley_1.BeDuration.race(this._timeoutMilliseconds, tileQP.promise).catch(() => { });
55
+ // Note: Rejections must be caught so that the memoization entry can be deleted
56
+ if (tileQP.isPending) {
57
+ this.log("issuing pending status for", props);
58
+ throw new core_common_1.RpcPendingResponse();
59
+ }
60
+ this.deleteMemoized(props);
61
+ if (tileQP.isFulfilled) {
62
+ this.log("completed", props);
63
+ (0, core_bentley_1.assert)(undefined !== tileQP.result);
64
+ return tileQP.result;
65
+ }
66
+ (0, core_bentley_1.assert)(tileQP.isRejected);
67
+ this.log("rejected", props);
68
+ throw tileQP.error; // eslint-disable-line no-throw-literal
69
+ }
70
+ }
71
+ async function getTileTreeProps(props) {
72
+ (0, core_bentley_1.assert)(undefined !== props.accessToken);
73
+ const db = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(props.accessToken, props.tokenProps);
74
+ return db.tiles.requestTileTreeProps(props.treeId);
75
+ }
76
+ class RequestTileTreePropsMemoizer extends TileRequestMemoizer {
77
+ constructor() {
78
+ super(getTileTreeProps, generateTileRequestKey);
79
+ IModelHost_1.IModelHost.onBeforeShutdown.addOnce(() => {
80
+ this.dispose();
81
+ RequestTileTreePropsMemoizer._instance = undefined;
82
+ });
83
+ }
84
+ get _timeoutMilliseconds() { return IModelHost_1.IModelHost.tileTreeRequestTimeout; }
85
+ get _operationName() { return "requestTileTreeProps"; }
86
+ stringify(props) { return props.treeId; }
87
+ addMetadata(meta, props) {
88
+ meta.treeId = props.treeId;
89
+ }
90
+ static async perform(props) {
91
+ if (undefined === this._instance)
92
+ this._instance = new RequestTileTreePropsMemoizer();
93
+ return this._instance.perform(props);
94
+ }
95
+ }
96
+ async function getTileContent(props) {
97
+ var _a;
98
+ (0, core_bentley_1.assert)(undefined !== props.accessToken);
99
+ const db = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(props.accessToken, props.tokenProps);
100
+ const tile = await db.tiles.requestTileContent(props.treeId, props.contentId);
101
+ // ###TODO: Verify the guid supplied by the front-end matches the guid stored in the model?
102
+ if (IModelHost_1.IModelHost.usingExternalTileCache) {
103
+ await ((_a = IModelHost_1.IModelHost.tileUploader) === null || _a === void 0 ? void 0 : _a.cacheTile(props.tokenProps, props.treeId, props.contentId, tile.content, props.guid, {
104
+ backendName: IModelHost_1.IModelHost.applicationId,
105
+ tileGenerationTime: tile.elapsedSeconds.toString(),
106
+ tileSize: tile.content.byteLength.toString(),
107
+ }));
108
+ return core_common_1.TileContentSource.ExternalCache;
109
+ }
110
+ return core_common_1.TileContentSource.Backend;
111
+ }
112
+ function generateTileContentKey(props) {
113
+ return `${generateTileRequestKey(props)}:${props.contentId}`;
114
+ }
115
+ class RequestTileContentMemoizer extends TileRequestMemoizer {
116
+ constructor() {
117
+ super(getTileContent, generateTileContentKey);
118
+ IModelHost_1.IModelHost.onBeforeShutdown.addOnce(() => {
119
+ this.dispose();
120
+ RequestTileContentMemoizer._instance = undefined;
121
+ });
122
+ }
123
+ get _timeoutMilliseconds() { return IModelHost_1.IModelHost.tileContentRequestTimeout; }
124
+ get _operationName() { return "requestTileContent"; }
125
+ stringify(props) { return `${props.treeId}:${props.contentId}`; }
126
+ addMetadata(meta, props) {
127
+ meta.treeId = props.treeId;
128
+ meta.contentId = props.contentId;
129
+ }
130
+ static get instance() {
131
+ if (undefined === this._instance)
132
+ this._instance = new RequestTileContentMemoizer();
133
+ return this._instance;
134
+ }
135
+ static async perform(props) {
136
+ return this.instance.perform(props);
137
+ }
138
+ }
139
+ /** @internal */
140
+ class IModelTileRpcImpl extends core_common_1.RpcInterface {
141
+ static register() { core_common_1.RpcManager.registerImpl(core_common_1.IModelTileRpcInterface, IModelTileRpcImpl); }
142
+ async requestTileTreeProps(tokenProps, treeId) {
143
+ return RequestTileTreePropsMemoizer.perform({ accessToken: RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps, treeId });
144
+ }
145
+ async purgeTileTrees(tokenProps, modelIds) {
146
+ // `undefined` gets forwarded as `null`...
147
+ if (null === modelIds)
148
+ modelIds = undefined;
149
+ const db = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps);
150
+ return db.nativeDb.purgeTileTrees(modelIds);
151
+ }
152
+ async generateTileContent(tokenProps, treeId, contentId, guid) {
153
+ return RequestTileContentMemoizer.perform({ accessToken: RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps, treeId, contentId, guid });
154
+ }
155
+ async retrieveTileContent(tokenProps, key) {
156
+ const db = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps);
157
+ return db.tiles.getTileContent(key.treeId, key.contentId);
158
+ }
159
+ async getTileCacheContainerUrl(_tokenProps, id) {
160
+ const invocation = core_common_1.RpcInvocation.current(this);
161
+ if (!IModelHost_1.IModelHost.usingExternalTileCache) {
162
+ return core_common_1.CloudStorageContainerUrl.empty();
163
+ }
164
+ const expiry = core_common_1.CloudStorageTileCache.getCache().supplyExpiryForContainerUrl(id);
165
+ const clientIp = (IModelHost_1.IModelHost.restrictTileUrlsByClientIp && invocation.request.ip) ? invocation.request.ip : undefined;
166
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
167
+ return IModelHost_1.IModelHost.tileCacheService.obtainContainerUrl(id, expiry, clientIp);
168
+ }
169
+ async isUsingExternalTileCache() {
170
+ return IModelHost_1.IModelHost.usingExternalTileCache;
171
+ }
172
+ async queryVersionInfo() {
173
+ return IModelHost_1.IModelHost.platform.getTileVersionInfo();
174
+ }
175
+ /** @internal */
176
+ async requestElementGraphics(rpcProps, request) {
177
+ const iModel = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, rpcProps);
178
+ return iModel.generateElementGraphics(request);
179
+ }
180
+ }
181
+ exports.IModelTileRpcImpl = IModelTileRpcImpl;
182
+ /** @internal */
183
+ async function cancelTileContentRequests(tokenProps, contentIds) {
184
+ const iModel = IModelDb_1.IModelDb.findByKey(tokenProps.key);
185
+ const props = { tokenProps, treeId: "", contentId: "" };
186
+ for (const entry of contentIds) {
187
+ props.treeId = entry.treeId;
188
+ for (const contentId of entry.contentIds) {
189
+ props.contentId = contentId;
190
+ RequestTileContentMemoizer.instance.deleteMemoized(props);
191
+ }
192
+ iModel.nativeDb.cancelTileContentRequests(entry.treeId, entry.contentIds);
193
+ }
194
+ }
195
+ exports.cancelTileContentRequests = cancelTileContentRequests;
196
196
  //# sourceMappingURL=IModelTileRpcImpl.js.map