@itwin/core-common 5.0.0-dev.96 → 5.0.0-dev.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/lib/cjs/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/AnalysisStyle.js.map +1 -1
- package/lib/cjs/Atmosphere.js.map +1 -1
- package/lib/cjs/AuthorizationClient.js.map +1 -1
- package/lib/cjs/BackgroundMapProvider.js.map +1 -1
- package/lib/cjs/BackgroundMapSettings.js.map +1 -1
- package/lib/cjs/Base64EncodedString.js.map +1 -1
- package/lib/cjs/BlobReader.js.map +1 -1
- package/lib/cjs/BriefcaseTypes.js.map +1 -1
- package/lib/cjs/Camera.js.map +1 -1
- package/lib/cjs/ChangedElements.js.map +1 -1
- package/lib/cjs/ChangedEntities.js.map +1 -1
- package/lib/cjs/ChangesetProps.js.map +1 -1
- package/lib/cjs/ClipStyle.js.map +1 -1
- package/lib/cjs/Code.js.map +1 -1
- package/lib/cjs/ColorByName.js.map +1 -1
- package/lib/cjs/ColorDef.js.map +1 -1
- package/lib/cjs/CommonLoggerCategory.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/ContextRealityModel.js.map +1 -1
- package/lib/cjs/ContourDisplay.js.map +1 -1
- package/lib/cjs/DisplayStyleSettings.js.map +1 -1
- package/lib/cjs/ECSchemaProps.js.map +1 -1
- package/lib/cjs/ECSqlReader.js.map +1 -1
- package/lib/cjs/ECSqlTypes.js.map +1 -1
- package/lib/cjs/ElementMesh.js.map +1 -1
- package/lib/cjs/ElementProps.d.ts +14 -1
- package/lib/cjs/ElementProps.d.ts.map +1 -1
- package/lib/cjs/ElementProps.js.map +1 -1
- package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
- package/lib/cjs/EntityProps.js.map +1 -1
- package/lib/cjs/EntityReference.js.map +1 -1
- package/lib/cjs/Environment.js.map +1 -1
- package/lib/cjs/FeatureIndex.js.map +1 -1
- package/lib/cjs/FeatureSymbology.js.map +1 -1
- package/lib/cjs/FeatureTable.js.map +1 -1
- package/lib/cjs/Fonts.js.map +1 -1
- package/lib/cjs/Frustum.js.map +1 -1
- package/lib/cjs/GenericInstanceFilter.js.map +1 -1
- package/lib/cjs/GeoCoordinateServices.js.map +1 -1
- package/lib/cjs/GeometryContainment.js.map +1 -1
- package/lib/cjs/GeometryParams.js.map +1 -1
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/Gradient.js.map +1 -1
- package/lib/cjs/GraphicParams.js.map +1 -1
- package/lib/cjs/GroundPlane.js.map +1 -1
- package/lib/cjs/HSLColor.js.map +1 -1
- package/lib/cjs/HSVColor.js.map +1 -1
- package/lib/cjs/HiddenLine.js.map +1 -1
- package/lib/cjs/Hilite.js.map +1 -1
- package/lib/cjs/IModel.js.map +1 -1
- package/lib/cjs/IModelError.js.map +1 -1
- package/lib/cjs/IModelVersion.js.map +1 -1
- package/lib/cjs/ITwinCoreErrors.js.map +1 -1
- package/lib/cjs/Image.js.map +1 -1
- package/lib/cjs/IpcAppProps.js.map +1 -1
- package/lib/cjs/LightSettings.js.map +1 -1
- package/lib/cjs/LinePixels.js.map +1 -1
- package/lib/cjs/Localization.js.map +1 -1
- package/lib/cjs/MapImagerySettings.js.map +1 -1
- package/lib/cjs/MapLayerSettings.js.map +1 -1
- package/lib/cjs/MassProperties.js.map +1 -1
- package/lib/cjs/MaterialProps.js.map +1 -1
- package/lib/cjs/ModelClipGroup.js.map +1 -1
- package/lib/cjs/ModelGeometryChanges.js.map +1 -1
- package/lib/cjs/ModelProps.js.map +1 -1
- package/lib/cjs/NativeAppProps.js.map +1 -1
- package/lib/cjs/OctEncodedNormal.js.map +1 -1
- package/lib/cjs/PlanProjectionSettings.js.map +1 -1
- package/lib/cjs/PlanarClipMask.js.map +1 -1
- package/lib/cjs/QPoint.js.map +1 -1
- package/lib/cjs/RealityDataAccessProps.js.map +1 -1
- package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
- package/lib/cjs/RenderMaterial.js.map +1 -1
- package/lib/cjs/RenderPolyline.js.map +1 -1
- package/lib/cjs/RenderTexture.js.map +1 -1
- package/lib/cjs/RgbColor.js.map +1 -1
- package/lib/cjs/RpcInterface.js.map +1 -1
- package/lib/cjs/RpcManager.js.map +1 -1
- package/lib/cjs/SessionProps.js.map +1 -1
- package/lib/cjs/SkyBox.js.map +1 -1
- package/lib/cjs/SolarCalculate.js.map +1 -1
- package/lib/cjs/SolarShadows.js.map +1 -1
- package/lib/cjs/SpatialClassification.js.map +1 -1
- package/lib/cjs/SubCategoryAppearance.js.map +1 -1
- package/lib/cjs/SubCategoryOverride.js.map +1 -1
- package/lib/cjs/TerrainSettings.js.map +1 -1
- package/lib/cjs/TextureMapping.js.map +1 -1
- package/lib/cjs/TextureProps.js.map +1 -1
- package/lib/cjs/ThematicDisplay.js.map +1 -1
- package/lib/cjs/Thumbnail.js.map +1 -1
- package/lib/cjs/TileProps.js.map +1 -1
- package/lib/cjs/Tween.js.map +1 -1
- package/lib/cjs/TxnAction.js.map +1 -1
- package/lib/cjs/ViewDetails.js.map +1 -1
- package/lib/cjs/ViewFlags.js.map +1 -1
- package/lib/cjs/ViewProps.js.map +1 -1
- package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/cjs/annotation/TextAnnotation.js.map +1 -1
- package/lib/cjs/annotation/TextBlock.js.map +1 -1
- package/lib/cjs/annotation/TextBlockGeometryProps.js.map +1 -1
- package/lib/cjs/annotation/TextBlockLayoutResult.js.map +1 -1
- package/lib/cjs/annotation/TextStyle.js.map +1 -1
- package/lib/cjs/core-common.js.map +1 -1
- package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
- package/lib/cjs/domains/GenericElementProps.js.map +1 -1
- package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
- package/lib/cjs/geometry/AreaPattern.js.map +1 -1
- package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
- package/lib/cjs/geometry/Cartographic.js.map +1 -1
- package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
- package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
- package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
- package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/cjs/geometry/GeometryStream.js.map +1 -1
- package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
- package/lib/cjs/geometry/LineStyle.js.map +1 -1
- package/lib/cjs/geometry/Placement.js.map +1 -1
- package/lib/cjs/geometry/Projection.js.map +1 -1
- package/lib/cjs/geometry/TextString.js.map +1 -1
- package/lib/cjs/internal/BackendTypes.js.map +1 -1
- package/lib/cjs/internal/PackedFeatureTable.js.map +1 -1
- package/lib/cjs/internal/RenderMaterialParams.js.map +1 -1
- package/lib/cjs/internal/RenderMesh.js.map +1 -1
- package/lib/cjs/internal/RenderTextureParams.js.map +1 -1
- package/lib/cjs/internal/Snapping.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/ipc/IpcSession.js.map +1 -1
- package/lib/cjs/ipc/IpcSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
- package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
- package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
- package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
- package/lib/cjs/tile/ElementGraphics.js.map +1 -1
- package/lib/cjs/tile/GltfTileIO.js.map +1 -1
- package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
- package/lib/cjs/tile/IModelTileIO.js.map +1 -1
- package/lib/cjs/tile/PntsTileIO.js.map +1 -1
- package/lib/cjs/tile/TileIO.js.map +1 -1
- package/lib/cjs/tile/TileMetadata.js.map +1 -1
- package/lib/cjs/tile/Tileset3dSchema.js.map +1 -1
- package/lib/esm/AmbientOcclusion.js.map +1 -1
- package/lib/esm/AnalysisStyle.js.map +1 -1
- package/lib/esm/Atmosphere.js.map +1 -1
- package/lib/esm/AuthorizationClient.js.map +1 -1
- package/lib/esm/BackgroundMapProvider.js.map +1 -1
- package/lib/esm/BackgroundMapSettings.js.map +1 -1
- package/lib/esm/Base64EncodedString.js.map +1 -1
- package/lib/esm/BlobReader.js.map +1 -1
- package/lib/esm/BriefcaseTypes.js.map +1 -1
- package/lib/esm/Camera.js.map +1 -1
- package/lib/esm/ChangedElements.js.map +1 -1
- package/lib/esm/ChangedEntities.js.map +1 -1
- package/lib/esm/ChangesetProps.js.map +1 -1
- package/lib/esm/ClipStyle.js.map +1 -1
- package/lib/esm/Code.js.map +1 -1
- package/lib/esm/ColorByName.js.map +1 -1
- package/lib/esm/ColorDef.js.map +1 -1
- package/lib/esm/CommonLoggerCategory.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/ContextRealityModel.js.map +1 -1
- package/lib/esm/ContourDisplay.js.map +1 -1
- package/lib/esm/DisplayStyleSettings.js.map +1 -1
- package/lib/esm/ECSchemaProps.js.map +1 -1
- package/lib/esm/ECSqlReader.js.map +1 -1
- package/lib/esm/ECSqlTypes.js.map +1 -1
- package/lib/esm/ElementMesh.js.map +1 -1
- package/lib/esm/ElementProps.d.ts +14 -1
- package/lib/esm/ElementProps.d.ts.map +1 -1
- package/lib/esm/ElementProps.js.map +1 -1
- package/lib/esm/EmphasizeElementsProps.js.map +1 -1
- package/lib/esm/EntityProps.js.map +1 -1
- package/lib/esm/EntityReference.js.map +1 -1
- package/lib/esm/Environment.js.map +1 -1
- package/lib/esm/FeatureIndex.js.map +1 -1
- package/lib/esm/FeatureSymbology.js.map +1 -1
- package/lib/esm/FeatureTable.js.map +1 -1
- package/lib/esm/Fonts.js.map +1 -1
- package/lib/esm/Frustum.js.map +1 -1
- package/lib/esm/GenericInstanceFilter.js.map +1 -1
- package/lib/esm/GeoCoordinateServices.js.map +1 -1
- package/lib/esm/GeometryContainment.js.map +1 -1
- package/lib/esm/GeometryParams.js.map +1 -1
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/Gradient.js.map +1 -1
- package/lib/esm/GraphicParams.js.map +1 -1
- package/lib/esm/GroundPlane.js.map +1 -1
- package/lib/esm/HSLColor.js.map +1 -1
- package/lib/esm/HSVColor.js.map +1 -1
- package/lib/esm/HiddenLine.js.map +1 -1
- package/lib/esm/Hilite.js.map +1 -1
- package/lib/esm/IModel.js.map +1 -1
- package/lib/esm/IModelError.js.map +1 -1
- package/lib/esm/IModelVersion.js.map +1 -1
- package/lib/esm/ITwinCoreErrors.js.map +1 -1
- package/lib/esm/Image.js.map +1 -1
- package/lib/esm/IpcAppProps.js.map +1 -1
- package/lib/esm/LightSettings.js.map +1 -1
- package/lib/esm/LinePixels.js.map +1 -1
- package/lib/esm/Localization.js.map +1 -1
- package/lib/esm/MapImagerySettings.js.map +1 -1
- package/lib/esm/MapLayerSettings.js.map +1 -1
- package/lib/esm/MassProperties.js.map +1 -1
- package/lib/esm/MaterialProps.js.map +1 -1
- package/lib/esm/ModelClipGroup.js.map +1 -1
- package/lib/esm/ModelGeometryChanges.js.map +1 -1
- package/lib/esm/ModelProps.js.map +1 -1
- package/lib/esm/NativeAppProps.js.map +1 -1
- package/lib/esm/OctEncodedNormal.js.map +1 -1
- package/lib/esm/PlanProjectionSettings.js.map +1 -1
- package/lib/esm/PlanarClipMask.js.map +1 -1
- package/lib/esm/QPoint.js.map +1 -1
- package/lib/esm/RealityDataAccessProps.js.map +1 -1
- package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
- package/lib/esm/RenderMaterial.js.map +1 -1
- package/lib/esm/RenderPolyline.js.map +1 -1
- package/lib/esm/RenderTexture.js.map +1 -1
- package/lib/esm/RgbColor.js.map +1 -1
- package/lib/esm/RpcInterface.js.map +1 -1
- package/lib/esm/RpcManager.js.map +1 -1
- package/lib/esm/SessionProps.js.map +1 -1
- package/lib/esm/SkyBox.js.map +1 -1
- package/lib/esm/SolarCalculate.js.map +1 -1
- package/lib/esm/SolarShadows.js.map +1 -1
- package/lib/esm/SpatialClassification.js.map +1 -1
- package/lib/esm/SubCategoryAppearance.js.map +1 -1
- package/lib/esm/SubCategoryOverride.js.map +1 -1
- package/lib/esm/TerrainSettings.js.map +1 -1
- package/lib/esm/TextureMapping.js.map +1 -1
- package/lib/esm/TextureProps.js.map +1 -1
- package/lib/esm/ThematicDisplay.js.map +1 -1
- package/lib/esm/Thumbnail.js.map +1 -1
- package/lib/esm/TileProps.js.map +1 -1
- package/lib/esm/Tween.js.map +1 -1
- package/lib/esm/TxnAction.js.map +1 -1
- package/lib/esm/ViewDetails.js.map +1 -1
- package/lib/esm/ViewFlags.js.map +1 -1
- package/lib/esm/ViewProps.js.map +1 -1
- package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/esm/annotation/TextAnnotation.js.map +1 -1
- package/lib/esm/annotation/TextBlock.js.map +1 -1
- package/lib/esm/annotation/TextBlockGeometryProps.js.map +1 -1
- package/lib/esm/annotation/TextBlockLayoutResult.js.map +1 -1
- package/lib/esm/annotation/TextStyle.js.map +1 -1
- package/lib/esm/core-common.js.map +1 -1
- package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
- package/lib/esm/domains/GenericElementProps.js.map +1 -1
- package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
- package/lib/esm/geometry/AreaPattern.js.map +1 -1
- package/lib/esm/geometry/BoundingSphere.js.map +1 -1
- package/lib/esm/geometry/Cartographic.js.map +1 -1
- package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/esm/geometry/ElementGeometry.js.map +1 -1
- package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
- package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
- package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
- package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/esm/geometry/GeometryStream.js.map +1 -1
- package/lib/esm/geometry/ImageGraphic.js.map +1 -1
- package/lib/esm/geometry/LineStyle.js.map +1 -1
- package/lib/esm/geometry/Placement.js.map +1 -1
- package/lib/esm/geometry/Projection.js.map +1 -1
- package/lib/esm/geometry/TextString.js.map +1 -1
- package/lib/esm/internal/BackendTypes.js.map +1 -1
- package/lib/esm/internal/PackedFeatureTable.js.map +1 -1
- package/lib/esm/internal/RenderMaterialParams.js.map +1 -1
- package/lib/esm/internal/RenderMesh.js.map +1 -1
- package/lib/esm/internal/RenderTextureParams.js.map +1 -1
- package/lib/esm/internal/Snapping.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/ipc/IpcSession.js.map +1 -1
- package/lib/esm/ipc/IpcSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/esm/rpc/TestRpcManager.js.map +1 -1
- package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
- package/lib/esm/rpc/core/RpcControl.js.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
- package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/esm/rpc/core/RpcPush.js.map +1 -1
- package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
- package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
- package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/esm/tile/B3dmTileIO.js.map +1 -1
- package/lib/esm/tile/CompositeTileIO.js.map +1 -1
- package/lib/esm/tile/ElementGraphics.js.map +1 -1
- package/lib/esm/tile/GltfTileIO.js.map +1 -1
- package/lib/esm/tile/I3dmTileIO.js.map +1 -1
- package/lib/esm/tile/IModelTileIO.js.map +1 -1
- package/lib/esm/tile/PntsTileIO.js.map +1 -1
- package/lib/esm/tile/TileIO.js.map +1 -1
- package/lib/esm/tile/TileMetadata.js.map +1 -1
- package/lib/esm/tile/Tileset3dSchema.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcPush.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcPush.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"RpcPush.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcPush.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/*---------------------------------------------------------------------------------------------\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module RpcInterface\n */\n\nimport { assert, BeEvent, BentleyStatus } from \"@itwin/core-bentley\";\nimport { IModelError } from \"../../IModelError\";\n\n/** @internal */\nexport type RpcPushMessageListener<T> = (message: T) => void;\n\n/** Defines a transport for push messages.\n * @internal\n */\nexport abstract class RpcPushTransport {\n public onMessage?: (channelId: string, messageData: any) => void;\n}\n\n/** Defines a source of push messages.\n * @internal\n */\nexport class RpcPushService {\n /** The push service for the dedicated backend (for example, an electron or mobile app). */\n public static dedicated = new RpcPushService(\"dedicated\");\n\n public readonly name: string;\n\n public constructor(name: string) {\n this.name = name;\n }\n}\n\n/** Defines a named stream of push messages.\n * @internal\n */\nexport class RpcPushChannel<T> {\n /** @internal */\n public static enabled = false;\n\n private static _channels: Map<string, RpcPushChannel<any>> = new Map();\n\n public static setup(transport: RpcPushTransport) {\n transport.onMessage = RpcPushChannel.notifySubscribers.bind(RpcPushChannel);\n RpcPushChannel.enabled = true;\n }\n\n private static notifySubscribers(channelId: string, messageData: any) {\n const channel = this._channels.get(channelId);\n if (!channel)\n return;\n\n for (const subscriber of channel._subscribers)\n subscriber.onMessage.raiseEvent(messageData);\n }\n\n private _subscribers: RpcPushSubscription<T>[] = [];\n public readonly name: string;\n public readonly service: RpcPushService;\n public get id() { return RpcPushChannel.formatId(this.name, this.service); }\n public get enabled() { return RpcPushChannel.enabled; }\n\n public subscribe(): RpcPushSubscription<T> {\n const subscription = new RpcPushSubscription(this);\n this._subscribers.push(subscription);\n return subscription;\n }\n\n private static formatId(name: string, service: RpcPushService): string {\n return `${service.name}-${name}`;\n }\n\n private constructor(name: string, service: RpcPushService) {\n this.name = name;\n this.service = service;\n }\n\n /** Creates a new RpcPushChannel.\n * @throws IModelError if a channel with the specified name and service already exist.\n */\n public static create<T>(name: string, service = RpcPushService.dedicated): RpcPushChannel<T> {\n return this.get<T>(name, service, false);\n }\n\n /** Obtains an RpcPushChannel, creating it if one with the specified name and service does not already exists. */\n public static obtain<T>(name: string, service = RpcPushService.dedicated): RpcPushChannel<T> {\n return this.get<T>(name, service, true);\n }\n\n private static get<T>(name: string, service: RpcPushService, reuseExisting: boolean): RpcPushChannel<T> {\n const id = this.formatId(name, service);\n let channel = this._channels.get(id);\n if (channel) {\n if (!reuseExisting)\n throw new IModelError(BentleyStatus.ERROR, `Channel \"${id}\" already exists.`);\n\n ++channel._refCount;\n return channel;\n }\n\n channel = new RpcPushChannel(name, service);\n this._channels.set(id, channel);\n return channel;\n }\n\n private _refCount = 1;\n public dispose(): void {\n if (this.isDisposed)\n return;\n\n assert(this._refCount > 0);\n if (--this._refCount === 0) {\n RpcPushChannel._channels.delete(this.id);\n this._subscribers.length = 0;\n }\n }\n\n public get isDisposed(): boolean {\n return 0 === this._refCount;\n }\n}\n\n/** Receives push messages from the backend.\n * @internal\n */\nexport class RpcPushSubscription<T> {\n public readonly channel: RpcPushChannel<T>;\n public readonly onMessage = new BeEvent<RpcPushMessageListener<T>>();\n\n /** @internal */\n public constructor(channel: RpcPushChannel<T>) {\n this.channel = channel;\n }\n}\n\n/** Sends push messages to the frontend.\n * @internal\n */\nexport abstract class RpcPushConnection<T> {\n public static for<T>(_channel: RpcPushChannel<T>, _client: unknown = undefined): RpcPushConnection<T> {\n throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\");\n }\n\n public readonly channel: RpcPushChannel<T>;\n public readonly client: unknown;\n\n public abstract send(messageData: T): Promise<void>;\n\n protected constructor(channel: RpcPushChannel<T>, client: unknown) {\n this.channel = channel;\n this.client = client;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcRegistry.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\nimport { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { IModelError } from \"../../IModelError\";\r\nimport { RpcConfiguration } from \"./RpcConfiguration\";\r\nimport { RpcPendingQueue } from \"./RpcPendingQueue\";\r\nimport { initializeRpcRequest } from \"./RpcRequest\";\r\nimport { RpcRoutingToken } from \"./RpcRoutingToken\";\r\nimport { RpcInterface, RpcInterfaceDefinition, RpcInterfaceImplementation } from \"../../RpcInterface\";\r\nimport { RpcInterfaceEndpoints } from \"../../RpcManager\";\r\nimport { RpcControlChannel } from \"./RpcControl\";\r\nimport { RpcOperation, RpcOperationPolicy } from \"./RpcOperation\";\r\n\r\n/** @internal */\r\nexport const REGISTRY = Symbol.for(\"@itwin/core-common/RpcRegistry\");\r\n\r\n/** @internal */\r\nexport const OPERATION = Symbol.for(\"@itwin/core-common/RpcOperation\");\r\n\r\n/** @internal */\r\nexport const POLICY = Symbol.for(\"@itwin/core-common/RpcOperationPolicy\");\r\n\r\n/** @internal */\r\nexport const INSTANCE = Symbol.for(\"@itwin/core-common/RpcInterface/__instance__\");\r\n\r\n/** @internal */\r\nexport const CURRENT_REQUEST = Symbol.for(\"@itwin/core-common/RpcRequest/__current__\");\r\n\r\n/** @internal */\r\nexport const CURRENT_INVOCATION = Symbol.for(\"@itwin/core-common/RpcInvocation/__current__\");\r\n\r\ndeclare const self: any;\r\ndeclare const window: any;\r\n\r\n/** @internal */\r\nexport class RpcRegistry {\r\n private static _instance: RpcRegistry;\r\n\r\n private constructor() {\r\n }\r\n\r\n public static get instance() {\r\n if (!RpcRegistry._instance) {\r\n const globalObj: any = typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {};\r\n if (!globalObj[REGISTRY])\r\n globalObj[REGISTRY] = new RpcRegistry();\r\n\r\n RpcRegistry._instance = globalObj[REGISTRY];\r\n }\r\n\r\n return RpcRegistry._instance;\r\n }\r\n\r\n public lookupInterfaceDefinition(name: string): RpcInterfaceDefinition {\r\n if (!this.definitionClasses.has(name))\r\n throw new IModelError(BentleyStatus.ERROR, `RPC interface \"${name}\" is not initialized.`);\r\n\r\n return this.definitionClasses.get(name) as RpcInterfaceDefinition;\r\n }\r\n\r\n public async describeAvailableEndpoints(): Promise<RpcInterfaceEndpoints[]> {\r\n const requests: Array<Promise<RpcInterfaceEndpoints[]>> = [];\r\n for (const channel of RpcControlChannel.channels) {\r\n requests.push(channel.describeEndpoints());\r\n }\r\n\r\n const responses = await Promise.all(requests);\r\n const endpoints = responses.reduce((a, b) => a.concat(b), []);\r\n for (const endpoint of endpoints) {\r\n const definition = this.definitionClasses.get(endpoint.interfaceName);\r\n endpoint.compatible = (definition && RpcInterface.isVersionCompatible(endpoint.interfaceVersion, definition.interfaceVersion)) ? true : false;\r\n }\r\n\r\n return endpoints;\r\n }\r\n\r\n public getClientForInterface<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>, routing: RpcRoutingToken = RpcRoutingToken.default): T {\r\n let instance: T | undefined;\r\n\r\n const proxies = this.proxies.get(definition.interfaceName);\r\n if (proxies) {\r\n instance = proxies.get(routing.id) as (T | undefined);\r\n }\r\n\r\n if (!instance)\r\n instance = this.instantiateClient(definition, routing);\r\n\r\n return instance;\r\n }\r\n\r\n public getImplForInterface<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>): T {\r\n let instance = this.implementations.get(definition.interfaceName) as (T | undefined);\r\n if (!instance)\r\n instance = this.instantiateImpl(definition);\r\n\r\n return instance;\r\n }\r\n\r\n public lookupImpl<T extends RpcInterface>(interfaceName: string): T {\r\n const definition = this.lookupInterfaceDefinition(interfaceName);\r\n return this.getImplForInterface(definition) as T;\r\n }\r\n\r\n public registerImpl<TDefinition extends RpcInterface, TImplementation extends TDefinition>(definition: RpcInterfaceDefinition<TDefinition>, implementation: RpcInterfaceImplementation<TImplementation>) {\r\n this.unregisterImpl(definition);\r\n this.implementationClasses.set(definition.interfaceName, implementation);\r\n }\r\n\r\n public unregisterImpl<TDefinition extends RpcInterface>(definition: RpcInterfaceDefinition<TDefinition>) {\r\n this.implementationClasses.delete(definition.interfaceName);\r\n\r\n const impl = this.implementations.get(definition.interfaceName);\r\n if (impl) {\r\n impl.configuration.onRpcImplTerminated(definition, impl);\r\n this.implementations.delete(definition.interfaceName);\r\n }\r\n }\r\n\r\n public supplyImplInstance<TDefinition extends RpcInterface, TImplementation extends TDefinition>(definition: RpcInterfaceDefinition<TDefinition>, instance: TImplementation): void {\r\n this.suppliedImplementations.set(definition.interfaceName, instance);\r\n }\r\n\r\n public isRpcInterfaceInitialized<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>): boolean {\r\n return this.definitionClasses.has(definition.interfaceName);\r\n }\r\n\r\n public initializeRpcInterface<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>): void {\r\n if (this.definitionClasses.has(definition.interfaceName)) {\r\n const existing = this.definitionClasses.get(definition.interfaceName);\r\n if (existing && definition.interfaceVersion === \"CONTROL\" && existing !== definition) {\r\n this.configureOperations(definition); // configs that differ only by routing still need the control ops initialized\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.notifyInitialize();\r\n this.definitionClasses.set(definition.interfaceName, definition);\r\n this.configureOperations(definition);\r\n }\r\n\r\n public terminateRpcInterface<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>) {\r\n this.unregisterImpl(definition);\r\n this.purgeClient(definition);\r\n this.definitionClasses.delete(definition.interfaceName);\r\n }\r\n\r\n public definitionClasses: Map<string, RpcInterfaceDefinition> = new Map();\r\n public proxies: Map<string, Map<number, RpcInterface>> = new Map();\r\n public implementations: Map<string, RpcInterface> = new Map();\r\n public suppliedImplementations: Map<string, RpcInterface> = new Map();\r\n public implementationClasses: Map<string, RpcInterfaceImplementation> = new Map();\r\n\r\n public id = (() => {\r\n let i = 0;\r\n return () => ++i;\r\n })();\r\n\r\n private instantiateImpl<TDefinition extends RpcInterface, TImplementation extends TDefinition>(definition: RpcInterfaceDefinition<TDefinition>): TImplementation {\r\n this.checkInitialized(definition);\r\n\r\n const registeredImplementation = this.implementationClasses.get(definition.interfaceName) as RpcInterfaceImplementation<TImplementation>;\r\n if (!registeredImplementation)\r\n throw new IModelError(BentleyStatus.ERROR, `An RPC interface implementation class for \"${definition.interfaceName}\" is not registered.`);\r\n\r\n if (definition.prototype.configurationSupplier)\r\n registeredImplementation.prototype.configurationSupplier = definition.prototype.configurationSupplier;\r\n\r\n const supplied = this.suppliedImplementations.get(definition.interfaceName);\r\n const implementation = supplied || new registeredImplementation();\r\n if (!(implementation instanceof registeredImplementation))\r\n throw new IModelError(BentleyStatus.ERROR, `Invalid RPC interface implementation.`);\r\n\r\n if (supplied) {\r\n (supplied.configuration as any) = RpcConfiguration.supply(supplied);\r\n }\r\n\r\n this.implementations.set(definition.interfaceName, implementation);\r\n implementation.configuration.onRpcImplInitialized(definition, implementation);\r\n return implementation;\r\n }\r\n\r\n private instantiateClient<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>, routing: RpcRoutingToken = RpcRoutingToken.default): T {\r\n this.checkInitialized(definition);\r\n\r\n const proxy = new (definition as any)(routing) as T;\r\n\r\n if (!this.proxies.has(definition.interfaceName)) {\r\n this.proxies.set(definition.interfaceName, new Map());\r\n }\r\n\r\n this.proxies.get(definition.interfaceName)?.set(routing.id, proxy);\r\n\r\n Object.getOwnPropertyNames(definition.prototype).forEach((operationName) => {\r\n if (operationName === \"constructor\" || operationName === \"configurationSupplier\")\r\n return;\r\n\r\n this.interceptOperation(proxy, operationName);\r\n });\r\n\r\n proxy.configuration.onRpcClientInitialized(definition, proxy);\r\n return proxy;\r\n }\r\n\r\n private interceptOperation(proxy: RpcInterface, operation: string) {\r\n const clientFunction = (proxy as any)[operation];\r\n (proxy as any)[operation] = function () {\r\n const args = Array.from(arguments);\r\n args.push(operation);\r\n return clientFunction.apply(proxy, args);\r\n };\r\n }\r\n\r\n private checkInitialized<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>) {\r\n if (!this.definitionClasses.has(definition.interfaceName))\r\n throw new IModelError(BentleyStatus.ERROR, `RPC interface \"${definition.interfaceName}\" is not initialized.`);\r\n }\r\n\r\n private configureOperations<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>) {\r\n const proto = (definition.prototype as any);\r\n\r\n Object.getOwnPropertyNames(proto).forEach((operationName) => {\r\n if (operationName === \"constructor\" || operationName === \"configurationSupplier\")\r\n return;\r\n\r\n const propertyName = RpcOperation.computeOperationName(operationName);\r\n\r\n if (!proto[propertyName][OPERATION]) {\r\n const policy = (definition as any)[POLICY] || new RpcOperationPolicy();\r\n proto[propertyName][OPERATION] = new RpcOperation(definition, propertyName, policy);\r\n }\r\n });\r\n }\r\n\r\n private purgeClient<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>) {\r\n const proxies = this.proxies.get(definition.interfaceName);\r\n if (proxies) {\r\n proxies.forEach((proxy) => proxy.configuration.onRpcClientTerminated(definition, proxy));\r\n this.proxies.delete(definition.interfaceName);\r\n }\r\n }\r\n\r\n private notifyInitialize() {\r\n initializeRpcRequest();\r\n RpcPendingQueue.initialize();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RpcRegistry.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module RpcInterface\n */\n\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport { IModelError } from \"../../IModelError\";\nimport { RpcConfiguration } from \"./RpcConfiguration\";\nimport { RpcPendingQueue } from \"./RpcPendingQueue\";\nimport { initializeRpcRequest } from \"./RpcRequest\";\nimport { RpcRoutingToken } from \"./RpcRoutingToken\";\nimport { RpcInterface, RpcInterfaceDefinition, RpcInterfaceImplementation } from \"../../RpcInterface\";\nimport { RpcInterfaceEndpoints } from \"../../RpcManager\";\nimport { RpcControlChannel } from \"./RpcControl\";\nimport { RpcOperation, RpcOperationPolicy } from \"./RpcOperation\";\n\n/** @internal */\nexport const REGISTRY = Symbol.for(\"@itwin/core-common/RpcRegistry\");\n\n/** @internal */\nexport const OPERATION = Symbol.for(\"@itwin/core-common/RpcOperation\");\n\n/** @internal */\nexport const POLICY = Symbol.for(\"@itwin/core-common/RpcOperationPolicy\");\n\n/** @internal */\nexport const INSTANCE = Symbol.for(\"@itwin/core-common/RpcInterface/__instance__\");\n\n/** @internal */\nexport const CURRENT_REQUEST = Symbol.for(\"@itwin/core-common/RpcRequest/__current__\");\n\n/** @internal */\nexport const CURRENT_INVOCATION = Symbol.for(\"@itwin/core-common/RpcInvocation/__current__\");\n\ndeclare const self: any;\ndeclare const window: any;\n\n/** @internal */\nexport class RpcRegistry {\n private static _instance: RpcRegistry;\n\n private constructor() {\n }\n\n public static get instance() {\n if (!RpcRegistry._instance) {\n const globalObj: any = typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {};\n if (!globalObj[REGISTRY])\n globalObj[REGISTRY] = new RpcRegistry();\n\n RpcRegistry._instance = globalObj[REGISTRY];\n }\n\n return RpcRegistry._instance;\n }\n\n public lookupInterfaceDefinition(name: string): RpcInterfaceDefinition {\n if (!this.definitionClasses.has(name))\n throw new IModelError(BentleyStatus.ERROR, `RPC interface \"${name}\" is not initialized.`);\n\n return this.definitionClasses.get(name) as RpcInterfaceDefinition;\n }\n\n public async describeAvailableEndpoints(): Promise<RpcInterfaceEndpoints[]> {\n const requests: Array<Promise<RpcInterfaceEndpoints[]>> = [];\n for (const channel of RpcControlChannel.channels) {\n requests.push(channel.describeEndpoints());\n }\n\n const responses = await Promise.all(requests);\n const endpoints = responses.reduce((a, b) => a.concat(b), []);\n for (const endpoint of endpoints) {\n const definition = this.definitionClasses.get(endpoint.interfaceName);\n endpoint.compatible = (definition && RpcInterface.isVersionCompatible(endpoint.interfaceVersion, definition.interfaceVersion)) ? true : false;\n }\n\n return endpoints;\n }\n\n public getClientForInterface<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>, routing: RpcRoutingToken = RpcRoutingToken.default): T {\n let instance: T | undefined;\n\n const proxies = this.proxies.get(definition.interfaceName);\n if (proxies) {\n instance = proxies.get(routing.id) as (T | undefined);\n }\n\n if (!instance)\n instance = this.instantiateClient(definition, routing);\n\n return instance;\n }\n\n public getImplForInterface<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>): T {\n let instance = this.implementations.get(definition.interfaceName) as (T | undefined);\n if (!instance)\n instance = this.instantiateImpl(definition);\n\n return instance;\n }\n\n public lookupImpl<T extends RpcInterface>(interfaceName: string): T {\n const definition = this.lookupInterfaceDefinition(interfaceName);\n return this.getImplForInterface(definition) as T;\n }\n\n public registerImpl<TDefinition extends RpcInterface, TImplementation extends TDefinition>(definition: RpcInterfaceDefinition<TDefinition>, implementation: RpcInterfaceImplementation<TImplementation>) {\n this.unregisterImpl(definition);\n this.implementationClasses.set(definition.interfaceName, implementation);\n }\n\n public unregisterImpl<TDefinition extends RpcInterface>(definition: RpcInterfaceDefinition<TDefinition>) {\n this.implementationClasses.delete(definition.interfaceName);\n\n const impl = this.implementations.get(definition.interfaceName);\n if (impl) {\n impl.configuration.onRpcImplTerminated(definition, impl);\n this.implementations.delete(definition.interfaceName);\n }\n }\n\n public supplyImplInstance<TDefinition extends RpcInterface, TImplementation extends TDefinition>(definition: RpcInterfaceDefinition<TDefinition>, instance: TImplementation): void {\n this.suppliedImplementations.set(definition.interfaceName, instance);\n }\n\n public isRpcInterfaceInitialized<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>): boolean {\n return this.definitionClasses.has(definition.interfaceName);\n }\n\n public initializeRpcInterface<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>): void {\n if (this.definitionClasses.has(definition.interfaceName)) {\n const existing = this.definitionClasses.get(definition.interfaceName);\n if (existing && definition.interfaceVersion === \"CONTROL\" && existing !== definition) {\n this.configureOperations(definition); // configs that differ only by routing still need the control ops initialized\n }\n\n return;\n }\n\n this.notifyInitialize();\n this.definitionClasses.set(definition.interfaceName, definition);\n this.configureOperations(definition);\n }\n\n public terminateRpcInterface<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>) {\n this.unregisterImpl(definition);\n this.purgeClient(definition);\n this.definitionClasses.delete(definition.interfaceName);\n }\n\n public definitionClasses: Map<string, RpcInterfaceDefinition> = new Map();\n public proxies: Map<string, Map<number, RpcInterface>> = new Map();\n public implementations: Map<string, RpcInterface> = new Map();\n public suppliedImplementations: Map<string, RpcInterface> = new Map();\n public implementationClasses: Map<string, RpcInterfaceImplementation> = new Map();\n\n public id = (() => {\n let i = 0;\n return () => ++i;\n })();\n\n private instantiateImpl<TDefinition extends RpcInterface, TImplementation extends TDefinition>(definition: RpcInterfaceDefinition<TDefinition>): TImplementation {\n this.checkInitialized(definition);\n\n const registeredImplementation = this.implementationClasses.get(definition.interfaceName) as RpcInterfaceImplementation<TImplementation>;\n if (!registeredImplementation)\n throw new IModelError(BentleyStatus.ERROR, `An RPC interface implementation class for \"${definition.interfaceName}\" is not registered.`);\n\n if (definition.prototype.configurationSupplier)\n registeredImplementation.prototype.configurationSupplier = definition.prototype.configurationSupplier;\n\n const supplied = this.suppliedImplementations.get(definition.interfaceName);\n const implementation = supplied || new registeredImplementation();\n if (!(implementation instanceof registeredImplementation))\n throw new IModelError(BentleyStatus.ERROR, `Invalid RPC interface implementation.`);\n\n if (supplied) {\n (supplied.configuration as any) = RpcConfiguration.supply(supplied);\n }\n\n this.implementations.set(definition.interfaceName, implementation);\n implementation.configuration.onRpcImplInitialized(definition, implementation);\n return implementation;\n }\n\n private instantiateClient<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>, routing: RpcRoutingToken = RpcRoutingToken.default): T {\n this.checkInitialized(definition);\n\n const proxy = new (definition as any)(routing) as T;\n\n if (!this.proxies.has(definition.interfaceName)) {\n this.proxies.set(definition.interfaceName, new Map());\n }\n\n this.proxies.get(definition.interfaceName)?.set(routing.id, proxy);\n\n Object.getOwnPropertyNames(definition.prototype).forEach((operationName) => {\n if (operationName === \"constructor\" || operationName === \"configurationSupplier\")\n return;\n\n this.interceptOperation(proxy, operationName);\n });\n\n proxy.configuration.onRpcClientInitialized(definition, proxy);\n return proxy;\n }\n\n private interceptOperation(proxy: RpcInterface, operation: string) {\n const clientFunction = (proxy as any)[operation];\n (proxy as any)[operation] = function () {\n const args = Array.from(arguments);\n args.push(operation);\n return clientFunction.apply(proxy, args);\n };\n }\n\n private checkInitialized<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>) {\n if (!this.definitionClasses.has(definition.interfaceName))\n throw new IModelError(BentleyStatus.ERROR, `RPC interface \"${definition.interfaceName}\" is not initialized.`);\n }\n\n private configureOperations<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>) {\n const proto = (definition.prototype as any);\n\n Object.getOwnPropertyNames(proto).forEach((operationName) => {\n if (operationName === \"constructor\" || operationName === \"configurationSupplier\")\n return;\n\n const propertyName = RpcOperation.computeOperationName(operationName);\n\n if (!proto[propertyName][OPERATION]) {\n const policy = (definition as any)[POLICY] || new RpcOperationPolicy();\n proto[propertyName][OPERATION] = new RpcOperation(definition, propertyName, policy);\n }\n });\n }\n\n private purgeClient<T extends RpcInterface>(definition: RpcInterfaceDefinition<T>) {\n const proxies = this.proxies.get(definition.interfaceName);\n if (proxies) {\n proxies.forEach((proxy) => proxy.configuration.onRpcClientTerminated(definition, proxy));\n this.proxies.delete(definition.interfaceName);\n }\n }\n\n private notifyInitialize() {\n initializeRpcRequest();\n RpcPendingQueue.initialize();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcRequest.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcRequest.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 { BeEvent, BentleyStatus, Guid } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps } from \"../../IModel\";\r\nimport { BackendError, IModelError, NoContentError } from \"../../IModelError\";\r\nimport { RpcInterface } from \"../../RpcInterface\";\r\nimport { RpcConfiguration } from \"./RpcConfiguration\";\r\nimport { RpcProtocolEvent, RpcRequestEvent, RpcRequestStatus, RpcResponseCacheControl } from \"./RpcConstants\";\r\nimport { RpcNotFoundResponse } from \"./RpcControl\";\r\nimport { RpcMarshaling, RpcSerializedValue } from \"./RpcMarshaling\";\r\nimport { RpcOperation } from \"./RpcOperation\";\r\nimport { RpcManagedStatus, RpcProtocol, RpcProtocolVersion } from \"./RpcProtocol\";\r\nimport { CURRENT_REQUEST } from \"./RpcRegistry\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n// cspell:ignore csrf\r\n/* eslint-disable @typescript-eslint/no-deprecated */\r\n\r\n/** @internal */\r\nexport const aggregateLoad = { lastRequest: 0, lastResponse: 0 };\r\n\r\n/** @internal */\r\nexport class ResponseLike implements Response {\r\n private _data: Promise<any>;\r\n public get body() { return null; }\r\n public async arrayBuffer(): Promise<ArrayBuffer> { return this._data; }\r\n public async blob(): Promise<Blob> { throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\"); }\r\n public async formData(): Promise<FormData> { throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\"); }\r\n public async json(): Promise<any> { return this._data; }\r\n public async text(): Promise<string> { return this._data; }\r\n public get bodyUsed() { return false; }\r\n public get headers(): Headers { throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\"); }\r\n public get ok(): boolean { return this.status >= 200 && this.status <= 299; }\r\n public get redirected() { return false; }\r\n public get status() { return 200; }\r\n public get statusText() { return \"\"; }\r\n public get trailer(): Promise<Headers> { throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\"); }\r\n public get type(): \"basic\" | \"cors\" | \"default\" | \"error\" | \"opaque\" | \"opaqueredirect\" { return \"basic\"; }\r\n public get url() { return \"\"; }\r\n public clone() { return { ...this }; }\r\n\r\n public constructor(data: any) {\r\n this._data = Promise.resolve(data);\r\n }\r\n}\r\n\r\n/** Supplies an IModelRpcProps for an RPC request.\r\n * @internal\r\n */\r\nexport type RpcRequestTokenSupplier_T = (request: RpcRequest) => IModelRpcProps | undefined;\r\n\r\n/** Supplies the initial retry interval for an RPC request.\r\n * @internal\r\n */\r\nexport type RpcRequestInitialRetryIntervalSupplier_T = (configuration: RpcConfiguration) => number;\r\n\r\n/** Notification callback for an RPC request.\r\n * @internal\r\n */\r\nexport type RpcRequestCallback_T = (request: RpcRequest) => void;\r\n\r\n/** Determines if caching is permitted for a RPC response.\r\n * @internal\r\n */\r\nexport type RpcResponseCachingCallback_T = (request: RpcRequest) => RpcResponseCacheControl;\r\n\r\n/** Runtime information related to the operation load of one or more RPC interfaces.\r\n * @internal\r\n */\r\nexport interface RpcOperationsProfile {\r\n readonly lastRequest: number;\r\n readonly lastResponse: number;\r\n}\r\n\r\n/** Handles RPC request events.\r\n * @internal\r\n */\r\nexport type RpcRequestEventHandler = (type: RpcRequestEvent, request: RpcRequest) => void;\r\n\r\n/** Resolves \"not found\" responses for RPC requests.\r\n * @internal\r\n */\r\nexport type RpcRequestNotFoundHandler = (request: RpcRequest, response: RpcNotFoundResponse, resubmit: () => void, reject: (reason?: any) => void) => void;\r\n\r\nclass Cancellable<T> {\r\n public promise: Promise<T | undefined>;\r\n public cancel() { }\r\n\r\n public constructor(task: Promise<T>) {\r\n this.promise = new Promise((resolve, reject) => {\r\n this.cancel = () => resolve(undefined);\r\n task.then(resolve, reject);\r\n });\r\n }\r\n}\r\n\r\n/** A RPC operation request.\r\n * @internal\r\n */\r\nexport abstract class RpcRequest<TResponse = any> {\r\n private static _activeRequests: Map<string, RpcRequest> = new Map();\r\n private _resolve: (value?: TResponse | PromiseLike<TResponse> | undefined) => void = () => undefined;\r\n protected _resolveRaw: (value?: Response | PromiseLike<Response> | undefined) => void = () => undefined;\r\n private _reject: (reason?: any) => void = () => undefined;\r\n private _rejectRaw: (reason?: any) => void = () => undefined;\r\n private _created: number = 0;\r\n private _lastSubmitted: number = 0;\r\n private _lastUpdated: number = 0;\r\n\r\n /** @internal */\r\n public _status: RpcRequestStatus = RpcRequestStatus.Unknown;\r\n\r\n /** @internal */\r\n public _extendedStatus: string = \"\";\r\n\r\n private _connecting: boolean = false;\r\n private _active: boolean = true;\r\n private _hasRawListener = false;\r\n private _raw: ArrayBuffer | string | undefined = undefined;\r\n private _sending?: Cancellable<number>;\r\n private _attempts = 0;\r\n private _retryAfter: number | null = null;\r\n private _transientFaults = 0;\r\n protected _response: Response | undefined = undefined;\r\n protected _rawPromise: Promise<Response | undefined>;\r\n public responseProtocolVersion = RpcProtocolVersion.None;\r\n\r\n /** All RPC requests that are currently in flight. */\r\n public static get activeRequests(): ReadonlyMap<string, RpcRequest> { return this._activeRequests; }\r\n\r\n /** Events raised by RpcRequest. See [[RpcRequestEvent]] */\r\n public static readonly events: BeEvent<RpcRequestEventHandler> = new BeEvent();\r\n\r\n /** Resolvers for \"not found\" requests. See [[RpcRequestNotFoundHandler]] */\r\n public static readonly notFoundHandlers: BeEvent<RpcRequestNotFoundHandler> = new BeEvent();\r\n\r\n /** The aggregate operations profile of all active RPC interfaces. */\r\n public static get aggregateLoad(): RpcOperationsProfile { return aggregateLoad; }\r\n\r\n /**\r\n * The request for the current RPC operation.\r\n * @note The return value of this function is only reliable if program control was received from a RPC interface class member function that directly returns the result of calling RpcInterface.forward.\r\n */\r\n public static current(context: RpcInterface): RpcRequest {\r\n return (context as any)[CURRENT_REQUEST];\r\n }\r\n\r\n /** The unique identifier of this request. */\r\n public readonly id: string;\r\n\r\n /** The operation for this request. */\r\n public readonly operation: RpcOperation;\r\n\r\n /** The parameters for this request. */\r\n public parameters: any[];\r\n\r\n /** The RPC client instance for this request. */\r\n public readonly client: RpcInterface;\r\n\r\n /** Convenience access to the protocol of this request. */\r\n public readonly protocol: RpcProtocol;\r\n\r\n /** The implementation response for this request. */\r\n public readonly response: Promise<TResponse | undefined>;\r\n\r\n /** The status of this request. */\r\n public get status() { return this._status; }\r\n\r\n /** Extended status information for this request (if available). */\r\n public get extendedStatus() { return this._extendedStatus; }\r\n\r\n /** The last submission for this request. */\r\n public get lastSubmitted() { return this._lastSubmitted; }\r\n\r\n /** The last status update received for this request. */\r\n public get lastUpdated() { return this._lastUpdated; }\r\n\r\n /** The target interval (in milliseconds) between submission attempts for this request. */\r\n public retryInterval: number;\r\n\r\n /** Whether a connection is active for this request. */\r\n public get connecting() { return this._connecting; }\r\n\r\n /** Whether this request is pending. */\r\n public get pending(): boolean {\r\n switch (this.status) {\r\n case RpcRequestStatus.Submitted:\r\n case RpcRequestStatus.Pending: {\r\n return true;\r\n }\r\n\r\n default: {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n /** The elapsed time for this request. */\r\n public get elapsed(): number {\r\n return this._lastUpdated - this._created;\r\n }\r\n\r\n /** A protocol-specific path identifier for this request. */\r\n public path: string;\r\n\r\n /** A protocol-specific method identifier for this request. */\r\n public method: string;\r\n\r\n /** An attempt-specific value for when to next retry this request. */\r\n public get retryAfter() { return this._retryAfter; }\r\n\r\n /** Finds the first parameter of a given structural type if present. */\r\n public findParameterOfType<T>(requiredProperties: { [index: string]: string }): T | undefined {\r\n for (const param of this.parameters) {\r\n if (typeof (param) === \"object\" && param !== null) {\r\n for (const prop of Object.getOwnPropertyNames(requiredProperties)) {\r\n if (prop in param && typeof (param[prop]) === requiredProperties[prop]) {\r\n return param;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /** Finds the first IModelRpcProps parameter if present. */\r\n public findTokenPropsParameter(): IModelRpcProps | undefined {\r\n return this.findParameterOfType({ iModelId: \"string\" });\r\n\r\n }\r\n\r\n /** The raw implementation response for this request. */\r\n public get rawResponse(): Promise<Response | undefined> {\r\n this._hasRawListener = true;\r\n return this._rawPromise;\r\n }\r\n\r\n /** Constructs an RPC request. */\r\n public constructor(client: RpcInterface, operation: string, parameters: any[]) {\r\n this._created = new Date().getTime();\r\n this.path = \"\";\r\n this.method = \"\";\r\n this.client = client;\r\n this.protocol = client.configuration.protocol;\r\n this.operation = RpcOperation.lookup(client.constructor as any, operation);\r\n this.parameters = parameters;\r\n this.retryInterval = this.operation.policy.retryInterval(client.configuration);\r\n this.response = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n });\r\n\r\n this._rawPromise = new Promise((resolve, reject) => {\r\n this._resolveRaw = resolve;\r\n this._rejectRaw = reject;\r\n });\r\n\r\n this.id = RpcConfiguration.requestContext.getId(this) || Guid.createValue();\r\n this.setStatus(RpcRequestStatus.Created);\r\n this.operation.policy.requestCallback(this);\r\n }\r\n\r\n /** Override to send the request. */\r\n protected abstract send(): Promise<number>;\r\n\r\n /** Override to load response value. */\r\n protected abstract load(): Promise<RpcSerializedValue>;\r\n\r\n /** Override to set request header values. */\r\n protected abstract setHeader(name: string, value: string): void;\r\n\r\n /** Sets the last updated time for the request. */\r\n protected setLastUpdatedTime() {\r\n this._lastUpdated = new Date().getTime();\r\n }\r\n\r\n protected computeRetryAfter(attempts: number) {\r\n return (((Math.pow(2, attempts) - 1) / 2) * 500) + 500;\r\n }\r\n\r\n protected recordTransientFault() {\r\n ++this._transientFaults;\r\n }\r\n\r\n protected resetTransientFaultCount() {\r\n this._transientFaults = 0;\r\n }\r\n\r\n protected supportsStatusCategory() {\r\n if (!this.protocol.supportsStatusCategory) {\r\n return false;\r\n }\r\n\r\n return RpcProtocol.protocolVersion >= RpcProtocolVersion.IntroducedStatusCategory && this.responseProtocolVersion >= RpcProtocolVersion.IntroducedStatusCategory;\r\n }\r\n\r\n /* @internal */\r\n public cancel() {\r\n if (typeof (this._sending) === \"undefined\") {\r\n return;\r\n }\r\n\r\n this._sending.cancel();\r\n this._sending = undefined;\r\n\r\n this._connecting = false;\r\n RpcRequest._activeRequests.delete(this.id);\r\n this.setStatus(RpcRequestStatus.Cancelled);\r\n }\r\n\r\n /* @internal */\r\n public async submit(): Promise<void> {\r\n if (!this._active)\r\n return;\r\n\r\n this._lastSubmitted = new Date().getTime();\r\n this._retryAfter = null;\r\n ++this._attempts;\r\n\r\n if (this.status === RpcRequestStatus.Created || this.status === RpcRequestStatus.NotFound || this.status === RpcRequestStatus.Cancelled) {\r\n this.setStatus(RpcRequestStatus.Submitted);\r\n }\r\n\r\n try {\r\n this._connecting = true;\r\n RpcRequest._activeRequests.set(this.id, this);\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.RequestCreated, this);\r\n this._sending = new Cancellable(this.setHeaders().then(async () => this.send()));\r\n this.operation.policy.sentCallback(this);\r\n\r\n const response = await this._sending.promise;\r\n if (typeof (response) === \"undefined\") {\r\n return;\r\n }\r\n this._sending = undefined;\r\n\r\n const status = this.protocol.getStatus(response);\r\n\r\n if (this._hasRawListener && status === RpcRequestStatus.Resolved && typeof (this._response) !== \"undefined\") {\r\n this._connecting = false;\r\n RpcRequest._activeRequests.delete(this.id);\r\n this.resolveRaw();\r\n } else {\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.ResponseLoading, this);\r\n\r\n if (status === RpcRequestStatus.Unknown) {\r\n this._connecting = false;\r\n RpcRequest._activeRequests.delete(this.id);\r\n this.handleUnknownResponse(response);\r\n return;\r\n }\r\n\r\n const value = await this.load();\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.ResponseLoaded, this);\r\n RpcRequest._activeRequests.delete(this.id);\r\n this._connecting = false;\r\n this.handleResponse(response, value);\r\n }\r\n } catch (err) {\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.ConnectionErrorReceived, this, err);\r\n RpcRequest._activeRequests.delete(this.id);\r\n this._connecting = false;\r\n this.reject(err);\r\n }\r\n }\r\n\r\n protected handleUnknownResponse(code: number) {\r\n this.reject(new IModelError(BentleyStatus.ERROR, `Unknown response ${code}.`));\r\n }\r\n\r\n private handleResponse(code: number, value: RpcSerializedValue) {\r\n const protocolStatus = this.protocol.getStatus(code);\r\n const status = this.transformResponseStatus(protocolStatus, value);\r\n\r\n if (RpcRequestStatus.isTransientError(status)) {\r\n return this.handleTransientError(status);\r\n }\r\n\r\n switch (status) {\r\n case RpcRequestStatus.Resolved: {\r\n return this.handleResolved(value);\r\n }\r\n\r\n case RpcRequestStatus.Rejected: {\r\n return this.handleRejected(value);\r\n }\r\n\r\n case RpcRequestStatus.Pending: {\r\n return this.setPending(status, value.objects);\r\n }\r\n\r\n case RpcRequestStatus.NotFound: {\r\n return this.handleNotFound(status, value);\r\n }\r\n\r\n case RpcRequestStatus.NoContent: {\r\n return this.handleNoContent();\r\n }\r\n }\r\n }\r\n\r\n private transformResponseStatus(protocolStatus: RpcRequestStatus, value: RpcSerializedValue): RpcRequestStatus {\r\n if (!this.supportsStatusCategory()) {\r\n return protocolStatus;\r\n }\r\n\r\n let status = protocolStatus;\r\n\r\n if (protocolStatus === RpcRequestStatus.Pending) {\r\n status = RpcRequestStatus.Rejected;\r\n } else if (protocolStatus === RpcRequestStatus.NotFound) {\r\n status = RpcRequestStatus.Rejected;\r\n } else if (protocolStatus === RpcRequestStatus.Unknown) {\r\n status = RpcRequestStatus.Rejected;\r\n }\r\n\r\n if (value.objects.indexOf(\"iTwinRpcCoreResponse\") !== -1 && value.objects.indexOf(\"managedStatus\") !== -1) {\r\n const managedStatus: RpcManagedStatus = JSON.parse(value.objects);\r\n value.objects = managedStatus.responseValue as string;\r\n\r\n if (managedStatus.managedStatus === \"pending\") {\r\n status = RpcRequestStatus.Pending;\r\n } else if (managedStatus.managedStatus === \"notFound\") {\r\n status = RpcRequestStatus.NotFound;\r\n }\r\n }\r\n\r\n return status;\r\n }\r\n\r\n private handleResolved(value: RpcSerializedValue) {\r\n try {\r\n this._raw = value.objects;\r\n const result: TResponse = RpcMarshaling.deserialize(this.protocol, value);\r\n\r\n if (ArrayBuffer.isView(result)) {\r\n this._raw = result.buffer;\r\n }\r\n\r\n return this.resolve(result);\r\n } catch (err) {\r\n return this.reject(err);\r\n }\r\n }\r\n\r\n private handleRejected(value: RpcSerializedValue) {\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendErrorReceived, this);\r\n\r\n try {\r\n const error = RpcMarshaling.deserialize(this.protocol, value);\r\n const hasInfo = error && typeof (error) === \"object\" && error.hasOwnProperty(\"name\") && error.hasOwnProperty(\"message\");\r\n const name = hasInfo ? error.name : \"\";\r\n const message = hasInfo ? error.message : \"\";\r\n const errorNumber = (hasInfo && error.hasOwnProperty(\"errorNumber\")) ? error.errorNumber : BentleyStatus.ERROR;\r\n return this.reject(new BackendError(errorNumber, name, message, () => error));\r\n } catch (err) {\r\n return this.reject(err);\r\n }\r\n }\r\n\r\n private handleNoContent() {\r\n return this.reject(new NoContentError());\r\n }\r\n\r\n private handleNotFound(status: RpcRequestStatus, value: RpcSerializedValue) {\r\n if (RpcRequest.notFoundHandlers.numberOfListeners === 0)\r\n this.handleRejected(value);\r\n\r\n const response = RpcMarshaling.deserialize(this.protocol, value);\r\n this.setStatus(status);\r\n\r\n let resubmitted = false;\r\n RpcRequest.notFoundHandlers.raiseEvent(this, response, () => {\r\n if (resubmitted)\r\n throw new IModelError(BentleyStatus.ERROR, `Already resubmitted using this handler.`);\r\n\r\n resubmitted = true;\r\n void this.submit();\r\n }, (reason: any) => reason ? this.reject(reason) : this.handleRejected(value));\r\n return;\r\n }\r\n\r\n private resolve(result: TResponse): void {\r\n if (!this._active)\r\n return;\r\n\r\n this._active = false;\r\n this.setLastUpdatedTime();\r\n this._resolve(result);\r\n\r\n if (this._hasRawListener) {\r\n if (typeof (this._raw) === \"undefined\") {\r\n throw new IModelError(BentleyStatus.ERROR, \"Cannot access raw response.\");\r\n }\r\n\r\n this._resolveRaw(new ResponseLike(this._raw));\r\n }\r\n\r\n this.setStatus(RpcRequestStatus.Resolved);\r\n this[Symbol.dispose]();\r\n }\r\n\r\n private resolveRaw() {\r\n if (typeof (this._response) === \"undefined\") {\r\n throw new IModelError(BentleyStatus.ERROR, \"Cannot access raw response.\");\r\n }\r\n\r\n this._active = false;\r\n this.setLastUpdatedTime();\r\n this._resolveRaw(this._response);\r\n this.setStatus(RpcRequestStatus.Resolved);\r\n this[Symbol.dispose]();\r\n }\r\n\r\n protected reject(reason: any): void {\r\n if (!this._active)\r\n return;\r\n\r\n this._active = false;\r\n this.setLastUpdatedTime();\r\n this._reject(reason);\r\n\r\n if (this._hasRawListener) {\r\n this._rejectRaw(reason);\r\n }\r\n\r\n this.setStatus(RpcRequestStatus.Rejected);\r\n this[Symbol.dispose]();\r\n }\r\n\r\n /** @internal */\r\n public [Symbol.dispose](): void {\r\n this.setStatus(RpcRequestStatus.Disposed);\r\n this._raw = undefined;\r\n this._response = undefined;\r\n\r\n const client = this.client as any;\r\n if (client[CURRENT_REQUEST] === this) {\r\n client[CURRENT_REQUEST] = undefined;\r\n }\r\n }\r\n\r\n private setPending(status: RpcRequestStatus.Pending, extendedStatus: string): void {\r\n if (!this._active)\r\n return;\r\n\r\n this.setLastUpdatedTime();\r\n this._extendedStatus = extendedStatus;\r\n this.setStatus(status);\r\n RpcRequest.events.raiseEvent(RpcRequestEvent.PendingUpdateReceived, this);\r\n }\r\n\r\n private handleTransientError(status: RpcRequestStatus) {\r\n if (!this._active)\r\n return;\r\n\r\n this.setLastUpdatedTime();\r\n this._retryAfter = this.computeRetryAfter(this._attempts - 1);\r\n\r\n if (this._transientFaults > this.protocol.configuration.transientFaultLimit) {\r\n this.reject(new IModelError(BentleyStatus.ERROR, `Exceeded transient fault limit.`));\r\n } else {\r\n this.setStatus(status);\r\n RpcRequest.events.raiseEvent(RpcRequestEvent.TransientErrorReceived, this);\r\n }\r\n }\r\n\r\n protected async setHeaders(): Promise<void> {\r\n const versionHeader = this.protocol.protocolVersionHeaderName;\r\n if (versionHeader && RpcProtocol.protocolVersion)\r\n this.setHeader(versionHeader, RpcProtocol.protocolVersion.toString());\r\n\r\n const headerNames = this.protocol.serializedClientRequestContextHeaderNames;\r\n const headerValues = await RpcConfiguration.requestContext.serialize(this);\r\n\r\n if (headerNames.id)\r\n this.setHeader(headerNames.id, headerValues.id || this.id); // Cannot be empty\r\n\r\n if (headerNames.applicationVersion)\r\n this.setHeader(headerNames.applicationVersion, headerValues.applicationVersion);\r\n\r\n if (headerNames.applicationId)\r\n this.setHeader(headerNames.applicationId, headerValues.applicationId);\r\n\r\n if (headerNames.sessionId)\r\n this.setHeader(headerNames.sessionId, headerValues.sessionId);\r\n\r\n if (headerNames.authorization && headerValues.authorization)\r\n this.setHeader(headerNames.authorization, headerValues.authorization);\r\n\r\n if (headerValues.csrfToken)\r\n this.setHeader(headerValues.csrfToken.headerName, headerValues.csrfToken.headerValue);\r\n }\r\n\r\n private setStatus(status: RpcRequestStatus): void {\r\n if (this._status === status)\r\n return;\r\n\r\n this._status = status;\r\n RpcRequest.events.raiseEvent(RpcRequestEvent.StatusChanged, this);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const initializeRpcRequest = (() => {\r\n let initialized = false;\r\n\r\n return () => {\r\n if (initialized) {\r\n return;\r\n }\r\n\r\n initialized = true;\r\n\r\n RpcRequest.events.addListener((type, request) => {\r\n if (type !== RpcRequestEvent.StatusChanged)\r\n return;\r\n\r\n switch (request.status) {\r\n case RpcRequestStatus.Submitted: {\r\n aggregateLoad.lastRequest = request.lastSubmitted;\r\n break;\r\n }\r\n\r\n case RpcRequestStatus.Pending:\r\n case RpcRequestStatus.Resolved:\r\n case RpcRequestStatus.Rejected: {\r\n aggregateLoad.lastResponse = request.lastUpdated;\r\n break;\r\n }\r\n }\r\n });\r\n\r\n RpcProtocol.events.addListener((type) => {\r\n const now = new Date().getTime();\r\n\r\n switch (type) {\r\n case RpcProtocolEvent.RequestReceived: {\r\n aggregateLoad.lastRequest = now;\r\n break;\r\n }\r\n\r\n case RpcProtocolEvent.BackendReportedPending:\r\n case RpcProtocolEvent.BackendErrorOccurred:\r\n case RpcProtocolEvent.BackendResponseCreated: {\r\n aggregateLoad.lastResponse = now;\r\n break;\r\n }\r\n }\r\n });\r\n };\r\n})();\r\n"]}
|
|
1
|
+
{"version":3,"file":"RpcRequest.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcRequest.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module RpcInterface\n */\n\nimport { BeEvent, BentleyStatus, Guid } from \"@itwin/core-bentley\";\nimport { IModelRpcProps } from \"../../IModel\";\nimport { BackendError, IModelError, NoContentError } from \"../../IModelError\";\nimport { RpcInterface } from \"../../RpcInterface\";\nimport { RpcConfiguration } from \"./RpcConfiguration\";\nimport { RpcProtocolEvent, RpcRequestEvent, RpcRequestStatus, RpcResponseCacheControl } from \"./RpcConstants\";\nimport { RpcNotFoundResponse } from \"./RpcControl\";\nimport { RpcMarshaling, RpcSerializedValue } from \"./RpcMarshaling\";\nimport { RpcOperation } from \"./RpcOperation\";\nimport { RpcManagedStatus, RpcProtocol, RpcProtocolVersion } from \"./RpcProtocol\";\nimport { CURRENT_REQUEST } from \"./RpcRegistry\";\n\n/* eslint-disable @typescript-eslint/naming-convention */\n// cspell:ignore csrf\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** @internal */\nexport const aggregateLoad = { lastRequest: 0, lastResponse: 0 };\n\n/** @internal */\nexport class ResponseLike implements Response {\n private _data: Promise<any>;\n public get body() { return null; }\n public async arrayBuffer(): Promise<ArrayBuffer> { return this._data; }\n public async blob(): Promise<Blob> { throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\"); }\n public async formData(): Promise<FormData> { throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\"); }\n public async json(): Promise<any> { return this._data; }\n public async text(): Promise<string> { return this._data; }\n public get bodyUsed() { return false; }\n public get headers(): Headers { throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\"); }\n public get ok(): boolean { return this.status >= 200 && this.status <= 299; }\n public get redirected() { return false; }\n public get status() { return 200; }\n public get statusText() { return \"\"; }\n public get trailer(): Promise<Headers> { throw new IModelError(BentleyStatus.ERROR, \"Not implemented.\"); }\n public get type(): \"basic\" | \"cors\" | \"default\" | \"error\" | \"opaque\" | \"opaqueredirect\" { return \"basic\"; }\n public get url() { return \"\"; }\n public clone() { return { ...this }; }\n\n public constructor(data: any) {\n this._data = Promise.resolve(data);\n }\n}\n\n/** Supplies an IModelRpcProps for an RPC request.\n * @internal\n */\nexport type RpcRequestTokenSupplier_T = (request: RpcRequest) => IModelRpcProps | undefined;\n\n/** Supplies the initial retry interval for an RPC request.\n * @internal\n */\nexport type RpcRequestInitialRetryIntervalSupplier_T = (configuration: RpcConfiguration) => number;\n\n/** Notification callback for an RPC request.\n * @internal\n */\nexport type RpcRequestCallback_T = (request: RpcRequest) => void;\n\n/** Determines if caching is permitted for a RPC response.\n * @internal\n */\nexport type RpcResponseCachingCallback_T = (request: RpcRequest) => RpcResponseCacheControl;\n\n/** Runtime information related to the operation load of one or more RPC interfaces.\n * @internal\n */\nexport interface RpcOperationsProfile {\n readonly lastRequest: number;\n readonly lastResponse: number;\n}\n\n/** Handles RPC request events.\n * @internal\n */\nexport type RpcRequestEventHandler = (type: RpcRequestEvent, request: RpcRequest) => void;\n\n/** Resolves \"not found\" responses for RPC requests.\n * @internal\n */\nexport type RpcRequestNotFoundHandler = (request: RpcRequest, response: RpcNotFoundResponse, resubmit: () => void, reject: (reason?: any) => void) => void;\n\nclass Cancellable<T> {\n public promise: Promise<T | undefined>;\n public cancel() { }\n\n public constructor(task: Promise<T>) {\n this.promise = new Promise((resolve, reject) => {\n this.cancel = () => resolve(undefined);\n task.then(resolve, reject);\n });\n }\n}\n\n/** A RPC operation request.\n * @internal\n */\nexport abstract class RpcRequest<TResponse = any> {\n private static _activeRequests: Map<string, RpcRequest> = new Map();\n private _resolve: (value?: TResponse | PromiseLike<TResponse> | undefined) => void = () => undefined;\n protected _resolveRaw: (value?: Response | PromiseLike<Response> | undefined) => void = () => undefined;\n private _reject: (reason?: any) => void = () => undefined;\n private _rejectRaw: (reason?: any) => void = () => undefined;\n private _created: number = 0;\n private _lastSubmitted: number = 0;\n private _lastUpdated: number = 0;\n\n /** @internal */\n public _status: RpcRequestStatus = RpcRequestStatus.Unknown;\n\n /** @internal */\n public _extendedStatus: string = \"\";\n\n private _connecting: boolean = false;\n private _active: boolean = true;\n private _hasRawListener = false;\n private _raw: ArrayBuffer | string | undefined = undefined;\n private _sending?: Cancellable<number>;\n private _attempts = 0;\n private _retryAfter: number | null = null;\n private _transientFaults = 0;\n protected _response: Response | undefined = undefined;\n protected _rawPromise: Promise<Response | undefined>;\n public responseProtocolVersion = RpcProtocolVersion.None;\n\n /** All RPC requests that are currently in flight. */\n public static get activeRequests(): ReadonlyMap<string, RpcRequest> { return this._activeRequests; }\n\n /** Events raised by RpcRequest. See [[RpcRequestEvent]] */\n public static readonly events: BeEvent<RpcRequestEventHandler> = new BeEvent();\n\n /** Resolvers for \"not found\" requests. See [[RpcRequestNotFoundHandler]] */\n public static readonly notFoundHandlers: BeEvent<RpcRequestNotFoundHandler> = new BeEvent();\n\n /** The aggregate operations profile of all active RPC interfaces. */\n public static get aggregateLoad(): RpcOperationsProfile { return aggregateLoad; }\n\n /**\n * The request for the current RPC operation.\n * @note The return value of this function is only reliable if program control was received from a RPC interface class member function that directly returns the result of calling RpcInterface.forward.\n */\n public static current(context: RpcInterface): RpcRequest {\n return (context as any)[CURRENT_REQUEST];\n }\n\n /** The unique identifier of this request. */\n public readonly id: string;\n\n /** The operation for this request. */\n public readonly operation: RpcOperation;\n\n /** The parameters for this request. */\n public parameters: any[];\n\n /** The RPC client instance for this request. */\n public readonly client: RpcInterface;\n\n /** Convenience access to the protocol of this request. */\n public readonly protocol: RpcProtocol;\n\n /** The implementation response for this request. */\n public readonly response: Promise<TResponse | undefined>;\n\n /** The status of this request. */\n public get status() { return this._status; }\n\n /** Extended status information for this request (if available). */\n public get extendedStatus() { return this._extendedStatus; }\n\n /** The last submission for this request. */\n public get lastSubmitted() { return this._lastSubmitted; }\n\n /** The last status update received for this request. */\n public get lastUpdated() { return this._lastUpdated; }\n\n /** The target interval (in milliseconds) between submission attempts for this request. */\n public retryInterval: number;\n\n /** Whether a connection is active for this request. */\n public get connecting() { return this._connecting; }\n\n /** Whether this request is pending. */\n public get pending(): boolean {\n switch (this.status) {\n case RpcRequestStatus.Submitted:\n case RpcRequestStatus.Pending: {\n return true;\n }\n\n default: {\n return false;\n }\n }\n }\n\n /** The elapsed time for this request. */\n public get elapsed(): number {\n return this._lastUpdated - this._created;\n }\n\n /** A protocol-specific path identifier for this request. */\n public path: string;\n\n /** A protocol-specific method identifier for this request. */\n public method: string;\n\n /** An attempt-specific value for when to next retry this request. */\n public get retryAfter() { return this._retryAfter; }\n\n /** Finds the first parameter of a given structural type if present. */\n public findParameterOfType<T>(requiredProperties: { [index: string]: string }): T | undefined {\n for (const param of this.parameters) {\n if (typeof (param) === \"object\" && param !== null) {\n for (const prop of Object.getOwnPropertyNames(requiredProperties)) {\n if (prop in param && typeof (param[prop]) === requiredProperties[prop]) {\n return param;\n }\n }\n }\n }\n\n return undefined;\n }\n\n /** Finds the first IModelRpcProps parameter if present. */\n public findTokenPropsParameter(): IModelRpcProps | undefined {\n return this.findParameterOfType({ iModelId: \"string\" });\n\n }\n\n /** The raw implementation response for this request. */\n public get rawResponse(): Promise<Response | undefined> {\n this._hasRawListener = true;\n return this._rawPromise;\n }\n\n /** Constructs an RPC request. */\n public constructor(client: RpcInterface, operation: string, parameters: any[]) {\n this._created = new Date().getTime();\n this.path = \"\";\n this.method = \"\";\n this.client = client;\n this.protocol = client.configuration.protocol;\n this.operation = RpcOperation.lookup(client.constructor as any, operation);\n this.parameters = parameters;\n this.retryInterval = this.operation.policy.retryInterval(client.configuration);\n this.response = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n\n this._rawPromise = new Promise((resolve, reject) => {\n this._resolveRaw = resolve;\n this._rejectRaw = reject;\n });\n\n this.id = RpcConfiguration.requestContext.getId(this) || Guid.createValue();\n this.setStatus(RpcRequestStatus.Created);\n this.operation.policy.requestCallback(this);\n }\n\n /** Override to send the request. */\n protected abstract send(): Promise<number>;\n\n /** Override to load response value. */\n protected abstract load(): Promise<RpcSerializedValue>;\n\n /** Override to set request header values. */\n protected abstract setHeader(name: string, value: string): void;\n\n /** Sets the last updated time for the request. */\n protected setLastUpdatedTime() {\n this._lastUpdated = new Date().getTime();\n }\n\n protected computeRetryAfter(attempts: number) {\n return (((Math.pow(2, attempts) - 1) / 2) * 500) + 500;\n }\n\n protected recordTransientFault() {\n ++this._transientFaults;\n }\n\n protected resetTransientFaultCount() {\n this._transientFaults = 0;\n }\n\n protected supportsStatusCategory() {\n if (!this.protocol.supportsStatusCategory) {\n return false;\n }\n\n return RpcProtocol.protocolVersion >= RpcProtocolVersion.IntroducedStatusCategory && this.responseProtocolVersion >= RpcProtocolVersion.IntroducedStatusCategory;\n }\n\n /* @internal */\n public cancel() {\n if (typeof (this._sending) === \"undefined\") {\n return;\n }\n\n this._sending.cancel();\n this._sending = undefined;\n\n this._connecting = false;\n RpcRequest._activeRequests.delete(this.id);\n this.setStatus(RpcRequestStatus.Cancelled);\n }\n\n /* @internal */\n public async submit(): Promise<void> {\n if (!this._active)\n return;\n\n this._lastSubmitted = new Date().getTime();\n this._retryAfter = null;\n ++this._attempts;\n\n if (this.status === RpcRequestStatus.Created || this.status === RpcRequestStatus.NotFound || this.status === RpcRequestStatus.Cancelled) {\n this.setStatus(RpcRequestStatus.Submitted);\n }\n\n try {\n this._connecting = true;\n RpcRequest._activeRequests.set(this.id, this);\n this.protocol.events.raiseEvent(RpcProtocolEvent.RequestCreated, this);\n this._sending = new Cancellable(this.setHeaders().then(async () => this.send()));\n this.operation.policy.sentCallback(this);\n\n const response = await this._sending.promise;\n if (typeof (response) === \"undefined\") {\n return;\n }\n this._sending = undefined;\n\n const status = this.protocol.getStatus(response);\n\n if (this._hasRawListener && status === RpcRequestStatus.Resolved && typeof (this._response) !== \"undefined\") {\n this._connecting = false;\n RpcRequest._activeRequests.delete(this.id);\n this.resolveRaw();\n } else {\n this.protocol.events.raiseEvent(RpcProtocolEvent.ResponseLoading, this);\n\n if (status === RpcRequestStatus.Unknown) {\n this._connecting = false;\n RpcRequest._activeRequests.delete(this.id);\n this.handleUnknownResponse(response);\n return;\n }\n\n const value = await this.load();\n this.protocol.events.raiseEvent(RpcProtocolEvent.ResponseLoaded, this);\n RpcRequest._activeRequests.delete(this.id);\n this._connecting = false;\n this.handleResponse(response, value);\n }\n } catch (err) {\n this.protocol.events.raiseEvent(RpcProtocolEvent.ConnectionErrorReceived, this, err);\n RpcRequest._activeRequests.delete(this.id);\n this._connecting = false;\n this.reject(err);\n }\n }\n\n protected handleUnknownResponse(code: number) {\n this.reject(new IModelError(BentleyStatus.ERROR, `Unknown response ${code}.`));\n }\n\n private handleResponse(code: number, value: RpcSerializedValue) {\n const protocolStatus = this.protocol.getStatus(code);\n const status = this.transformResponseStatus(protocolStatus, value);\n\n if (RpcRequestStatus.isTransientError(status)) {\n return this.handleTransientError(status);\n }\n\n switch (status) {\n case RpcRequestStatus.Resolved: {\n return this.handleResolved(value);\n }\n\n case RpcRequestStatus.Rejected: {\n return this.handleRejected(value);\n }\n\n case RpcRequestStatus.Pending: {\n return this.setPending(status, value.objects);\n }\n\n case RpcRequestStatus.NotFound: {\n return this.handleNotFound(status, value);\n }\n\n case RpcRequestStatus.NoContent: {\n return this.handleNoContent();\n }\n }\n }\n\n private transformResponseStatus(protocolStatus: RpcRequestStatus, value: RpcSerializedValue): RpcRequestStatus {\n if (!this.supportsStatusCategory()) {\n return protocolStatus;\n }\n\n let status = protocolStatus;\n\n if (protocolStatus === RpcRequestStatus.Pending) {\n status = RpcRequestStatus.Rejected;\n } else if (protocolStatus === RpcRequestStatus.NotFound) {\n status = RpcRequestStatus.Rejected;\n } else if (protocolStatus === RpcRequestStatus.Unknown) {\n status = RpcRequestStatus.Rejected;\n }\n\n if (value.objects.indexOf(\"iTwinRpcCoreResponse\") !== -1 && value.objects.indexOf(\"managedStatus\") !== -1) {\n const managedStatus: RpcManagedStatus = JSON.parse(value.objects);\n value.objects = managedStatus.responseValue as string;\n\n if (managedStatus.managedStatus === \"pending\") {\n status = RpcRequestStatus.Pending;\n } else if (managedStatus.managedStatus === \"notFound\") {\n status = RpcRequestStatus.NotFound;\n }\n }\n\n return status;\n }\n\n private handleResolved(value: RpcSerializedValue) {\n try {\n this._raw = value.objects;\n const result: TResponse = RpcMarshaling.deserialize(this.protocol, value);\n\n if (ArrayBuffer.isView(result)) {\n this._raw = result.buffer;\n }\n\n return this.resolve(result);\n } catch (err) {\n return this.reject(err);\n }\n }\n\n private handleRejected(value: RpcSerializedValue) {\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendErrorReceived, this);\n\n try {\n const error = RpcMarshaling.deserialize(this.protocol, value);\n const hasInfo = error && typeof (error) === \"object\" && error.hasOwnProperty(\"name\") && error.hasOwnProperty(\"message\");\n const name = hasInfo ? error.name : \"\";\n const message = hasInfo ? error.message : \"\";\n const errorNumber = (hasInfo && error.hasOwnProperty(\"errorNumber\")) ? error.errorNumber : BentleyStatus.ERROR;\n return this.reject(new BackendError(errorNumber, name, message, () => error));\n } catch (err) {\n return this.reject(err);\n }\n }\n\n private handleNoContent() {\n return this.reject(new NoContentError());\n }\n\n private handleNotFound(status: RpcRequestStatus, value: RpcSerializedValue) {\n if (RpcRequest.notFoundHandlers.numberOfListeners === 0)\n this.handleRejected(value);\n\n const response = RpcMarshaling.deserialize(this.protocol, value);\n this.setStatus(status);\n\n let resubmitted = false;\n RpcRequest.notFoundHandlers.raiseEvent(this, response, () => {\n if (resubmitted)\n throw new IModelError(BentleyStatus.ERROR, `Already resubmitted using this handler.`);\n\n resubmitted = true;\n void this.submit();\n }, (reason: any) => reason ? this.reject(reason) : this.handleRejected(value));\n return;\n }\n\n private resolve(result: TResponse): void {\n if (!this._active)\n return;\n\n this._active = false;\n this.setLastUpdatedTime();\n this._resolve(result);\n\n if (this._hasRawListener) {\n if (typeof (this._raw) === \"undefined\") {\n throw new IModelError(BentleyStatus.ERROR, \"Cannot access raw response.\");\n }\n\n this._resolveRaw(new ResponseLike(this._raw));\n }\n\n this.setStatus(RpcRequestStatus.Resolved);\n this[Symbol.dispose]();\n }\n\n private resolveRaw() {\n if (typeof (this._response) === \"undefined\") {\n throw new IModelError(BentleyStatus.ERROR, \"Cannot access raw response.\");\n }\n\n this._active = false;\n this.setLastUpdatedTime();\n this._resolveRaw(this._response);\n this.setStatus(RpcRequestStatus.Resolved);\n this[Symbol.dispose]();\n }\n\n protected reject(reason: any): void {\n if (!this._active)\n return;\n\n this._active = false;\n this.setLastUpdatedTime();\n this._reject(reason);\n\n if (this._hasRawListener) {\n this._rejectRaw(reason);\n }\n\n this.setStatus(RpcRequestStatus.Rejected);\n this[Symbol.dispose]();\n }\n\n /** @internal */\n public [Symbol.dispose](): void {\n this.setStatus(RpcRequestStatus.Disposed);\n this._raw = undefined;\n this._response = undefined;\n\n const client = this.client as any;\n if (client[CURRENT_REQUEST] === this) {\n client[CURRENT_REQUEST] = undefined;\n }\n }\n\n private setPending(status: RpcRequestStatus.Pending, extendedStatus: string): void {\n if (!this._active)\n return;\n\n this.setLastUpdatedTime();\n this._extendedStatus = extendedStatus;\n this.setStatus(status);\n RpcRequest.events.raiseEvent(RpcRequestEvent.PendingUpdateReceived, this);\n }\n\n private handleTransientError(status: RpcRequestStatus) {\n if (!this._active)\n return;\n\n this.setLastUpdatedTime();\n this._retryAfter = this.computeRetryAfter(this._attempts - 1);\n\n if (this._transientFaults > this.protocol.configuration.transientFaultLimit) {\n this.reject(new IModelError(BentleyStatus.ERROR, `Exceeded transient fault limit.`));\n } else {\n this.setStatus(status);\n RpcRequest.events.raiseEvent(RpcRequestEvent.TransientErrorReceived, this);\n }\n }\n\n protected async setHeaders(): Promise<void> {\n const versionHeader = this.protocol.protocolVersionHeaderName;\n if (versionHeader && RpcProtocol.protocolVersion)\n this.setHeader(versionHeader, RpcProtocol.protocolVersion.toString());\n\n const headerNames = this.protocol.serializedClientRequestContextHeaderNames;\n const headerValues = await RpcConfiguration.requestContext.serialize(this);\n\n if (headerNames.id)\n this.setHeader(headerNames.id, headerValues.id || this.id); // Cannot be empty\n\n if (headerNames.applicationVersion)\n this.setHeader(headerNames.applicationVersion, headerValues.applicationVersion);\n\n if (headerNames.applicationId)\n this.setHeader(headerNames.applicationId, headerValues.applicationId);\n\n if (headerNames.sessionId)\n this.setHeader(headerNames.sessionId, headerValues.sessionId);\n\n if (headerNames.authorization && headerValues.authorization)\n this.setHeader(headerNames.authorization, headerValues.authorization);\n\n if (headerValues.csrfToken)\n this.setHeader(headerValues.csrfToken.headerName, headerValues.csrfToken.headerValue);\n }\n\n private setStatus(status: RpcRequestStatus): void {\n if (this._status === status)\n return;\n\n this._status = status;\n RpcRequest.events.raiseEvent(RpcRequestEvent.StatusChanged, this);\n }\n}\n\n/** @internal */\nexport const initializeRpcRequest = (() => {\n let initialized = false;\n\n return () => {\n if (initialized) {\n return;\n }\n\n initialized = true;\n\n RpcRequest.events.addListener((type, request) => {\n if (type !== RpcRequestEvent.StatusChanged)\n return;\n\n switch (request.status) {\n case RpcRequestStatus.Submitted: {\n aggregateLoad.lastRequest = request.lastSubmitted;\n break;\n }\n\n case RpcRequestStatus.Pending:\n case RpcRequestStatus.Resolved:\n case RpcRequestStatus.Rejected: {\n aggregateLoad.lastResponse = request.lastUpdated;\n break;\n }\n }\n });\n\n RpcProtocol.events.addListener((type) => {\n const now = new Date().getTime();\n\n switch (type) {\n case RpcProtocolEvent.RequestReceived: {\n aggregateLoad.lastRequest = now;\n break;\n }\n\n case RpcProtocolEvent.BackendReportedPending:\n case RpcProtocolEvent.BackendErrorOccurred:\n case RpcProtocolEvent.BackendResponseCreated: {\n aggregateLoad.lastResponse = now;\n break;\n }\n }\n });\n };\n})();\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcRequestContext.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcRequestContext.ts"],"names":[],"mappings":"","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"RpcRequestContext.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcRequestContext.ts"],"names":[],"mappings":"","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 { SerializedRpcActivity } from \"./RpcInvocation\";\nimport { RpcRequest } from \"./RpcRequest\";\n\n/** Interface to enable passing application-specific context with each RPC request.\n * @internal\n */\nexport interface RpcRequestContext {\n /** Used to get the id of the request at the frontend */\n getId: (request: RpcRequest) => string;\n\n /** Used at frontend to serialize client specified context */\n serialize: (request: RpcRequest) => Promise<SerializedRpcActivity>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcRoutingToken.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcRoutingToken.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,YAAY;AACZ,MAAM,OAAO,eAAe;IAClB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAEnB,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE;QACpC,OAAO,IAAI,eAAe,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAU,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAErD,EAAE,CAAS;IACX,UAAU,CAAS;IAEnC,YAAoB,EAAU,EAAE,UAAkB;QAChD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"RpcRoutingToken.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcRoutingToken.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,YAAY;AACZ,MAAM,OAAO,eAAe;IAClB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAEnB,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE;QACpC,OAAO,IAAI,eAAe,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAU,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAErD,EAAE,CAAS;IACX,UAAU,CAAS;IAEnC,YAAoB,EAAU,EAAE,UAAkB;QAChD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,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/** @beta */\nexport class RpcRoutingToken {\n private static _next = -1;\n\n public static generate(debugLabel = \"\"): RpcRoutingToken {\n return new RpcRoutingToken(++this._next, debugLabel);\n }\n\n public static readonly default = RpcRoutingToken.generate(\"default\");\n\n public readonly id: number;\n public readonly debugLabel: string;\n\n private constructor(id: number, debugLabel: string) {\n this.id = id;\n this.debugLabel = debugLabel;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcSessionInvocation.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcSessionInvocation.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAwB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qDAAqD;AAErD,MAAM,oBAAqB,SAAQ,gBAAgB;IAC1C,UAAU,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7B,IAAW,QAAQ,KAAK,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,eAAgB,SAAQ,WAAW;IAChC,MAAM,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACxC,WAAW,GAAG,UAAU,CAAC;IAChB,sBAAsB,GAAG,IAAI,CAAC;IAC9C,gBAAgB,KAAK,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;;AAGtD,gBAAgB;AAChB,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAC9C,MAAM,CAAC,MAAM,CAAC,OAA8B;QACjD,MAAM,iBAAiB,GAAyB;YAC9C,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YACtB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa;YAC5C,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB;YACtD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;YACpC,aAAa,EAAE,EAAE;YACjB,SAAS,EAAE;gBACT,mBAAmB,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa;gBACrD,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,gBAAgB;gBACrD,aAAa,EAAE,OAAO,CAAC,SAAS;aACjC;YACD,MAAM,EAAE,OAAO,CAAC,SAAS;YACzB,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE;YACvC,kBAAkB,EAAE,OAAO,CAAC,UAAU;YACtC,OAAO,EAAE,uBAAuB,CAAC,IAAI;YACrC,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC/D,CAAC;QAEF,OAAO,IAAI,oBAAoB,CAAC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC/E,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,QAAQ,CAAC;IACnD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"RpcSessionInvocation.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcSessionInvocation.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAwB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qDAAqD;AAErD,MAAM,oBAAqB,SAAQ,gBAAgB;IAC1C,UAAU,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7B,IAAW,QAAQ,KAAK,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,eAAgB,SAAQ,WAAW;IAChC,MAAM,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACxC,WAAW,GAAG,UAAU,CAAC;IAChB,sBAAsB,GAAG,IAAI,CAAC;IAC9C,gBAAgB,KAAK,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;;AAGtD,gBAAgB;AAChB,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAC9C,MAAM,CAAC,MAAM,CAAC,OAA8B;QACjD,MAAM,iBAAiB,GAAyB;YAC9C,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YACtB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa;YAC5C,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB;YACtD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;YACpC,aAAa,EAAE,EAAE;YACjB,SAAS,EAAE;gBACT,mBAAmB,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa;gBACrD,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,gBAAgB;gBACrD,aAAa,EAAE,OAAO,CAAC,SAAS;aACjC;YACD,MAAM,EAAE,OAAO,CAAC,SAAS;YACzB,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE;YACvC,kBAAkB,EAAE,OAAO,CAAC,UAAU;YACtC,OAAO,EAAE,uBAAuB,CAAC,IAAI;YACrC,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC/D,CAAC;QAEF,OAAO,IAAI,oBAAoB,CAAC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC/E,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,QAAQ,CAAC;IACnD,CAAC;CACF","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 { InterceptedRpcRequest } from \"../../ipc/IpcSession\";\nimport { RpcConfiguration } from \"./RpcConfiguration\";\nimport { RpcRequestStatus, RpcResponseCacheControl } from \"./RpcConstants\";\nimport { RpcInvocation } from \"./RpcInvocation\";\nimport { RpcSerializedValue } from \"./RpcMarshaling\";\nimport { RpcProtocol, SerializedRpcRequest } from \"./RpcProtocol\";\nimport { RpcRequest } from \"./RpcRequest\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\nclass SessionConfiguration extends RpcConfiguration {\n public interfaces = () => [];\n public get protocol() { return SessionProtocol.instance; }\n}\n\nclass SessionProtocol extends RpcProtocol {\n public static instance = new SessionProtocol();\n public requestType = RpcRequest;\n public override supportsStatusCategory = true;\n constructor() { super(new SessionConfiguration()); }\n}\n\n/** @internal */\nexport class RpcSessionInvocation extends RpcInvocation {\n public static create(request: InterceptedRpcRequest): RpcSessionInvocation {\n const serializedRequest: SerializedRpcRequest = {\n id: request.context.id,\n applicationId: request.context.applicationId,\n applicationVersion: request.context.applicationVersion,\n sessionId: request.context.sessionId,\n authorization: \"\",\n operation: {\n interfaceDefinition: request.definition.interfaceName,\n interfaceVersion: request.definition.interfaceVersion,\n operationName: request.operation,\n },\n method: request.operation,\n path: \"\",\n parameters: RpcSerializedValue.create(),\n parametersOverride: request.parameters,\n caching: RpcResponseCacheControl.None,\n protocolVersion: parseInt(request.context.protocolVersion, 10),\n };\n\n return new RpcSessionInvocation(SessionProtocol.instance, serializedRequest);\n }\n\n public get rejected() {\n return this.status === RpcRequestStatus.Rejected;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BentleyCloudRpcManager.js","sourceRoot":"","sources":["../../../../src/rpc/web/BentleyCloudRpcManager.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAoB1D;;GAEG;AACH,MAAM,OAAgB,4BAA6B,SAAQ,gBAAgB;IACzE,2GAA2G;IACpG,MAAM,CAAU,aAAa,GAAG;QACrC,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,oBAAoB;QAClC,YAAY,EAAE,qLAAqL;KACpM,CAAC;;AAMJ;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,mFAAmF;IAC5E,MAAM,CAAC,gBAAgB,CAAC,MAA6B,EAAE,UAAoC,EAAE,UAA2B,eAAe,CAAC,OAAO;QACpJ,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED,kFAAkF;IAC3E,MAAM,CAAC,cAAc,CAAC,MAA6B,EAAE,UAAoC;QAC9F,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,MAA6B,EAAE,UAAoC,EAAE,UAA2B,eAAe,CAAC,OAAO;QAC1J,MAAM,QAAQ,GAAG,KAAM,SAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,uBAAuB,CAAC;YACzD,UAAU,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAC7C,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,KAAM,SAAQ,4BAA4B;YAChD,UAAU,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;YAC9B,QAAQ,GAA4B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,GAAG,OAAO,CAAC;SACnC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACnD,CAAC;QAED,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,sBAAsB,CAAC;YAE/C,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;gBAC9C,IAAI,IAAI,KAAK,eAAe,CAAC,qBAAqB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAC7F,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"BentleyCloudRpcManager.js","sourceRoot":"","sources":["../../../../src/rpc/web/BentleyCloudRpcManager.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAoB1D;;GAEG;AACH,MAAM,OAAgB,4BAA6B,SAAQ,gBAAgB;IACzE,2GAA2G;IACpG,MAAM,CAAU,aAAa,GAAG;QACrC,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,oBAAoB;QAClC,YAAY,EAAE,qLAAqL;KACpM,CAAC;;AAMJ;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,mFAAmF;IAC5E,MAAM,CAAC,gBAAgB,CAAC,MAA6B,EAAE,UAAoC,EAAE,UAA2B,eAAe,CAAC,OAAO;QACpJ,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED,kFAAkF;IAC3E,MAAM,CAAC,cAAc,CAAC,MAA6B,EAAE,UAAoC;QAC9F,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,MAA6B,EAAE,UAAoC,EAAE,UAA2B,eAAe,CAAC,OAAO;QAC1J,MAAM,QAAQ,GAAG,KAAM,SAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,uBAAuB,CAAC;YACzD,UAAU,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAC7C,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,KAAM,SAAQ,4BAA4B;YAChD,UAAU,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;YAC9B,QAAQ,GAA4B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,GAAG,OAAO,CAAC;SACnC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACnD,CAAC;QAED,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,sBAAsB,CAAC;YAE/C,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;gBAC9C,IAAI,IAAI,KAAK,eAAe,CAAC,qBAAqB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAC7F,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF","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 { RpcManager } from \"../../RpcManager\";\nimport { RpcConfiguration } from \"../core/RpcConfiguration\";\nimport { RpcRequestEvent } from \"../core/RpcConstants\";\nimport { RpcRequest, RpcRequestEventHandler } from \"../core/RpcRequest\";\nimport { BentleyCloudRpcProtocol } from \"./BentleyCloudRpcProtocol\";\nimport { OpenAPIInfo } from \"./OpenAPI\";\nimport { RpcRoutingToken } from \"../core/RpcRoutingToken\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Initialization parameters for BentleyCloudRpcConfiguration.\n * @beta\n */\nexport interface BentleyCloudRpcParams {\n /** Identifies the remote server that implements a set of RpcInterfaces. Note that the ID of the remote server is not a URI or hostname. It is a string that matches a key in the orchestrator's app registry. */\n info: OpenAPIInfo;\n /** @internal The protocol for Bentley cloud RPC interface deployments */\n protocol?: typeof BentleyCloudRpcProtocol;\n /** The URI of the orchestrator that will route requests to the remote RpcInterface server. If not supplied, this default to the origin of the Web page. This is required only when calling initializeClient and only if the server is not the origin of the Web page. */\n uriPrefix?: string;\n /** @internal Handler for RPC request events. */\n pendingRequestListener?: RpcRequestEventHandler;\n /** An optional prefix for RPC operation URI paths. */\n pathPrefix?: string;\n}\n\n/** Operating parameters for Bentley cloud RPC interface deployments.\n * @beta\n */\nexport abstract class BentleyCloudRpcConfiguration extends RpcConfiguration {\n /** Access-Control header values for backend servers that serve frontends using BentleyCloudRpcProtocol. */\n public static readonly accessControl = {\n allowOrigin: \"*\",\n allowMethods: \"POST, GET, OPTIONS\",\n allowHeaders: \"Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, X-Correlation-Id, X-Session-Id, X-Application-Id, X-Application-Version, X-User-Id, X-Protocol-Version\",\n };\n\n /** @internal The protocol of the configuration. */\n public abstract override readonly protocol: BentleyCloudRpcProtocol;\n}\n\n/** Coordinates usage of RPC interfaces for Bentley cloud deployments.\n * @beta\n */\nexport class BentleyCloudRpcManager extends RpcManager {\n /** @beta Initializes BentleyCloudRpcManager for the frontend of an application. */\n public static initializeClient(params: BentleyCloudRpcParams, interfaces: RpcInterfaceDefinition[], routing: RpcRoutingToken = RpcRoutingToken.default): BentleyCloudRpcConfiguration {\n return BentleyCloudRpcManager.performInitialization(params, interfaces, routing);\n }\n\n /** @beta Initializes BentleyCloudRpcManager for the backend of an application. */\n public static initializeImpl(params: BentleyCloudRpcParams, interfaces: RpcInterfaceDefinition[]): BentleyCloudRpcConfiguration {\n return BentleyCloudRpcManager.performInitialization(params, interfaces);\n }\n\n private static performInitialization(params: BentleyCloudRpcParams, interfaces: RpcInterfaceDefinition[], routing: RpcRoutingToken = RpcRoutingToken.default): BentleyCloudRpcConfiguration {\n const protocol = class extends (params.protocol || BentleyCloudRpcProtocol) {\n public override pathPrefix = params.uriPrefix || \"\";\n public info = params.info;\n };\n\n const config = class extends BentleyCloudRpcConfiguration {\n public interfaces = () => interfaces;\n public protocol: BentleyCloudRpcProtocol = new protocol(this);\n public override routing = routing;\n };\n\n for (const def of interfaces) {\n RpcConfiguration.assignWithRouting(def, routing, config);\n }\n\n const instance = RpcConfiguration.obtain(config);\n\n if (params.pathPrefix) {\n instance.protocol.pathPrefix = params.pathPrefix;\n }\n\n RpcConfiguration.initializeInterfaces(instance);\n\n if (params.pendingRequestListener) {\n const listener = params.pendingRequestListener;\n\n RpcRequest.events.addListener((type, request) => {\n if (type === RpcRequestEvent.PendingUpdateReceived && request.protocol === instance.protocol) {\n listener(type, request);\n }\n });\n }\n\n return instance;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BentleyCloudRpcProtocol.js","sourceRoot":"","sources":["../../../../src/rpc/web/BentleyCloudRpcProtocol.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\nimport { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps } from \"../../IModel\";\r\nimport { IModelError } from \"../../IModelError\";\r\nimport { RpcConfiguration } from \"../core/RpcConfiguration\";\r\nimport { RpcOperation } from \"../core/RpcOperation\";\r\nimport { SerializedRpcOperation, SerializedRpcRequest } from \"../core/RpcProtocol\";\r\nimport { RpcRequest } from \"../core/RpcRequest\";\r\nimport { OpenAPIParameter } from \"./OpenAPI\";\r\nimport { WebAppRpcProtocol } from \"./WebAppRpcProtocol\";\r\nimport { SerializedRpcActivity } from \"../core/RpcInvocation\";\r\n\r\nenum AppMode {\r\n MilestoneReview = \"1\",\r\n}\r\n\r\n/** An http protocol for Bentley cloud RPC interface deployments.\r\n * @internal\r\n */\r\nexport abstract class BentleyCloudRpcProtocol extends WebAppRpcProtocol {\r\n public override checkToken = true;\r\n\r\n /** The name of various HTTP request headers based on client's request context */\r\n public override serializedClientRequestContextHeaderNames: SerializedRpcActivity = {\r\n /** The name of the HTTP request id header. */\r\n id: \"X-Correlation-Id\",\r\n\r\n /** The name of the HTTP application id header. */\r\n applicationId: \"X-Application-Id\",\r\n\r\n /** The name of the HTTP application version header. */\r\n applicationVersion: \"X-Application-Version\",\r\n\r\n /** The name of the HTTP session id header. */\r\n sessionId: \"X-Session-Id\",\r\n\r\n /** The name of the HTTP authorization header. */\r\n authorization: \"Authorization\",\r\n };\r\n\r\n /** The name of the RPC protocol version header. */\r\n public override protocolVersionHeaderName = \"X-Protocol-Version\";\r\n\r\n /** Returns the operation specified by an OpenAPI-compatible URI path. */\r\n public override getOperationFromPath(path: string): SerializedRpcOperation {\r\n const url = new URL(path, \"https://localhost/\");\r\n const components = url.pathname.split(\"/\").filter((x) => x); // filter out empty segments\r\n\r\n const operationComponent = components.slice(-1)[0];\r\n const encodedRequest = url.searchParams.get(\"parameters\") || \"\";\r\n\r\n // The encodedRequest should be base64 - fail now if any other characters detected.\r\n if (/[^a-zA-Z0-9=+\\/$]/.test(encodedRequest))\r\n throw new IModelError(BentleyStatus.ERROR, `Invalid request: Malformed URL parameters detected.`);\r\n\r\n const firstHyphen = operationComponent.indexOf(\"-\");\r\n const lastHyphen = operationComponent.lastIndexOf(\"-\");\r\n const interfaceDefinition = operationComponent.slice(0, firstHyphen);\r\n const interfaceVersion = operationComponent.slice(firstHyphen + 1, lastHyphen);\r\n const operationName = operationComponent.slice(lastHyphen + 1);\r\n\r\n return { interfaceDefinition, operationName, interfaceVersion, encodedRequest };\r\n }\r\n\r\n /** Supplies the OpenAPI-compatible URI path for an RPC operation. */\r\n public override supplyPathForOperation(operation: RpcOperation, request: RpcRequest | undefined) {\r\n const prefix = this.pathPrefix;\r\n const appTitle = this.info.title;\r\n const appVersion = this.info.version;\r\n const operationId = `${operation.interfaceDefinition.interfaceName}-${operation.interfaceVersion}-${operation.operationName}`;\r\n\r\n let appMode: string = \"\";\r\n let iTwinId: string = \"\";\r\n let iModelId: string = \"\";\r\n let routeChangesetId: string | undefined;\r\n /* Note: The changesetId field is omitted in the route in the case of ReadWrite connections since the connection is generally expected to be at the\r\n * latest version and not some specific changeset. Also, for the first version (before any changesets), the changesetId in the route is arbitrarily\r\n * set to \"0\" instead of an empty string, since the latter is more un-intuitive for a route. However, in all other use cases, including the changesetId\r\n * held by the IModelRpcProps itself, the changesetId of \"\" (i.e., empty string) signifies the first version - this is more intuitive and retains\r\n * compatibility with the majority of use cases. */\r\n\r\n if (request === undefined) {\r\n appMode = \"{modeId}\";\r\n iTwinId = \"{iTwinId}\";\r\n iModelId = \"{iModelId}\";\r\n routeChangesetId = \"{changeSetId}\";\r\n } else {\r\n let token = operation.policy.token(request) || RpcOperation.fallbackToken;\r\n\r\n if (!token || !token.iModelId) {\r\n if (RpcConfiguration.disableRoutingValidation) {\r\n token = { key: \"\" };\r\n } else {\r\n throw new IModelError(BentleyStatus.ERROR, \"Invalid iModelToken for RPC operation request\");\r\n }\r\n }\r\n\r\n iTwinId = encodeURIComponent(token.iTwinId || \"\");\r\n iModelId = encodeURIComponent(token.iModelId!);\r\n\r\n routeChangesetId = token.changeset?.id || \"0\";\r\n appMode = AppMode.MilestoneReview;\r\n }\r\n\r\n return `${prefix}/${appTitle}/${appVersion}/mode/${appMode}/context/${iTwinId}/imodel/${iModelId}${!!routeChangesetId ? `/changeset/${routeChangesetId}` : \"\"}/${operationId}`;\r\n }\r\n\r\n /**\r\n * Inflates the IModelRpcProps from the URL path for each request on the backend.\r\n * @note This function updates the IModelRpcProps value supplied in the request body.\r\n */\r\n public override inflateToken(tokenFromBody: IModelRpcProps, request: SerializedRpcRequest): IModelRpcProps {\r\n const urlPathComponents = request.path.split(\"/\");\r\n\r\n let iModelId = tokenFromBody.iModelId;\r\n let iTwinId = tokenFromBody.iTwinId;\r\n const changeset = { id: tokenFromBody.changeset?.id ?? \"0\", index: tokenFromBody.changeset?.index };\r\n\r\n for (let i = 0; i <= urlPathComponents.length; ++i) {\r\n const key = urlPathComponents[i];\r\n const value = urlPathComponents[i + 1];\r\n if (key === \"mode\") {\r\n ++i;\r\n } else if (key === \"context\") {\r\n iTwinId = value;\r\n ++i;\r\n } else if (key === \"imodel\") {\r\n iModelId = value;\r\n ++i;\r\n } else if (key === \"changeset\") {\r\n changeset.id = (value === \"0\") ? \"\" : value;\r\n ++i;\r\n }\r\n }\r\n\r\n // Overwrite the key if it includes a : because its most likely a guid. We know what it should be based off of the url.\r\n // Leave it alone if its a non guid key.\r\n return { key: tokenFromBody.key === undefined || tokenFromBody.key.includes(\":\") ? `${iModelId}:${changeset.id}` : tokenFromBody.key, iTwinId, iModelId, changeset };\r\n }\r\n\r\n /** Returns the OpenAPI-compatible URI path parameters for an RPC operation.\r\n * @internal\r\n */\r\n public supplyPathParametersForOperation(_operation: RpcOperation): OpenAPIParameter[] {\r\n return [\r\n { name: \"modeId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"iTwinId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"iModelId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"changeSetId\", in: \"path\", required: false, schema: { type: \"string\" } },\r\n ];\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BentleyCloudRpcProtocol.js","sourceRoot":"","sources":["../../../../src/rpc/web/BentleyCloudRpcProtocol.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module RpcInterface\n */\n\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport { IModelRpcProps } from \"../../IModel\";\nimport { IModelError } from \"../../IModelError\";\nimport { RpcConfiguration } from \"../core/RpcConfiguration\";\nimport { RpcOperation } from \"../core/RpcOperation\";\nimport { SerializedRpcOperation, SerializedRpcRequest } from \"../core/RpcProtocol\";\nimport { RpcRequest } from \"../core/RpcRequest\";\nimport { OpenAPIParameter } from \"./OpenAPI\";\nimport { WebAppRpcProtocol } from \"./WebAppRpcProtocol\";\nimport { SerializedRpcActivity } from \"../core/RpcInvocation\";\n\nenum AppMode {\n MilestoneReview = \"1\",\n}\n\n/** An http protocol for Bentley cloud RPC interface deployments.\n * @internal\n */\nexport abstract class BentleyCloudRpcProtocol extends WebAppRpcProtocol {\n public override checkToken = true;\n\n /** The name of various HTTP request headers based on client's request context */\n public override serializedClientRequestContextHeaderNames: SerializedRpcActivity = {\n /** The name of the HTTP request id header. */\n id: \"X-Correlation-Id\",\n\n /** The name of the HTTP application id header. */\n applicationId: \"X-Application-Id\",\n\n /** The name of the HTTP application version header. */\n applicationVersion: \"X-Application-Version\",\n\n /** The name of the HTTP session id header. */\n sessionId: \"X-Session-Id\",\n\n /** The name of the HTTP authorization header. */\n authorization: \"Authorization\",\n };\n\n /** The name of the RPC protocol version header. */\n public override protocolVersionHeaderName = \"X-Protocol-Version\";\n\n /** Returns the operation specified by an OpenAPI-compatible URI path. */\n public override getOperationFromPath(path: string): SerializedRpcOperation {\n const url = new URL(path, \"https://localhost/\");\n const components = url.pathname.split(\"/\").filter((x) => x); // filter out empty segments\n\n const operationComponent = components.slice(-1)[0];\n const encodedRequest = url.searchParams.get(\"parameters\") || \"\";\n\n // The encodedRequest should be base64 - fail now if any other characters detected.\n if (/[^a-zA-Z0-9=+\\/$]/.test(encodedRequest))\n throw new IModelError(BentleyStatus.ERROR, `Invalid request: Malformed URL parameters detected.`);\n\n const firstHyphen = operationComponent.indexOf(\"-\");\n const lastHyphen = operationComponent.lastIndexOf(\"-\");\n const interfaceDefinition = operationComponent.slice(0, firstHyphen);\n const interfaceVersion = operationComponent.slice(firstHyphen + 1, lastHyphen);\n const operationName = operationComponent.slice(lastHyphen + 1);\n\n return { interfaceDefinition, operationName, interfaceVersion, encodedRequest };\n }\n\n /** Supplies the OpenAPI-compatible URI path for an RPC operation. */\n public override supplyPathForOperation(operation: RpcOperation, request: RpcRequest | undefined) {\n const prefix = this.pathPrefix;\n const appTitle = this.info.title;\n const appVersion = this.info.version;\n const operationId = `${operation.interfaceDefinition.interfaceName}-${operation.interfaceVersion}-${operation.operationName}`;\n\n let appMode: string = \"\";\n let iTwinId: string = \"\";\n let iModelId: string = \"\";\n let routeChangesetId: string | undefined;\n /* Note: The changesetId field is omitted in the route in the case of ReadWrite connections since the connection is generally expected to be at the\n * latest version and not some specific changeset. Also, for the first version (before any changesets), the changesetId in the route is arbitrarily\n * set to \"0\" instead of an empty string, since the latter is more un-intuitive for a route. However, in all other use cases, including the changesetId\n * held by the IModelRpcProps itself, the changesetId of \"\" (i.e., empty string) signifies the first version - this is more intuitive and retains\n * compatibility with the majority of use cases. */\n\n if (request === undefined) {\n appMode = \"{modeId}\";\n iTwinId = \"{iTwinId}\";\n iModelId = \"{iModelId}\";\n routeChangesetId = \"{changeSetId}\";\n } else {\n let token = operation.policy.token(request) || RpcOperation.fallbackToken;\n\n if (!token || !token.iModelId) {\n if (RpcConfiguration.disableRoutingValidation) {\n token = { key: \"\" };\n } else {\n throw new IModelError(BentleyStatus.ERROR, \"Invalid iModelToken for RPC operation request\");\n }\n }\n\n iTwinId = encodeURIComponent(token.iTwinId || \"\");\n iModelId = encodeURIComponent(token.iModelId!);\n\n routeChangesetId = token.changeset?.id || \"0\";\n appMode = AppMode.MilestoneReview;\n }\n\n return `${prefix}/${appTitle}/${appVersion}/mode/${appMode}/context/${iTwinId}/imodel/${iModelId}${!!routeChangesetId ? `/changeset/${routeChangesetId}` : \"\"}/${operationId}`;\n }\n\n /**\n * Inflates the IModelRpcProps from the URL path for each request on the backend.\n * @note This function updates the IModelRpcProps value supplied in the request body.\n */\n public override inflateToken(tokenFromBody: IModelRpcProps, request: SerializedRpcRequest): IModelRpcProps {\n const urlPathComponents = request.path.split(\"/\");\n\n let iModelId = tokenFromBody.iModelId;\n let iTwinId = tokenFromBody.iTwinId;\n const changeset = { id: tokenFromBody.changeset?.id ?? \"0\", index: tokenFromBody.changeset?.index };\n\n for (let i = 0; i <= urlPathComponents.length; ++i) {\n const key = urlPathComponents[i];\n const value = urlPathComponents[i + 1];\n if (key === \"mode\") {\n ++i;\n } else if (key === \"context\") {\n iTwinId = value;\n ++i;\n } else if (key === \"imodel\") {\n iModelId = value;\n ++i;\n } else if (key === \"changeset\") {\n changeset.id = (value === \"0\") ? \"\" : value;\n ++i;\n }\n }\n\n // Overwrite the key if it includes a : because its most likely a guid. We know what it should be based off of the url.\n // Leave it alone if its a non guid key.\n return { key: tokenFromBody.key === undefined || tokenFromBody.key.includes(\":\") ? `${iModelId}:${changeset.id}` : tokenFromBody.key, iTwinId, iModelId, changeset };\n }\n\n /** Returns the OpenAPI-compatible URI path parameters for an RPC operation.\n * @internal\n */\n public supplyPathParametersForOperation(_operation: RpcOperation): OpenAPIParameter[] {\n return [\n { name: \"modeId\", in: \"path\", required: true, schema: { type: \"string\" } },\n { name: \"iTwinId\", in: \"path\", required: true, schema: { type: \"string\" } },\n { name: \"iModelId\", in: \"path\", required: true, schema: { type: \"string\" } },\n { name: \"changeSetId\", in: \"path\", required: false, schema: { type: \"string\" } },\n ];\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAPI.js","sourceRoot":"","sources":["../../../../src/rpc/web/OpenAPI.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAwIpD;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAChC,yCAAyC;IACzB,QAAQ,CAAoB;IAE5C,iDAAiD;IACjD,IAAW,KAAK;QACd,MAAM,KAAK,GAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC9D,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACxE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oGAAoG;IACpG,IAAW,QAAQ;QACjB,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,YAAmB,QAA2B;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,wBAAwB;IACjB,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,mBAAmB,CAAC,SAAuB;QACjD,MAAM,cAAc,GAAsB,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAChG,MAAM,eAAe,GAAsB,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAElG,MAAM,WAAW,GAAoB,EAAE,CAAC;QAExC,WAAW,CAAC,IAAI,GAAG;YACjB,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;YACxD,SAAS,EAAE;gBACT,GAAG,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;gBACzD,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE;aAC5D;SACF,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,UAAU,CAAC,MAAM;YACnB,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;QAEtC,OAAO,WAAW,CAAC;IACrB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"OpenAPI.js","sourceRoot":"","sources":["../../../../src/rpc/web/OpenAPI.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAwIpD;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAChC,yCAAyC;IACzB,QAAQ,CAAoB;IAE5C,iDAAiD;IACjD,IAAW,KAAK;QACd,MAAM,KAAK,GAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC9D,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACxE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oGAAoG;IACpG,IAAW,QAAQ;QACjB,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,YAAmB,QAA2B;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,wBAAwB;IACjB,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,mBAAmB,CAAC,SAAuB;QACjD,MAAM,cAAc,GAAsB,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAChG,MAAM,eAAe,GAAsB,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAElG,MAAM,WAAW,GAAoB,EAAE,CAAC;QAExC,WAAW,CAAC,IAAI,GAAG;YACjB,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;YACxD,SAAS,EAAE;gBACT,GAAG,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;gBACzD,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE;aAC5D;SACF,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,UAAU,CAAC,MAAM;YACnB,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;QAEtC,OAAO,WAAW,CAAC;IACrB,CAAC;CACF","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 { RpcOperation } from \"../core/RpcOperation\";\nimport { WebAppRpcProtocol } from \"./WebAppRpcProtocol\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** An OpenAPI 3.0 root document object.\n * @internal\n */\nexport interface OpenAPIDocument {\n openapi: \"3.0.0\";\n info: OpenAPIInfo;\n paths: OpenAPIPaths;\n}\n\n/** An OpenAPI 3.0 info object.\n * @public\n * @deprecated in 3.6. The RPC system will be significantly refactored (or replaced) in the future.\n */\nexport interface OpenAPIInfo {\n title: string;\n version: string;\n}\n\n/** An OpenAPI 3.0 paths object.\n * @internal\n */\nexport interface OpenAPIPaths {\n [index: string]: OpenAPIPathItem;\n}\n\n/** An OpenAPI 3.0 path item object.\n * @internal\n */\nexport interface OpenAPIPathItem {\n summary?: string;\n get?: OpenAPIOperation;\n put?: OpenAPIOperation;\n post?: OpenAPIOperation;\n delete?: OpenAPIOperation;\n options?: OpenAPIOperation;\n head?: OpenAPIOperation;\n patch?: OpenAPIOperation;\n trace?: OpenAPIOperation;\n parameters?: OpenAPIParameter[];\n}\n\n/** An OpenAPI 3.0 operation object.\n * @internal\n */\nexport interface OpenAPIOperation {\n summary?: string;\n operationId?: string;\n parameters?: OpenAPIParameter[];\n requestBody?: OpenAPIRequestBody;\n responses: OpenAPIResponses;\n}\n\n/** An OpenAPI 3.0 content map.\n * @internal\n */\nexport interface OpenAPIContentMap {\n [index: string]: OpenAPIMediaType;\n}\n\n/** An OpenAPI 3.0 parameter object.\n * @internal\n */\nexport interface OpenAPIParameter {\n name: string;\n in: \"query\" | \"header\" | \"path\" | \"cookie\";\n description?: string;\n required?: boolean;\n allowEmptyValue?: boolean;\n style?: \"matrix\" | \"label\" | \"form\" | \"simple\" | \"spaceDelimited\" | \"pipeDelimited\" | \"deepObject\";\n explode?: boolean;\n allowReserved?: boolean;\n schema?: OpenAPISchema;\n content?: OpenAPIContentMap;\n}\n\n/** An OpenAPI 3.0 media type object.\n * @internal\n */\nexport interface OpenAPIMediaType {\n schema?: OpenAPISchema;\n}\n\n/** An OpenAPI 3.0 schema object.\n * @internal\n */\nexport interface OpenAPISchema {\n type?: \"boolean\" | \"object\" | \"array\" | \"number\" | \"string\";\n nullable?: boolean;\n description?: string;\n}\n\n/** An OpenAPI 3.0 encoding object.\n * @internal\n */\nexport interface OpenAPIEncoding {\n contentType?: string;\n style?: string;\n explode?: boolean;\n allowReserved?: boolean;\n}\n\n/** An OpenAPI 3.0 parameter object.\n * @internal\n */\nexport interface OpenAPIRequestBody {\n description?: string;\n content: OpenAPIContentMap;\n required?: boolean;\n}\n\n/** An OpenAPI 3.0 responses object.\n * @internal\n */\nexport interface OpenAPIResponses {\n default?: OpenAPIResponse;\n \"200\"?: OpenAPIResponse;\n \"301\"?: OpenAPIResponse;\n \"302\"?: OpenAPIResponse;\n \"400\"?: OpenAPIResponse;\n \"404\"?: OpenAPIResponse;\n \"500\"?: OpenAPIResponse;\n}\n\n/** An OpenAPI 3.0 response object.\n * @internal\n */\nexport interface OpenAPIResponse {\n description: string;\n content?: { [index: string]: OpenAPIMediaType };\n}\n\n/** An OpenAPI-compatible description of an RPC protocol.\n * @internal\n */\nexport class RpcOpenAPIDescription {\n /** The protocol for this description. */\n public readonly protocol: WebAppRpcProtocol;\n\n /** The OpenAPI paths object for the protocol. */\n public get paths(): OpenAPIPaths {\n const paths: OpenAPIPaths = {};\n\n this.protocol.configuration.interfaces().forEach((definition) => {\n RpcOperation.forEach(definition, (operation) => {\n const path = this.protocol.supplyPathForOperation(operation, undefined);\n paths[path] = this.generateDescription(operation);\n });\n });\n\n return paths;\n }\n\n /** An OpenAPI 3.0 (Swagger) description of the RESTful API that is exposed through the protocol. */\n public get document(): OpenAPIDocument {\n return {\n openapi: \"3.0.0\",\n info: this.protocol.info,\n paths: this.paths,\n };\n }\n\n /** Creates an OpenAPI description of an RPC protocol. */\n public constructor(protocol: WebAppRpcProtocol) {\n this.protocol = protocol;\n }\n\n /** Converts to JSON. */\n public toJSON() {\n return this.document;\n }\n\n private generateDescription(operation: RpcOperation): OpenAPIPathItem {\n const requestContent: OpenAPIContentMap = { \"application/json\": { schema: { type: \"array\" } } };\n const responseContent: OpenAPIContentMap = { \"application/json\": { schema: { type: \"object\" } } };\n\n const description: OpenAPIPathItem = {};\n\n description.head = {\n requestBody: { content: requestContent, required: true },\n responses: {\n 200: { description: \"Success\", content: responseContent },\n default: { description: \"Error\", content: responseContent },\n },\n };\n\n const parameters = this.protocol.supplyPathParametersForOperation(operation);\n if (parameters.length)\n description.parameters = parameters;\n\n return description;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcMultipart.js","sourceRoot":"","sources":["../../../../src/rpc/web/RpcMultipart.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiBhD;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB,wDAAwD;IACjD,MAAM,CAAC,UAAU,CAAC,KAAyB;QAChD,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mDAAmD;IAC5C,MAAM,CAAC,YAAY,CAAC,KAAyB;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,2DAA2D;IACpD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAsB;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,gBAAgB,CAAC,IAAoB,EAAE,KAAyB;QAC5E,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,QAAQ,GAAG;QACvB,YAAY,CAAC,MAA0B;YACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,IAAuB;YACxC,MAAM,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,YAAY,CAAC,CAAS,EAAE,IAAoB,EAAE,KAAyB;YACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC;QAC5F,CAAC;KACF,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"RpcMultipart.js","sourceRoot":"","sources":["../../../../src/rpc/web/RpcMultipart.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiBhD;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB,wDAAwD;IACjD,MAAM,CAAC,UAAU,CAAC,KAAyB;QAChD,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mDAAmD;IAC5C,MAAM,CAAC,YAAY,CAAC,KAAyB;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,2DAA2D;IACpD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAsB;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,gBAAgB,CAAC,IAAoB,EAAE,KAAyB;QAC5E,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,QAAQ,GAAG;QACvB,YAAY,CAAC,MAA0B;YACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,IAAuB;YACxC,MAAM,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,YAAY,CAAC,CAAS,EAAE,IAAoB,EAAE,KAAyB;YACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC;QAC5F,CAAC;KACF,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\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport { IModelError } from \"../../IModelError\";\nimport { BackendBuffer, BackendReadable } from \"../../internal/BackendTypes\";\nimport { RpcSerializedValue } from \"../core/RpcMarshaling\";\nimport { HttpServerRequest } from \"../web/WebAppRpcProtocol\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** @internal */\nexport interface FormDataCommon {\n append(name: string, value: string | Blob | BackendBuffer, fileName?: string): void;\n}\n\n/** @internal */\nexport interface ReadableFormData extends BackendReadable {\n getHeaders(): { [key: string]: any };\n}\n\n/** Support for transporting RPC values using the HTTP multipart content type.\n * @internal\n */\nexport class RpcMultipart {\n /** Creates a multipart form object for an RPC value. */\n public static createForm(value: RpcSerializedValue): FormData {\n const form = new FormData();\n RpcMultipart.writeValueToForm(form, value);\n return form;\n }\n\n /** Creates a multipart stream for an RPC value. */\n public static createStream(value: RpcSerializedValue): ReadableFormData {\n return this.platform.createStream(value);\n }\n\n /** Obtains the RPC value from a multipart HTTP request. */\n public static async parseRequest(req: HttpServerRequest): Promise<RpcSerializedValue> {\n return this.platform.parseRequest(req);\n }\n\n /** @internal */\n public static writeValueToForm(form: FormDataCommon, value: RpcSerializedValue) {\n form.append(\"objects\", value.objects);\n\n for (let i = 0; i !== value.data.length; ++i) {\n this.platform.appendToForm(i, form, value);\n }\n }\n\n /** @internal */\n public static platform = {\n createStream(_value: RpcSerializedValue): ReadableFormData {\n throw new IModelError(BentleyStatus.ERROR, \"Not bound.\");\n },\n async parseRequest(_req: HttpServerRequest): Promise<RpcSerializedValue> {\n throw new IModelError(BentleyStatus.ERROR, \"Not bound.\");\n },\n appendToForm(i: number, form: FormDataCommon, value: RpcSerializedValue): void {\n form.append(`data-${i}`, new Blob([value.data[i]], { type: \"application/octet-stream\" }));\n },\n };\n}\n\n"]}
|