@itwin/core-backend 3.4.0-dev.62 → 3.4.0-dev.63

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 (223) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/lib/cjs/AliCloudStorageService.d.ts +23 -23
  3. package/lib/cjs/AliCloudStorageService.js +71 -71
  4. package/lib/cjs/AliCloudStorageService.js.map +1 -1
  5. package/lib/cjs/BackendHubAccess.d.ts +224 -224
  6. package/lib/cjs/BackendHubAccess.js +41 -41
  7. package/lib/cjs/BackendHubAccess.js.map +1 -1
  8. package/lib/cjs/BackendLoggerCategory.d.ts +91 -91
  9. package/lib/cjs/BackendLoggerCategory.js +99 -99
  10. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  11. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  12. package/lib/cjs/BisCoreSchema.js +60 -60
  13. package/lib/cjs/BisCoreSchema.js.map +1 -1
  14. package/lib/cjs/BriefcaseManager.d.ts +165 -165
  15. package/lib/cjs/BriefcaseManager.js +405 -405
  16. package/lib/cjs/BriefcaseManager.js.map +1 -1
  17. package/lib/cjs/Category.d.ts +153 -153
  18. package/lib/cjs/Category.js +243 -243
  19. package/lib/cjs/Category.js.map +1 -1
  20. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  21. package/lib/cjs/ChangeSummaryManager.js +445 -445
  22. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  23. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  24. package/lib/cjs/ChangedElementsDb.js +165 -165
  25. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  26. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  27. package/lib/cjs/ChangedElementsManager.js +88 -88
  28. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  29. package/lib/cjs/CheckpointManager.d.ts +120 -120
  30. package/lib/cjs/CheckpointManager.js +343 -343
  31. package/lib/cjs/CheckpointManager.js.map +1 -1
  32. package/lib/cjs/ClassRegistry.d.ts +71 -71
  33. package/lib/cjs/ClassRegistry.js +215 -215
  34. package/lib/cjs/ClassRegistry.js.map +1 -1
  35. package/lib/cjs/CloudSqlite.d.ts +349 -349
  36. package/lib/cjs/CloudSqlite.js +151 -151
  37. package/lib/cjs/CloudSqlite.js.map +1 -1
  38. package/lib/cjs/CloudStorageBackend.d.ts +58 -58
  39. package/lib/cjs/CloudStorageBackend.js +173 -173
  40. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  41. package/lib/cjs/CodeService.d.ts +396 -396
  42. package/lib/cjs/CodeService.js +63 -63
  43. package/lib/cjs/CodeService.js.map +1 -1
  44. package/lib/cjs/CodeSpecs.d.ts +50 -50
  45. package/lib/cjs/CodeSpecs.js +112 -112
  46. package/lib/cjs/CodeSpecs.js.map +1 -1
  47. package/lib/cjs/ConcurrentQuery.d.ts +11 -11
  48. package/lib/cjs/ConcurrentQuery.js +30 -30
  49. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  50. package/lib/cjs/CustomViewState3dCreator.d.ts +32 -32
  51. package/lib/cjs/CustomViewState3dCreator.js +113 -113
  52. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  53. package/lib/cjs/DevTools.d.ts +71 -71
  54. package/lib/cjs/DevTools.js +154 -154
  55. package/lib/cjs/DevTools.js.map +1 -1
  56. package/lib/cjs/DisplayStyle.d.ts +106 -106
  57. package/lib/cjs/DisplayStyle.js +256 -256
  58. package/lib/cjs/DisplayStyle.js.map +1 -1
  59. package/lib/cjs/ECDb.d.ts +191 -191
  60. package/lib/cjs/ECDb.js +350 -350
  61. package/lib/cjs/ECDb.js.map +1 -1
  62. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  63. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  64. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  65. package/lib/cjs/ECSqlStatement.d.ts +466 -466
  66. package/lib/cjs/ECSqlStatement.js +791 -791
  67. package/lib/cjs/ECSqlStatement.js.map +1 -1
  68. package/lib/cjs/Element.d.ts +1109 -1109
  69. package/lib/cjs/Element.js +1420 -1420
  70. package/lib/cjs/Element.js.map +1 -1
  71. package/lib/cjs/ElementAspect.d.ts +156 -156
  72. package/lib/cjs/ElementAspect.js +178 -178
  73. package/lib/cjs/ElementAspect.js.map +1 -1
  74. package/lib/cjs/ElementGraphics.d.ts +9 -9
  75. package/lib/cjs/ElementGraphics.js +41 -41
  76. package/lib/cjs/ElementGraphics.js.map +1 -1
  77. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  78. package/lib/cjs/ElementTreeWalker.js +409 -409
  79. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  80. package/lib/cjs/Entity.d.ts +76 -76
  81. package/lib/cjs/Entity.js +82 -82
  82. package/lib/cjs/Entity.js.map +1 -1
  83. package/lib/cjs/ExportGraphics.d.ts +317 -317
  84. package/lib/cjs/ExportGraphics.js +208 -208
  85. package/lib/cjs/ExportGraphics.js.map +1 -1
  86. package/lib/cjs/ExternalSource.d.ts +94 -94
  87. package/lib/cjs/ExternalSource.js +125 -125
  88. package/lib/cjs/ExternalSource.js.map +1 -1
  89. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  90. package/lib/cjs/GeoCoordConfig.js +82 -82
  91. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  92. package/lib/cjs/GeometrySummary.d.ts +4 -4
  93. package/lib/cjs/GeometrySummary.js +380 -380
  94. package/lib/cjs/GeometrySummary.js.map +1 -1
  95. package/lib/cjs/HubMock.d.ts +93 -93
  96. package/lib/cjs/HubMock.js +190 -190
  97. package/lib/cjs/HubMock.js.map +1 -1
  98. package/lib/cjs/IModelCloneContext.d.ts +85 -85
  99. package/lib/cjs/IModelCloneContext.js +150 -150
  100. package/lib/cjs/IModelCloneContext.js.map +1 -1
  101. package/lib/cjs/IModelDb.d.ts +1164 -1164
  102. package/lib/cjs/IModelDb.js +2324 -2324
  103. package/lib/cjs/IModelDb.js.map +1 -1
  104. package/lib/cjs/IModelHost.d.ts +361 -361
  105. package/lib/cjs/IModelHost.js +489 -489
  106. package/lib/cjs/IModelHost.js.map +1 -1
  107. package/lib/cjs/IModelJsFs.d.ts +62 -62
  108. package/lib/cjs/IModelJsFs.js +140 -140
  109. package/lib/cjs/IModelJsFs.js.map +1 -1
  110. package/lib/cjs/IpcHost.d.ts +98 -98
  111. package/lib/cjs/IpcHost.js +234 -234
  112. package/lib/cjs/IpcHost.js.map +1 -1
  113. package/lib/cjs/LineStyle.d.ts +311 -311
  114. package/lib/cjs/LineStyle.js +295 -295
  115. package/lib/cjs/LineStyle.js.map +1 -1
  116. package/lib/cjs/LocalHub.d.ts +162 -162
  117. package/lib/cjs/LocalHub.js +587 -587
  118. package/lib/cjs/LocalHub.js.map +1 -1
  119. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  120. package/lib/cjs/LocalhostIpcHost.js +81 -81
  121. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  122. package/lib/cjs/Material.d.ts +103 -103
  123. package/lib/cjs/Material.js +147 -147
  124. package/lib/cjs/Material.js.map +1 -1
  125. package/lib/cjs/Model.d.ts +386 -386
  126. package/lib/cjs/Model.js +471 -471
  127. package/lib/cjs/Model.js.map +1 -1
  128. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  129. package/lib/cjs/NativeAppStorage.js +202 -202
  130. package/lib/cjs/NativeAppStorage.js.map +1 -1
  131. package/lib/cjs/NativeHost.d.ts +52 -52
  132. package/lib/cjs/NativeHost.js +168 -168
  133. package/lib/cjs/NativeHost.js.map +1 -1
  134. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  135. package/lib/cjs/NavigationRelationship.js +225 -225
  136. package/lib/cjs/NavigationRelationship.js.map +1 -1
  137. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  138. package/lib/cjs/PromiseMemoizer.js +101 -101
  139. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  140. package/lib/cjs/PropertyStore.d.ts +132 -132
  141. package/lib/cjs/PropertyStore.js +11 -11
  142. package/lib/cjs/PropertyStore.js.map +1 -1
  143. package/lib/cjs/Relationship.d.ts +400 -400
  144. package/lib/cjs/Relationship.js +465 -465
  145. package/lib/cjs/Relationship.js.map +1 -1
  146. package/lib/cjs/RpcBackend.d.ts +28 -28
  147. package/lib/cjs/RpcBackend.js +126 -126
  148. package/lib/cjs/RpcBackend.js.map +1 -1
  149. package/lib/cjs/SQLiteDb.d.ts +219 -219
  150. package/lib/cjs/SQLiteDb.js +214 -214
  151. package/lib/cjs/SQLiteDb.js.map +1 -1
  152. package/lib/cjs/Schema.d.ts +55 -55
  153. package/lib/cjs/Schema.js +83 -83
  154. package/lib/cjs/Schema.js.map +1 -1
  155. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  156. package/lib/cjs/ServerBasedLocks.js +168 -168
  157. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  158. package/lib/cjs/SqliteStatement.d.ts +283 -283
  159. package/lib/cjs/SqliteStatement.js +448 -448
  160. package/lib/cjs/SqliteStatement.js.map +1 -1
  161. package/lib/cjs/Texture.d.ts +58 -58
  162. package/lib/cjs/Texture.js +82 -82
  163. package/lib/cjs/Texture.js.map +1 -1
  164. package/lib/cjs/TileStorage.d.ts +18 -18
  165. package/lib/cjs/TileStorage.js +90 -90
  166. package/lib/cjs/TileStorage.js.map +1 -1
  167. package/lib/cjs/TxnManager.d.ts +202 -202
  168. package/lib/cjs/TxnManager.js +356 -356
  169. package/lib/cjs/TxnManager.js.map +1 -1
  170. package/lib/cjs/ViewDefinition.d.ts +435 -435
  171. package/lib/cjs/ViewDefinition.js +635 -635
  172. package/lib/cjs/ViewDefinition.js.map +1 -1
  173. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  174. package/lib/cjs/ViewStateHydrator.js +103 -103
  175. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  176. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  177. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  178. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  179. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  180. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  181. package/lib/cjs/core-backend.d.ts +182 -182
  182. package/lib/cjs/core-backend.js +202 -202
  183. package/lib/cjs/core-backend.js.map +1 -1
  184. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  185. package/lib/cjs/domains/FunctionalElements.js +145 -145
  186. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  187. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  188. package/lib/cjs/domains/FunctionalSchema.js +40 -40
  189. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  190. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  191. package/lib/cjs/domains/GenericElements.js +263 -263
  192. package/lib/cjs/domains/GenericElements.js.map +1 -1
  193. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  194. package/lib/cjs/domains/GenericSchema.js +28 -28
  195. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  196. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  197. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  198. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  199. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +45 -45
  200. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +262 -262
  201. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  202. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
  203. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +204 -204
  204. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  205. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  206. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +168 -168
  207. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  208. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  209. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +43 -43
  210. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  211. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  212. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  213. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  214. package/lib/cjs/workspace/Settings.d.ts +186 -186
  215. package/lib/cjs/workspace/Settings.js +155 -155
  216. package/lib/cjs/workspace/Settings.js.map +1 -1
  217. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  218. package/lib/cjs/workspace/SettingsSchemas.js +191 -191
  219. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  220. package/lib/cjs/workspace/Workspace.d.ts +414 -414
  221. package/lib/cjs/workspace/Workspace.js +543 -543
  222. package/lib/cjs/workspace/Workspace.js.map +1 -1
  223. package/package.json +11 -11
@@ -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":"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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 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,23 +1,23 @@
1
- /** @packageDocumentation
2
- * @module RpcInterface
3
- */
4
- import type { TransferConfig } from "@itwin/object-storage-core";
5
- import { Id64Array } from "@itwin/core-bentley";
6
- import { CloudStorageContainerDescriptor, CloudStorageContainerUrl, ElementGraphicsRequestProps, IModelRpcProps, IModelTileRpcInterface, IModelTileTreeProps, RpcInterface, TileContentIdentifier, TileContentSource, TileTreeContentIds, TileVersionInfo } from "@itwin/core-common";
7
- /** @internal */
8
- export declare class IModelTileRpcImpl extends RpcInterface implements IModelTileRpcInterface {
9
- static register(): void;
10
- requestTileTreeProps(tokenProps: IModelRpcProps, treeId: string): Promise<IModelTileTreeProps>;
11
- purgeTileTrees(tokenProps: IModelRpcProps, modelIds: Id64Array | undefined): Promise<void>;
12
- generateTileContent(tokenProps: IModelRpcProps, treeId: string, contentId: string, guid: string | undefined): Promise<TileContentSource>;
13
- retrieveTileContent(tokenProps: IModelRpcProps, key: TileContentIdentifier): Promise<Uint8Array>;
14
- getTileCacheConfig(tokenProps: IModelRpcProps): Promise<TransferConfig | undefined>;
15
- getTileCacheContainerUrl(_tokenProps: IModelRpcProps, id: CloudStorageContainerDescriptor): Promise<CloudStorageContainerUrl>;
16
- isUsingExternalTileCache(): Promise<boolean>;
17
- queryVersionInfo(): Promise<TileVersionInfo>;
18
- /** @internal */
19
- requestElementGraphics(rpcProps: IModelRpcProps, request: ElementGraphicsRequestProps): Promise<Uint8Array | undefined>;
20
- }
21
- /** @internal */
22
- export declare function cancelTileContentRequests(tokenProps: IModelRpcProps, contentIds: TileTreeContentIds[]): Promise<void>;
1
+ /** @packageDocumentation
2
+ * @module RpcInterface
3
+ */
4
+ import type { TransferConfig } from "@itwin/object-storage-core";
5
+ import { Id64Array } from "@itwin/core-bentley";
6
+ import { CloudStorageContainerDescriptor, CloudStorageContainerUrl, ElementGraphicsRequestProps, IModelRpcProps, IModelTileRpcInterface, IModelTileTreeProps, RpcInterface, TileContentIdentifier, TileContentSource, TileTreeContentIds, TileVersionInfo } from "@itwin/core-common";
7
+ /** @internal */
8
+ export declare class IModelTileRpcImpl extends RpcInterface implements IModelTileRpcInterface {
9
+ static register(): void;
10
+ requestTileTreeProps(tokenProps: IModelRpcProps, treeId: string): Promise<IModelTileTreeProps>;
11
+ purgeTileTrees(tokenProps: IModelRpcProps, modelIds: Id64Array | undefined): Promise<void>;
12
+ generateTileContent(tokenProps: IModelRpcProps, treeId: string, contentId: string, guid: string | undefined): Promise<TileContentSource>;
13
+ retrieveTileContent(tokenProps: IModelRpcProps, key: TileContentIdentifier): Promise<Uint8Array>;
14
+ getTileCacheConfig(tokenProps: IModelRpcProps): Promise<TransferConfig | undefined>;
15
+ getTileCacheContainerUrl(_tokenProps: IModelRpcProps, id: CloudStorageContainerDescriptor): Promise<CloudStorageContainerUrl>;
16
+ isUsingExternalTileCache(): Promise<boolean>;
17
+ queryVersionInfo(): Promise<TileVersionInfo>;
18
+ /** @internal */
19
+ requestElementGraphics(rpcProps: IModelRpcProps, request: ElementGraphicsRequestProps): Promise<Uint8Array | undefined>;
20
+ }
21
+ /** @internal */
22
+ export declare function cancelTileContentRequests(tokenProps: IModelRpcProps, contentIds: TileTreeContentIds[]): Promise<void>;
23
23
  //# sourceMappingURL=IModelTileRpcImpl.d.ts.map
@@ -1,205 +1,205 @@
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.tileStorage) === null || _a === void 0 ? void 0 : _a.uploadTile(db.iModelId, db.changeset.id, 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 getTileCacheConfig(tokenProps) {
160
- var _a;
161
- if (IModelHost_1.IModelHost.tileStorage === undefined)
162
- return undefined;
163
- const iModelId = (_a = tokenProps.iModelId) !== null && _a !== void 0 ? _a : (await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps)).iModelId;
164
- return IModelHost_1.IModelHost.tileStorage.getDownloadConfig(iModelId);
165
- }
166
- /* eslint-disable deprecation/deprecation */
167
- async getTileCacheContainerUrl(_tokenProps, id) {
168
- const invocation = core_common_1.RpcInvocation.current(this);
169
- if (!IModelHost_1.IModelHost.usingExternalTileCache) {
170
- return core_common_1.CloudStorageContainerUrl.empty();
171
- }
172
- const expiry = core_common_1.CloudStorageTileCache.getCache().supplyExpiryForContainerUrl(id);
173
- const clientIp = (IModelHost_1.IModelHost.restrictTileUrlsByClientIp && invocation.request.ip) ? invocation.request.ip : undefined;
174
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
175
- return IModelHost_1.IModelHost.tileCacheService.obtainContainerUrl(id, expiry, clientIp);
176
- }
177
- async isUsingExternalTileCache() {
178
- return IModelHost_1.IModelHost.tileCacheService !== undefined;
179
- }
180
- /* eslint-enable deprecation/deprecation */
181
- async queryVersionInfo() {
182
- return IModelHost_1.IModelHost.platform.getTileVersionInfo();
183
- }
184
- /** @internal */
185
- async requestElementGraphics(rpcProps, request) {
186
- const iModel = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, rpcProps);
187
- return iModel.generateElementGraphics(request);
188
- }
189
- }
190
- exports.IModelTileRpcImpl = IModelTileRpcImpl;
191
- /** @internal */
192
- async function cancelTileContentRequests(tokenProps, contentIds) {
193
- const iModel = IModelDb_1.IModelDb.findByKey(tokenProps.key);
194
- const props = { tokenProps, treeId: "", contentId: "" };
195
- for (const entry of contentIds) {
196
- props.treeId = entry.treeId;
197
- for (const contentId of entry.contentIds) {
198
- props.contentId = contentId;
199
- RequestTileContentMemoizer.instance.deleteMemoized(props);
200
- }
201
- iModel.nativeDb.cancelTileContentRequests(entry.treeId, entry.contentIds);
202
- }
203
- }
204
- 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.tileStorage) === null || _a === void 0 ? void 0 : _a.uploadTile(db.iModelId, db.changeset.id, 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 getTileCacheConfig(tokenProps) {
160
+ var _a;
161
+ if (IModelHost_1.IModelHost.tileStorage === undefined)
162
+ return undefined;
163
+ const iModelId = (_a = tokenProps.iModelId) !== null && _a !== void 0 ? _a : (await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, tokenProps)).iModelId;
164
+ return IModelHost_1.IModelHost.tileStorage.getDownloadConfig(iModelId);
165
+ }
166
+ /* eslint-disable deprecation/deprecation */
167
+ async getTileCacheContainerUrl(_tokenProps, id) {
168
+ const invocation = core_common_1.RpcInvocation.current(this);
169
+ if (!IModelHost_1.IModelHost.usingExternalTileCache) {
170
+ return core_common_1.CloudStorageContainerUrl.empty();
171
+ }
172
+ const expiry = core_common_1.CloudStorageTileCache.getCache().supplyExpiryForContainerUrl(id);
173
+ const clientIp = (IModelHost_1.IModelHost.restrictTileUrlsByClientIp && invocation.request.ip) ? invocation.request.ip : undefined;
174
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
175
+ return IModelHost_1.IModelHost.tileCacheService.obtainContainerUrl(id, expiry, clientIp);
176
+ }
177
+ async isUsingExternalTileCache() {
178
+ return IModelHost_1.IModelHost.tileCacheService !== undefined;
179
+ }
180
+ /* eslint-enable deprecation/deprecation */
181
+ async queryVersionInfo() {
182
+ return IModelHost_1.IModelHost.platform.getTileVersionInfo();
183
+ }
184
+ /** @internal */
185
+ async requestElementGraphics(rpcProps, request) {
186
+ const iModel = await RpcBriefcaseUtility_1.RpcBriefcaseUtility.findOpenIModel(RpcBackend_1.RpcTrace.expectCurrentActivity.accessToken, rpcProps);
187
+ return iModel.generateElementGraphics(request);
188
+ }
189
+ }
190
+ exports.IModelTileRpcImpl = IModelTileRpcImpl;
191
+ /** @internal */
192
+ async function cancelTileContentRequests(tokenProps, contentIds) {
193
+ const iModel = IModelDb_1.IModelDb.findByKey(tokenProps.key);
194
+ const props = { tokenProps, treeId: "", contentId: "" };
195
+ for (const entry of contentIds) {
196
+ props.treeId = entry.treeId;
197
+ for (const contentId of entry.contentIds) {
198
+ props.contentId = contentId;
199
+ RequestTileContentMemoizer.instance.deleteMemoized(props);
200
+ }
201
+ iModel.nativeDb.cancelTileContentRequests(entry.treeId, entry.contentIds);
202
+ }
203
+ }
204
+ exports.cancelTileContentRequests = cancelTileContentRequests;
205
205
  //# sourceMappingURL=IModelTileRpcImpl.js.map