@itwin/core-common 5.2.0-dev.3 → 5.2.0-dev.30

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 (462) hide show
  1. package/CHANGELOG.md +63 -1
  2. package/lib/cjs/AmbientOcclusion.js.map +1 -1
  3. package/lib/cjs/AnalysisStyle.d.ts.map +1 -1
  4. package/lib/cjs/AnalysisStyle.js +2 -0
  5. package/lib/cjs/AnalysisStyle.js.map +1 -1
  6. package/lib/cjs/Atmosphere.js.map +1 -1
  7. package/lib/cjs/AuthorizationClient.js.map +1 -1
  8. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  9. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  10. package/lib/cjs/Base64EncodedString.js.map +1 -1
  11. package/lib/cjs/BlobReader.d.ts.map +1 -1
  12. package/lib/cjs/BlobReader.js +10 -2
  13. package/lib/cjs/BlobReader.js.map +1 -1
  14. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  15. package/lib/cjs/Camera.js.map +1 -1
  16. package/lib/cjs/CatalogIModel.js.map +1 -1
  17. package/lib/cjs/CesiumIonAssets.js.map +1 -1
  18. package/lib/cjs/ChangedElements.js.map +1 -1
  19. package/lib/cjs/ChangedEntities.js.map +1 -1
  20. package/lib/cjs/ChangesetProps.js.map +1 -1
  21. package/lib/cjs/ClipStyle.js.map +1 -1
  22. package/lib/cjs/Code.js.map +1 -1
  23. package/lib/cjs/ColorByName.js.map +1 -1
  24. package/lib/cjs/ColorDef.js.map +1 -1
  25. package/lib/cjs/CommonLoggerCategory.js.map +1 -1
  26. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  27. package/lib/cjs/ContextRealityModel.js.map +1 -1
  28. package/lib/cjs/ContourDisplay.js.map +1 -1
  29. package/lib/cjs/DisplayStyleSettings.d.ts.map +1 -1
  30. package/lib/cjs/DisplayStyleSettings.js +1 -1
  31. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  32. package/lib/cjs/ECSchemaProps.js.map +1 -1
  33. package/lib/cjs/ECSqlReader.js.map +1 -1
  34. package/lib/cjs/ECSqlTypes.js +1 -1
  35. package/lib/cjs/ECSqlTypes.js.map +1 -1
  36. package/lib/cjs/ElementMesh.js.map +1 -1
  37. package/lib/cjs/ElementProps.d.ts +8 -0
  38. package/lib/cjs/ElementProps.d.ts.map +1 -1
  39. package/lib/cjs/ElementProps.js.map +1 -1
  40. package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
  41. package/lib/cjs/EntityProps.js.map +1 -1
  42. package/lib/cjs/EntityReference.js.map +1 -1
  43. package/lib/cjs/Environment.js.map +1 -1
  44. package/lib/cjs/FeatureIndex.d.ts.map +1 -1
  45. package/lib/cjs/FeatureIndex.js +2 -1
  46. package/lib/cjs/FeatureIndex.js.map +1 -1
  47. package/lib/cjs/FeatureSymbology.d.ts.map +1 -1
  48. package/lib/cjs/FeatureSymbology.js +0 -2
  49. package/lib/cjs/FeatureSymbology.js.map +1 -1
  50. package/lib/cjs/FeatureTable.js.map +1 -1
  51. package/lib/cjs/Fonts.js.map +1 -1
  52. package/lib/cjs/Frustum.js.map +1 -1
  53. package/lib/cjs/GenericInstanceFilter.js.map +1 -1
  54. package/lib/cjs/GeoCoordinateServices.js.map +1 -1
  55. package/lib/cjs/GeometryContainment.js.map +1 -1
  56. package/lib/cjs/GeometryParams.d.ts.map +1 -1
  57. package/lib/cjs/GeometryParams.js +6 -0
  58. package/lib/cjs/GeometryParams.js.map +1 -1
  59. package/lib/cjs/GeometrySummary.js.map +1 -1
  60. package/lib/cjs/Gradient.d.ts.map +1 -1
  61. package/lib/cjs/Gradient.js +5 -0
  62. package/lib/cjs/Gradient.js.map +1 -1
  63. package/lib/cjs/GraphicParams.js.map +1 -1
  64. package/lib/cjs/GroundPlane.js.map +1 -1
  65. package/lib/cjs/HSLColor.js.map +1 -1
  66. package/lib/cjs/HSVColor.js.map +1 -1
  67. package/lib/cjs/HiddenLine.d.ts.map +1 -1
  68. package/lib/cjs/HiddenLine.js +4 -1
  69. package/lib/cjs/HiddenLine.js.map +1 -1
  70. package/lib/cjs/Hilite.js.map +1 -1
  71. package/lib/cjs/IModel.d.ts.map +1 -1
  72. package/lib/cjs/IModel.js +7 -7
  73. package/lib/cjs/IModel.js.map +1 -1
  74. package/lib/cjs/IModelError.js.map +1 -1
  75. package/lib/cjs/IModelVersion.js.map +1 -1
  76. package/lib/cjs/ITwinCoreErrors.js.map +1 -1
  77. package/lib/cjs/Image.js.map +1 -1
  78. package/lib/cjs/IpcAppProps.js.map +1 -1
  79. package/lib/cjs/LightSettings.js.map +1 -1
  80. package/lib/cjs/LinePixels.js.map +1 -1
  81. package/lib/cjs/Localization.d.ts.map +1 -1
  82. package/lib/cjs/Localization.js +3 -0
  83. package/lib/cjs/Localization.js.map +1 -1
  84. package/lib/cjs/MapImagerySettings.js.map +1 -1
  85. package/lib/cjs/MapLayerSettings.js.map +1 -1
  86. package/lib/cjs/MassProperties.js.map +1 -1
  87. package/lib/cjs/MaterialProps.js.map +1 -1
  88. package/lib/cjs/ModelClipGroup.js.map +1 -1
  89. package/lib/cjs/ModelGeometryChanges.js.map +1 -1
  90. package/lib/cjs/ModelProps.js.map +1 -1
  91. package/lib/cjs/NativeAppProps.js.map +1 -1
  92. package/lib/cjs/OctEncodedNormal.js.map +1 -1
  93. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  94. package/lib/cjs/PlanarClipMask.js.map +1 -1
  95. package/lib/cjs/QPoint.js.map +1 -1
  96. package/lib/cjs/RealityDataAccessProps.js.map +1 -1
  97. package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
  98. package/lib/cjs/RenderMaterial.js.map +1 -1
  99. package/lib/cjs/RenderPolyline.js.map +1 -1
  100. package/lib/cjs/RenderTexture.js.map +1 -1
  101. package/lib/cjs/RgbColor.js.map +1 -1
  102. package/lib/cjs/RpcInterface.js.map +1 -1
  103. package/lib/cjs/RpcManager.js.map +1 -1
  104. package/lib/cjs/SessionProps.js.map +1 -1
  105. package/lib/cjs/SkyBox.js.map +1 -1
  106. package/lib/cjs/SolarCalculate.js.map +1 -1
  107. package/lib/cjs/SolarShadows.js.map +1 -1
  108. package/lib/cjs/SpatialClassification.js.map +1 -1
  109. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  110. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  111. package/lib/cjs/TerrainSettings.js.map +1 -1
  112. package/lib/cjs/TextureMapping.js +2 -2
  113. package/lib/cjs/TextureMapping.js.map +1 -1
  114. package/lib/cjs/TextureProps.js.map +1 -1
  115. package/lib/cjs/ThematicDisplay.d.ts.map +1 -1
  116. package/lib/cjs/ThematicDisplay.js +3 -1
  117. package/lib/cjs/ThematicDisplay.js.map +1 -1
  118. package/lib/cjs/Thumbnail.js.map +1 -1
  119. package/lib/cjs/TileProps.js.map +1 -1
  120. package/lib/cjs/Tween.d.ts +1 -1
  121. package/lib/cjs/Tween.d.ts.map +1 -1
  122. package/lib/cjs/Tween.js +4 -2
  123. package/lib/cjs/Tween.js.map +1 -1
  124. package/lib/cjs/TxnAction.js.map +1 -1
  125. package/lib/cjs/ViewDetails.js.map +1 -1
  126. package/lib/cjs/ViewFlags.js.map +1 -1
  127. package/lib/cjs/ViewProps.js.map +1 -1
  128. package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
  129. package/lib/cjs/annotation/TextAnnotation.d.ts +1 -1
  130. package/lib/cjs/annotation/TextAnnotation.d.ts.map +1 -1
  131. package/lib/cjs/annotation/TextAnnotation.js +1 -1
  132. package/lib/cjs/annotation/TextAnnotation.js.map +1 -1
  133. package/lib/cjs/annotation/TextBlock.d.ts +2 -11
  134. package/lib/cjs/annotation/TextBlock.d.ts.map +1 -1
  135. package/lib/cjs/annotation/TextBlock.js +2 -16
  136. package/lib/cjs/annotation/TextBlock.js.map +1 -1
  137. package/lib/cjs/annotation/TextBlockGeometryProps.js.map +1 -1
  138. package/lib/cjs/annotation/TextBlockLayoutResult.js.map +1 -1
  139. package/lib/cjs/annotation/TextStyle.js.map +1 -1
  140. package/lib/cjs/core-common.js.map +1 -1
  141. package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
  142. package/lib/cjs/domains/GenericElementProps.js.map +1 -1
  143. package/lib/cjs/geometry/AdditionalTransform.d.ts.map +1 -1
  144. package/lib/cjs/geometry/AdditionalTransform.js +1 -0
  145. package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
  146. package/lib/cjs/geometry/AreaPattern.d.ts.map +1 -1
  147. package/lib/cjs/geometry/AreaPattern.js +13 -0
  148. package/lib/cjs/geometry/AreaPattern.js.map +1 -1
  149. package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
  150. package/lib/cjs/geometry/Cartographic.js.map +1 -1
  151. package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts.map +1 -1
  152. package/lib/cjs/geometry/CoordinateReferenceSystem.js +7 -0
  153. package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
  154. package/lib/cjs/geometry/ElementGeometry.d.ts.map +1 -1
  155. package/lib/cjs/geometry/ElementGeometry.js +19 -10
  156. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  157. package/lib/cjs/geometry/ElementGeometryFB.d.ts.map +1 -1
  158. package/lib/cjs/geometry/ElementGeometryFB.js +1 -0
  159. package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
  160. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  161. package/lib/cjs/geometry/GeodeticDatum.d.ts.map +1 -1
  162. package/lib/cjs/geometry/GeodeticDatum.js +7 -0
  163. package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
  164. package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
  165. package/lib/cjs/geometry/GeometryStream.d.ts.map +1 -1
  166. package/lib/cjs/geometry/GeometryStream.js +2 -2
  167. package/lib/cjs/geometry/GeometryStream.js.map +1 -1
  168. package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
  169. package/lib/cjs/geometry/LineStyle.d.ts.map +1 -1
  170. package/lib/cjs/geometry/LineStyle.js +3 -0
  171. package/lib/cjs/geometry/LineStyle.js.map +1 -1
  172. package/lib/cjs/geometry/Placement.d.ts.map +1 -1
  173. package/lib/cjs/geometry/Placement.js +1 -1
  174. package/lib/cjs/geometry/Placement.js.map +1 -1
  175. package/lib/cjs/geometry/Projection.js.map +1 -1
  176. package/lib/cjs/geometry/TextString.js.map +1 -1
  177. package/lib/cjs/internal/BackendTypes.js.map +1 -1
  178. package/lib/cjs/internal/PackedFeatureTable.d.ts.map +1 -1
  179. package/lib/cjs/internal/PackedFeatureTable.js +1 -1
  180. package/lib/cjs/internal/PackedFeatureTable.js.map +1 -1
  181. package/lib/cjs/internal/RenderMaterialParams.js.map +1 -1
  182. package/lib/cjs/internal/RenderMesh.js.map +1 -1
  183. package/lib/cjs/internal/RenderTextureParams.js.map +1 -1
  184. package/lib/cjs/internal/Snapping.js.map +1 -1
  185. package/lib/cjs/internal/cross-package.js.map +1 -1
  186. package/lib/cjs/ipc/IpcSession.js.map +1 -1
  187. package/lib/cjs/ipc/IpcSocket.js.map +1 -1
  188. package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
  189. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  190. package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
  191. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  192. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  193. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  194. package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
  195. package/lib/cjs/rpc/core/RpcConfiguration.d.ts +0 -3
  196. package/lib/cjs/rpc/core/RpcConfiguration.d.ts.map +1 -1
  197. package/lib/cjs/rpc/core/RpcConfiguration.js +10 -2
  198. package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
  199. package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
  200. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  201. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  202. package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
  203. package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
  204. package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
  205. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  206. package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
  207. package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
  208. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  209. package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
  210. package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
  211. package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
  212. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  213. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +1 -1
  214. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  215. package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
  216. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  217. package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
  218. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  219. package/lib/cjs/rpc/web/WebAppRpcRequest.js +1 -1
  220. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  221. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  222. package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
  223. package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
  224. package/lib/cjs/tile/ElementGraphics.js.map +1 -1
  225. package/lib/cjs/tile/GltfTileIO.js.map +1 -1
  226. package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
  227. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  228. package/lib/cjs/tile/PntsTileIO.js.map +1 -1
  229. package/lib/cjs/tile/TileIO.js.map +1 -1
  230. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  231. package/lib/cjs/tile/Tileset3dSchema.js.map +1 -1
  232. package/lib/esm/AmbientOcclusion.js.map +1 -1
  233. package/lib/esm/AnalysisStyle.d.ts.map +1 -1
  234. package/lib/esm/AnalysisStyle.js +2 -0
  235. package/lib/esm/AnalysisStyle.js.map +1 -1
  236. package/lib/esm/Atmosphere.js.map +1 -1
  237. package/lib/esm/AuthorizationClient.js.map +1 -1
  238. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  239. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  240. package/lib/esm/Base64EncodedString.js.map +1 -1
  241. package/lib/esm/BlobReader.d.ts.map +1 -1
  242. package/lib/esm/BlobReader.js +10 -2
  243. package/lib/esm/BlobReader.js.map +1 -1
  244. package/lib/esm/BriefcaseTypes.js.map +1 -1
  245. package/lib/esm/Camera.js.map +1 -1
  246. package/lib/esm/CatalogIModel.js.map +1 -1
  247. package/lib/esm/CesiumIonAssets.js.map +1 -1
  248. package/lib/esm/ChangedElements.js.map +1 -1
  249. package/lib/esm/ChangedEntities.js.map +1 -1
  250. package/lib/esm/ChangesetProps.js.map +1 -1
  251. package/lib/esm/ClipStyle.js.map +1 -1
  252. package/lib/esm/Code.js.map +1 -1
  253. package/lib/esm/ColorByName.js.map +1 -1
  254. package/lib/esm/ColorDef.js.map +1 -1
  255. package/lib/esm/CommonLoggerCategory.js.map +1 -1
  256. package/lib/esm/ConcurrentQuery.js.map +1 -1
  257. package/lib/esm/ContextRealityModel.js.map +1 -1
  258. package/lib/esm/ContourDisplay.js.map +1 -1
  259. package/lib/esm/DisplayStyleSettings.d.ts.map +1 -1
  260. package/lib/esm/DisplayStyleSettings.js +2 -2
  261. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  262. package/lib/esm/ECSchemaProps.js.map +1 -1
  263. package/lib/esm/ECSqlReader.js.map +1 -1
  264. package/lib/esm/ECSqlTypes.js +1 -1
  265. package/lib/esm/ECSqlTypes.js.map +1 -1
  266. package/lib/esm/ElementMesh.js.map +1 -1
  267. package/lib/esm/ElementProps.d.ts +8 -0
  268. package/lib/esm/ElementProps.d.ts.map +1 -1
  269. package/lib/esm/ElementProps.js.map +1 -1
  270. package/lib/esm/EmphasizeElementsProps.js.map +1 -1
  271. package/lib/esm/EntityProps.js.map +1 -1
  272. package/lib/esm/EntityReference.js.map +1 -1
  273. package/lib/esm/Environment.js.map +1 -1
  274. package/lib/esm/FeatureIndex.d.ts.map +1 -1
  275. package/lib/esm/FeatureIndex.js +2 -1
  276. package/lib/esm/FeatureIndex.js.map +1 -1
  277. package/lib/esm/FeatureSymbology.d.ts.map +1 -1
  278. package/lib/esm/FeatureSymbology.js +0 -2
  279. package/lib/esm/FeatureSymbology.js.map +1 -1
  280. package/lib/esm/FeatureTable.js.map +1 -1
  281. package/lib/esm/Fonts.js.map +1 -1
  282. package/lib/esm/Frustum.js.map +1 -1
  283. package/lib/esm/GenericInstanceFilter.js.map +1 -1
  284. package/lib/esm/GeoCoordinateServices.js.map +1 -1
  285. package/lib/esm/GeometryContainment.js.map +1 -1
  286. package/lib/esm/GeometryParams.d.ts.map +1 -1
  287. package/lib/esm/GeometryParams.js +6 -0
  288. package/lib/esm/GeometryParams.js.map +1 -1
  289. package/lib/esm/GeometrySummary.js.map +1 -1
  290. package/lib/esm/Gradient.d.ts.map +1 -1
  291. package/lib/esm/Gradient.js +5 -0
  292. package/lib/esm/Gradient.js.map +1 -1
  293. package/lib/esm/GraphicParams.js.map +1 -1
  294. package/lib/esm/GroundPlane.js.map +1 -1
  295. package/lib/esm/HSLColor.js.map +1 -1
  296. package/lib/esm/HSVColor.js.map +1 -1
  297. package/lib/esm/HiddenLine.d.ts.map +1 -1
  298. package/lib/esm/HiddenLine.js +4 -1
  299. package/lib/esm/HiddenLine.js.map +1 -1
  300. package/lib/esm/Hilite.js.map +1 -1
  301. package/lib/esm/IModel.d.ts.map +1 -1
  302. package/lib/esm/IModel.js +8 -8
  303. package/lib/esm/IModel.js.map +1 -1
  304. package/lib/esm/IModelError.js.map +1 -1
  305. package/lib/esm/IModelVersion.js.map +1 -1
  306. package/lib/esm/ITwinCoreErrors.js.map +1 -1
  307. package/lib/esm/Image.js.map +1 -1
  308. package/lib/esm/IpcAppProps.js.map +1 -1
  309. package/lib/esm/LightSettings.js.map +1 -1
  310. package/lib/esm/LinePixels.js.map +1 -1
  311. package/lib/esm/Localization.d.ts.map +1 -1
  312. package/lib/esm/Localization.js +3 -0
  313. package/lib/esm/Localization.js.map +1 -1
  314. package/lib/esm/MapImagerySettings.js.map +1 -1
  315. package/lib/esm/MapLayerSettings.js.map +1 -1
  316. package/lib/esm/MassProperties.js.map +1 -1
  317. package/lib/esm/MaterialProps.js.map +1 -1
  318. package/lib/esm/ModelClipGroup.js.map +1 -1
  319. package/lib/esm/ModelGeometryChanges.js.map +1 -1
  320. package/lib/esm/ModelProps.js.map +1 -1
  321. package/lib/esm/NativeAppProps.js.map +1 -1
  322. package/lib/esm/OctEncodedNormal.js.map +1 -1
  323. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  324. package/lib/esm/PlanarClipMask.js.map +1 -1
  325. package/lib/esm/QPoint.js.map +1 -1
  326. package/lib/esm/RealityDataAccessProps.js.map +1 -1
  327. package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
  328. package/lib/esm/RenderMaterial.js.map +1 -1
  329. package/lib/esm/RenderPolyline.js.map +1 -1
  330. package/lib/esm/RenderTexture.js.map +1 -1
  331. package/lib/esm/RgbColor.js.map +1 -1
  332. package/lib/esm/RpcInterface.js.map +1 -1
  333. package/lib/esm/RpcManager.js.map +1 -1
  334. package/lib/esm/SessionProps.js.map +1 -1
  335. package/lib/esm/SkyBox.js.map +1 -1
  336. package/lib/esm/SolarCalculate.js.map +1 -1
  337. package/lib/esm/SolarShadows.js.map +1 -1
  338. package/lib/esm/SpatialClassification.js.map +1 -1
  339. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  340. package/lib/esm/SubCategoryOverride.js.map +1 -1
  341. package/lib/esm/TerrainSettings.js.map +1 -1
  342. package/lib/esm/TextureMapping.js +3 -3
  343. package/lib/esm/TextureMapping.js.map +1 -1
  344. package/lib/esm/TextureProps.js.map +1 -1
  345. package/lib/esm/ThematicDisplay.d.ts.map +1 -1
  346. package/lib/esm/ThematicDisplay.js +3 -1
  347. package/lib/esm/ThematicDisplay.js.map +1 -1
  348. package/lib/esm/Thumbnail.js.map +1 -1
  349. package/lib/esm/TileProps.js.map +1 -1
  350. package/lib/esm/Tween.d.ts +1 -1
  351. package/lib/esm/Tween.d.ts.map +1 -1
  352. package/lib/esm/Tween.js +4 -2
  353. package/lib/esm/Tween.js.map +1 -1
  354. package/lib/esm/TxnAction.js.map +1 -1
  355. package/lib/esm/ViewDetails.js.map +1 -1
  356. package/lib/esm/ViewFlags.js.map +1 -1
  357. package/lib/esm/ViewProps.js.map +1 -1
  358. package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
  359. package/lib/esm/annotation/TextAnnotation.d.ts +1 -1
  360. package/lib/esm/annotation/TextAnnotation.d.ts.map +1 -1
  361. package/lib/esm/annotation/TextAnnotation.js +1 -1
  362. package/lib/esm/annotation/TextAnnotation.js.map +1 -1
  363. package/lib/esm/annotation/TextBlock.d.ts +2 -11
  364. package/lib/esm/annotation/TextBlock.d.ts.map +1 -1
  365. package/lib/esm/annotation/TextBlock.js +2 -16
  366. package/lib/esm/annotation/TextBlock.js.map +1 -1
  367. package/lib/esm/annotation/TextBlockGeometryProps.js.map +1 -1
  368. package/lib/esm/annotation/TextBlockLayoutResult.js.map +1 -1
  369. package/lib/esm/annotation/TextStyle.js.map +1 -1
  370. package/lib/esm/core-common.js.map +1 -1
  371. package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
  372. package/lib/esm/domains/GenericElementProps.js.map +1 -1
  373. package/lib/esm/geometry/AdditionalTransform.d.ts.map +1 -1
  374. package/lib/esm/geometry/AdditionalTransform.js +1 -0
  375. package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
  376. package/lib/esm/geometry/AreaPattern.d.ts.map +1 -1
  377. package/lib/esm/geometry/AreaPattern.js +13 -0
  378. package/lib/esm/geometry/AreaPattern.js.map +1 -1
  379. package/lib/esm/geometry/BoundingSphere.js.map +1 -1
  380. package/lib/esm/geometry/Cartographic.js.map +1 -1
  381. package/lib/esm/geometry/CoordinateReferenceSystem.d.ts.map +1 -1
  382. package/lib/esm/geometry/CoordinateReferenceSystem.js +7 -0
  383. package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
  384. package/lib/esm/geometry/ElementGeometry.d.ts.map +1 -1
  385. package/lib/esm/geometry/ElementGeometry.js +20 -11
  386. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  387. package/lib/esm/geometry/ElementGeometryFB.d.ts.map +1 -1
  388. package/lib/esm/geometry/ElementGeometryFB.js +1 -0
  389. package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
  390. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  391. package/lib/esm/geometry/GeodeticDatum.d.ts.map +1 -1
  392. package/lib/esm/geometry/GeodeticDatum.js +7 -0
  393. package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
  394. package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
  395. package/lib/esm/geometry/GeometryStream.d.ts.map +1 -1
  396. package/lib/esm/geometry/GeometryStream.js +3 -3
  397. package/lib/esm/geometry/GeometryStream.js.map +1 -1
  398. package/lib/esm/geometry/ImageGraphic.js.map +1 -1
  399. package/lib/esm/geometry/LineStyle.d.ts.map +1 -1
  400. package/lib/esm/geometry/LineStyle.js +3 -0
  401. package/lib/esm/geometry/LineStyle.js.map +1 -1
  402. package/lib/esm/geometry/Placement.d.ts.map +1 -1
  403. package/lib/esm/geometry/Placement.js +2 -2
  404. package/lib/esm/geometry/Placement.js.map +1 -1
  405. package/lib/esm/geometry/Projection.js.map +1 -1
  406. package/lib/esm/geometry/TextString.js.map +1 -1
  407. package/lib/esm/internal/BackendTypes.js.map +1 -1
  408. package/lib/esm/internal/PackedFeatureTable.d.ts.map +1 -1
  409. package/lib/esm/internal/PackedFeatureTable.js +2 -2
  410. package/lib/esm/internal/PackedFeatureTable.js.map +1 -1
  411. package/lib/esm/internal/RenderMaterialParams.js.map +1 -1
  412. package/lib/esm/internal/RenderMesh.js.map +1 -1
  413. package/lib/esm/internal/RenderTextureParams.js.map +1 -1
  414. package/lib/esm/internal/Snapping.js.map +1 -1
  415. package/lib/esm/internal/cross-package.js.map +1 -1
  416. package/lib/esm/ipc/IpcSession.js.map +1 -1
  417. package/lib/esm/ipc/IpcSocket.js.map +1 -1
  418. package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
  419. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  420. package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
  421. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  422. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  423. package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  424. package/lib/esm/rpc/TestRpcManager.js.map +1 -1
  425. package/lib/esm/rpc/core/RpcConfiguration.d.ts +0 -3
  426. package/lib/esm/rpc/core/RpcConfiguration.d.ts.map +1 -1
  427. package/lib/esm/rpc/core/RpcConfiguration.js +10 -2
  428. package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
  429. package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
  430. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  431. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  432. package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
  433. package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
  434. package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
  435. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  436. package/lib/esm/rpc/core/RpcPush.js.map +1 -1
  437. package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
  438. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  439. package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
  440. package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
  441. package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
  442. package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  443. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +1 -1
  444. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  445. package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
  446. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  447. package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
  448. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  449. package/lib/esm/rpc/web/WebAppRpcRequest.js +2 -2
  450. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  451. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  452. package/lib/esm/tile/B3dmTileIO.js.map +1 -1
  453. package/lib/esm/tile/CompositeTileIO.js.map +1 -1
  454. package/lib/esm/tile/ElementGraphics.js.map +1 -1
  455. package/lib/esm/tile/GltfTileIO.js.map +1 -1
  456. package/lib/esm/tile/I3dmTileIO.js.map +1 -1
  457. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  458. package/lib/esm/tile/PntsTileIO.js.map +1 -1
  459. package/lib/esm/tile/TileIO.js.map +1 -1
  460. package/lib/esm/tile/TileMetadata.js.map +1 -1
  461. package/lib/esm/tile/Tileset3dSchema.js.map +1 -1
  462. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"IpcWebSocket.js","sourceRoot":"","sources":["../../../src/ipc/IpcWebSocket.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 IpcSocket\n */\n\nimport { IpcListener, IpcSocket, IpcSocketBackend, IpcSocketFrontend, RemoveFunction } from \"./IpcSocket\";\nimport { IpcWebSocketTransport } from \"./IpcWebSocketTransport\";\n\n/** @internal */\nexport enum IpcWebSocketMessageType {\n Send,\n Push,\n Invoke,\n Response,\n Internal,\n Duplicate\n}\n\n/** @internal */\nexport interface IpcWebSocketMessage {\n type: IpcWebSocketMessageType;\n request?: number;\n response?: number;\n channel: string;\n method?: string;\n data?: any[];\n sequence: number;\n}\n\n/** @internal */\nexport namespace IpcWebSocketMessage {\n export function internal(): IpcWebSocketMessage {\n return { type: IpcWebSocketMessageType.Internal, channel: \"\", sequence: Number.MIN_SAFE_INTEGER };\n }\n\n export function duplicate(): IpcWebSocketMessage {\n return { type: IpcWebSocketMessageType.Duplicate, channel: \"\", sequence: Number.MIN_SAFE_INTEGER };\n }\n\n export function skip(message: IpcWebSocketMessage): boolean {\n return message.type === IpcWebSocketMessageType.Internal || message.type === IpcWebSocketMessageType.Duplicate;\n }\n}\n\n/** @internal */\nexport abstract class IpcWebSocket implements IpcSocket {\n public static transport: IpcWebSocketTransport;\n public static receivers: Set<(evt: Event, message: IpcWebSocketMessage) => void> = new Set();\n\n protected _channels = new Map<string, Set<IpcListener>>();\n\n public constructor() {\n IpcWebSocket.receivers.add(async (e, m) => this.broadcast(e, m));\n }\n\n public abstract send(channel: string, ...data: any[]): void;\n\n public addListener(channel: string, listener: IpcListener): RemoveFunction {\n let listeners = this._channels.get(channel);\n if (!listeners) {\n listeners = new Set();\n this._channels.set(channel, listeners);\n }\n\n if (!listeners.has(listener))\n listeners.add(listener);\n\n return () => listeners.delete(listener);\n }\n\n public removeListener(channel: string, listener: IpcListener) {\n this._channels.get(channel)?.delete(listener);\n }\n\n private async broadcast(evt: Event, message: IpcWebSocketMessage) {\n if (message.type !== IpcWebSocketMessageType.Send && message.type !== IpcWebSocketMessageType.Push)\n return;\n\n const handlers = this._channels.get(message.channel);\n if (!handlers)\n return;\n\n let arg = message.data;\n if (typeof (arg) === \"undefined\")\n arg = [];\n\n for (const handler of handlers)\n handler(evt, ...arg);\n }\n}\n\n/** @internal */\nexport class IpcWebSocketFrontend extends IpcWebSocket implements IpcSocketFrontend {\n private _nextRequest = 0;\n private _pendingRequests = new Map<number, (response: any) => void>();\n\n public constructor() {\n super();\n IpcWebSocket.receivers.add(async (e, m) => this.dispatch(e, m));\n }\n\n public send(channel: string, ...data: any[]): void {\n IpcWebSocket.transport.send({ type: IpcWebSocketMessageType.Send, channel, data, sequence: -1 });\n }\n\n public async invoke(channel: string, methodName: string, ...args: any[]): Promise<any> {\n const requestId = ++this._nextRequest;\n IpcWebSocket.transport.send({ type: IpcWebSocketMessageType.Invoke, channel, method: methodName, data: args, request: requestId, sequence: -1 });\n\n return new Promise((resolve) => {\n this._pendingRequests.set(requestId, resolve);\n });\n }\n\n private async dispatch(_evt: Event, message: IpcWebSocketMessage) {\n if (message.type !== IpcWebSocketMessageType.Response || !message.response)\n return;\n\n const pendingHandler = this._pendingRequests.get(message.response);\n if (!pendingHandler)\n return;\n\n this._pendingRequests.delete(message.response);\n pendingHandler(message.data);\n }\n}\n\n/** @internal */\nexport class IpcWebSocketBackend extends IpcWebSocket implements IpcSocketBackend {\n private _handlers = new Map<string, (event: Event, methodName: string, ...args: any[]) => Promise<any>>();\n private _processingQueue: IpcWebSocketMessage[] = [];\n\n public constructor() {\n super();\n IpcWebSocket.receivers.add(async (e, m) => this.dispatch(e, m));\n }\n\n public send(channel: string, ...data: any[]): void {\n IpcWebSocket.transport.send({ type: IpcWebSocketMessageType.Push, channel, data, sequence: -1 });\n }\n\n public handle(channel: string, handler: (event: Event, methodName: string, ...args: any[]) => Promise<any>): RemoveFunction {\n this._handlers.set(channel, handler);\n\n return () => {\n if (this._handlers.get(channel) === handler)\n this._handlers.delete(channel);\n };\n }\n\n private async dispatch(_evt: Event, message: IpcWebSocketMessage) {\n if (message.type !== IpcWebSocketMessageType.Invoke)\n return;\n\n this._processingQueue.push(message);\n await this.processMessages();\n }\n\n private async processMessages() {\n if (!this._processingQueue.length) {\n return;\n }\n\n const message = this._processingQueue.shift();\n if (message && message.method) {\n const handler = this._handlers.get(message.channel);\n if (handler) {\n let args = message.data;\n if (typeof (args) === \"undefined\")\n args = [];\n\n const response = await handler({} as any, message.method, ...args);\n\n IpcWebSocket.transport.send({\n type: IpcWebSocketMessageType.Response,\n channel: message.channel,\n response: message.request,\n data: response,\n sequence: -1,\n });\n }\n }\n\n await this.processMessages();\n }\n}\n"]}
1
+ {"version":3,"file":"IpcWebSocket.js","sourceRoot":"","sources":["../../../src/ipc/IpcWebSocket.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 IpcSocket\r\n */\r\n\r\nimport { IpcListener, IpcSocket, IpcSocketBackend, IpcSocketFrontend, RemoveFunction } from \"./IpcSocket\";\r\nimport { IpcWebSocketTransport } from \"./IpcWebSocketTransport\";\r\n\r\n/** @internal */\r\nexport enum IpcWebSocketMessageType {\r\n Send,\r\n Push,\r\n Invoke,\r\n Response,\r\n Internal,\r\n Duplicate\r\n}\r\n\r\n/** @internal */\r\nexport interface IpcWebSocketMessage {\r\n type: IpcWebSocketMessageType;\r\n request?: number;\r\n response?: number;\r\n channel: string;\r\n method?: string;\r\n data?: any[];\r\n sequence: number;\r\n}\r\n\r\n/** @internal */\r\nexport namespace IpcWebSocketMessage {\r\n export function internal(): IpcWebSocketMessage {\r\n return { type: IpcWebSocketMessageType.Internal, channel: \"\", sequence: Number.MIN_SAFE_INTEGER };\r\n }\r\n\r\n export function duplicate(): IpcWebSocketMessage {\r\n return { type: IpcWebSocketMessageType.Duplicate, channel: \"\", sequence: Number.MIN_SAFE_INTEGER };\r\n }\r\n\r\n export function skip(message: IpcWebSocketMessage): boolean {\r\n return message.type === IpcWebSocketMessageType.Internal || message.type === IpcWebSocketMessageType.Duplicate;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport abstract class IpcWebSocket implements IpcSocket {\r\n public static transport: IpcWebSocketTransport;\r\n public static receivers: Set<(evt: Event, message: IpcWebSocketMessage) => void> = new Set();\r\n\r\n protected _channels = new Map<string, Set<IpcListener>>();\r\n\r\n public constructor() {\r\n IpcWebSocket.receivers.add(async (e, m) => this.broadcast(e, m));\r\n }\r\n\r\n public abstract send(channel: string, ...data: any[]): void;\r\n\r\n public addListener(channel: string, listener: IpcListener): RemoveFunction {\r\n let listeners = this._channels.get(channel);\r\n if (!listeners) {\r\n listeners = new Set();\r\n this._channels.set(channel, listeners);\r\n }\r\n\r\n if (!listeners.has(listener))\r\n listeners.add(listener);\r\n\r\n return () => listeners.delete(listener);\r\n }\r\n\r\n public removeListener(channel: string, listener: IpcListener) {\r\n this._channels.get(channel)?.delete(listener);\r\n }\r\n\r\n private async broadcast(evt: Event, message: IpcWebSocketMessage) {\r\n if (message.type !== IpcWebSocketMessageType.Send && message.type !== IpcWebSocketMessageType.Push)\r\n return;\r\n\r\n const handlers = this._channels.get(message.channel);\r\n if (!handlers)\r\n return;\r\n\r\n let arg = message.data;\r\n if (typeof (arg) === \"undefined\")\r\n arg = [];\r\n\r\n for (const handler of handlers)\r\n handler(evt, ...arg);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class IpcWebSocketFrontend extends IpcWebSocket implements IpcSocketFrontend {\r\n private _nextRequest = 0;\r\n private _pendingRequests = new Map<number, (response: any) => void>();\r\n\r\n public constructor() {\r\n super();\r\n IpcWebSocket.receivers.add(async (e, m) => this.dispatch(e, m));\r\n }\r\n\r\n public send(channel: string, ...data: any[]): void {\r\n IpcWebSocket.transport.send({ type: IpcWebSocketMessageType.Send, channel, data, sequence: -1 });\r\n }\r\n\r\n public async invoke(channel: string, methodName: string, ...args: any[]): Promise<any> {\r\n const requestId = ++this._nextRequest;\r\n IpcWebSocket.transport.send({ type: IpcWebSocketMessageType.Invoke, channel, method: methodName, data: args, request: requestId, sequence: -1 });\r\n\r\n return new Promise((resolve) => {\r\n this._pendingRequests.set(requestId, resolve);\r\n });\r\n }\r\n\r\n private async dispatch(_evt: Event, message: IpcWebSocketMessage) {\r\n if (message.type !== IpcWebSocketMessageType.Response || !message.response)\r\n return;\r\n\r\n const pendingHandler = this._pendingRequests.get(message.response);\r\n if (!pendingHandler)\r\n return;\r\n\r\n this._pendingRequests.delete(message.response);\r\n pendingHandler(message.data);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class IpcWebSocketBackend extends IpcWebSocket implements IpcSocketBackend {\r\n private _handlers = new Map<string, (event: Event, methodName: string, ...args: any[]) => Promise<any>>();\r\n private _processingQueue: IpcWebSocketMessage[] = [];\r\n\r\n public constructor() {\r\n super();\r\n IpcWebSocket.receivers.add(async (e, m) => this.dispatch(e, m));\r\n }\r\n\r\n public send(channel: string, ...data: any[]): void {\r\n IpcWebSocket.transport.send({ type: IpcWebSocketMessageType.Push, channel, data, sequence: -1 });\r\n }\r\n\r\n public handle(channel: string, handler: (event: Event, methodName: string, ...args: any[]) => Promise<any>): RemoveFunction {\r\n this._handlers.set(channel, handler);\r\n\r\n return () => {\r\n if (this._handlers.get(channel) === handler)\r\n this._handlers.delete(channel);\r\n };\r\n }\r\n\r\n private async dispatch(_evt: Event, message: IpcWebSocketMessage) {\r\n if (message.type !== IpcWebSocketMessageType.Invoke)\r\n return;\r\n\r\n this._processingQueue.push(message);\r\n await this.processMessages();\r\n }\r\n\r\n private async processMessages() {\r\n if (!this._processingQueue.length) {\r\n return;\r\n }\r\n\r\n const message = this._processingQueue.shift();\r\n if (message && message.method) {\r\n const handler = this._handlers.get(message.channel);\r\n if (handler) {\r\n let args = message.data;\r\n if (typeof (args) === \"undefined\")\r\n args = [];\r\n\r\n const response = await handler({} as any, message.method, ...args);\r\n\r\n IpcWebSocket.transport.send({\r\n type: IpcWebSocketMessageType.Response,\r\n channel: message.channel,\r\n response: message.request,\r\n data: response,\r\n sequence: -1,\r\n });\r\n }\r\n }\r\n\r\n await this.processMessages();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IpcWebSocketTransport.js","sourceRoot":"","sources":["../../../src/ipc/IpcWebSocketTransport.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 IpcSocket\n */\n\nimport { IpcWebSocketMessage } from \"./IpcWebSocket\";\n\nfunction isBuffer(val: any): boolean {\n return val && typeof (val.constructor) !== \"undefined\" && typeof (val.constructor.isBuffer) === \"function\" && val.constructor.isBuffer(val);\n}\n\nlet parts: any[] = [];\n\n/** @internal */\nexport abstract class IpcWebSocketTransport {\n private _partial?: string;\n private _received: any[] = [];\n private _outstanding = 0;\n\n public abstract send(message: IpcWebSocketMessage): void;\n\n protected unwrap(data: any) {\n return (typeof (Blob) !== \"undefined\" && data instanceof Blob) ? data.arrayBuffer() : data;\n }\n\n protected async notifyIncoming(data: any, connection: any): Promise<IpcWebSocketMessage> {\n if (this._partial) {\n this._received.push(data);\n --this._outstanding;\n\n if (this._outstanding === 0) {\n const partial = this._partial;\n const received = this._received;\n this._partial = undefined;\n this._received = [];\n await Promise.all(received.map(async (v, i, a) => a[i] = await this.unwrap(v)));\n\n parts = received;\n const message: IpcWebSocketMessage = JSON.parse(partial, reviver);\n parts.length = 0;\n\n return InSentOrder.deliver(message, connection);\n } else {\n return IpcWebSocketMessage.internal();\n }\n } else {\n const [serialized, followers] = JSON.parse(data);\n\n if (followers) {\n this._partial = serialized;\n this._outstanding = followers;\n return IpcWebSocketMessage.internal();\n } else {\n const message: IpcWebSocketMessage = JSON.parse(serialized, reviver);\n return InSentOrder.deliver(message, connection);\n }\n }\n }\n\n protected serialize(data: IpcWebSocketMessage): any[] {\n parts.length = 0;\n const objects = JSON.stringify(data, replacer);\n const value = [JSON.stringify([objects, parts.length]), ...parts];\n parts.length = 0;\n return value;\n }\n\n protected notifyClose(connection: any) {\n InSentOrder.close(connection);\n }\n}\n\ninterface Marker { ipc: \"binary\", type: number, index: number }\nconst types = [Uint8Array, Int8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array, DataView];\nfunction identify(value: any) {\n return isBuffer(value) ? 0 : types.indexOf(value.constructor);\n}\n\nfunction lookup(value: Marker) {\n return types[value.type];\n}\n\nfunction replacer(this: any, _key: string, value: any) {\n const asBinary = replaceBinary(value);\n if (asBinary) {\n return asBinary;\n }\n\n return value;\n}\n\nfunction reviver(_key: string, value: any) {\n if (typeof (value) === \"object\" && value !== null && value.hasOwnProperty(\"ipc\") && value.ipc === \"binary\") {\n return reviveBinary(value);\n }\n\n return value;\n}\n\nfunction replaceBinary(value: any): Marker | undefined {\n if (ArrayBuffer.isView(value) || isBuffer(value)) {\n const index = parts.push(value) - 1;\n const type = identify(value);\n return { ipc: \"binary\", type, index };\n } else {\n return undefined;\n }\n}\n\nfunction reviveBinary(value: Marker): ArrayBufferView {\n const constructor = lookup(value);\n const part = parts[value.index];\n return new constructor(part);\n}\n\nfunction makePromise<T>() {\n let resolve: (value: T | PromiseLike<T>) => void = () => { };\n let reject: (reason?: any) => void = () => { };\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n}\n\n/* Reconstructing the sequence in which messages were sent is necessary since\n the binary data for a message has to be awaited in IpcWebSocketTransport.unwrap. */\nclass InSentOrder {\n private static _connections: Map<any, { queue: InSentOrder[], last: number }> = new Map();\n\n public static async deliver(message: IpcWebSocketMessage, connection: any): Promise<IpcWebSocketMessage> {\n let context = this._connections.get(connection);\n if (!context) {\n context = { queue: [], last: -1 };\n this._connections.set(connection, context);\n }\n\n const entry = new InSentOrder(message);\n context.queue.push(entry);\n context.queue.sort((a, b) => a.sequence - b.sequence);\n\n while (context.queue.length !== 0) {\n const next = context.queue[0];\n const duplicate = next.sequence <= context.last;\n const match = next.sequence === (context.last + 1);\n\n if (duplicate) {\n next.duplicate = true;\n } else if (match) {\n ++context.last;\n }\n\n if (duplicate || match) {\n context.queue.shift();\n next.release();\n } else {\n break;\n }\n }\n\n return entry.message;\n }\n\n public static close(connection: any) {\n this._connections.delete(connection);\n }\n\n public release = () => { };\n public sequence: number;\n public duplicate = false;\n public message: Promise<IpcWebSocketMessage>;\n\n private constructor(message: IpcWebSocketMessage) {\n this.sequence = message.sequence;\n\n const { promise, resolve } = makePromise<IpcWebSocketMessage>();\n this.message = promise;\n\n this.release = () => {\n const value = this.duplicate ? IpcWebSocketMessage.duplicate() : message;\n resolve(value);\n };\n }\n}\n"]}
1
+ {"version":3,"file":"IpcWebSocketTransport.js","sourceRoot":"","sources":["../../../src/ipc/IpcWebSocketTransport.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,iDAAqD;AAErD,SAAS,QAAQ,CAAC,GAAQ;IACxB,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9I,CAAC;AAED,IAAI,KAAK,GAAU,EAAE,CAAC;AAEtB,gBAAgB;AAChB,MAAsB,qBAAqB;IACjC,QAAQ,CAAU;IAClB,SAAS,GAAU,EAAE,CAAC;IACtB,YAAY,GAAG,CAAC,CAAC;IAIf,MAAM,CAAC,IAAS;QACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,IAAS,EAAE,UAAe;QACvD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,EAAE,IAAI,CAAC,YAAY,CAAC;YAEpB,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;gBACpB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhF,KAAK,GAAG,QAAQ,CAAC;gBACjB,MAAM,OAAO,GAAwB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAEjB,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,kCAAmB,CAAC,QAAQ,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;gBAC3B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBAC9B,OAAO,kCAAmB,CAAC,QAAQ,EAAE,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAwB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACrE,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAES,SAAS,CAAC,IAAyB;QAC3C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QAClE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAES,WAAW,CAAC,UAAe;QACnC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;CACF;AAxDD,sDAwDC;AAGD,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACjJ,SAAS,QAAQ,CAAC,KAAU;IAC1B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,QAAQ,CAAY,IAAY,EAAE,KAAU;IACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAU;IACvC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3G,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAU;IAC/B,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,OAAO,GAAwC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,MAAM,GAA2B,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,OAAO,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAED;sFACsF;AACtF,MAAM,WAAW;IACP,MAAM,CAAC,YAAY,GAAqD,IAAI,GAAG,EAAE,CAAC;IAEnF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAA4B,EAAE,UAAe;QACvE,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEtD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YAEnD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACjB,EAAE,OAAO,CAAC,IAAI,CAAC;YACjB,CAAC;YAED,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAe;QACjC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAEM,OAAO,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAS;IACjB,SAAS,GAAG,KAAK,CAAC;IAClB,OAAO,CAA+B;IAE7C,YAAoB,OAA4B;QAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEjC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,EAAuB,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kCAAmB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACzE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IpcSocket\r\n */\r\n\r\nimport { IpcWebSocketMessage } from \"./IpcWebSocket\";\r\n\r\nfunction isBuffer(val: any): boolean {\r\n return val && typeof (val.constructor) !== \"undefined\" && typeof (val.constructor.isBuffer) === \"function\" && val.constructor.isBuffer(val);\r\n}\r\n\r\nlet parts: any[] = [];\r\n\r\n/** @internal */\r\nexport abstract class IpcWebSocketTransport {\r\n private _partial?: string;\r\n private _received: any[] = [];\r\n private _outstanding = 0;\r\n\r\n public abstract send(message: IpcWebSocketMessage): void;\r\n\r\n protected unwrap(data: any) {\r\n return (typeof (Blob) !== \"undefined\" && data instanceof Blob) ? data.arrayBuffer() : data;\r\n }\r\n\r\n protected async notifyIncoming(data: any, connection: any): Promise<IpcWebSocketMessage> {\r\n if (this._partial) {\r\n this._received.push(data);\r\n --this._outstanding;\r\n\r\n if (this._outstanding === 0) {\r\n const partial = this._partial;\r\n const received = this._received;\r\n this._partial = undefined;\r\n this._received = [];\r\n await Promise.all(received.map(async (v, i, a) => a[i] = await this.unwrap(v)));\r\n\r\n parts = received;\r\n const message: IpcWebSocketMessage = JSON.parse(partial, reviver);\r\n parts.length = 0;\r\n\r\n return InSentOrder.deliver(message, connection);\r\n } else {\r\n return IpcWebSocketMessage.internal();\r\n }\r\n } else {\r\n const [serialized, followers] = JSON.parse(data);\r\n\r\n if (followers) {\r\n this._partial = serialized;\r\n this._outstanding = followers;\r\n return IpcWebSocketMessage.internal();\r\n } else {\r\n const message: IpcWebSocketMessage = JSON.parse(serialized, reviver);\r\n return InSentOrder.deliver(message, connection);\r\n }\r\n }\r\n }\r\n\r\n protected serialize(data: IpcWebSocketMessage): any[] {\r\n parts.length = 0;\r\n const objects = JSON.stringify(data, replacer);\r\n const value = [JSON.stringify([objects, parts.length]), ...parts];\r\n parts.length = 0;\r\n return value;\r\n }\r\n\r\n protected notifyClose(connection: any) {\r\n InSentOrder.close(connection);\r\n }\r\n}\r\n\r\ninterface Marker { ipc: \"binary\", type: number, index: number }\r\nconst types = [Uint8Array, Int8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array, DataView];\r\nfunction identify(value: any) {\r\n return isBuffer(value) ? 0 : types.indexOf(value.constructor);\r\n}\r\n\r\nfunction lookup(value: Marker) {\r\n return types[value.type];\r\n}\r\n\r\nfunction replacer(this: any, _key: string, value: any) {\r\n const asBinary = replaceBinary(value);\r\n if (asBinary) {\r\n return asBinary;\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction reviver(_key: string, value: any) {\r\n if (typeof (value) === \"object\" && value !== null && value.hasOwnProperty(\"ipc\") && value.ipc === \"binary\") {\r\n return reviveBinary(value);\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction replaceBinary(value: any): Marker | undefined {\r\n if (ArrayBuffer.isView(value) || isBuffer(value)) {\r\n const index = parts.push(value) - 1;\r\n const type = identify(value);\r\n return { ipc: \"binary\", type, index };\r\n } else {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction reviveBinary(value: Marker): ArrayBufferView {\r\n const constructor = lookup(value);\r\n const part = parts[value.index];\r\n return new constructor(part);\r\n}\r\n\r\nfunction makePromise<T>() {\r\n let resolve: (value: T | PromiseLike<T>) => void = () => { };\r\n let reject: (reason?: any) => void = () => { };\r\n const promise = new Promise<T>((res, rej) => {\r\n resolve = res;\r\n reject = rej;\r\n });\r\n\r\n return { promise, resolve, reject };\r\n}\r\n\r\n/* Reconstructing the sequence in which messages were sent is necessary since\r\n the binary data for a message has to be awaited in IpcWebSocketTransport.unwrap. */\r\nclass InSentOrder {\r\n private static _connections: Map<any, { queue: InSentOrder[], last: number }> = new Map();\r\n\r\n public static async deliver(message: IpcWebSocketMessage, connection: any): Promise<IpcWebSocketMessage> {\r\n let context = this._connections.get(connection);\r\n if (!context) {\r\n context = { queue: [], last: -1 };\r\n this._connections.set(connection, context);\r\n }\r\n\r\n const entry = new InSentOrder(message);\r\n context.queue.push(entry);\r\n context.queue.sort((a, b) => a.sequence - b.sequence);\r\n\r\n while (context.queue.length !== 0) {\r\n const next = context.queue[0];\r\n const duplicate = next.sequence <= context.last;\r\n const match = next.sequence === (context.last + 1);\r\n\r\n if (duplicate) {\r\n next.duplicate = true;\r\n } else if (match) {\r\n ++context.last;\r\n }\r\n\r\n if (duplicate || match) {\r\n context.queue.shift();\r\n next.release();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return entry.message;\r\n }\r\n\r\n public static close(connection: any) {\r\n this._connections.delete(connection);\r\n }\r\n\r\n public release = () => { };\r\n public sequence: number;\r\n public duplicate = false;\r\n public message: Promise<IpcWebSocketMessage>;\r\n\r\n private constructor(message: IpcWebSocketMessage) {\r\n this.sequence = message.sequence;\r\n\r\n const { promise, resolve } = makePromise<IpcWebSocketMessage>();\r\n this.message = promise;\r\n\r\n this.release = () => {\r\n const value = this.duplicate ? IpcWebSocketMessage.duplicate() : message;\r\n resolve(value);\r\n };\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/DevToolsRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH,kDAA+C;AAC/C,8CAA2C;AAE3C;;GAEG;AACH,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,+DAAQ,CAAA;IAER,oFAAoF;IACpF,6EAAe,CAAA;AACjB,CAAC,EALW,oBAAoB,oCAApB,oBAAoB,QAK/B;AAED;;;GAGG;AACH,MAAsB,oBAAqB,SAAQ,2BAAY;IAC7D,oEAAoE;IAC7D,MAAM,CAAC,SAAS,KAA2B,OAAO,uBAAU,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAElH,2CAA2C;IACpC,MAAM,CAAU,aAAa,GAAG,sBAAsB,CAAC;IAE9D;;OAEG;IACI,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAEzC;;;gGAG4F;IAC5F,iEAAiE;IAC1D,KAAK,CAAC,IAAI,CAAC,YAA4B,IAAsB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAErG,qEAAqE;IAC9D,KAAK,CAAC,KAAK,CAAC,YAA4B,EAAE,QAA8B,IAAkB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAElI,uEAAuE;IAChE,KAAK,CAAC,QAAQ,CAAC,YAA4B;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACrD,QAAQ,CAAC,aAAa,GAAG,MAAM,uBAAU,CAAC,0BAA0B,EAAE,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gFAAgF;IACzE,KAAK,CAAC,WAAW,CAAC,YAA4B,EAAE,eAAuB,EAAE,SAAmB,IAAmC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AA9BzK,oDA+BC","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 { LogLevel } from \"@itwin/core-bentley\";\nimport { IModelRpcProps } from \"../IModel\";\nimport { RpcInterface } from \"../RpcInterface\";\nimport { RpcManager } from \"../RpcManager\";\n\n/** Options to get the backend statistics\n * @internal\n */\nexport enum DevToolsStatsOptions {\n None = 0,\n\n /** All unitized values are setup as formatted strings with the appropriate units */\n FormatUnits = 1,\n}\n\n/** The purpose of this class is to house RPC methods for developer tools.\n * Note that this should NOT be used in production environments.\n * @internal\n */\nexport abstract class DevToolsRpcInterface extends RpcInterface {\n /** Returns the IModelReadRpcInterface instance for the frontend. */\n public static getClient(): DevToolsRpcInterface { return RpcManager.getClientForInterface(DevToolsRpcInterface); }\n\n /** The immutable name of the interface. */\n public static readonly interfaceName = \"DevToolsRpcInterface\";\n\n /** The semantic version of the interface.\n * @note The DevToolsRpcInterface will remain at 0.x since it is for testing only and not intended for production.\n */\n public static interfaceVersion = \"0.7.0\";\n\n /*===========================================================================================\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\n NOTE: Please consult the README in this folder for the semantic versioning rules.\n ==========================================================================================*/\n // Sends a ping and returns true if the backend received the ping\n public async ping(_iModelToken: IModelRpcProps): Promise<boolean> { return this.forward(arguments); }\n\n // Returns JSON object with backend performance and memory statistics\n public async stats(_iModelToken: IModelRpcProps, _options: DevToolsStatsOptions): Promise<any> { return this.forward(arguments); }\n\n // Returns JSON object with backend versions (application and iModelJs)\n public async versions(_iModelToken: IModelRpcProps): Promise<any> {\n const versions = await this.forward(arguments) || {};\n versions.availableRpcs = await RpcManager.describeAvailableEndpoints();\n return versions;\n }\n\n // Sets a new log level for the specified category and returns the old log level\n public async setLogLevel(_iModelToken: IModelRpcProps, _loggerCategory: string, _logLevel: LogLevel): Promise<LogLevel | undefined> { return this.forward(arguments); }\n}\n"]}
1
+ {"version":3,"file":"DevToolsRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/DevToolsRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH,kDAA+C;AAC/C,8CAA2C;AAE3C;;GAEG;AACH,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,+DAAQ,CAAA;IAER,oFAAoF;IACpF,6EAAe,CAAA;AACjB,CAAC,EALW,oBAAoB,oCAApB,oBAAoB,QAK/B;AAED;;;GAGG;AACH,MAAsB,oBAAqB,SAAQ,2BAAY;IAC7D,oEAAoE;IAC7D,MAAM,CAAC,SAAS,KAA2B,OAAO,uBAAU,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAElH,2CAA2C;IACpC,MAAM,CAAU,aAAa,GAAG,sBAAsB,CAAC;IAE9D;;OAEG;IACI,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAEzC;;;gGAG4F;IAC5F,iEAAiE;IAC1D,KAAK,CAAC,IAAI,CAAC,YAA4B,IAAsB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAErG,qEAAqE;IAC9D,KAAK,CAAC,KAAK,CAAC,YAA4B,EAAE,QAA8B,IAAkB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAElI,uEAAuE;IAChE,KAAK,CAAC,QAAQ,CAAC,YAA4B;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACrD,QAAQ,CAAC,aAAa,GAAG,MAAM,uBAAU,CAAC,0BAA0B,EAAE,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gFAAgF;IACzE,KAAK,CAAC,WAAW,CAAC,YAA4B,EAAE,eAAuB,EAAE,SAAmB,IAAmC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AA9BzK,oDA+BC","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 { LogLevel } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps } from \"../IModel\";\r\nimport { RpcInterface } from \"../RpcInterface\";\r\nimport { RpcManager } from \"../RpcManager\";\r\n\r\n/** Options to get the backend statistics\r\n * @internal\r\n */\r\nexport enum DevToolsStatsOptions {\r\n None = 0,\r\n\r\n /** All unitized values are setup as formatted strings with the appropriate units */\r\n FormatUnits = 1,\r\n}\r\n\r\n/** The purpose of this class is to house RPC methods for developer tools.\r\n * Note that this should NOT be used in production environments.\r\n * @internal\r\n */\r\nexport abstract class DevToolsRpcInterface extends RpcInterface {\r\n /** Returns the IModelReadRpcInterface instance for the frontend. */\r\n public static getClient(): DevToolsRpcInterface { return RpcManager.getClientForInterface(DevToolsRpcInterface); }\r\n\r\n /** The immutable name of the interface. */\r\n public static readonly interfaceName = \"DevToolsRpcInterface\";\r\n\r\n /** The semantic version of the interface.\r\n * @note The DevToolsRpcInterface will remain at 0.x since it is for testing only and not intended for production.\r\n */\r\n public static interfaceVersion = \"0.7.0\";\r\n\r\n /*===========================================================================================\r\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\r\n NOTE: Please consult the README in this folder for the semantic versioning rules.\r\n ==========================================================================================*/\r\n // Sends a ping and returns true if the backend received the ping\r\n public async ping(_iModelToken: IModelRpcProps): Promise<boolean> { return this.forward(arguments); }\r\n\r\n // Returns JSON object with backend performance and memory statistics\r\n public async stats(_iModelToken: IModelRpcProps, _options: DevToolsStatsOptions): Promise<any> { return this.forward(arguments); }\r\n\r\n // Returns JSON object with backend versions (application and iModelJs)\r\n public async versions(_iModelToken: IModelRpcProps): Promise<any> {\r\n const versions = await this.forward(arguments) || {};\r\n versions.availableRpcs = await RpcManager.describeAvailableEndpoints();\r\n return versions;\r\n }\r\n\r\n // Sets a new log level for the specified category and returns the old log level\r\n public async setLogLevel(_iModelToken: IModelRpcProps, _loggerCategory: string, _logLevel: LogLevel): Promise<LogLevel | undefined> { return this.forward(arguments); }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IModelReadRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/IModelReadRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;AAoBH,kDAA+C;AAC/C,8CAA2C;AAO3C,sDAA8D;AAC9D,kDAAwD;AACxD,sDAAmD;AAGnD;;;GAGG;AACH,MAAa,sBAAuB,SAAQ,gCAAmB;IACtD,wBAAwB,GAAY,IAAI,CAAC;IAChC,OAAO,GAAG,kBAAkB,CAAC;CAC9C;AAHD,wDAGC;AAwBD;;;;GAIG;AACH,MAAsB,sBAAuB,SAAQ,2BAAY;IAC/D,oEAAoE;IAC7D,MAAM,CAAC,SAAS,KAA6B,OAAO,uBAAU,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAEtH,0FAA0F;IACnF,MAAM,CAAC,mBAAmB,CAAC,KAAsB,IAA4B,OAAO,uBAAU,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7J,2CAA2C;IACpC,MAAM,CAAU,aAAa,GAAG,wBAAwB,CAAC;IAEhE,6CAA6C;IACtC,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAEzC;;;iGAG6F;IAEhF,AAAN,KAAK,CAAC,kBAAkB,CAAC,YAAgC,IAAoC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9H,KAAK,CAAC,SAAS,CAAC,YAA4B,EAAE,QAAwB,IAA8B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE/H,AAAN,KAAK,CAAC,kBAAkB,CAAC,YAA4B,EAAE,YAA+B,IAAqC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtJ,AAAN,KAAK,CAAC,gCAAgC,CAAC,YAA4B,IAAqC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzI,KAAK,CAAC,SAAS,CAAC,YAA4B,EAAE,QAAuB,IAA6B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7H,AAAN,KAAK,CAAC,aAAa,CAAC,YAA4B,EAAE,SAAuB,IAA2B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE/H,AAAN,KAAK,CAAC,gBAAgB,CAAC,YAA4B,EAAE,SAAuB,IAA6B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEpI,AAAN,KAAK,CAAC,iBAAiB,CAAC,YAA4B,EAAE,SAAuB,IAAkC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAChJ,KAAK,CAAC,eAAe,CAAC,YAA4B,EAAE,OAA0B,IAA2B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1I,KAAK,CAAC,eAAe,CAAC,YAA4B,EAAE,WAAyB,IAA6B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3I,KAAK,CAAC,iBAAiB,CAAC,YAA4B,EAAE,OAA0B,IAA6B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9I,KAAK,CAAC,cAAc,CAAC,YAA4B,EAAE,OAA0B,IAA2B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEnI,AAAN,KAAK,CAAC,iBAAiB,CAAC,YAA4B,EAAE,eAAuB,IAAuB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrI,KAAK,CAAC,eAAe,CAAC,YAA4B,IAAoB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEjG,AAAN,KAAK,CAAC,gBAAgB,CAAC,YAA4B,EAAE,iBAAyB,EAAE,QAA6B,IAA6B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3K,KAAK,CAAC,YAAY,CAAC,YAA4B,IAA2B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,uDAAuD;IACnK,KAAK,CAAC,iBAAiB,CAAC,YAA4B,EAAE,UAAkB,IAAuB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvI,yFAAyF;IAClF,KAAK,CAAC,gBAAgB,CAAC,YAA4B,EAAE,OAAe,IAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAExH,AAAN,KAAK,CAAC,gBAAgB,CAAC,YAA4B,IAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEvG,AAAN,KAAK,CAAC,wBAAwB,CAAC,YAA4B,EAAE,QAAyC,IAAqC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtK,AAAN,KAAK,CAAC,gBAAgB,CAAC,YAA4B,EAAE,QAAsC,IAA4C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACxK,KAAK,CAAC,WAAW,CAAC,YAA4B,EAAE,UAAkB,EAAE,MAAwB,IAAgC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7J,KAAK,CAAC,UAAU,CAAC,YAA4B,EAAE,UAAkB,IAAmB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrH,KAAK,CAAC,sBAAsB,CAAC,YAA4B,EAAE,MAAuC,IAA+C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClL,KAAK,CAAC,iBAAiB,CAAC,YAA4B,EAAE,MAAkC,IAA0C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACnK,KAAK,CAAC,6BAA6B,CAAC,YAA4B,EAAE,MAA8C,IAAwD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAE,uDAAuD;IAClQ,KAAK,CAAC,sCAAsC,CAAC,YAA4B,EAAE,MAAqC,IAA6C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAExL,AAAN,KAAK,CAAC,sCAAsC,CAAC,YAA4B,EAAE,MAAkC,IAA0C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACxL,KAAK,CAAC,kBAAkB,CAAC,YAA4B,EAAE,MAAmC,IAAqB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAChJ,KAAK,CAAC,gBAAgB,CAAC,YAA4B,EAAE,iBAAmC,IAAsC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/J,KAAK,CAAC,gBAAgB,CAAC,YAA4B,EAAE,kBAAuD,EAAE,QAA6B;QAChJ,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IACM,KAAK,CAAC,qBAAqB,CAAC,YAA4B,EAAE,MAA+B;QAC9F,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,gBAAgB;IACT,KAAK,CAAC,aAAa,CAAC,YAA4B,EAAE,QAAgB,EAAE,SAAkB,EAAE,WAAmB,EAAE,GAAG,KAAY,IAAkB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAnExL,wDAoEC;AAlDc;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;gEACgE;AAGxH;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;gEAC8F;AAEtJ;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;8EAC2E;AAGnI;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;2DACuE;AAE/H;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;8DAC4E;AAEpI;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;+DACkF;AAM1I;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;+DACuE;AAG/H;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;8DAC6G;AAMrK;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;8DAC+C;AAEvG;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;sEAC8G;AAEtK;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;8DAC0G;AAQlK;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;oFAC0H","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 { CompressedId64Set, GuidString, Id64String, IModelStatus } from \"@itwin/core-bentley\";\nimport { Range3dProps } from \"@itwin/core-geometry\";\nimport { CodeProps } from \"../Code\";\nimport { DbBlobRequest, DbBlobResponse, DbQueryRequest, DbQueryResponse } from \"../ConcurrentQuery\";\nimport { ElementMeshRequestProps } from \"../ElementMesh\";\nimport { ElementLoadOptions, ElementProps } from \"../ElementProps\";\nimport { EntityQueryParams } from \"../EntityProps\";\nimport { FontMapProps } from \"../Fonts\";\nimport {\n GeoCoordinatesRequestProps, GeoCoordinatesResponseProps, IModelCoordinatesRequestProps, IModelCoordinatesResponseProps,\n} from \"../GeoCoordinateServices\";\nimport { GeometryContainmentRequestProps, GeometryContainmentResponseProps } from \"../GeometryContainment\";\nimport { GeometrySummaryRequestProps } from \"../GeometrySummary\";\nimport { IModelConnectionProps, IModelRpcOpenProps, IModelRpcProps } from \"../IModel\";\nimport {\n MassPropertiesPerCandidateRequestProps, MassPropertiesPerCandidateResponseProps, MassPropertiesRequestProps, MassPropertiesResponseProps,\n} from \"../MassProperties\";\nimport { ModelProps } from \"../ModelProps\";\nimport { RpcInterface } from \"../RpcInterface\";\nimport { RpcManager } from \"../RpcManager\";\nimport { SnapRequestProps, SnapResponseProps } from \"../internal/Snapping\";\nimport { TextureData, TextureLoadProps } from \"../TextureProps\";\nimport {\n CustomViewState3dCreatorOptions, CustomViewState3dProps, HydrateViewStateRequestProps, HydrateViewStateResponseProps, SubCategoryResultRow,\n ViewStateLoadProps, ViewStateProps,\n} from \"../ViewProps\";\nimport { RpcResponseCacheControl } from \"./core/RpcConstants\";\nimport { RpcNotFoundResponse } from \"./core/RpcControl\";\nimport { RpcOperation } from \"./core/RpcOperation\";\nimport { RpcRoutingToken } from \"./core/RpcRoutingToken\";\n\n/** Response if the IModelDb was not found at the backend\n * (if the service has moved)\n * @public\n */\nexport class IModelNotFoundResponse extends RpcNotFoundResponse {\n public isIModelNotFoundResponse: boolean = true;\n public override message = \"iModel not found\";\n}\n\n/** Describes the volume of geometry contained with a [GeometricModel]($backend) as returned by\n * [IModelConnection.Models.queryExtents]($frontend) and [IModelDb.Models.queryExtents]($backend).\n * @public\n */\nexport interface ModelExtentsProps {\n /** The Id of the model, or [Id64.invalid]($bentley) if the input model Id was not a well-formed [Id64String]($bentley). */\n id: Id64String;\n /** The volume of geometry contained within the model.\n * This range will be null (@see [Range3d.isNull]($geometry)) if [[status]] is not [IModelStatus.Success]($bentley) or the model contains no geometry.\n */\n extents: Range3dProps;\n /** A status code indicating what if any error occurred obtaining the model's extents. For example:\n * - [IModelStatus.InvalidId]($bentley) if the input model Id was not a well-formed [Id64String]($bentley);\n * - [IModelStatus.NotFound]($bentley) if no model with the specified Id exists in the [[IModel]];\n * - [IModelStatus.WrongModel]($bentley) if the specified model is not a [GeometricModel]($backend); or\n * - [IModelStatus.Success]($bentley) if the extents were successfully obtained.\n *\n * If `status` is anything other than [IModelStatus.Success]($bentley), [[extents]] will be a null range.\n */\n status: IModelStatus;\n}\n\n/** The RPC interface for reading from an iModel.\n * All operations only require read-only access.\n * This interface is not normally used directly. See IModelConnection for higher-level and more convenient API for accessing iModels from a frontend.\n * @internal\n */\nexport abstract class IModelReadRpcInterface extends RpcInterface {\n /** Returns the IModelReadRpcInterface instance for the frontend. */\n public static getClient(): IModelReadRpcInterface { return RpcManager.getClientForInterface(IModelReadRpcInterface); }\n\n /** Returns the IModelReadRpcInterface instance for a custom RPC routing configuration. */\n public static getClientForRouting(token: RpcRoutingToken): IModelReadRpcInterface { return RpcManager.getClientForInterface(IModelReadRpcInterface, token); }\n\n /** The immutable name of the interface. */\n public static readonly interfaceName = \"IModelReadRpcInterface\";\n\n /** The semantic version of the interface. */\n public static interfaceVersion = \"3.7.0\";\n\n /*===========================================================================================\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\n NOTE: Please consult the README in this folder for the semantic versioning rules.\n ===========================================================================================*/\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async getConnectionProps(_iModelToken: IModelRpcOpenProps): Promise<IModelConnectionProps> { return this.forward(arguments); }\n public async queryRows(_iModelToken: IModelRpcProps, _request: DbQueryRequest): Promise<DbQueryResponse> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async querySubCategories(_iModelToken: IModelRpcProps, _categoryIds: CompressedId64Set): Promise<SubCategoryResultRow[]> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async queryAllUsedSpatialSubCategories(_iModelToken: IModelRpcProps): Promise<SubCategoryResultRow[]> { return this.forward(arguments); }\n public async queryBlob(_iModelToken: IModelRpcProps, _request: DbBlobRequest): Promise<DbBlobResponse> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async getModelProps(_iModelToken: IModelRpcProps, _modelIds: Id64String[]): Promise<ModelProps[]> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async queryModelRanges(_iModelToken: IModelRpcProps, _modelIds: Id64String[]): Promise<Range3dProps[]> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async queryModelExtents(_iModelToken: IModelRpcProps, _modelIds: Id64String[]): Promise<ModelExtentsProps[]> { return this.forward(arguments); }\n public async queryModelProps(_iModelToken: IModelRpcProps, _params: EntityQueryParams): Promise<ModelProps[]> { return this.forward(arguments); }\n public async getElementProps(_iModelToken: IModelRpcProps, _elementIds: Id64String[]): Promise<ElementProps[]> { return this.forward(arguments); }\n public async queryElementProps(_iModelToken: IModelRpcProps, _params: EntityQueryParams): Promise<ElementProps[]> { return this.forward(arguments); }\n public async queryEntityIds(_iModelToken: IModelRpcProps, _params: EntityQueryParams): Promise<Id64String[]> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async getClassHierarchy(_iModelToken: IModelRpcProps, _startClassName: string): Promise<string[]> { return this.forward(arguments); }\n public async getAllCodeSpecs(_iModelToken: IModelRpcProps): Promise<any[]> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async getViewStateData(_iModelToken: IModelRpcProps, _viewDefinitionId: string, _options?: ViewStateLoadProps): Promise<ViewStateProps> { return this.forward(arguments); }\n public async readFontJson(_iModelToken: IModelRpcProps): Promise<FontMapProps> { return this.forward(arguments); } // eslint-disable-line @typescript-eslint/no-deprecated\n public async getToolTipMessage(_iModelToken: IModelRpcProps, _elementId: string): Promise<string[]> { return this.forward(arguments); }\n /** @deprecated in 3.3.0 - might be removed in next major version. Use ViewStore apis. */\n public async getViewThumbnail(_iModelToken: IModelRpcProps, _viewId: string): Promise<Uint8Array> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async getDefaultViewId(_iModelToken: IModelRpcProps): Promise<Id64String> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async getCustomViewState3dData(_iModelToken: IModelRpcProps, _options: CustomViewState3dCreatorOptions): Promise<CustomViewState3dProps> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async hydrateViewState(_iModelToken: IModelRpcProps, _options: HydrateViewStateRequestProps): Promise<HydrateViewStateResponseProps> { return this.forward(arguments); }\n public async requestSnap(_iModelToken: IModelRpcProps, _sessionId: string, _props: SnapRequestProps): Promise<SnapResponseProps> { return this.forward(arguments); }\n public async cancelSnap(_iModelToken: IModelRpcProps, _sessionId: string): Promise<void> { return this.forward(arguments); }\n public async getGeometryContainment(_iModelToken: IModelRpcProps, _props: GeometryContainmentRequestProps): Promise<GeometryContainmentResponseProps> { return this.forward(arguments); }\n public async getMassProperties(_iModelToken: IModelRpcProps, _props: MassPropertiesRequestProps): Promise<MassPropertiesResponseProps> { return this.forward(arguments); }\n public async getMassPropertiesPerCandidate(_iModelToken: IModelRpcProps, _props: MassPropertiesPerCandidateRequestProps): Promise<MassPropertiesPerCandidateResponseProps[]> { return this.forward(arguments); } // eslint-disable-line @typescript-eslint/no-deprecated\n public async getIModelCoordinatesFromGeoCoordinates(_iModelToken: IModelRpcProps, _props: IModelCoordinatesRequestProps): Promise<IModelCoordinatesResponseProps> { return this.forward(arguments); }\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async getGeoCoordinatesFromIModelCoordinates(_iModelToken: IModelRpcProps, _props: GeoCoordinatesRequestProps): Promise<GeoCoordinatesResponseProps> { return this.forward(arguments); }\n public async getGeometrySummary(_iModelToken: IModelRpcProps, _props: GeometrySummaryRequestProps): Promise<string> { return this.forward(arguments); }\n public async queryTextureData(_iModelToken: IModelRpcProps, _textureLoadProps: TextureLoadProps): Promise<TextureData | undefined> { return this.forward(arguments); }\n public async loadElementProps(_iModelToken: IModelRpcProps, _elementIdentifier: Id64String | GuidString | CodeProps, _options?: ElementLoadOptions): Promise<ElementProps | undefined> {\n return this.forward(arguments);\n }\n public async generateElementMeshes(_iModelToken: IModelRpcProps, _props: ElementMeshRequestProps): Promise<Uint8Array> {\n return this.forward(arguments);\n }\n /** @internal */\n public async callViewStore(_iModelToken: IModelRpcProps, _version: string, _forWrite: boolean, _methodName: string, ..._args: any[]): Promise<any> { return this.forward(arguments); }\n}\n"]}
1
+ {"version":3,"file":"IModelReadRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/IModelReadRpcInterface.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 { CompressedId64Set, GuidString, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Range3dProps } from \"@itwin/core-geometry\";\r\nimport { CodeProps } from \"../Code\";\r\nimport { DbBlobRequest, DbBlobResponse, DbQueryRequest, DbQueryResponse } from \"../ConcurrentQuery\";\r\nimport { ElementMeshRequestProps } from \"../ElementMesh\";\r\nimport { ElementLoadOptions, ElementProps } from \"../ElementProps\";\r\nimport { EntityQueryParams } from \"../EntityProps\";\r\nimport { FontMapProps } from \"../Fonts\";\r\nimport {\r\n GeoCoordinatesRequestProps, GeoCoordinatesResponseProps, IModelCoordinatesRequestProps, IModelCoordinatesResponseProps,\r\n} from \"../GeoCoordinateServices\";\r\nimport { GeometryContainmentRequestProps, GeometryContainmentResponseProps } from \"../GeometryContainment\";\r\nimport { GeometrySummaryRequestProps } from \"../GeometrySummary\";\r\nimport { IModelConnectionProps, IModelRpcOpenProps, IModelRpcProps } from \"../IModel\";\r\nimport {\r\n MassPropertiesPerCandidateRequestProps, MassPropertiesPerCandidateResponseProps, MassPropertiesRequestProps, MassPropertiesResponseProps,\r\n} from \"../MassProperties\";\r\nimport { ModelProps } from \"../ModelProps\";\r\nimport { RpcInterface } from \"../RpcInterface\";\r\nimport { RpcManager } from \"../RpcManager\";\r\nimport { SnapRequestProps, SnapResponseProps } from \"../internal/Snapping\";\r\nimport { TextureData, TextureLoadProps } from \"../TextureProps\";\r\nimport {\r\n CustomViewState3dCreatorOptions, CustomViewState3dProps, HydrateViewStateRequestProps, HydrateViewStateResponseProps, SubCategoryResultRow,\r\n ViewStateLoadProps, ViewStateProps,\r\n} from \"../ViewProps\";\r\nimport { RpcResponseCacheControl } from \"./core/RpcConstants\";\r\nimport { RpcNotFoundResponse } from \"./core/RpcControl\";\r\nimport { RpcOperation } from \"./core/RpcOperation\";\r\nimport { RpcRoutingToken } from \"./core/RpcRoutingToken\";\r\n\r\n/** Response if the IModelDb was not found at the backend\r\n * (if the service has moved)\r\n * @public\r\n */\r\nexport class IModelNotFoundResponse extends RpcNotFoundResponse {\r\n public isIModelNotFoundResponse: boolean = true;\r\n public override message = \"iModel not found\";\r\n}\r\n\r\n/** Describes the volume of geometry contained with a [GeometricModel]($backend) as returned by\r\n * [IModelConnection.Models.queryExtents]($frontend) and [IModelDb.Models.queryExtents]($backend).\r\n * @public\r\n */\r\nexport interface ModelExtentsProps {\r\n /** The Id of the model, or [Id64.invalid]($bentley) if the input model Id was not a well-formed [Id64String]($bentley). */\r\n id: Id64String;\r\n /** The volume of geometry contained within the model.\r\n * This range will be null (@see [Range3d.isNull]($geometry)) if [[status]] is not [IModelStatus.Success]($bentley) or the model contains no geometry.\r\n */\r\n extents: Range3dProps;\r\n /** A status code indicating what if any error occurred obtaining the model's extents. For example:\r\n * - [IModelStatus.InvalidId]($bentley) if the input model Id was not a well-formed [Id64String]($bentley);\r\n * - [IModelStatus.NotFound]($bentley) if no model with the specified Id exists in the [[IModel]];\r\n * - [IModelStatus.WrongModel]($bentley) if the specified model is not a [GeometricModel]($backend); or\r\n * - [IModelStatus.Success]($bentley) if the extents were successfully obtained.\r\n *\r\n * If `status` is anything other than [IModelStatus.Success]($bentley), [[extents]] will be a null range.\r\n */\r\n status: IModelStatus;\r\n}\r\n\r\n/** The RPC interface for reading from an iModel.\r\n * All operations only require read-only access.\r\n * This interface is not normally used directly. See IModelConnection for higher-level and more convenient API for accessing iModels from a frontend.\r\n * @internal\r\n */\r\nexport abstract class IModelReadRpcInterface extends RpcInterface {\r\n /** Returns the IModelReadRpcInterface instance for the frontend. */\r\n public static getClient(): IModelReadRpcInterface { return RpcManager.getClientForInterface(IModelReadRpcInterface); }\r\n\r\n /** Returns the IModelReadRpcInterface instance for a custom RPC routing configuration. */\r\n public static getClientForRouting(token: RpcRoutingToken): IModelReadRpcInterface { return RpcManager.getClientForInterface(IModelReadRpcInterface, token); }\r\n\r\n /** The immutable name of the interface. */\r\n public static readonly interfaceName = \"IModelReadRpcInterface\";\r\n\r\n /** The semantic version of the interface. */\r\n public static interfaceVersion = \"3.7.0\";\r\n\r\n /*===========================================================================================\r\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\r\n NOTE: Please consult the README in this folder for the semantic versioning rules.\r\n ===========================================================================================*/\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async getConnectionProps(_iModelToken: IModelRpcOpenProps): Promise<IModelConnectionProps> { return this.forward(arguments); }\r\n public async queryRows(_iModelToken: IModelRpcProps, _request: DbQueryRequest): Promise<DbQueryResponse> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async querySubCategories(_iModelToken: IModelRpcProps, _categoryIds: CompressedId64Set): Promise<SubCategoryResultRow[]> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async queryAllUsedSpatialSubCategories(_iModelToken: IModelRpcProps): Promise<SubCategoryResultRow[]> { return this.forward(arguments); }\r\n public async queryBlob(_iModelToken: IModelRpcProps, _request: DbBlobRequest): Promise<DbBlobResponse> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async getModelProps(_iModelToken: IModelRpcProps, _modelIds: Id64String[]): Promise<ModelProps[]> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async queryModelRanges(_iModelToken: IModelRpcProps, _modelIds: Id64String[]): Promise<Range3dProps[]> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async queryModelExtents(_iModelToken: IModelRpcProps, _modelIds: Id64String[]): Promise<ModelExtentsProps[]> { return this.forward(arguments); }\r\n public async queryModelProps(_iModelToken: IModelRpcProps, _params: EntityQueryParams): Promise<ModelProps[]> { return this.forward(arguments); }\r\n public async getElementProps(_iModelToken: IModelRpcProps, _elementIds: Id64String[]): Promise<ElementProps[]> { return this.forward(arguments); }\r\n public async queryElementProps(_iModelToken: IModelRpcProps, _params: EntityQueryParams): Promise<ElementProps[]> { return this.forward(arguments); }\r\n public async queryEntityIds(_iModelToken: IModelRpcProps, _params: EntityQueryParams): Promise<Id64String[]> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async getClassHierarchy(_iModelToken: IModelRpcProps, _startClassName: string): Promise<string[]> { return this.forward(arguments); }\r\n public async getAllCodeSpecs(_iModelToken: IModelRpcProps): Promise<any[]> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async getViewStateData(_iModelToken: IModelRpcProps, _viewDefinitionId: string, _options?: ViewStateLoadProps): Promise<ViewStateProps> { return this.forward(arguments); }\r\n public async readFontJson(_iModelToken: IModelRpcProps): Promise<FontMapProps> { return this.forward(arguments); } // eslint-disable-line @typescript-eslint/no-deprecated\r\n public async getToolTipMessage(_iModelToken: IModelRpcProps, _elementId: string): Promise<string[]> { return this.forward(arguments); }\r\n /** @deprecated in 3.3.0 - might be removed in next major version. Use ViewStore apis. */\r\n public async getViewThumbnail(_iModelToken: IModelRpcProps, _viewId: string): Promise<Uint8Array> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async getDefaultViewId(_iModelToken: IModelRpcProps): Promise<Id64String> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async getCustomViewState3dData(_iModelToken: IModelRpcProps, _options: CustomViewState3dCreatorOptions): Promise<CustomViewState3dProps> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async hydrateViewState(_iModelToken: IModelRpcProps, _options: HydrateViewStateRequestProps): Promise<HydrateViewStateResponseProps> { return this.forward(arguments); }\r\n public async requestSnap(_iModelToken: IModelRpcProps, _sessionId: string, _props: SnapRequestProps): Promise<SnapResponseProps> { return this.forward(arguments); }\r\n public async cancelSnap(_iModelToken: IModelRpcProps, _sessionId: string): Promise<void> { return this.forward(arguments); }\r\n public async getGeometryContainment(_iModelToken: IModelRpcProps, _props: GeometryContainmentRequestProps): Promise<GeometryContainmentResponseProps> { return this.forward(arguments); }\r\n public async getMassProperties(_iModelToken: IModelRpcProps, _props: MassPropertiesRequestProps): Promise<MassPropertiesResponseProps> { return this.forward(arguments); }\r\n public async getMassPropertiesPerCandidate(_iModelToken: IModelRpcProps, _props: MassPropertiesPerCandidateRequestProps): Promise<MassPropertiesPerCandidateResponseProps[]> { return this.forward(arguments); } // eslint-disable-line @typescript-eslint/no-deprecated\r\n public async getIModelCoordinatesFromGeoCoordinates(_iModelToken: IModelRpcProps, _props: IModelCoordinatesRequestProps): Promise<IModelCoordinatesResponseProps> { return this.forward(arguments); }\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async getGeoCoordinatesFromIModelCoordinates(_iModelToken: IModelRpcProps, _props: GeoCoordinatesRequestProps): Promise<GeoCoordinatesResponseProps> { return this.forward(arguments); }\r\n public async getGeometrySummary(_iModelToken: IModelRpcProps, _props: GeometrySummaryRequestProps): Promise<string> { return this.forward(arguments); }\r\n public async queryTextureData(_iModelToken: IModelRpcProps, _textureLoadProps: TextureLoadProps): Promise<TextureData | undefined> { return this.forward(arguments); }\r\n public async loadElementProps(_iModelToken: IModelRpcProps, _elementIdentifier: Id64String | GuidString | CodeProps, _options?: ElementLoadOptions): Promise<ElementProps | undefined> {\r\n return this.forward(arguments);\r\n }\r\n public async generateElementMeshes(_iModelToken: IModelRpcProps, _props: ElementMeshRequestProps): Promise<Uint8Array> {\r\n return this.forward(arguments);\r\n }\r\n /** @internal */\r\n public async callViewStore(_iModelToken: IModelRpcProps, _version: string, _forWrite: boolean, _methodName: string, ..._args: any[]): Promise<any> { return this.forward(arguments); }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTileRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/IModelTileRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;AAIH,sDAA8D;AAC9D,sDAAmD;AAEnD,kDAA+C;AAC/C,8CAA2C;AAI3C,cAAc;AACd,MAAsB,sBAAuB,SAAQ,2BAAY;IACxD,MAAM,CAAC,SAAS,KAA6B,OAAO,uBAAU,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAEtH,2CAA2C;IACpC,MAAM,CAAU,aAAa,GAAG,wBAAwB,CAAC;IAEhE,6CAA6C;IACtC,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAEzC;;;iGAG6F;IAE7F;;;OAGG;IACI,KAAK,CAAC,kBAAkB,CAAC,WAA2B;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,QAAQ,IAAI,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IAChF,CAAC;IAED,gBAAgB;IAEH,AAAN,KAAK,CAAC,oBAAoB,CAAC,WAA2B,EAAE,GAAW,IAAkC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7I;;;;OAIG;IACI,KAAK,CAAC,mBAAmB,CAAC,SAAyB,EAAE,OAAe,EAAE,UAAkB,EAAE,KAAyB;QACxH,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,mBAAmB,CAAC,SAAyB,EAAE,IAA2B;QACrF,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;IACT,KAAK,CAAC,gBAAgB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,WAA2B,EAAE,SAAgC,IAAmB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7I;;;;OAIG;IACI,KAAK,CAAC,sBAAsB,CAAC,SAAyB,EAAE,QAAqC;QAClG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;;AA/DH,wDAgEC;AAvCc;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;kEACwE","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 type { TransferConfig } from \"@itwin/object-storage-core/lib/common\";\nimport { Id64Array } from \"@itwin/core-bentley\";\nimport { RpcResponseCacheControl } from \"./core/RpcConstants\";\nimport { RpcOperation } from \"./core/RpcOperation\";\nimport { IModelRpcProps } from \"../IModel\";\nimport { RpcInterface } from \"../RpcInterface\";\nimport { RpcManager } from \"../RpcManager\";\nimport { ElementGraphicsRequestProps } from \"../tile/ElementGraphics\";\nimport { IModelTileTreeProps, TileContentIdentifier, TileContentSource, TileVersionInfo } from \"../TileProps\";\n\n/** @public */\nexport abstract class IModelTileRpcInterface extends RpcInterface {\n public static getClient(): IModelTileRpcInterface { return RpcManager.getClientForInterface(IModelTileRpcInterface); }\n\n /** The immutable name of the interface. */\n public static readonly interfaceName = \"IModelTileRpcInterface\";\n\n /** The semantic version of the interface. */\n public static interfaceVersion = \"3.2.0\";\n\n /*===========================================================================================\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\n NOTE: Please consult the README in this folder for the semantic versioning rules.\n ===========================================================================================*/\n\n /** Get storage config required to download tiles from the tile cache.\n * @returns undefined if the backend does not support caching. In that case, tiles must be requested using [[generateTileContent]].\n * @beta\n */\n public async getTileCacheConfig(_tokenProps: IModelRpcProps): Promise<TransferConfig | undefined> {\n const response = await this.forward(arguments);\n return response && { ...response, expiration: new Date(response.expiration) };\n }\n\n /** @internal */\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\n public async requestTileTreeProps(_tokenProps: IModelRpcProps, _id: string): Promise<IModelTileTreeProps> { return this.forward(arguments); }\n\n /** Ask the backend to generate content for the specified tile. This function, unlike the deprecated `requestTileContent`, does not check the cloud storage tile cache -\n * Use `CloudStorageTileCache.retrieve` for that.\n * @returns TileContentSource - if Backend, use retrieveTileContent. If ExternalCache, use TileAdmin.requestCachedTileContent\n * @internal\n */\n public async generateTileContent(_rpcProps: IModelRpcProps, _treeId: string, _contentId: string, _guid: string | undefined): Promise<TileContentSource> {\n return this.forward(arguments);\n }\n\n /** Retrieves tile content from the backend once it's generated by generateTileContent.\n * @internal\n */\n public async retrieveTileContent(_rpcProps: IModelRpcProps, _key: TileContentIdentifier): Promise<Uint8Array> {\n return this.forward(arguments);\n }\n\n /** @internal */\n public async queryVersionInfo(): Promise<TileVersionInfo> {\n return this.forward(arguments);\n }\n\n /** This is a temporary workaround for folks developing authoring applications, to be removed when proper support for such applications is introduced.\n * Given a set of model Ids, it purges any associated tile tree state on the back-end so that the next request for the tile tree or content will recreate that state.\n * Invoked after a modification is made to the model(s).\n * If no array of model Ids is supplied, it purges *all* tile trees, which can be quite inefficient.\n * @internal\n */\n public async purgeTileTrees(_tokenProps: IModelRpcProps, _modelIds: Id64Array | undefined): Promise<void> { return this.forward(arguments); }\n\n /** Requests graphics for a single element in \"iMdl\" format.\n * @returns graphics in iMdl format, or `undefined` if the element's geometry produced no graphics or the request was canceled before completion.\n * @throws IModelError on bad request (nonexistent element, duplicate request Id, etc).\n * @internal\n */\n public async requestElementGraphics(_rpcProps: IModelRpcProps, _request: ElementGraphicsRequestProps): Promise<Uint8Array | undefined> {\n return this.forward(arguments);\n }\n}\n"]}
1
+ {"version":3,"file":"IModelTileRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/IModelTileRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;AAIH,sDAA8D;AAC9D,sDAAmD;AAEnD,kDAA+C;AAC/C,8CAA2C;AAI3C,cAAc;AACd,MAAsB,sBAAuB,SAAQ,2BAAY;IACxD,MAAM,CAAC,SAAS,KAA6B,OAAO,uBAAU,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAEtH,2CAA2C;IACpC,MAAM,CAAU,aAAa,GAAG,wBAAwB,CAAC;IAEhE,6CAA6C;IACtC,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAEzC;;;iGAG6F;IAE7F;;;OAGG;IACI,KAAK,CAAC,kBAAkB,CAAC,WAA2B;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,QAAQ,IAAI,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IAChF,CAAC;IAED,gBAAgB;IAEH,AAAN,KAAK,CAAC,oBAAoB,CAAC,WAA2B,EAAE,GAAW,IAAkC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7I;;;;OAIG;IACI,KAAK,CAAC,mBAAmB,CAAC,SAAyB,EAAE,OAAe,EAAE,UAAkB,EAAE,KAAyB;QACxH,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,mBAAmB,CAAC,SAAyB,EAAE,IAA2B;QACrF,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;IACT,KAAK,CAAC,gBAAgB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,WAA2B,EAAE,SAAgC,IAAmB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7I;;;;OAIG;IACI,KAAK,CAAC,sBAAsB,CAAC,SAAyB,EAAE,QAAqC;QAClG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;;AA/DH,wDAgEC;AAvCc;IADZ,2BAAY,CAAC,oBAAoB,CAAC,sCAAuB,CAAC,SAAS,CAAC;kEACwE","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 type { TransferConfig } from \"@itwin/object-storage-core/lib/common\";\r\nimport { Id64Array } from \"@itwin/core-bentley\";\r\nimport { RpcResponseCacheControl } from \"./core/RpcConstants\";\r\nimport { RpcOperation } from \"./core/RpcOperation\";\r\nimport { IModelRpcProps } from \"../IModel\";\r\nimport { RpcInterface } from \"../RpcInterface\";\r\nimport { RpcManager } from \"../RpcManager\";\r\nimport { ElementGraphicsRequestProps } from \"../tile/ElementGraphics\";\r\nimport { IModelTileTreeProps, TileContentIdentifier, TileContentSource, TileVersionInfo } from \"../TileProps\";\r\n\r\n/** @public */\r\nexport abstract class IModelTileRpcInterface extends RpcInterface {\r\n public static getClient(): IModelTileRpcInterface { return RpcManager.getClientForInterface(IModelTileRpcInterface); }\r\n\r\n /** The immutable name of the interface. */\r\n public static readonly interfaceName = \"IModelTileRpcInterface\";\r\n\r\n /** The semantic version of the interface. */\r\n public static interfaceVersion = \"3.2.0\";\r\n\r\n /*===========================================================================================\r\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\r\n NOTE: Please consult the README in this folder for the semantic versioning rules.\r\n ===========================================================================================*/\r\n\r\n /** Get storage config required to download tiles from the tile cache.\r\n * @returns undefined if the backend does not support caching. In that case, tiles must be requested using [[generateTileContent]].\r\n * @beta\r\n */\r\n public async getTileCacheConfig(_tokenProps: IModelRpcProps): Promise<TransferConfig | undefined> {\r\n const response = await this.forward(arguments);\r\n return response && { ...response, expiration: new Date(response.expiration) };\r\n }\r\n\r\n /** @internal */\r\n @RpcOperation.allowResponseCaching(RpcResponseCacheControl.Immutable)\r\n public async requestTileTreeProps(_tokenProps: IModelRpcProps, _id: string): Promise<IModelTileTreeProps> { return this.forward(arguments); }\r\n\r\n /** Ask the backend to generate content for the specified tile. This function, unlike the deprecated `requestTileContent`, does not check the cloud storage tile cache -\r\n * Use `CloudStorageTileCache.retrieve` for that.\r\n * @returns TileContentSource - if Backend, use retrieveTileContent. If ExternalCache, use TileAdmin.requestCachedTileContent\r\n * @internal\r\n */\r\n public async generateTileContent(_rpcProps: IModelRpcProps, _treeId: string, _contentId: string, _guid: string | undefined): Promise<TileContentSource> {\r\n return this.forward(arguments);\r\n }\r\n\r\n /** Retrieves tile content from the backend once it's generated by generateTileContent.\r\n * @internal\r\n */\r\n public async retrieveTileContent(_rpcProps: IModelRpcProps, _key: TileContentIdentifier): Promise<Uint8Array> {\r\n return this.forward(arguments);\r\n }\r\n\r\n /** @internal */\r\n public async queryVersionInfo(): Promise<TileVersionInfo> {\r\n return this.forward(arguments);\r\n }\r\n\r\n /** This is a temporary workaround for folks developing authoring applications, to be removed when proper support for such applications is introduced.\r\n * Given a set of model Ids, it purges any associated tile tree state on the back-end so that the next request for the tile tree or content will recreate that state.\r\n * Invoked after a modification is made to the model(s).\r\n * If no array of model Ids is supplied, it purges *all* tile trees, which can be quite inefficient.\r\n * @internal\r\n */\r\n public async purgeTileTrees(_tokenProps: IModelRpcProps, _modelIds: Id64Array | undefined): Promise<void> { return this.forward(arguments); }\r\n\r\n /** Requests graphics for a single element in \"iMdl\" format.\r\n * @returns graphics in iMdl format, or `undefined` if the element's geometry produced no graphics or the request was canceled before completion.\r\n * @throws IModelError on bad request (nonexistent element, duplicate request Id, etc).\r\n * @internal\r\n */\r\n public async requestElementGraphics(_rpcProps: IModelRpcProps, _request: ElementGraphicsRequestProps): Promise<Uint8Array | undefined> {\r\n return this.forward(arguments);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SnapshotIModelRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/SnapshotIModelRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;AAKH,kDAA+C;AAC/C,8CAA2C;AAC3C,sDAAmD;AAInD,MAAM,eAAe,GAA8B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEhH;;;;GAIG;AACH,MAAsB,0BAA2B,SAAQ,2BAAY;IACnE,+EAA+E;IACxE,MAAM,CAAC,SAAS,KAAiC,OAAO,uBAAU,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;IAE9H,qGAAqG;IAC9F,MAAM,CAAC,mBAAmB,CAAC,KAAsB,IAAgC,OAAO,uBAAU,CAAC,qBAAqB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAErK,2CAA2C;IACpC,MAAM,CAAU,aAAa,GAAG,4BAA4B,CAAC;IAEpE,oCAAoC;IAC7B,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAEzC;;;iGAG6F;IAE7F;;OAEG;IAEU,AAAN,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,KAA2B,IAAoC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEzI;;OAEG;IAEU,AAAN,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,KAA2B,IAAoC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtI;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,eAA+B,IAAsB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAjC3G,gEAkCC;AAZc;IADZ,2BAAY,CAAC,eAAe,CAAC,eAAe,CAAC;0DAC2F;AAM5H;IADZ,2BAAY,CAAC,eAAe,CAAC,eAAe,CAAC;4DACwF","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\n/* eslint-disable @typescript-eslint/no-deprecated */\n\nimport { IModelConnectionProps, IModelRpcProps, SnapshotOpenOptions } from \"../IModel\";\nimport { RpcInterface } from \"../RpcInterface\";\nimport { RpcManager } from \"../RpcManager\";\nimport { RpcOperation } from \"./core/RpcOperation\";\nimport { RpcRequestTokenSupplier_T } from \"./core/RpcRequest\";\nimport { RpcRoutingToken } from \"./core/RpcRoutingToken\";\n\nconst unknownIModelId: RpcRequestTokenSupplier_T = (req) => ({ iModelId: \"undefined\", key: req.parameters[0] });\n\n/** The RPC interface for working with *snapshot* iModels.\n * This interface is intended for desktop and mobile products. Web products are discouraged from registering this interface.\n * @internal\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Check [[IpcAppFunctions]] or [[CheckpointConnection]] for replacements.\n */\nexport abstract class SnapshotIModelRpcInterface extends RpcInterface {\n /** Returns the SnapshotIModelRpcInterface client instance for the frontend. */\n public static getClient(): SnapshotIModelRpcInterface { return RpcManager.getClientForInterface(SnapshotIModelRpcInterface); }\n\n /** Returns the SnapshotIModelRpcInterface client instance for a custom RPC routing configuration. */\n public static getClientForRouting(token: RpcRoutingToken): SnapshotIModelRpcInterface { return RpcManager.getClientForInterface(SnapshotIModelRpcInterface, token); }\n\n /** The immutable name of the interface. */\n public static readonly interfaceName = \"SnapshotIModelRpcInterface\";\n\n /** The version of the interface. */\n public static interfaceVersion = \"2.0.0\";\n\n /*===========================================================================================\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\n NOTE: Please consult the README in this folder for the semantic versioning rules.\n ===========================================================================================*/\n\n /**\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [[IpcAppFunctions.openSnapshot]] in IPC applications, no replacement for Web applications.\n */\n @RpcOperation.setRoutingProps(unknownIModelId)\n public async openFile(_filePath: string, _opts?: SnapshotOpenOptions): Promise<IModelConnectionProps> { return this.forward(arguments); }\n\n /**\n * @deprecated in 4.10 - will not be removed until after 2026-06-13. Use [[CheckpointConnection.openRemote]].\n */\n @RpcOperation.setRoutingProps(unknownIModelId)\n public async openRemote(_key: string, _opts?: SnapshotOpenOptions): Promise<IModelConnectionProps> { return this.forward(arguments); }\n\n /**\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [[IpcAppFunctions.closeIModel]] in IPC applications, no replacement for Web applications.\n */\n public async close(_iModelRpcProps: IModelRpcProps): Promise<boolean> { return this.forward(arguments); }\n}\n"]}
1
+ {"version":3,"file":"SnapshotIModelRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/SnapshotIModelRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;AAKH,kDAA+C;AAC/C,8CAA2C;AAC3C,sDAAmD;AAInD,MAAM,eAAe,GAA8B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEhH;;;;GAIG;AACH,MAAsB,0BAA2B,SAAQ,2BAAY;IACnE,+EAA+E;IACxE,MAAM,CAAC,SAAS,KAAiC,OAAO,uBAAU,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;IAE9H,qGAAqG;IAC9F,MAAM,CAAC,mBAAmB,CAAC,KAAsB,IAAgC,OAAO,uBAAU,CAAC,qBAAqB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAErK,2CAA2C;IACpC,MAAM,CAAU,aAAa,GAAG,4BAA4B,CAAC;IAEpE,oCAAoC;IAC7B,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAEzC;;;iGAG6F;IAE7F;;OAEG;IAEU,AAAN,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,KAA2B,IAAoC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEzI;;OAEG;IAEU,AAAN,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,KAA2B,IAAoC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtI;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,eAA+B,IAAsB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAjC3G,gEAkCC;AAZc;IADZ,2BAAY,CAAC,eAAe,CAAC,eAAe,CAAC;0DAC2F;AAM5H;IADZ,2BAAY,CAAC,eAAe,CAAC,eAAe,CAAC;4DACwF","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\n/* eslint-disable @typescript-eslint/no-deprecated */\r\n\r\nimport { IModelConnectionProps, IModelRpcProps, SnapshotOpenOptions } from \"../IModel\";\r\nimport { RpcInterface } from \"../RpcInterface\";\r\nimport { RpcManager } from \"../RpcManager\";\r\nimport { RpcOperation } from \"./core/RpcOperation\";\r\nimport { RpcRequestTokenSupplier_T } from \"./core/RpcRequest\";\r\nimport { RpcRoutingToken } from \"./core/RpcRoutingToken\";\r\n\r\nconst unknownIModelId: RpcRequestTokenSupplier_T = (req) => ({ iModelId: \"undefined\", key: req.parameters[0] });\r\n\r\n/** The RPC interface for working with *snapshot* iModels.\r\n * This interface is intended for desktop and mobile products. Web products are discouraged from registering this interface.\r\n * @internal\r\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Check [[IpcAppFunctions]] or [[CheckpointConnection]] for replacements.\r\n */\r\nexport abstract class SnapshotIModelRpcInterface extends RpcInterface {\r\n /** Returns the SnapshotIModelRpcInterface client instance for the frontend. */\r\n public static getClient(): SnapshotIModelRpcInterface { return RpcManager.getClientForInterface(SnapshotIModelRpcInterface); }\r\n\r\n /** Returns the SnapshotIModelRpcInterface client instance for a custom RPC routing configuration. */\r\n public static getClientForRouting(token: RpcRoutingToken): SnapshotIModelRpcInterface { return RpcManager.getClientForInterface(SnapshotIModelRpcInterface, token); }\r\n\r\n /** The immutable name of the interface. */\r\n public static readonly interfaceName = \"SnapshotIModelRpcInterface\";\r\n\r\n /** The version of the interface. */\r\n public static interfaceVersion = \"2.0.0\";\r\n\r\n /*===========================================================================================\r\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\r\n NOTE: Please consult the README in this folder for the semantic versioning rules.\r\n ===========================================================================================*/\r\n\r\n /**\r\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [[IpcAppFunctions.openSnapshot]] in IPC applications, no replacement for Web applications.\r\n */\r\n @RpcOperation.setRoutingProps(unknownIModelId)\r\n public async openFile(_filePath: string, _opts?: SnapshotOpenOptions): Promise<IModelConnectionProps> { return this.forward(arguments); }\r\n\r\n /**\r\n * @deprecated in 4.10 - will not be removed until after 2026-06-13. Use [[CheckpointConnection.openRemote]].\r\n */\r\n @RpcOperation.setRoutingProps(unknownIModelId)\r\n public async openRemote(_key: string, _opts?: SnapshotOpenOptions): Promise<IModelConnectionProps> { return this.forward(arguments); }\r\n\r\n /**\r\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [[IpcAppFunctions.closeIModel]] in IPC applications, no replacement for Web applications.\r\n */\r\n public async close(_iModelRpcProps: IModelRpcProps): Promise<boolean> { return this.forward(arguments); }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TestRpcManager.js","sourceRoot":"","sources":["../../../src/rpc/TestRpcManager.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,8DAAoF;AAEpF;;;;;;;;;;;;GAYG;AACH,MAAa,cAAc;IAClB,MAAM,CAAC,UAAU,CAAC,UAAoC;QAC3D,MAAM,MAAM,GAAG,KAAM,SAAQ,0CAAuB;YAClC,UAAU,GAAQ,GAAG,EAAE,CAAC,UAAU,CAAC;SACpD,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,UAAU;YAC1B,mCAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,0CAAuB,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,mCAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,mCAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;CACF;AAZD,wCAYC","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 { RpcInterfaceDefinition } from \"../RpcInterface\";\nimport { RpcConfiguration, RpcDefaultConfiguration } from \"./core/RpcConfiguration\";\n\n/** An RpcManager that uses RpcDefaultConfiguration/RpcDirectProtocol to make client stubs invoke\n * registered server impls as direct method calls within the same JavaScript context. In other words,\n * TestRpcManager sets up a protocol that uses our remoting mechanism but cuts out the communication\n * part of it. (No IPC or XHR is used or required.)\n * Nevertheless, all of the rest of the call marshalling and operation monitoring mechanism is used.\n * That makes TestRpcManager a way to write simple, single-process integration tests for frontends\n * and backends that actually use RpcInterfaces. Note that to write such a single-process integration\n * test, you must make *both* client and server use TestRpcManager to configure their RpcInterfaces.\n * It will not work if one side uses TestRpcManager and the other uses some other protocol (say, cloud).\n * That means that you must actually program the backend to know when it is running in direct test\n * mode and to employ TestRpcManager in that case.\n * @internal\n */\nexport class TestRpcManager {\n public static initialize(interfaces: RpcInterfaceDefinition[]) {\n const config = class extends RpcDefaultConfiguration {\n public override interfaces: any = () => interfaces;\n };\n\n for (const def of interfaces)\n RpcConfiguration.assign(def, () => RpcDefaultConfiguration);\n\n const instance = RpcConfiguration.obtain(config);\n RpcConfiguration.initializeInterfaces(instance);\n }\n}\n"]}
1
+ {"version":3,"file":"TestRpcManager.js","sourceRoot":"","sources":["../../../src/rpc/TestRpcManager.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,8DAAoF;AAEpF;;;;;;;;;;;;GAYG;AACH,MAAa,cAAc;IAClB,MAAM,CAAC,UAAU,CAAC,UAAoC;QAC3D,MAAM,MAAM,GAAG,KAAM,SAAQ,0CAAuB;YAClC,UAAU,GAAQ,GAAG,EAAE,CAAC,UAAU,CAAC;SACpD,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,UAAU;YAC1B,mCAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,0CAAuB,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,mCAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,mCAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;CACF;AAZD,wCAYC","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 { RpcInterfaceDefinition } from \"../RpcInterface\";\r\nimport { RpcConfiguration, RpcDefaultConfiguration } from \"./core/RpcConfiguration\";\r\n\r\n/** An RpcManager that uses RpcDefaultConfiguration/RpcDirectProtocol to make client stubs invoke\r\n * registered server impls as direct method calls within the same JavaScript context. In other words,\r\n * TestRpcManager sets up a protocol that uses our remoting mechanism but cuts out the communication\r\n * part of it. (No IPC or XHR is used or required.)\r\n * Nevertheless, all of the rest of the call marshalling and operation monitoring mechanism is used.\r\n * That makes TestRpcManager a way to write simple, single-process integration tests for frontends\r\n * and backends that actually use RpcInterfaces. Note that to write such a single-process integration\r\n * test, you must make *both* client and server use TestRpcManager to configure their RpcInterfaces.\r\n * It will not work if one side uses TestRpcManager and the other uses some other protocol (say, cloud).\r\n * That means that you must actually program the backend to know when it is running in direct test\r\n * mode and to employ TestRpcManager in that case.\r\n * @internal\r\n */\r\nexport class TestRpcManager {\r\n public static initialize(interfaces: RpcInterfaceDefinition[]) {\r\n const config = class extends RpcDefaultConfiguration {\r\n public override interfaces: any = () => interfaces;\r\n };\r\n\r\n for (const def of interfaces)\r\n RpcConfiguration.assign(def, () => RpcDefaultConfiguration);\r\n\r\n const instance = RpcConfiguration.obtain(config);\r\n RpcConfiguration.initializeInterfaces(instance);\r\n }\r\n}\r\n"]}
@@ -1,6 +1,3 @@
1
- /** @packageDocumentation
2
- * @module RpcInterface
3
- */
4
1
  import { RpcInterface, RpcInterfaceDefinition } from "../../RpcInterface";
5
2
  import { RpcControlChannel } from "./RpcControl";
6
3
  import { RpcProtocol, RpcRequestFulfillment } from "./RpcProtocol";
@@ -1 +1 @@
1
- {"version":3,"file":"RpcConfiguration.d.ts","sourceRoot":"","sources":["../../../../src/rpc/core/RpcConfiguration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RpcConfiguration.d.ts","sourceRoot":"","sources":["../../../../src/rpc/core/RpcConfiguration.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RpcDirectRequest = exports.RpcDirectProtocol = exports.RpcDefaultConfiguration = exports.RpcConfiguration = exports.RpcRoutingMap = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ /** @packageDocumentation
9
+ * @module RpcInterface
10
+ */
11
+ const core_bentley_1 = require("@itwin/core-bentley");
4
12
  const RpcManager_1 = require("../../RpcManager");
5
13
  const RpcControl_1 = require("./RpcControl");
6
14
  const RpcProtocol_1 = require("./RpcProtocol");
@@ -12,7 +20,7 @@ var RpcRoutingMap;
12
20
  (function (RpcRoutingMap) {
13
21
  function create() {
14
22
  const configurations = new Map();
15
- return Object.assign((routing) => configurations.get(routing.id)(), { configurations });
23
+ return Object.assign((routing) => configurations.get((0, core_bentley_1.expectDefined)(routing).id)(), { configurations });
16
24
  }
17
25
  RpcRoutingMap.create = create;
18
26
  })(RpcRoutingMap || (exports.RpcRoutingMap = RpcRoutingMap = {}));
@@ -172,7 +180,7 @@ class RpcDirectRequest extends RpcRequest_1.RpcRequest {
172
180
  this.headers.set(name, value);
173
181
  }
174
182
  async load() {
175
- return this.fulfillment.result;
183
+ return (0, core_bentley_1.expectDefined)(this.fulfillment).result;
176
184
  }
177
185
  }
178
186
  exports.RpcDirectRequest = RpcDirectRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"RpcConfiguration.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcConfiguration.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 */\nimport { RpcInterface, RpcInterfaceDefinition } from \"../../RpcInterface\";\nimport { RpcManager } from \"../../RpcManager\";\nimport { RpcControlChannel } from \"./RpcControl\";\nimport { SerializedRpcActivity } from \"./RpcInvocation\";\nimport { RpcProtocol, RpcRequestFulfillment } from \"./RpcProtocol\";\nimport { INSTANCE } from \"./RpcRegistry\";\nimport { RpcRequest } from \"./RpcRequest\";\nimport { RpcRequestContext } from \"./RpcRequestContext\";\nimport { RpcRoutingToken } from \"./RpcRoutingToken\";\n\n/** @internal */\nexport type RpcConfigurationSupplier = (routing?: RpcRoutingToken) => { new(): RpcConfiguration }; // eslint-disable-line @typescript-eslint/prefer-function-type\n\n/** @internal */\nexport interface RpcRoutingMap extends RpcConfigurationSupplier { configurations: Map<number, RpcConfigurationSupplier> }\n\n/** @internal */\nexport namespace RpcRoutingMap {\n export function create(): RpcRoutingMap {\n const configurations = new Map();\n return Object.assign((routing?: RpcRoutingToken) => configurations.get(routing!.id)(), { configurations });\n }\n}\n\n/** A RpcConfiguration specifies how calls on an RPC interface will be marshalled, plus other operating parameters.\n * RpcConfiguration is the base class for specific configurations.\n * @beta\n */\nexport abstract class RpcConfiguration {\n /** Whether development mode is enabled.\n * @note This parameter determines whether developer convenience features like backend stack traces are available.\n */\n public static developmentMode: boolean = false;\n\n /** Whether frontend checks that are relevant in a cloud-hosted routing scenario are disabled. */\n public static disableRoutingValidation: boolean = false;\n\n /** Whether strict mode is enabled.\n * This parameter determines system behaviors relating to strict checking:\n * - Whether an error is thrown if the type marshaling system encounters an unregistered type (only in strict mode).\n */\n public static strictMode: boolean = false;\n\n /**\n * Whether to throw an error when the IModelRpcProps in the operation parameter list differs from the token in the URL.\n * @note By default, a warning is logged and the operation is allowed to proceed.\n * @note The parameter token is always replaced by the url token (unless RpcOperationPolicy.allowTokenMismatch is set).\n */\n public static throwOnTokenMismatch = false;\n\n /** @internal Sets the configuration supplier for an RPC interface class. */\n public static assign<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>, supplier: RpcConfigurationSupplier): void {\n const map = definition.prototype.configurationSupplier as RpcRoutingMap | undefined;\n if (!map || typeof (map.configurations) === \"undefined\") {\n definition.prototype.configurationSupplier = supplier;\n } else {\n map.configurations.set(RpcRoutingToken.default.id, supplier);\n }\n }\n\n /** Sets the configuration supplier for an RPC interface class for a given routing. */\n public static assignWithRouting<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>, routing: RpcRoutingToken, configuration: new () => RpcConfiguration): void {\n if (!definition.prototype.configurationSupplier) {\n RpcConfiguration.assign(definition, RpcRoutingMap.create());\n }\n\n let map = definition.prototype.configurationSupplier as RpcRoutingMap;\n if (typeof (map.configurations) === \"undefined\") {\n const existing = map as RpcConfigurationSupplier;\n map = RpcRoutingMap.create();\n RpcConfiguration.assign(definition, map);\n map.configurations.set(RpcRoutingToken.default.id, existing);\n }\n\n const supplier = () => configuration;\n map.configurations.set(routing.id, supplier);\n }\n\n /** Obtains the instance of an RPC configuration class. */\n public static obtain<T extends RpcConfiguration>(configurationConstructor: new () => T): T {\n let instance = (configurationConstructor as any)[INSTANCE] as T;\n if (!instance)\n instance = (configurationConstructor as any)[INSTANCE] = new configurationConstructor();\n\n return instance;\n }\n\n /** @internal Enables passing of application-specific context with each RPC request. */\n public static requestContext: RpcRequestContext = {\n getId: (_request: RpcRequest): string => \"\",\n serialize: async (request: RpcRequest): Promise<SerializedRpcActivity> => ({\n id: request.id,\n applicationId: \"\",\n applicationVersion: \"\",\n sessionId: \"\",\n authorization: \"\",\n }),\n };\n\n /** @internal */\n public attached: RpcInterfaceDefinition[] = [];\n\n /** The protocol of the configuration.\n * @internal\n */\n public abstract readonly protocol: RpcProtocol;\n\n /** The RPC interfaces managed by the configuration. */\n public abstract readonly interfaces: () => RpcInterfaceDefinition[];\n\n /** @internal */\n public allowAttachedInterfaces: boolean = true;\n\n /** @internal */\n public get attachedInterfaces(): ReadonlyArray<RpcInterfaceDefinition> { return this.attached; }\n\n /** The target interval (in milliseconds) between connection attempts for pending RPC operation requests. */\n public pendingOperationRetryInterval = 10000;\n\n /** The maximum number of transient faults permitted before request failure. */\n public transientFaultLimit = 4;\n\n /** @internal */\n public readonly routing: RpcRoutingToken = RpcRoutingToken.default;\n\n /** The control channel for the configuration.\n * @internal\n */\n public readonly controlChannel = RpcControlChannel.obtain(this);\n\n /** @internal */\n public attach<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>): void {\n if (!this.allowAttachedInterfaces) {\n return;\n }\n\n if (this.interfaces().indexOf(definition) !== -1 || this.attached.indexOf(definition) !== -1) {\n return;\n }\n\n this.attached.push(definition);\n RpcConfiguration.assign(definition, () => this.constructor as any);\n RpcManager.initializeInterface(definition);\n }\n\n /** Initializes the RPC interfaces managed by the configuration. */\n public static initializeInterfaces(configuration: RpcConfiguration) {\n configuration.interfaces().forEach((definition) => RpcManager.initializeInterface(definition));\n }\n\n /** @internal */\n public static supply(definition: RpcInterface): RpcConfiguration {\n return RpcConfiguration.obtain(definition.configurationSupplier ? definition.configurationSupplier(definition.routing) : RpcDefaultConfiguration);\n }\n\n /** @internal */\n public onRpcClientInitialized(definition: RpcInterfaceDefinition, client: RpcInterface): void {\n this.protocol.onRpcClientInitialized(definition, client);\n }\n\n /** @internal */\n public onRpcImplInitialized(definition: RpcInterfaceDefinition, impl: RpcInterface): void {\n this.protocol.onRpcImplInitialized(definition, impl);\n }\n\n /** @internal */\n public onRpcClientTerminated(definition: RpcInterfaceDefinition, client: RpcInterface): void {\n this.protocol.onRpcClientTerminated(definition, client);\n }\n\n /** @internal */\n public onRpcImplTerminated(definition: RpcInterfaceDefinition, impl: RpcInterface): void {\n this.protocol.onRpcImplTerminated(definition, impl);\n }\n}\n\n/** A default configuration that can be used for basic testing within a library.\n * @internal\n */\nexport class RpcDefaultConfiguration extends RpcConfiguration {\n public interfaces = () => [];\n public protocol: RpcProtocol = new RpcDirectProtocol(this);\n}\n\n/** A default protocol that can be used for basic testing within a library.\n * @internal\n */\nexport class RpcDirectProtocol extends RpcProtocol {\n public readonly requestType = RpcDirectRequest;\n}\n\n/** A default request type that can be used for basic testing within a library.\n * @internal\n */\nexport class RpcDirectRequest extends RpcRequest {\n public headers: Map<string, string> = new Map();\n public fulfillment: RpcRequestFulfillment | undefined = undefined;\n\n protected async send() {\n const request = await this.protocol.serialize(this);\n return new Promise<number>(async (resolve, reject) => {\n try {\n this.fulfillment = await this.protocol.fulfill(request);\n resolve(this.fulfillment.status);\n } catch (err) {\n reject(err); // eslint-disable-line @typescript-eslint/prefer-promise-reject-errors\n }\n });\n }\n\n protected setHeader(name: string, value: string): void {\n this.headers.set(name, value);\n }\n\n protected async load() {\n return this.fulfillment!.result;\n }\n}\n"]}
1
+ {"version":3,"file":"RpcConfiguration.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcConfiguration.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\nimport { expectDefined } from \"@itwin/core-bentley\";\r\nimport { RpcInterface, RpcInterfaceDefinition } from \"../../RpcInterface\";\r\nimport { RpcManager } from \"../../RpcManager\";\r\nimport { RpcControlChannel } from \"./RpcControl\";\r\nimport { SerializedRpcActivity } from \"./RpcInvocation\";\r\nimport { RpcProtocol, RpcRequestFulfillment } from \"./RpcProtocol\";\r\nimport { INSTANCE } from \"./RpcRegistry\";\r\nimport { RpcRequest } from \"./RpcRequest\";\r\nimport { RpcRequestContext } from \"./RpcRequestContext\";\r\nimport { RpcRoutingToken } from \"./RpcRoutingToken\";\r\n\r\n/** @internal */\r\nexport type RpcConfigurationSupplier = (routing?: RpcRoutingToken) => { new(): RpcConfiguration }; // eslint-disable-line @typescript-eslint/prefer-function-type\r\n\r\n/** @internal */\r\nexport interface RpcRoutingMap extends RpcConfigurationSupplier { configurations: Map<number, RpcConfigurationSupplier> }\r\n\r\n/** @internal */\r\nexport namespace RpcRoutingMap {\r\n export function create(): RpcRoutingMap {\r\n const configurations = new Map();\r\n return Object.assign((routing?: RpcRoutingToken) => configurations.get(expectDefined(routing).id)(), { configurations });\r\n }\r\n}\r\n\r\n/** A RpcConfiguration specifies how calls on an RPC interface will be marshalled, plus other operating parameters.\r\n * RpcConfiguration is the base class for specific configurations.\r\n * @beta\r\n */\r\nexport abstract class RpcConfiguration {\r\n /** Whether development mode is enabled.\r\n * @note This parameter determines whether developer convenience features like backend stack traces are available.\r\n */\r\n public static developmentMode: boolean = false;\r\n\r\n /** Whether frontend checks that are relevant in a cloud-hosted routing scenario are disabled. */\r\n public static disableRoutingValidation: boolean = false;\r\n\r\n /** Whether strict mode is enabled.\r\n * This parameter determines system behaviors relating to strict checking:\r\n * - Whether an error is thrown if the type marshaling system encounters an unregistered type (only in strict mode).\r\n */\r\n public static strictMode: boolean = false;\r\n\r\n /**\r\n * Whether to throw an error when the IModelRpcProps in the operation parameter list differs from the token in the URL.\r\n * @note By default, a warning is logged and the operation is allowed to proceed.\r\n * @note The parameter token is always replaced by the url token (unless RpcOperationPolicy.allowTokenMismatch is set).\r\n */\r\n public static throwOnTokenMismatch = false;\r\n\r\n /** @internal Sets the configuration supplier for an RPC interface class. */\r\n public static assign<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>, supplier: RpcConfigurationSupplier): void {\r\n const map = definition.prototype.configurationSupplier as RpcRoutingMap | undefined;\r\n if (!map || typeof (map.configurations) === \"undefined\") {\r\n definition.prototype.configurationSupplier = supplier;\r\n } else {\r\n map.configurations.set(RpcRoutingToken.default.id, supplier);\r\n }\r\n }\r\n\r\n /** Sets the configuration supplier for an RPC interface class for a given routing. */\r\n public static assignWithRouting<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>, routing: RpcRoutingToken, configuration: new () => RpcConfiguration): void {\r\n if (!definition.prototype.configurationSupplier) {\r\n RpcConfiguration.assign(definition, RpcRoutingMap.create());\r\n }\r\n\r\n let map = definition.prototype.configurationSupplier as RpcRoutingMap;\r\n if (typeof (map.configurations) === \"undefined\") {\r\n const existing = map as RpcConfigurationSupplier;\r\n map = RpcRoutingMap.create();\r\n RpcConfiguration.assign(definition, map);\r\n map.configurations.set(RpcRoutingToken.default.id, existing);\r\n }\r\n\r\n const supplier = () => configuration;\r\n map.configurations.set(routing.id, supplier);\r\n }\r\n\r\n /** Obtains the instance of an RPC configuration class. */\r\n public static obtain<T extends RpcConfiguration>(configurationConstructor: new () => T): T {\r\n let instance = (configurationConstructor as any)[INSTANCE] as T;\r\n if (!instance)\r\n instance = (configurationConstructor as any)[INSTANCE] = new configurationConstructor();\r\n\r\n return instance;\r\n }\r\n\r\n /** @internal Enables passing of application-specific context with each RPC request. */\r\n public static requestContext: RpcRequestContext = {\r\n getId: (_request: RpcRequest): string => \"\",\r\n serialize: async (request: RpcRequest): Promise<SerializedRpcActivity> => ({\r\n id: request.id,\r\n applicationId: \"\",\r\n applicationVersion: \"\",\r\n sessionId: \"\",\r\n authorization: \"\",\r\n }),\r\n };\r\n\r\n /** @internal */\r\n public attached: RpcInterfaceDefinition[] = [];\r\n\r\n /** The protocol of the configuration.\r\n * @internal\r\n */\r\n public abstract readonly protocol: RpcProtocol;\r\n\r\n /** The RPC interfaces managed by the configuration. */\r\n public abstract readonly interfaces: () => RpcInterfaceDefinition[];\r\n\r\n /** @internal */\r\n public allowAttachedInterfaces: boolean = true;\r\n\r\n /** @internal */\r\n public get attachedInterfaces(): ReadonlyArray<RpcInterfaceDefinition> { return this.attached; }\r\n\r\n /** The target interval (in milliseconds) between connection attempts for pending RPC operation requests. */\r\n public pendingOperationRetryInterval = 10000;\r\n\r\n /** The maximum number of transient faults permitted before request failure. */\r\n public transientFaultLimit = 4;\r\n\r\n /** @internal */\r\n public readonly routing: RpcRoutingToken = RpcRoutingToken.default;\r\n\r\n /** The control channel for the configuration.\r\n * @internal\r\n */\r\n public readonly controlChannel = RpcControlChannel.obtain(this);\r\n\r\n /** @internal */\r\n public attach<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>): void {\r\n if (!this.allowAttachedInterfaces) {\r\n return;\r\n }\r\n\r\n if (this.interfaces().indexOf(definition) !== -1 || this.attached.indexOf(definition) !== -1) {\r\n return;\r\n }\r\n\r\n this.attached.push(definition);\r\n RpcConfiguration.assign(definition, () => this.constructor as any);\r\n RpcManager.initializeInterface(definition);\r\n }\r\n\r\n /** Initializes the RPC interfaces managed by the configuration. */\r\n public static initializeInterfaces(configuration: RpcConfiguration) {\r\n configuration.interfaces().forEach((definition) => RpcManager.initializeInterface(definition));\r\n }\r\n\r\n /** @internal */\r\n public static supply(definition: RpcInterface): RpcConfiguration {\r\n return RpcConfiguration.obtain(definition.configurationSupplier ? definition.configurationSupplier(definition.routing) : RpcDefaultConfiguration);\r\n }\r\n\r\n /** @internal */\r\n public onRpcClientInitialized(definition: RpcInterfaceDefinition, client: RpcInterface): void {\r\n this.protocol.onRpcClientInitialized(definition, client);\r\n }\r\n\r\n /** @internal */\r\n public onRpcImplInitialized(definition: RpcInterfaceDefinition, impl: RpcInterface): void {\r\n this.protocol.onRpcImplInitialized(definition, impl);\r\n }\r\n\r\n /** @internal */\r\n public onRpcClientTerminated(definition: RpcInterfaceDefinition, client: RpcInterface): void {\r\n this.protocol.onRpcClientTerminated(definition, client);\r\n }\r\n\r\n /** @internal */\r\n public onRpcImplTerminated(definition: RpcInterfaceDefinition, impl: RpcInterface): void {\r\n this.protocol.onRpcImplTerminated(definition, impl);\r\n }\r\n}\r\n\r\n/** A default configuration that can be used for basic testing within a library.\r\n * @internal\r\n */\r\nexport class RpcDefaultConfiguration extends RpcConfiguration {\r\n public interfaces = () => [];\r\n public protocol: RpcProtocol = new RpcDirectProtocol(this);\r\n}\r\n\r\n/** A default protocol that can be used for basic testing within a library.\r\n * @internal\r\n */\r\nexport class RpcDirectProtocol extends RpcProtocol {\r\n public readonly requestType = RpcDirectRequest;\r\n}\r\n\r\n/** A default request type that can be used for basic testing within a library.\r\n * @internal\r\n */\r\nexport class RpcDirectRequest extends RpcRequest {\r\n public headers: Map<string, string> = new Map();\r\n public fulfillment: RpcRequestFulfillment | undefined = undefined;\r\n\r\n protected async send() {\r\n const request = await this.protocol.serialize(this);\r\n return new Promise<number>(async (resolve, reject) => {\r\n try {\r\n this.fulfillment = await this.protocol.fulfill(request);\r\n resolve(this.fulfillment.status);\r\n } catch (err) {\r\n reject(err); // eslint-disable-line @typescript-eslint/prefer-promise-reject-errors\r\n }\r\n });\r\n }\r\n\r\n protected setHeader(name: string, value: string): void {\r\n this.headers.set(name, value);\r\n }\r\n\r\n protected async load() {\r\n return expectDefined(this.fulfillment).result;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RpcConstants.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcConstants.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,qDAAqD;AAErD;;GAEG;AACH,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,qEAAI,CAAA;IACJ,+EAAS,CAAA;AACX,CAAC,EAHW,uBAAuB,uCAAvB,uBAAuB,QAGlC;AAED;;;GAGG;AACH,IAAY,gBAcX;AAdD,WAAY,gBAAgB;IAC1B,2EAAc,CAAA;IACd,2EAAc,CAAA;IACd,6EAAe,CAAA;IACf,6FAAuB,CAAA;IACvB,uFAAoB,CAAA;IACpB,uFAAoB,CAAA;IACpB,iFAAiB,CAAA;IACjB,6EAAe,CAAA;IACf,2FAAsB,CAAA;IACtB,2FAAsB,CAAA;IACtB,8FAAuB,CAAA;IACvB,wFAAoB,CAAA;IACpB,gGAAwB,CAAA;AAC1B,CAAC,EAdW,gBAAgB,gCAAhB,gBAAgB,QAc3B;AAED;;;GAGG;AACH,IAAY,gBAgBX;AAhBD,WAAY,gBAAgB;IAC1B,6DAAO,CAAA;IACP,6DAAO,CAAA;IACP,iEAAS,CAAA;IACT,6DAAO,CAAA;IACP,+DAAQ,CAAA;IACR,+DAAQ,CAAA;IACR,+DAAQ,CAAA;IACR,+DAAQ,CAAA;IACR,iEAAS,CAAA;IACT,iEAAS,CAAA;IACT,oEAAU,CAAA;IACV,oFAAkB,CAAA;IAClB,4EAAc,CAAA;IACd,4EAAc,CAAA;IACd,8EAAe,CAAA;AACjB,CAAC,EAhBW,gBAAgB,gCAAhB,gBAAgB,QAgB3B;AAED,wJAAwJ;AACxJ,WAAiB,gBAAgB;IAC/B,SAAgB,gBAAgB,CAAC,MAAwB;QACvD,OAAO,MAAM,KAAK,gBAAgB,CAAC,UAAU,IAAI,MAAM,KAAK,gBAAgB,CAAC,kBAAkB,IAAI,MAAM,KAAK,gBAAgB,CAAC,cAAc;eACxI,MAAM,KAAK,gBAAgB,CAAC,cAAc,IAAI,MAAM,KAAK,gBAAgB,CAAC,eAAe,CAAC;IACjG,CAAC;IAHe,iCAAgB,mBAG/B,CAAA;AACH,CAAC,EALgB,gBAAgB,gCAAhB,gBAAgB,QAKhC;AAED;;;GAGG;AACH,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,uEAAa,CAAA;IACb,uFAAqB,CAAA;IACrB,yFAAsB,CAAA;AACxB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED;;;GAGG;AACH,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,yDAAO,CAAA;IACP,mDAAI,CAAA;IACJ,uDAAM,CAAA;IACN,6DAAS,CAAA;IACT,uDAAM,CAAA;AACR,CAAC,EANW,cAAc,8BAAd,cAAc,QAMzB;AAED;;;GAGG;AACH,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,qDAAQ,CAAA;IACR,mDAAO,CAAA;AACT,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,yDAAyD;AAEzD,gBAAgB;AACH,QAAA,iBAAiB,GAAG;IAC/B,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,0BAA0B;IAClC,SAAS,EAAE,qBAAqB;CACjC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module RpcInterface\n */\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Describes available options for RPC response caching.\n * @public\n */\nexport enum RpcResponseCacheControl {\n None,\n Immutable,\n}\n\n/** RPC protocol event types.\n * @public\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\n */\nexport enum RpcProtocolEvent {\n RequestCreated,\n ResponseLoaded,\n ResponseLoading,\n ConnectionErrorReceived,\n UnknownErrorReceived,\n BackendErrorReceived,\n ConnectionAborted,\n RequestReceived,\n BackendResponseCreated,\n BackendReportedPending,\n BackendReportedNotFound,\n BackendErrorOccurred,\n BackendReportedNoContent,\n}\n\n/** The status of an RPC operation request.\n * @public\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\n */\nexport enum RpcRequestStatus {\n Unknown,\n Created,\n Submitted,\n Pending,\n Resolved,\n Rejected,\n Disposed,\n NotFound,\n Cancelled,\n NoContent,\n BadGateway,\n ServiceUnavailable,\n GatewayTimeout,\n RequestTimeout,\n TooManyRequests\n}\n\n/** @public @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future. */\nexport namespace RpcRequestStatus {\n export function isTransientError(status: RpcRequestStatus) {\n return status === RpcRequestStatus.BadGateway || status === RpcRequestStatus.ServiceUnavailable || status === RpcRequestStatus.GatewayTimeout\n || status === RpcRequestStatus.RequestTimeout || status === RpcRequestStatus.TooManyRequests;\n }\n}\n\n/** RPC request event types.\n * @public\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\n */\nexport enum RpcRequestEvent {\n StatusChanged,\n PendingUpdateReceived,\n TransientErrorReceived\n}\n\n/** RPC content types.\n * @public\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\n */\nexport enum RpcContentType {\n Unknown,\n Text,\n Binary,\n Multipart,\n Stream,\n}\n\n/** Endpoints for RPC protocols.\n * @public\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\n */\nexport enum RpcEndpoint {\n Frontend,\n Backend,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/** @internal */\nexport const WEB_RPC_CONSTANTS = {\n CONTENT: \"Content-Type\",\n TEXT: \"text/plain\",\n ANY_TEXT: \"text/\",\n BINARY: \"application/octet-stream\",\n MULTIPART: \"multipart/form-data\",\n};\n"]}
1
+ {"version":3,"file":"RpcConstants.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcConstants.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,qDAAqD;AAErD;;GAEG;AACH,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,qEAAI,CAAA;IACJ,+EAAS,CAAA;AACX,CAAC,EAHW,uBAAuB,uCAAvB,uBAAuB,QAGlC;AAED;;;GAGG;AACH,IAAY,gBAcX;AAdD,WAAY,gBAAgB;IAC1B,2EAAc,CAAA;IACd,2EAAc,CAAA;IACd,6EAAe,CAAA;IACf,6FAAuB,CAAA;IACvB,uFAAoB,CAAA;IACpB,uFAAoB,CAAA;IACpB,iFAAiB,CAAA;IACjB,6EAAe,CAAA;IACf,2FAAsB,CAAA;IACtB,2FAAsB,CAAA;IACtB,8FAAuB,CAAA;IACvB,wFAAoB,CAAA;IACpB,gGAAwB,CAAA;AAC1B,CAAC,EAdW,gBAAgB,gCAAhB,gBAAgB,QAc3B;AAED;;;GAGG;AACH,IAAY,gBAgBX;AAhBD,WAAY,gBAAgB;IAC1B,6DAAO,CAAA;IACP,6DAAO,CAAA;IACP,iEAAS,CAAA;IACT,6DAAO,CAAA;IACP,+DAAQ,CAAA;IACR,+DAAQ,CAAA;IACR,+DAAQ,CAAA;IACR,+DAAQ,CAAA;IACR,iEAAS,CAAA;IACT,iEAAS,CAAA;IACT,oEAAU,CAAA;IACV,oFAAkB,CAAA;IAClB,4EAAc,CAAA;IACd,4EAAc,CAAA;IACd,8EAAe,CAAA;AACjB,CAAC,EAhBW,gBAAgB,gCAAhB,gBAAgB,QAgB3B;AAED,wJAAwJ;AACxJ,WAAiB,gBAAgB;IAC/B,SAAgB,gBAAgB,CAAC,MAAwB;QACvD,OAAO,MAAM,KAAK,gBAAgB,CAAC,UAAU,IAAI,MAAM,KAAK,gBAAgB,CAAC,kBAAkB,IAAI,MAAM,KAAK,gBAAgB,CAAC,cAAc;eACxI,MAAM,KAAK,gBAAgB,CAAC,cAAc,IAAI,MAAM,KAAK,gBAAgB,CAAC,eAAe,CAAC;IACjG,CAAC;IAHe,iCAAgB,mBAG/B,CAAA;AACH,CAAC,EALgB,gBAAgB,gCAAhB,gBAAgB,QAKhC;AAED;;;GAGG;AACH,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,uEAAa,CAAA;IACb,uFAAqB,CAAA;IACrB,yFAAsB,CAAA;AACxB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED;;;GAGG;AACH,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,yDAAO,CAAA;IACP,mDAAI,CAAA;IACJ,uDAAM,CAAA;IACN,6DAAS,CAAA;IACT,uDAAM,CAAA;AACR,CAAC,EANW,cAAc,8BAAd,cAAc,QAMzB;AAED;;;GAGG;AACH,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,qDAAQ,CAAA;IACR,mDAAO,CAAA;AACT,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,yDAAyD;AAEzD,gBAAgB;AACH,QAAA,iBAAiB,GAAG;IAC/B,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,0BAA0B;IAClC,SAAS,EAAE,qBAAqB;CACjC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-deprecated */\r\n\r\n/** Describes available options for RPC response caching.\r\n * @public\r\n */\r\nexport enum RpcResponseCacheControl {\r\n None,\r\n Immutable,\r\n}\r\n\r\n/** RPC protocol event types.\r\n * @public\r\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\r\n */\r\nexport enum RpcProtocolEvent {\r\n RequestCreated,\r\n ResponseLoaded,\r\n ResponseLoading,\r\n ConnectionErrorReceived,\r\n UnknownErrorReceived,\r\n BackendErrorReceived,\r\n ConnectionAborted,\r\n RequestReceived,\r\n BackendResponseCreated,\r\n BackendReportedPending,\r\n BackendReportedNotFound,\r\n BackendErrorOccurred,\r\n BackendReportedNoContent,\r\n}\r\n\r\n/** The status of an RPC operation request.\r\n * @public\r\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\r\n */\r\nexport enum RpcRequestStatus {\r\n Unknown,\r\n Created,\r\n Submitted,\r\n Pending,\r\n Resolved,\r\n Rejected,\r\n Disposed,\r\n NotFound,\r\n Cancelled,\r\n NoContent,\r\n BadGateway,\r\n ServiceUnavailable,\r\n GatewayTimeout,\r\n RequestTimeout,\r\n TooManyRequests\r\n}\r\n\r\n/** @public @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future. */\r\nexport namespace RpcRequestStatus {\r\n export function isTransientError(status: RpcRequestStatus) {\r\n return status === RpcRequestStatus.BadGateway || status === RpcRequestStatus.ServiceUnavailable || status === RpcRequestStatus.GatewayTimeout\r\n || status === RpcRequestStatus.RequestTimeout || status === RpcRequestStatus.TooManyRequests;\r\n }\r\n}\r\n\r\n/** RPC request event types.\r\n * @public\r\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\r\n */\r\nexport enum RpcRequestEvent {\r\n StatusChanged,\r\n PendingUpdateReceived,\r\n TransientErrorReceived\r\n}\r\n\r\n/** RPC content types.\r\n * @public\r\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\r\n */\r\nexport enum RpcContentType {\r\n Unknown,\r\n Text,\r\n Binary,\r\n Multipart,\r\n Stream,\r\n}\r\n\r\n/** Endpoints for RPC protocols.\r\n * @public\r\n * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.\r\n */\r\nexport enum RpcEndpoint {\r\n Frontend,\r\n Backend,\r\n}\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\n/** @internal */\r\nexport const WEB_RPC_CONSTANTS = {\r\n CONTENT: \"Content-Type\",\r\n TEXT: \"text/plain\",\r\n ANY_TEXT: \"text/\",\r\n BINARY: \"application/octet-stream\",\r\n MULTIPART: \"multipart/form-data\",\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RpcControl.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcControl.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,yCAAmC;AAEnC,qDAAkD;AAClD,iDAAqE;AACrE,yDAAsD;AAEtD,iDAA8C;AAC9C,+CAA4C;AAE5C;;GAEG;AACH,MAAsB,kBAAkB;IAC/B,OAAO,GAAG,oBAAoB,CAAC;CACvC;AAFD,gDAEC;AAED;;GAEG;AACH,MAAa,kBAAmB,SAAQ,kBAAkB;IACxD,uDAAuD;IACvC,OAAO,CAAS;IAEhC,qCAAqC;IACrC,YAAmB,UAAkB,EAAE;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AATD,gDASC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,kBAAkB;IACzC,OAAO,GAAG,WAAW,CAAC;CACvC;AAFD,kDAEC;AAED;;GAEG;AACH,MAAa,iBAAiB;IAC5B,gBAAgB;IACT,MAAM,CAAC,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,cAAc,CAAmB;IACjC,YAAY,GAAG,KAAK,CAAC;IACrB,aAAa,GAAG,KAAK,CAAC;IACtB,kBAAkB,GAA2C,SAAgB,CAAC;IAEtF,gBAAgB;IACT,MAAM,CAAC,iBAAiB;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,YAAoB,aAA+B;QACjD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB;IACT,KAAK,CAAC,iBAAiB;QAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,MAAM,CAAC,aAA+B;QAClD,IAAI,iBAAiB,CAAC,WAAW;YAC/B,OAAO,SAAgB,CAAC;QAE1B,EAAE,iBAAiB,CAAC,WAAW,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACrD,EAAE,iBAAiB,CAAC,WAAW,CAAC;QAEhC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,iBAAiB,GAAG,KAAM,SAAQ,2BAAY;QAC7C,MAAM,CAAU,gBAAgB,GAAG,SAAS,CAAC;QAC7C,MAAM,CAAU,aAAa,GAAG,EAAE,CAAC;QACnC,KAAK,CAAC,iBAAiB,KAAuC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACvG,CAAC;IAEM,YAAY,GAAG,KAAM,SAAQ,2BAAY;QACxC,KAAK,CAAC,iBAAiB;YAC5B,MAAM,SAAS,GAA4B,EAAE,CAAC;YAE9C,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACrD,IAAI,CAAC,yBAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,UAAU,CAAC;oBAC7D,OAAO;gBAET,MAAM,WAAW,GAA0B,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,EAAE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBAC5K,2BAAY,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1G,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;IAEM,SAAS;QACf,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACxI,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvC,OAAO,kBAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,aAAa;YACpB,OAAO;QAET,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,MAAM,KAAK,GAAmB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;QAC5G,2BAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,2BAAY,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;QACxI,MAAM,MAAM,GAAG,uBAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxE,IAAI,CAAC,kBAAkB,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACjE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,gBAAgB;IACT,UAAU;QACf,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAEzE,mCAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,WAAkB,CAAC,CAAC;QAC9F,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,uBAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,gBAAgB;IACT,sBAAsB,CAAC,UAAyB,EAAE,MAAW;QAClE,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;QACxC,IAAI,EAAE,CAAC,gBAAgB,KAAK,SAAS,IAAI,EAAE,CAAC,aAAa,KAAK,mBAAmB,EAAE,CAAC;YAClF,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;gBACzC,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YAChE,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;;AApHH,8CAqHC","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 { Base64 } from \"js-base64\";\nimport { IModelRpcProps } from \"../../IModel\";\nimport { RpcInterface } from \"../../RpcInterface\";\nimport { RpcInterfaceEndpoints, RpcManager } from \"../../RpcManager\";\nimport { RpcConfiguration } from \"./RpcConfiguration\";\nimport { RpcInvocation } from \"./RpcInvocation\";\nimport { RpcOperation } from \"./RpcOperation\";\nimport { RpcRegistry } from \"./RpcRegistry\";\n\n/** An RPC operation control response.\n * @public\n */\nexport abstract class RpcControlResponse {\n public message = \"RpcControlResponse\";\n}\n\n/** A pending RPC operation response.\n * @public\n */\nexport class RpcPendingResponse extends RpcControlResponse {\n /** Extended status regarding the pending operation. */\n public override message: string;\n\n /** Constructs a pending response. */\n public constructor(message: string = \"\") {\n super();\n this.message = message;\n }\n}\n\n/** A RPC operation response.\n * @public\n */\nexport class RpcNotFoundResponse extends RpcControlResponse {\n public override message = \"Not found\";\n}\n\n/** Manages requests and responses for an RPC configuration.\n * @internal\n */\nexport class RpcControlChannel {\n /** @internal */\n public static channels: RpcControlChannel[] = [];\n private static _obtainLock = 0;\n private _configuration: RpcConfiguration;\n private _initialized = false;\n private _clientActive = false;\n private _describeEndpoints: () => Promise<RpcInterfaceEndpoints[]> = undefined as any;\n\n /** @internal */\n public static ensureInitialized() {\n this.channels.forEach((channel) => channel.initialize());\n }\n\n private constructor(configuration: RpcConfiguration) {\n this._configuration = configuration;\n RpcControlChannel.channels.push(this);\n }\n\n /** @internal */\n public async describeEndpoints() {\n this.activateClient();\n if (!this._channelInterface.interfaceName) {\n return [];\n }\n\n return this._describeEndpoints();\n }\n\n /** @internal */\n public static obtain(configuration: RpcConfiguration): RpcControlChannel {\n if (RpcControlChannel._obtainLock)\n return undefined as any;\n\n ++RpcControlChannel._obtainLock;\n const channel = new RpcControlChannel(configuration);\n --RpcControlChannel._obtainLock;\n\n return channel;\n }\n\n private _channelInterface = class extends RpcInterface {\n public static readonly interfaceVersion = \"CONTROL\";\n public static readonly interfaceName = \"\";\n public async describeEndpoints(): Promise<RpcInterfaceEndpoints[]> { return this.forward(arguments); }\n };\n\n private _channelImpl = class extends RpcInterface {\n public async describeEndpoints(): Promise<RpcInterfaceEndpoints[]> {\n const endpoints: RpcInterfaceEndpoints[] = [];\n\n this.configuration.interfaces().forEach((definition) => {\n if (!RpcRegistry.instance.isRpcInterfaceInitialized(definition))\n return;\n\n const description: RpcInterfaceEndpoints = { interfaceName: definition.interfaceName, interfaceVersion: definition.interfaceVersion, operationNames: [], compatible: true };\n RpcOperation.forEach(definition, (operation) => description.operationNames.push(operation.operationName));\n endpoints.push(description);\n });\n\n return endpoints;\n }\n };\n\n private computeId(): string {\n const interfaces: string[] = [];\n this._configuration.interfaces().forEach((definition) => interfaces.push(`${definition.interfaceName}@${definition.interfaceVersion}`));\n const id = interfaces.sort().join(\",\");\n\n return Base64.encode(id);\n }\n\n private activateClient() {\n if (this._clientActive)\n return;\n\n this.initialize();\n\n const token: IModelRpcProps = { key: \"none\", iTwinId: \"none\", iModelId: \"none\", changeset: { id: \"none\" } };\n RpcOperation.forEach(this._channelInterface, (operation) => operation.policy.token = (_request) => RpcOperation.fallbackToken ?? token);\n const client = RpcManager.getClientForInterface(this._channelInterface);\n this._describeEndpoints = async () => client.describeEndpoints();\n this._clientActive = true;\n }\n\n /** @internal */\n public initialize() {\n if (this._initialized) {\n return;\n }\n\n const id = this.computeId();\n Object.defineProperty(this._channelInterface, \"interfaceName\", { value: id });\n Object.defineProperty(this._channelImpl, \"interfaceName\", { value: id });\n\n RpcConfiguration.assign(this._channelInterface, () => this._configuration.constructor as any);\n RpcManager.registerImpl(this._channelInterface, this._channelImpl);\n RpcManager.initializeInterface(this._channelInterface);\n\n this._initialized = true;\n }\n\n /** @internal */\n public handleUnknownOperation(invocation: RpcInvocation, _error: any): boolean {\n this.initialize();\n\n const op = invocation.request.operation;\n if (op.interfaceVersion === \"CONTROL\" && op.operationName === \"describeEndpoints\") {\n if (this._channelInterface.interfaceName) {\n op.interfaceDefinition = this._channelInterface.interfaceName;\n }\n\n return true;\n }\n\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"RpcControl.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcControl.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 { Base64 } from \"js-base64\";\r\nimport { IModelRpcProps } from \"../../IModel\";\r\nimport { RpcInterface } from \"../../RpcInterface\";\r\nimport { RpcInterfaceEndpoints, RpcManager } from \"../../RpcManager\";\r\nimport { RpcConfiguration } from \"./RpcConfiguration\";\r\nimport { RpcInvocation } from \"./RpcInvocation\";\r\nimport { RpcOperation } from \"./RpcOperation\";\r\nimport { RpcRegistry } from \"./RpcRegistry\";\r\n\r\n/** An RPC operation control response.\r\n * @public\r\n */\r\nexport abstract class RpcControlResponse {\r\n public message = \"RpcControlResponse\";\r\n}\r\n\r\n/** A pending RPC operation response.\r\n * @public\r\n */\r\nexport class RpcPendingResponse extends RpcControlResponse {\r\n /** Extended status regarding the pending operation. */\r\n public override message: string;\r\n\r\n /** Constructs a pending response. */\r\n public constructor(message: string = \"\") {\r\n super();\r\n this.message = message;\r\n }\r\n}\r\n\r\n/** A RPC operation response.\r\n * @public\r\n */\r\nexport class RpcNotFoundResponse extends RpcControlResponse {\r\n public override message = \"Not found\";\r\n}\r\n\r\n/** Manages requests and responses for an RPC configuration.\r\n * @internal\r\n */\r\nexport class RpcControlChannel {\r\n /** @internal */\r\n public static channels: RpcControlChannel[] = [];\r\n private static _obtainLock = 0;\r\n private _configuration: RpcConfiguration;\r\n private _initialized = false;\r\n private _clientActive = false;\r\n private _describeEndpoints: () => Promise<RpcInterfaceEndpoints[]> = undefined as any;\r\n\r\n /** @internal */\r\n public static ensureInitialized() {\r\n this.channels.forEach((channel) => channel.initialize());\r\n }\r\n\r\n private constructor(configuration: RpcConfiguration) {\r\n this._configuration = configuration;\r\n RpcControlChannel.channels.push(this);\r\n }\r\n\r\n /** @internal */\r\n public async describeEndpoints() {\r\n this.activateClient();\r\n if (!this._channelInterface.interfaceName) {\r\n return [];\r\n }\r\n\r\n return this._describeEndpoints();\r\n }\r\n\r\n /** @internal */\r\n public static obtain(configuration: RpcConfiguration): RpcControlChannel {\r\n if (RpcControlChannel._obtainLock)\r\n return undefined as any;\r\n\r\n ++RpcControlChannel._obtainLock;\r\n const channel = new RpcControlChannel(configuration);\r\n --RpcControlChannel._obtainLock;\r\n\r\n return channel;\r\n }\r\n\r\n private _channelInterface = class extends RpcInterface {\r\n public static readonly interfaceVersion = \"CONTROL\";\r\n public static readonly interfaceName = \"\";\r\n public async describeEndpoints(): Promise<RpcInterfaceEndpoints[]> { return this.forward(arguments); }\r\n };\r\n\r\n private _channelImpl = class extends RpcInterface {\r\n public async describeEndpoints(): Promise<RpcInterfaceEndpoints[]> {\r\n const endpoints: RpcInterfaceEndpoints[] = [];\r\n\r\n this.configuration.interfaces().forEach((definition) => {\r\n if (!RpcRegistry.instance.isRpcInterfaceInitialized(definition))\r\n return;\r\n\r\n const description: RpcInterfaceEndpoints = { interfaceName: definition.interfaceName, interfaceVersion: definition.interfaceVersion, operationNames: [], compatible: true };\r\n RpcOperation.forEach(definition, (operation) => description.operationNames.push(operation.operationName));\r\n endpoints.push(description);\r\n });\r\n\r\n return endpoints;\r\n }\r\n };\r\n\r\n private computeId(): string {\r\n const interfaces: string[] = [];\r\n this._configuration.interfaces().forEach((definition) => interfaces.push(`${definition.interfaceName}@${definition.interfaceVersion}`));\r\n const id = interfaces.sort().join(\",\");\r\n\r\n return Base64.encode(id);\r\n }\r\n\r\n private activateClient() {\r\n if (this._clientActive)\r\n return;\r\n\r\n this.initialize();\r\n\r\n const token: IModelRpcProps = { key: \"none\", iTwinId: \"none\", iModelId: \"none\", changeset: { id: \"none\" } };\r\n RpcOperation.forEach(this._channelInterface, (operation) => operation.policy.token = (_request) => RpcOperation.fallbackToken ?? token);\r\n const client = RpcManager.getClientForInterface(this._channelInterface);\r\n this._describeEndpoints = async () => client.describeEndpoints();\r\n this._clientActive = true;\r\n }\r\n\r\n /** @internal */\r\n public initialize() {\r\n if (this._initialized) {\r\n return;\r\n }\r\n\r\n const id = this.computeId();\r\n Object.defineProperty(this._channelInterface, \"interfaceName\", { value: id });\r\n Object.defineProperty(this._channelImpl, \"interfaceName\", { value: id });\r\n\r\n RpcConfiguration.assign(this._channelInterface, () => this._configuration.constructor as any);\r\n RpcManager.registerImpl(this._channelInterface, this._channelImpl);\r\n RpcManager.initializeInterface(this._channelInterface);\r\n\r\n this._initialized = true;\r\n }\r\n\r\n /** @internal */\r\n public handleUnknownOperation(invocation: RpcInvocation, _error: any): boolean {\r\n this.initialize();\r\n\r\n const op = invocation.request.operation;\r\n if (op.interfaceVersion === \"CONTROL\" && op.operationName === \"describeEndpoints\") {\r\n if (this._channelInterface.interfaceName) {\r\n op.interfaceDefinition = this._channelInterface.interfaceName;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n"]}