@itwin/core-common 3.2.0-dev.8 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -1
- package/lib/cjs/AnalysisStyle.d.ts +3 -0
- package/lib/cjs/AnalysisStyle.d.ts.map +1 -1
- package/lib/cjs/AnalysisStyle.js.map +1 -1
- package/lib/cjs/BackgroundMapProvider.d.ts +6 -0
- package/lib/cjs/BackgroundMapProvider.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapProvider.js +10 -0
- package/lib/cjs/BackgroundMapProvider.js.map +1 -1
- package/lib/cjs/BackgroundMapSettings.d.ts +4 -0
- package/lib/cjs/BackgroundMapSettings.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapSettings.js +1 -0
- package/lib/cjs/BackgroundMapSettings.js.map +1 -1
- package/lib/cjs/Base64EncodedString.d.ts +1 -0
- package/lib/cjs/Base64EncodedString.d.ts.map +1 -1
- package/lib/cjs/Base64EncodedString.js.map +1 -1
- package/lib/cjs/BriefcaseTypes.d.ts +5 -0
- package/lib/cjs/BriefcaseTypes.d.ts.map +1 -1
- package/lib/cjs/BriefcaseTypes.js +2 -0
- package/lib/cjs/BriefcaseTypes.js.map +1 -1
- package/lib/cjs/Camera.d.ts +1 -0
- package/lib/cjs/Camera.d.ts.map +1 -1
- package/lib/cjs/Camera.js.map +1 -1
- package/lib/cjs/ChangedElements.d.ts +2 -0
- package/lib/cjs/ChangedElements.d.ts.map +1 -1
- package/lib/cjs/ChangedElements.js +1 -0
- package/lib/cjs/ChangedElements.js.map +1 -1
- package/lib/cjs/ChangedEntities.d.ts +3 -0
- package/lib/cjs/ChangedEntities.d.ts.map +1 -1
- package/lib/cjs/ChangedEntities.js.map +1 -1
- package/lib/cjs/ChangesetProps.d.ts +9 -1
- package/lib/cjs/ChangesetProps.d.ts.map +1 -1
- package/lib/cjs/ChangesetProps.js +3 -1
- package/lib/cjs/ChangesetProps.js.map +1 -1
- package/lib/cjs/ClipStyle.d.ts +2 -0
- package/lib/cjs/ClipStyle.d.ts.map +1 -1
- package/lib/cjs/ClipStyle.js.map +1 -1
- package/lib/cjs/CloudStorage.d.ts.map +1 -1
- package/lib/cjs/CloudStorage.js +14 -20
- package/lib/cjs/CloudStorage.js.map +1 -1
- package/lib/cjs/Code.d.ts +3 -0
- package/lib/cjs/Code.d.ts.map +1 -1
- package/lib/cjs/Code.js +1 -0
- package/lib/cjs/Code.js.map +1 -1
- package/lib/cjs/ColorByName.d.ts +153 -152
- package/lib/cjs/ColorByName.d.ts.map +1 -1
- package/lib/cjs/ColorByName.js +153 -153
- package/lib/cjs/ColorByName.js.map +1 -1
- package/lib/cjs/ColorDef.d.ts +55 -46
- package/lib/cjs/ColorDef.d.ts.map +1 -1
- package/lib/cjs/ColorDef.js +49 -31
- package/lib/cjs/ColorDef.js.map +1 -1
- package/lib/cjs/CommonLoggerCategory.d.ts +1 -0
- package/lib/cjs/CommonLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/CommonLoggerCategory.js +1 -0
- package/lib/cjs/CommonLoggerCategory.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.d.ts +6 -1
- package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
- package/lib/cjs/ConcurrentQuery.js +3 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/ContextRealityModel.d.ts +2 -0
- package/lib/cjs/ContextRealityModel.d.ts.map +1 -1
- package/lib/cjs/ContextRealityModel.js.map +1 -1
- package/lib/cjs/DisplayStyleSettings.d.ts +10 -0
- package/lib/cjs/DisplayStyleSettings.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleSettings.js +1 -0
- package/lib/cjs/DisplayStyleSettings.js.map +1 -1
- package/lib/cjs/ECSqlTypes.d.ts +6 -0
- package/lib/cjs/ECSqlTypes.d.ts.map +1 -1
- package/lib/cjs/ECSqlTypes.js +4 -0
- package/lib/cjs/ECSqlTypes.js.map +1 -1
- package/lib/cjs/ElementProps.d.ts +37 -1
- package/lib/cjs/ElementProps.d.ts.map +1 -1
- package/lib/cjs/ElementProps.js +2 -0
- package/lib/cjs/ElementProps.js.map +1 -1
- package/lib/cjs/EmphasizeElementsProps.d.ts +3 -0
- package/lib/cjs/EmphasizeElementsProps.d.ts.map +1 -1
- package/lib/cjs/EmphasizeElementsProps.js +1 -0
- package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
- package/lib/cjs/EntityProps.d.ts +4 -0
- package/lib/cjs/EntityProps.d.ts.map +1 -1
- package/lib/cjs/EntityProps.js.map +1 -1
- package/lib/cjs/Environment.d.ts +1 -0
- package/lib/cjs/Environment.d.ts.map +1 -1
- package/lib/cjs/Environment.js.map +1 -1
- package/lib/cjs/FeatureSymbology.d.ts +3 -0
- package/lib/cjs/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/FeatureSymbology.js.map +1 -1
- package/lib/cjs/FeatureTable.d.ts +1 -0
- package/lib/cjs/FeatureTable.d.ts.map +1 -1
- package/lib/cjs/FeatureTable.js +1 -0
- package/lib/cjs/FeatureTable.js.map +1 -1
- package/lib/cjs/Fonts.d.ts +3 -0
- package/lib/cjs/Fonts.d.ts.map +1 -1
- package/lib/cjs/Fonts.js +1 -0
- package/lib/cjs/Fonts.js.map +1 -1
- package/lib/cjs/Frustum.d.ts +1 -0
- package/lib/cjs/Frustum.d.ts.map +1 -1
- package/lib/cjs/Frustum.js +1 -0
- package/lib/cjs/Frustum.js.map +1 -1
- package/lib/cjs/GeoCoordinateServices.d.ts +1 -0
- package/lib/cjs/GeoCoordinateServices.d.ts.map +1 -1
- package/lib/cjs/GeoCoordinateServices.js +1 -0
- package/lib/cjs/GeoCoordinateServices.js.map +1 -1
- package/lib/cjs/GeometryContainment.d.ts +2 -0
- package/lib/cjs/GeometryContainment.d.ts.map +1 -1
- package/lib/cjs/GeometryContainment.js.map +1 -1
- package/lib/cjs/GeometryParams.d.ts +3 -0
- package/lib/cjs/GeometryParams.d.ts.map +1 -1
- package/lib/cjs/GeometryParams.js +3 -0
- package/lib/cjs/GeometryParams.js.map +1 -1
- package/lib/cjs/GeometrySummary.d.ts +3 -0
- package/lib/cjs/GeometrySummary.d.ts.map +1 -1
- package/lib/cjs/GeometrySummary.js +1 -0
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/GraphicParams.d.ts +1 -0
- package/lib/cjs/GraphicParams.d.ts.map +1 -1
- package/lib/cjs/GraphicParams.js +1 -0
- package/lib/cjs/GraphicParams.js.map +1 -1
- package/lib/cjs/GroundPlane.d.ts +1 -0
- package/lib/cjs/GroundPlane.d.ts.map +1 -1
- package/lib/cjs/GroundPlane.js.map +1 -1
- package/lib/cjs/HSVColor.d.ts +4 -1
- package/lib/cjs/HSVColor.d.ts.map +1 -1
- package/lib/cjs/HSVColor.js +4 -1
- package/lib/cjs/HSVColor.js.map +1 -1
- package/lib/cjs/HiddenLine.d.ts +12 -17
- package/lib/cjs/HiddenLine.d.ts.map +1 -1
- package/lib/cjs/HiddenLine.js +6 -2
- package/lib/cjs/HiddenLine.js.map +1 -1
- package/lib/cjs/IModel.d.ts +6 -1
- package/lib/cjs/IModel.d.ts.map +1 -1
- package/lib/cjs/IModel.js.map +1 -1
- package/lib/cjs/Image.d.ts +2 -0
- package/lib/cjs/Image.d.ts.map +1 -1
- package/lib/cjs/Image.js +2 -0
- package/lib/cjs/Image.js.map +1 -1
- package/lib/cjs/IpcAppProps.d.ts +1 -0
- package/lib/cjs/IpcAppProps.d.ts.map +1 -1
- package/lib/cjs/IpcAppProps.js.map +1 -1
- package/lib/cjs/LightSettings.d.ts +5 -0
- package/lib/cjs/LightSettings.d.ts.map +1 -1
- package/lib/cjs/LightSettings.js.map +1 -1
- package/lib/cjs/LinePixels.d.ts +1 -0
- package/lib/cjs/LinePixels.d.ts.map +1 -1
- package/lib/cjs/LinePixels.js +1 -0
- package/lib/cjs/LinePixels.js.map +1 -1
- package/lib/cjs/Localization.d.ts +1 -0
- package/lib/cjs/Localization.d.ts.map +1 -1
- package/lib/cjs/Localization.js.map +1 -1
- package/lib/cjs/MassProperties.d.ts +27 -1
- package/lib/cjs/MassProperties.d.ts.map +1 -1
- package/lib/cjs/MassProperties.js +1 -0
- package/lib/cjs/MassProperties.js.map +1 -1
- package/lib/cjs/MaterialProps.d.ts +6 -0
- package/lib/cjs/MaterialProps.d.ts.map +1 -1
- package/lib/cjs/MaterialProps.js +1 -0
- package/lib/cjs/MaterialProps.js.map +1 -1
- package/lib/cjs/ModelClipGroup.d.ts +1 -0
- package/lib/cjs/ModelClipGroup.d.ts.map +1 -1
- package/lib/cjs/ModelClipGroup.js.map +1 -1
- package/lib/cjs/ModelGeometryChanges.d.ts +9 -1
- package/lib/cjs/ModelGeometryChanges.d.ts.map +1 -1
- package/lib/cjs/ModelGeometryChanges.js.map +1 -1
- package/lib/cjs/ModelProps.d.ts +6 -0
- package/lib/cjs/ModelProps.d.ts.map +1 -1
- package/lib/cjs/ModelProps.js.map +1 -1
- package/lib/cjs/PlanProjectionSettings.d.ts +1 -0
- package/lib/cjs/PlanProjectionSettings.d.ts.map +1 -1
- package/lib/cjs/PlanProjectionSettings.js.map +1 -1
- package/lib/cjs/PlanarClipMask.d.ts +3 -0
- package/lib/cjs/PlanarClipMask.d.ts.map +1 -1
- package/lib/cjs/PlanarClipMask.js +2 -0
- package/lib/cjs/PlanarClipMask.js.map +1 -1
- package/lib/cjs/RgbColor.d.ts +1 -0
- package/lib/cjs/RgbColor.d.ts.map +1 -1
- package/lib/cjs/RgbColor.js.map +1 -1
- package/lib/cjs/SessionProps.d.ts +1 -0
- package/lib/cjs/SessionProps.d.ts.map +1 -1
- package/lib/cjs/SessionProps.js.map +1 -1
- package/lib/cjs/SkyBox.d.ts +4 -0
- package/lib/cjs/SkyBox.d.ts.map +1 -1
- package/lib/cjs/SkyBox.js +1 -0
- package/lib/cjs/SkyBox.js.map +1 -1
- package/lib/cjs/SolarShadows.d.ts +1 -0
- package/lib/cjs/SolarShadows.d.ts.map +1 -1
- package/lib/cjs/SolarShadows.js.map +1 -1
- package/lib/cjs/SpatialClassification.d.ts +5 -0
- package/lib/cjs/SpatialClassification.d.ts.map +1 -1
- package/lib/cjs/SpatialClassification.js +2 -0
- package/lib/cjs/SpatialClassification.js.map +1 -1
- package/lib/cjs/TerrainSettings.d.ts +3 -0
- package/lib/cjs/TerrainSettings.d.ts.map +1 -1
- package/lib/cjs/TerrainSettings.js +1 -0
- package/lib/cjs/TerrainSettings.js.map +1 -1
- package/lib/cjs/TextureProps.d.ts +3 -0
- package/lib/cjs/TextureProps.d.ts.map +1 -1
- package/lib/cjs/TextureProps.js.map +1 -1
- package/lib/cjs/ThematicDisplay.d.ts +9 -1
- package/lib/cjs/ThematicDisplay.d.ts.map +1 -1
- package/lib/cjs/ThematicDisplay.js +5 -1
- package/lib/cjs/ThematicDisplay.js.map +1 -1
- package/lib/cjs/Thumbnail.d.ts +2 -0
- package/lib/cjs/Thumbnail.d.ts.map +1 -1
- package/lib/cjs/Thumbnail.js.map +1 -1
- package/lib/cjs/TileProps.d.ts +1 -0
- package/lib/cjs/TileProps.d.ts.map +1 -1
- package/lib/cjs/TileProps.js.map +1 -1
- package/lib/cjs/Tween.d.ts +16 -4
- package/lib/cjs/Tween.d.ts.map +1 -1
- package/lib/cjs/Tween.js.map +1 -1
- package/lib/cjs/TxnAction.d.ts +1 -0
- package/lib/cjs/TxnAction.d.ts.map +1 -1
- package/lib/cjs/TxnAction.js +1 -0
- package/lib/cjs/TxnAction.js.map +1 -1
- package/lib/cjs/ViewDetails.d.ts +3 -0
- package/lib/cjs/ViewDetails.d.ts.map +1 -1
- package/lib/cjs/ViewDetails.js +1 -0
- package/lib/cjs/ViewDetails.js.map +1 -1
- package/lib/cjs/ViewFlags.d.ts +4 -0
- package/lib/cjs/ViewFlags.d.ts.map +1 -1
- package/lib/cjs/ViewFlags.js +1 -0
- package/lib/cjs/ViewFlags.js.map +1 -1
- package/lib/cjs/ViewProps.d.ts +69 -3
- package/lib/cjs/ViewProps.d.ts.map +1 -1
- package/lib/cjs/ViewProps.js.map +1 -1
- package/lib/cjs/WhiteOnWhiteReversalSettings.d.ts +1 -0
- package/lib/cjs/WhiteOnWhiteReversalSettings.d.ts.map +1 -1
- package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/cjs/domains/FunctionalElementProps.d.ts +4 -1
- package/lib/cjs/domains/FunctionalElementProps.d.ts.map +1 -1
- package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
- package/lib/cjs/domains/GenericElementProps.d.ts +8 -2
- package/lib/cjs/domains/GenericElementProps.d.ts.map +1 -1
- package/lib/cjs/domains/GenericElementProps.js.map +1 -1
- package/lib/cjs/geometry/AdditionalTransform.d.ts +2 -0
- package/lib/cjs/geometry/AdditionalTransform.d.ts.map +1 -1
- package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
- package/lib/cjs/geometry/Cartographic.d.ts +1 -0
- package/lib/cjs/geometry/Cartographic.d.ts.map +1 -1
- package/lib/cjs/geometry/Cartographic.js.map +1 -1
- package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts +5 -0
- package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts.map +1 -1
- package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometry.d.ts +2 -0
- package/lib/cjs/geometry/ElementGeometry.d.ts.map +1 -1
- package/lib/cjs/geometry/ElementGeometry.js +1 -0
- package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
- package/lib/cjs/geometry/GeodeticDatum.d.ts +80 -1
- package/lib/cjs/geometry/GeodeticDatum.d.ts.map +1 -1
- package/lib/cjs/geometry/GeodeticDatum.js +79 -1
- package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
- package/lib/cjs/geometry/GeodeticEllipsoid.d.ts +1 -0
- package/lib/cjs/geometry/GeodeticEllipsoid.d.ts.map +1 -1
- package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/cjs/geometry/GeometryStream.d.ts +15 -0
- package/lib/cjs/geometry/GeometryStream.d.ts.map +1 -1
- package/lib/cjs/geometry/GeometryStream.js +11 -7
- package/lib/cjs/geometry/GeometryStream.js.map +1 -1
- package/lib/cjs/geometry/ImageGraphic.d.ts +2 -0
- package/lib/cjs/geometry/ImageGraphic.d.ts.map +1 -1
- package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
- package/lib/cjs/geometry/Placement.d.ts +6 -0
- package/lib/cjs/geometry/Placement.d.ts.map +1 -1
- package/lib/cjs/geometry/Placement.js.map +1 -1
- package/lib/cjs/geometry/Projection.d.ts +6 -0
- package/lib/cjs/geometry/Projection.d.ts.map +1 -1
- package/lib/cjs/geometry/Projection.js.map +1 -1
- package/lib/cjs/geometry/TextString.d.ts +1 -0
- package/lib/cjs/geometry/TextString.d.ts.map +1 -1
- package/lib/cjs/geometry/TextString.js.map +1 -1
- package/lib/cjs/ipc/IpcSocket.d.ts +1 -0
- package/lib/cjs/ipc/IpcSocket.d.ts.map +1 -1
- package/lib/cjs/ipc/IpcSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.d.ts.map +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.js +3 -2
- package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +5 -2
- package/lib/cjs/rpc/IModelReadRpcInterface.d.ts.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js +4 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.d.ts +4 -2
- package/lib/cjs/rpc/IModelTileRpcInterface.d.ts.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.js +4 -2
- package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/core/RpcControl.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcControl.js +3 -2
- package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.d.ts +3 -0
- package/lib/cjs/rpc/core/RpcInvocation.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.js +33 -7
- package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcMarshaling.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcMarshaling.js +2 -1
- package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/cjs/rpc/core/RpcOperation.d.ts +2 -0
- package/lib/cjs/rpc/core/RpcOperation.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcOperation.js +2 -0
- package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcProtocol.d.ts +24 -1
- package/lib/cjs/rpc/core/RpcProtocol.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcProtocol.js +15 -2
- package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.d.ts +3 -0
- package/lib/cjs/rpc/core/RpcRequest.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.js +36 -1
- package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.d.ts.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +1 -2
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/RpcMultipart.d.ts +1 -0
- package/lib/cjs/rpc/web/RpcMultipart.d.ts.map +1 -1
- package/lib/cjs/rpc/web/RpcMultipart.js +2 -1
- package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcLogging.d.ts.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcLogging.js +14 -10
- package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +3 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js +8 -7
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +5 -6
- package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.js +49 -30
- package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts +1 -0
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts.map +1 -1
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js +4 -3
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/cjs/tile/ElementGraphics.d.ts +20 -2
- package/lib/cjs/tile/ElementGraphics.d.ts.map +1 -1
- package/lib/cjs/tile/ElementGraphics.js.map +1 -1
- package/lib/cjs/tile/IModelTileIO.d.ts +2 -2
- package/lib/cjs/tile/IModelTileIO.js +2 -2
- package/lib/cjs/tile/IModelTileIO.js.map +1 -1
- package/lib/cjs/tile/TileMetadata.d.ts +18 -13
- package/lib/cjs/tile/TileMetadata.d.ts.map +1 -1
- package/lib/cjs/tile/TileMetadata.js +164 -134
- package/lib/cjs/tile/TileMetadata.js.map +1 -1
- package/lib/esm/AnalysisStyle.d.ts +3 -0
- package/lib/esm/AnalysisStyle.d.ts.map +1 -1
- package/lib/esm/AnalysisStyle.js.map +1 -1
- package/lib/esm/BackgroundMapProvider.d.ts +6 -0
- package/lib/esm/BackgroundMapProvider.d.ts.map +1 -1
- package/lib/esm/BackgroundMapProvider.js +10 -0
- package/lib/esm/BackgroundMapProvider.js.map +1 -1
- package/lib/esm/BackgroundMapSettings.d.ts +4 -0
- package/lib/esm/BackgroundMapSettings.d.ts.map +1 -1
- package/lib/esm/BackgroundMapSettings.js +1 -0
- package/lib/esm/BackgroundMapSettings.js.map +1 -1
- package/lib/esm/Base64EncodedString.d.ts +1 -0
- package/lib/esm/Base64EncodedString.d.ts.map +1 -1
- package/lib/esm/Base64EncodedString.js.map +1 -1
- package/lib/esm/BriefcaseTypes.d.ts +5 -0
- package/lib/esm/BriefcaseTypes.d.ts.map +1 -1
- package/lib/esm/BriefcaseTypes.js +2 -0
- package/lib/esm/BriefcaseTypes.js.map +1 -1
- package/lib/esm/Camera.d.ts +1 -0
- package/lib/esm/Camera.d.ts.map +1 -1
- package/lib/esm/Camera.js.map +1 -1
- package/lib/esm/ChangedElements.d.ts +2 -0
- package/lib/esm/ChangedElements.d.ts.map +1 -1
- package/lib/esm/ChangedElements.js +1 -0
- package/lib/esm/ChangedElements.js.map +1 -1
- package/lib/esm/ChangedEntities.d.ts +3 -0
- package/lib/esm/ChangedEntities.d.ts.map +1 -1
- package/lib/esm/ChangedEntities.js.map +1 -1
- package/lib/esm/ChangesetProps.d.ts +9 -1
- package/lib/esm/ChangesetProps.d.ts.map +1 -1
- package/lib/esm/ChangesetProps.js +3 -1
- package/lib/esm/ChangesetProps.js.map +1 -1
- package/lib/esm/ClipStyle.d.ts +2 -0
- package/lib/esm/ClipStyle.d.ts.map +1 -1
- package/lib/esm/ClipStyle.js.map +1 -1
- package/lib/esm/CloudStorage.d.ts.map +1 -1
- package/lib/esm/CloudStorage.js +14 -20
- package/lib/esm/CloudStorage.js.map +1 -1
- package/lib/esm/Code.d.ts +3 -0
- package/lib/esm/Code.d.ts.map +1 -1
- package/lib/esm/Code.js +1 -0
- package/lib/esm/Code.js.map +1 -1
- package/lib/esm/ColorByName.d.ts +153 -152
- package/lib/esm/ColorByName.d.ts.map +1 -1
- package/lib/esm/ColorByName.js +153 -153
- package/lib/esm/ColorByName.js.map +1 -1
- package/lib/esm/ColorDef.d.ts +55 -46
- package/lib/esm/ColorDef.d.ts.map +1 -1
- package/lib/esm/ColorDef.js +49 -31
- package/lib/esm/ColorDef.js.map +1 -1
- package/lib/esm/CommonLoggerCategory.d.ts +1 -0
- package/lib/esm/CommonLoggerCategory.d.ts.map +1 -1
- package/lib/esm/CommonLoggerCategory.js +1 -0
- package/lib/esm/CommonLoggerCategory.js.map +1 -1
- package/lib/esm/ConcurrentQuery.d.ts +6 -1
- package/lib/esm/ConcurrentQuery.d.ts.map +1 -1
- package/lib/esm/ConcurrentQuery.js +2 -0
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/ContextRealityModel.d.ts +2 -0
- package/lib/esm/ContextRealityModel.d.ts.map +1 -1
- package/lib/esm/ContextRealityModel.js.map +1 -1
- package/lib/esm/DisplayStyleSettings.d.ts +10 -0
- package/lib/esm/DisplayStyleSettings.d.ts.map +1 -1
- package/lib/esm/DisplayStyleSettings.js +1 -0
- package/lib/esm/DisplayStyleSettings.js.map +1 -1
- package/lib/esm/ECSqlTypes.d.ts +6 -0
- package/lib/esm/ECSqlTypes.d.ts.map +1 -1
- package/lib/esm/ECSqlTypes.js +4 -0
- package/lib/esm/ECSqlTypes.js.map +1 -1
- package/lib/esm/ElementProps.d.ts +37 -1
- package/lib/esm/ElementProps.d.ts.map +1 -1
- package/lib/esm/ElementProps.js +2 -0
- package/lib/esm/ElementProps.js.map +1 -1
- package/lib/esm/EmphasizeElementsProps.d.ts +3 -0
- package/lib/esm/EmphasizeElementsProps.d.ts.map +1 -1
- package/lib/esm/EmphasizeElementsProps.js +1 -0
- package/lib/esm/EmphasizeElementsProps.js.map +1 -1
- package/lib/esm/EntityProps.d.ts +4 -0
- package/lib/esm/EntityProps.d.ts.map +1 -1
- package/lib/esm/EntityProps.js.map +1 -1
- package/lib/esm/Environment.d.ts +1 -0
- package/lib/esm/Environment.d.ts.map +1 -1
- package/lib/esm/Environment.js.map +1 -1
- package/lib/esm/FeatureSymbology.d.ts +3 -0
- package/lib/esm/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/FeatureSymbology.js.map +1 -1
- package/lib/esm/FeatureTable.d.ts +1 -0
- package/lib/esm/FeatureTable.d.ts.map +1 -1
- package/lib/esm/FeatureTable.js +1 -0
- package/lib/esm/FeatureTable.js.map +1 -1
- package/lib/esm/Fonts.d.ts +3 -0
- package/lib/esm/Fonts.d.ts.map +1 -1
- package/lib/esm/Fonts.js +1 -0
- package/lib/esm/Fonts.js.map +1 -1
- package/lib/esm/Frustum.d.ts +1 -0
- package/lib/esm/Frustum.d.ts.map +1 -1
- package/lib/esm/Frustum.js +1 -0
- package/lib/esm/Frustum.js.map +1 -1
- package/lib/esm/GeoCoordinateServices.d.ts +1 -0
- package/lib/esm/GeoCoordinateServices.d.ts.map +1 -1
- package/lib/esm/GeoCoordinateServices.js +1 -0
- package/lib/esm/GeoCoordinateServices.js.map +1 -1
- package/lib/esm/GeometryContainment.d.ts +2 -0
- package/lib/esm/GeometryContainment.d.ts.map +1 -1
- package/lib/esm/GeometryContainment.js.map +1 -1
- package/lib/esm/GeometryParams.d.ts +3 -0
- package/lib/esm/GeometryParams.d.ts.map +1 -1
- package/lib/esm/GeometryParams.js +3 -0
- package/lib/esm/GeometryParams.js.map +1 -1
- package/lib/esm/GeometrySummary.d.ts +3 -0
- package/lib/esm/GeometrySummary.d.ts.map +1 -1
- package/lib/esm/GeometrySummary.js +1 -0
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/GraphicParams.d.ts +1 -0
- package/lib/esm/GraphicParams.d.ts.map +1 -1
- package/lib/esm/GraphicParams.js +1 -0
- package/lib/esm/GraphicParams.js.map +1 -1
- package/lib/esm/GroundPlane.d.ts +1 -0
- package/lib/esm/GroundPlane.d.ts.map +1 -1
- package/lib/esm/GroundPlane.js.map +1 -1
- package/lib/esm/HSVColor.d.ts +4 -1
- package/lib/esm/HSVColor.d.ts.map +1 -1
- package/lib/esm/HSVColor.js +4 -1
- package/lib/esm/HSVColor.js.map +1 -1
- package/lib/esm/HiddenLine.d.ts +12 -17
- package/lib/esm/HiddenLine.d.ts.map +1 -1
- package/lib/esm/HiddenLine.js +6 -2
- package/lib/esm/HiddenLine.js.map +1 -1
- package/lib/esm/IModel.d.ts +6 -1
- package/lib/esm/IModel.d.ts.map +1 -1
- package/lib/esm/IModel.js.map +1 -1
- package/lib/esm/Image.d.ts +2 -0
- package/lib/esm/Image.d.ts.map +1 -1
- package/lib/esm/Image.js +2 -0
- package/lib/esm/Image.js.map +1 -1
- package/lib/esm/IpcAppProps.d.ts +1 -0
- package/lib/esm/IpcAppProps.d.ts.map +1 -1
- package/lib/esm/IpcAppProps.js.map +1 -1
- package/lib/esm/LightSettings.d.ts +5 -0
- package/lib/esm/LightSettings.d.ts.map +1 -1
- package/lib/esm/LightSettings.js.map +1 -1
- package/lib/esm/LinePixels.d.ts +1 -0
- package/lib/esm/LinePixels.d.ts.map +1 -1
- package/lib/esm/LinePixels.js +1 -0
- package/lib/esm/LinePixels.js.map +1 -1
- package/lib/esm/Localization.d.ts +1 -0
- package/lib/esm/Localization.d.ts.map +1 -1
- package/lib/esm/Localization.js.map +1 -1
- package/lib/esm/MassProperties.d.ts +27 -1
- package/lib/esm/MassProperties.d.ts.map +1 -1
- package/lib/esm/MassProperties.js +1 -0
- package/lib/esm/MassProperties.js.map +1 -1
- package/lib/esm/MaterialProps.d.ts +6 -0
- package/lib/esm/MaterialProps.d.ts.map +1 -1
- package/lib/esm/MaterialProps.js +1 -0
- package/lib/esm/MaterialProps.js.map +1 -1
- package/lib/esm/ModelClipGroup.d.ts +1 -0
- package/lib/esm/ModelClipGroup.d.ts.map +1 -1
- package/lib/esm/ModelClipGroup.js.map +1 -1
- package/lib/esm/ModelGeometryChanges.d.ts +9 -1
- package/lib/esm/ModelGeometryChanges.d.ts.map +1 -1
- package/lib/esm/ModelGeometryChanges.js.map +1 -1
- package/lib/esm/ModelProps.d.ts +6 -0
- package/lib/esm/ModelProps.d.ts.map +1 -1
- package/lib/esm/ModelProps.js.map +1 -1
- package/lib/esm/PlanProjectionSettings.d.ts +1 -0
- package/lib/esm/PlanProjectionSettings.d.ts.map +1 -1
- package/lib/esm/PlanProjectionSettings.js.map +1 -1
- package/lib/esm/PlanarClipMask.d.ts +3 -0
- package/lib/esm/PlanarClipMask.d.ts.map +1 -1
- package/lib/esm/PlanarClipMask.js +2 -0
- package/lib/esm/PlanarClipMask.js.map +1 -1
- package/lib/esm/RgbColor.d.ts +1 -0
- package/lib/esm/RgbColor.d.ts.map +1 -1
- package/lib/esm/RgbColor.js.map +1 -1
- package/lib/esm/SessionProps.d.ts +1 -0
- package/lib/esm/SessionProps.d.ts.map +1 -1
- package/lib/esm/SessionProps.js.map +1 -1
- package/lib/esm/SkyBox.d.ts +4 -0
- package/lib/esm/SkyBox.d.ts.map +1 -1
- package/lib/esm/SkyBox.js +1 -0
- package/lib/esm/SkyBox.js.map +1 -1
- package/lib/esm/SolarShadows.d.ts +1 -0
- package/lib/esm/SolarShadows.d.ts.map +1 -1
- package/lib/esm/SolarShadows.js.map +1 -1
- package/lib/esm/SpatialClassification.d.ts +5 -0
- package/lib/esm/SpatialClassification.d.ts.map +1 -1
- package/lib/esm/SpatialClassification.js +2 -0
- package/lib/esm/SpatialClassification.js.map +1 -1
- package/lib/esm/TerrainSettings.d.ts +3 -0
- package/lib/esm/TerrainSettings.d.ts.map +1 -1
- package/lib/esm/TerrainSettings.js +1 -0
- package/lib/esm/TerrainSettings.js.map +1 -1
- package/lib/esm/TextureProps.d.ts +3 -0
- package/lib/esm/TextureProps.d.ts.map +1 -1
- package/lib/esm/TextureProps.js.map +1 -1
- package/lib/esm/ThematicDisplay.d.ts +9 -1
- package/lib/esm/ThematicDisplay.d.ts.map +1 -1
- package/lib/esm/ThematicDisplay.js +5 -1
- package/lib/esm/ThematicDisplay.js.map +1 -1
- package/lib/esm/Thumbnail.d.ts +2 -0
- package/lib/esm/Thumbnail.d.ts.map +1 -1
- package/lib/esm/Thumbnail.js.map +1 -1
- package/lib/esm/TileProps.d.ts +1 -0
- package/lib/esm/TileProps.d.ts.map +1 -1
- package/lib/esm/TileProps.js.map +1 -1
- package/lib/esm/Tween.d.ts +16 -4
- package/lib/esm/Tween.d.ts.map +1 -1
- package/lib/esm/Tween.js.map +1 -1
- package/lib/esm/TxnAction.d.ts +1 -0
- package/lib/esm/TxnAction.d.ts.map +1 -1
- package/lib/esm/TxnAction.js +1 -0
- package/lib/esm/TxnAction.js.map +1 -1
- package/lib/esm/ViewDetails.d.ts +3 -0
- package/lib/esm/ViewDetails.d.ts.map +1 -1
- package/lib/esm/ViewDetails.js +1 -0
- package/lib/esm/ViewDetails.js.map +1 -1
- package/lib/esm/ViewFlags.d.ts +4 -0
- package/lib/esm/ViewFlags.d.ts.map +1 -1
- package/lib/esm/ViewFlags.js +1 -0
- package/lib/esm/ViewFlags.js.map +1 -1
- package/lib/esm/ViewProps.d.ts +69 -3
- package/lib/esm/ViewProps.d.ts.map +1 -1
- package/lib/esm/ViewProps.js.map +1 -1
- package/lib/esm/WhiteOnWhiteReversalSettings.d.ts +1 -0
- package/lib/esm/WhiteOnWhiteReversalSettings.d.ts.map +1 -1
- package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/esm/domains/FunctionalElementProps.d.ts +4 -1
- package/lib/esm/domains/FunctionalElementProps.d.ts.map +1 -1
- package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
- package/lib/esm/domains/GenericElementProps.d.ts +8 -2
- package/lib/esm/domains/GenericElementProps.d.ts.map +1 -1
- package/lib/esm/domains/GenericElementProps.js.map +1 -1
- package/lib/esm/geometry/AdditionalTransform.d.ts +2 -0
- package/lib/esm/geometry/AdditionalTransform.d.ts.map +1 -1
- package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
- package/lib/esm/geometry/Cartographic.d.ts +1 -0
- package/lib/esm/geometry/Cartographic.d.ts.map +1 -1
- package/lib/esm/geometry/Cartographic.js.map +1 -1
- package/lib/esm/geometry/CoordinateReferenceSystem.d.ts +5 -0
- package/lib/esm/geometry/CoordinateReferenceSystem.d.ts.map +1 -1
- package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/esm/geometry/ElementGeometry.d.ts +2 -0
- package/lib/esm/geometry/ElementGeometry.d.ts.map +1 -1
- package/lib/esm/geometry/ElementGeometry.js +1 -0
- package/lib/esm/geometry/ElementGeometry.js.map +1 -1
- package/lib/esm/geometry/GeodeticDatum.d.ts +80 -1
- package/lib/esm/geometry/GeodeticDatum.d.ts.map +1 -1
- package/lib/esm/geometry/GeodeticDatum.js +77 -0
- package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
- package/lib/esm/geometry/GeodeticEllipsoid.d.ts +1 -0
- package/lib/esm/geometry/GeodeticEllipsoid.d.ts.map +1 -1
- package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/esm/geometry/GeometryStream.d.ts +15 -0
- package/lib/esm/geometry/GeometryStream.d.ts.map +1 -1
- package/lib/esm/geometry/GeometryStream.js +11 -7
- package/lib/esm/geometry/GeometryStream.js.map +1 -1
- package/lib/esm/geometry/ImageGraphic.d.ts +2 -0
- package/lib/esm/geometry/ImageGraphic.d.ts.map +1 -1
- package/lib/esm/geometry/ImageGraphic.js.map +1 -1
- package/lib/esm/geometry/Placement.d.ts +6 -0
- package/lib/esm/geometry/Placement.d.ts.map +1 -1
- package/lib/esm/geometry/Placement.js.map +1 -1
- package/lib/esm/geometry/Projection.d.ts +6 -0
- package/lib/esm/geometry/Projection.d.ts.map +1 -1
- package/lib/esm/geometry/Projection.js.map +1 -1
- package/lib/esm/geometry/TextString.d.ts +1 -0
- package/lib/esm/geometry/TextString.d.ts.map +1 -1
- package/lib/esm/geometry/TextString.js.map +1 -1
- package/lib/esm/ipc/IpcSocket.d.ts +1 -0
- package/lib/esm/ipc/IpcSocket.d.ts.map +1 -1
- package/lib/esm/ipc/IpcSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.d.ts.map +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.js +1 -0
- package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.d.ts +5 -2
- package/lib/esm/rpc/IModelReadRpcInterface.d.ts.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js +4 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.d.ts +4 -2
- package/lib/esm/rpc/IModelTileRpcInterface.d.ts.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.js +4 -2
- package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/esm/rpc/core/RpcControl.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcControl.js +1 -0
- package/lib/esm/rpc/core/RpcControl.js.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.d.ts +3 -0
- package/lib/esm/rpc/core/RpcInvocation.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.js +35 -9
- package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/esm/rpc/core/RpcMarshaling.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcMarshaling.js +1 -0
- package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/esm/rpc/core/RpcOperation.d.ts +2 -0
- package/lib/esm/rpc/core/RpcOperation.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcOperation.js +2 -0
- package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
- package/lib/esm/rpc/core/RpcProtocol.d.ts +24 -1
- package/lib/esm/rpc/core/RpcProtocol.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcProtocol.js +14 -1
- package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.d.ts +3 -0
- package/lib/esm/rpc/core/RpcRequest.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.js +37 -2
- package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.d.ts.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +0 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/RpcMultipart.d.ts +1 -0
- package/lib/esm/rpc/web/RpcMultipart.d.ts.map +1 -1
- package/lib/esm/rpc/web/RpcMultipart.js +1 -0
- package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcLogging.d.ts.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcLogging.js +14 -10
- package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +3 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.js +8 -7
- package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +5 -6
- package/lib/esm/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.js +47 -28
- package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts +1 -0
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts.map +1 -1
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.js +1 -0
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/esm/tile/ElementGraphics.d.ts +20 -2
- package/lib/esm/tile/ElementGraphics.d.ts.map +1 -1
- package/lib/esm/tile/ElementGraphics.js.map +1 -1
- package/lib/esm/tile/IModelTileIO.d.ts +2 -2
- package/lib/esm/tile/IModelTileIO.js +2 -2
- package/lib/esm/tile/IModelTileIO.js.map +1 -1
- package/lib/esm/tile/TileMetadata.d.ts +18 -13
- package/lib/esm/tile/TileMetadata.d.ts.map +1 -1
- package/lib/esm/tile/TileMetadata.js +163 -133
- package/lib/esm/tile/TileMetadata.js.map +1 -1
- package/package.json +25 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebAppRpcRequest.js","sourceRoot":"","sources":["../../../../src/rpc/web/WebAppRpcRequest.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 \"@ungap/url-search-params/index\";\r\nimport { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { IModelError, ServerError, ServerTimeoutError } from \"../../IModelError\";\r\nimport { RpcInterface } from \"../../RpcInterface\";\r\nimport { RpcContentType, RpcProtocolEvent, RpcRequestStatus, RpcResponseCacheControl, WEB_RPC_CONSTANTS } from \"../core/RpcConstants\";\r\nimport { MarshalingBinaryMarker, RpcSerializedValue } from \"../core/RpcMarshaling\";\r\nimport { RpcRequestFulfillment, SerializedRpcOperation, SerializedRpcRequest } from \"../core/RpcProtocol\";\r\nimport { RpcRequest } from \"../core/RpcRequest\";\r\nimport { RpcMultipartParser } from \"./multipart/RpcMultipartParser\";\r\nimport { RpcMultipart } from \"./RpcMultipart\";\r\nimport { HttpServerRequest, HttpServerResponse, WebAppRpcProtocol } from \"./WebAppRpcProtocol\";\r\nimport { SerializedRpcActivity } from \"../core/RpcInvocation\";\r\n\r\n/** @internal */\r\nexport type HttpMethod_T = \"get\" | \"put\" | \"post\" | \"delete\" | \"options\" | \"head\" | \"patch\" | \"trace\"; // eslint-disable-line @typescript-eslint/naming-convention\r\n\r\n/** A web application RPC request.\r\n * @internal\r\n */\r\nexport class WebAppRpcRequest extends RpcRequest {\r\n private _loading: boolean = false;\r\n private _request: RequestInit = {};\r\n private _pathSuffix: string = \"\";\r\n private get _headers() { return this._request.headers as { [key: string]: string }; }\r\n\r\n /** The maximum size permitted for an encoded component in a URL.\r\n * @note This is used for features like encoding the payload of a cacheable request in the URL.\r\n */\r\n public static maxUrlComponentSize = 1024;\r\n\r\n /** The HTTP method for this request. */\r\n public override method: HttpMethod_T;\r\n\r\n /** Convenience access to the protocol of this request. */\r\n public override readonly protocol: WebAppRpcProtocol = this.client.configuration.protocol as any;\r\n\r\n /** Standardized access to metadata about the request (useful for purposes such as logging). */\r\n public metadata = { status: 0, message: \"\" };\r\n\r\n /** Parse headers */\r\n private static parseHeaders(protocol: WebAppRpcProtocol, req: HttpServerRequest): SerializedRpcActivity {\r\n const headerNames: SerializedRpcActivity = protocol.serializedClientRequestContextHeaderNames;\r\n const parsedHeaders: SerializedRpcActivity = {\r\n id: req.header(headerNames.id) || \"\",\r\n applicationId: req.header(headerNames.applicationId) || \"\",\r\n applicationVersion: req.header(headerNames.applicationVersion) || \"\",\r\n sessionId: req.header(headerNames.sessionId) || \"\",\r\n authorization: (headerNames.authorization ? req.header(headerNames.authorization) : \"\") ?? \"\",\r\n };\r\n return parsedHeaders;\r\n }\r\n\r\n /** Parses a request. */\r\n public static async parseRequest(protocol: WebAppRpcProtocol, req: HttpServerRequest): Promise<SerializedRpcRequest> {\r\n const operation = protocol.getOperationFromPath(req.url!);\r\n\r\n const parsedHeaders = this.parseHeaders(protocol, req);\r\n\r\n const request: SerializedRpcRequest = {\r\n ...parsedHeaders,\r\n operation: {\r\n interfaceDefinition: operation.interfaceDefinition,\r\n operationName: operation.operationName,\r\n interfaceVersion: operation.interfaceVersion,\r\n },\r\n method: req.method,\r\n path: req.url!,\r\n parameters: operation.encodedRequest ? WebAppRpcRequest.parseFromPath(operation) : await WebAppRpcRequest.parseFromBody(req),\r\n caching: operation.encodedRequest ? RpcResponseCacheControl.Immutable : RpcResponseCacheControl.None,\r\n };\r\n\r\n request.ip = req.ip;\r\n\r\n request.protocolVersion = 0;\r\n\r\n if (protocol.protocolVersionHeaderName) {\r\n const version = req.header(protocol.protocolVersionHeaderName);\r\n if (version) {\r\n request.protocolVersion = parseInt(version, 10);\r\n }\r\n }\r\n\r\n if (!request.id) {\r\n throw new IModelError(BentleyStatus.ERROR, `Invalid request.`);\r\n }\r\n\r\n return request;\r\n }\r\n\r\n /** Sends the response for a web request. */\r\n public static sendResponse(protocol: WebAppRpcProtocol, request: SerializedRpcRequest, fulfillment: RpcRequestFulfillment, res: HttpServerResponse) {\r\n const transportType = WebAppRpcRequest.computeTransportType(fulfillment.result, fulfillment.rawResult);\r\n if (transportType === RpcContentType.Binary) {\r\n WebAppRpcRequest.sendBinary(protocol, request, fulfillment, res);\r\n } else if (transportType === RpcContentType.Multipart) {\r\n WebAppRpcRequest.sendMultipart(protocol, request, fulfillment, res);\r\n } else if (transportType === RpcContentType.Stream) {\r\n WebAppRpcRequest.sendStream(protocol, request, fulfillment, res);\r\n } else {\r\n WebAppRpcRequest.sendText(protocol, request, fulfillment, res);\r\n }\r\n }\r\n\r\n /** Determines the most efficient transport type for an RPC value. */\r\n protected static computeTransportType(value: RpcSerializedValue, source: any): RpcContentType {\r\n if (source instanceof Uint8Array || (Array.isArray(source) && source[0] instanceof Uint8Array)) {\r\n return RpcContentType.Binary;\r\n } else if (value.data.length > 0) {\r\n return RpcContentType.Multipart;\r\n } else if (value.stream) {\r\n return RpcContentType.Stream;\r\n } else {\r\n return RpcContentType.Text;\r\n }\r\n }\r\n\r\n /** Constructs a web application request. */\r\n public constructor(client: RpcInterface, operation: string, parameters: any[]) {\r\n super(client, operation, parameters);\r\n this.path = this.protocol.supplyPathForOperation(this.operation, this);\r\n this.method = \"head\";\r\n this._request.headers = {};\r\n }\r\n\r\n /** @internal */\r\n public async preflight(): Promise<Response | undefined> {\r\n this.method = \"options\";\r\n this._request.method = \"options\";\r\n await this.setHeaders();\r\n await this.send();\r\n return this._response;\r\n }\r\n\r\n protected override isHeaderAvailable(name: string): boolean {\r\n const allowed = this.protocol.allowedHeaders;\r\n return allowed.has(\"*\") || allowed.has(name);\r\n }\r\n\r\n /** Sets request header values. */\r\n protected setHeader(name: string, value: string): void {\r\n this._headers[name] = value;\r\n }\r\n\r\n /** Sends the request. */\r\n protected async send(): Promise<number> {\r\n if (this.method !== \"options\") {\r\n await this.protocol.initialize();\r\n }\r\n\r\n this._loading = true;\r\n await this.setupTransport();\r\n\r\n return new Promise<number>(async (resolve, reject) => {\r\n try {\r\n resolve(await this.performFetch());\r\n } catch (reason) {\r\n reject(new ServerError(-1, typeof (reason) === \"string\" ? reason : \"Server connection error.\"));\r\n }\r\n });\r\n }\r\n\r\n protected override computeRetryAfter(attempts: number): number {\r\n const retryAfter = this._response && this._response.headers.get(\"Retry-After\");\r\n if (retryAfter) {\r\n this.resetTransientFaultCount();\r\n\r\n const r = Number(retryAfter);\r\n if (Number.isFinite(r)) {\r\n return r * 1000;\r\n }\r\n\r\n const d = Date.parse(retryAfter);\r\n if (!Number.isNaN(d)) {\r\n return d - Date.now();\r\n }\r\n } else {\r\n this.recordTransientFault();\r\n }\r\n\r\n return super.computeRetryAfter(attempts);\r\n }\r\n\r\n protected override handleUnknownResponse(code: number) {\r\n if (this.protocol.isTimeout(code)) {\r\n this.reject(new ServerTimeoutError(\"Request timeout.\"));\r\n } else {\r\n this.reject(new ServerError(code, \"Unknown server response code.\"));\r\n }\r\n }\r\n\r\n protected async load(): Promise<RpcSerializedValue> {\r\n return new Promise<RpcSerializedValue>(async (resolve, reject) => {\r\n try {\r\n if (!this._loading)\r\n return;\r\n\r\n const response = this._response;\r\n if (!response) {\r\n reject(new IModelError(BentleyStatus.ERROR, \"Invalid state.\"));\r\n return;\r\n }\r\n\r\n const contentType = response.headers.get(WEB_RPC_CONSTANTS.CONTENT);\r\n const responseType = WebAppRpcProtocol.computeContentType(contentType);\r\n\r\n if (responseType === RpcContentType.Binary) {\r\n resolve(await this.loadBinary(response));\r\n } else if (responseType === RpcContentType.Multipart) {\r\n resolve(await this.loadMultipart(response, contentType!));\r\n } else {\r\n resolve(await this.loadText(response));\r\n }\r\n\r\n this._loading = false;\r\n this.setLastUpdatedTime();\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.ResponseLoaded, this);\r\n } catch (reason) {\r\n if (!this._loading)\r\n return;\r\n\r\n this._loading = false;\r\n reject(new ServerError(this.metadata.status, typeof (reason) === \"string\" ? reason : \"Unknown server response error.\"));\r\n }\r\n });\r\n }\r\n\r\n /** Override to supply an alternate fetch function. */\r\n protected supplyFetch(): typeof fetch {\r\n return fetch;\r\n }\r\n\r\n /** Override to supply an alternate Request function. */\r\n protected supplyRequest(): typeof Request {\r\n return Request;\r\n }\r\n\r\n private static configureResponse(protocol: WebAppRpcProtocol, request: SerializedRpcRequest, fulfillment: RpcRequestFulfillment, res: HttpServerResponse) {\r\n const success = protocol.getStatus(fulfillment.status) === RpcRequestStatus.Resolved;\r\n\r\n if (success && request.caching === RpcResponseCacheControl.Immutable) {\r\n res.set(\"Cache-Control\", \"private, max-age=31536000, immutable\");\r\n }\r\n\r\n if (fulfillment.retry) {\r\n res.set(\"Retry-After\", fulfillment.retry);\r\n }\r\n }\r\n\r\n private static sendText(protocol: WebAppRpcProtocol, request: SerializedRpcRequest, fulfillment: RpcRequestFulfillment, res: HttpServerResponse) {\r\n const response = (fulfillment.status === 204) ? \"\" : fulfillment.result.objects;\r\n res.set(WEB_RPC_CONSTANTS.CONTENT, WEB_RPC_CONSTANTS.TEXT);\r\n WebAppRpcRequest.configureResponse(protocol, request, fulfillment, res);\r\n res.status(fulfillment.status).send(response);\r\n }\r\n\r\n private static sendBinary(protocol: WebAppRpcProtocol, request: SerializedRpcRequest, fulfillment: RpcRequestFulfillment, res: HttpServerResponse) {\r\n const data = fulfillment.result.data[0];\r\n const response = Buffer.isBuffer(data) ? data : Buffer.from(data);\r\n\r\n res.set(WEB_RPC_CONSTANTS.CONTENT, WEB_RPC_CONSTANTS.BINARY);\r\n WebAppRpcRequest.configureResponse(protocol, request, fulfillment, res);\r\n res.status(fulfillment.status).send(response);\r\n }\r\n\r\n private static sendMultipart(protocol: WebAppRpcProtocol, request: SerializedRpcRequest, fulfillment: RpcRequestFulfillment, res: HttpServerResponse) {\r\n const response = RpcMultipart.createStream(fulfillment.result);\r\n const headers = response.getHeaders();\r\n for (const header in headers) {\r\n if (headers.hasOwnProperty(header)) {\r\n res.set(header, headers[header]);\r\n }\r\n }\r\n\r\n WebAppRpcRequest.configureResponse(protocol, request, fulfillment, res);\r\n res.status(fulfillment.status);\r\n response.pipe(res);\r\n }\r\n\r\n private static sendStream(protocol: WebAppRpcProtocol, request: SerializedRpcRequest, fulfillment: RpcRequestFulfillment, res: HttpServerResponse) {\r\n const response = fulfillment.result.stream;\r\n WebAppRpcRequest.configureResponse(protocol, request, fulfillment, res);\r\n res.status(fulfillment.status);\r\n response!.pipe(res);\r\n }\r\n\r\n private static parseFromPath(operation: SerializedRpcOperation): RpcSerializedValue {\r\n const decoded = operation.encodedRequest ? Buffer.from(operation.encodedRequest, \"base64\").toString(\"binary\") : \"\";\r\n return RpcSerializedValue.create(decoded);\r\n }\r\n\r\n private static async parseFromBody(req: HttpServerRequest): Promise<RpcSerializedValue> {\r\n const contentType = WebAppRpcProtocol.computeContentType(req.header(WEB_RPC_CONSTANTS.CONTENT));\r\n if (contentType === RpcContentType.Binary) {\r\n const objects = JSON.stringify([MarshalingBinaryMarker.createDefault()]);\r\n const data = [req.body as Buffer];\r\n return RpcSerializedValue.create(objects, data);\r\n } else if (contentType === RpcContentType.Multipart) {\r\n return RpcMultipart.parseRequest(req);\r\n } else {\r\n return RpcSerializedValue.create(req.body as string);\r\n }\r\n }\r\n\r\n private async performFetch(): Promise<number> {\r\n const requestClass = this.supplyRequest();\r\n const fetchFunction = this.supplyFetch();\r\n\r\n const path = new URL(this.path, typeof (location) !== \"undefined\" ? location.origin : undefined);\r\n if (this._pathSuffix) {\r\n const params = new URLSearchParams();\r\n params.set(\"parameters\", this._pathSuffix);\r\n path.search = `?${params.toString()}`;\r\n }\r\n\r\n const request = new requestClass(path.toString(), this._request);\r\n const response = await fetchFunction(request);\r\n this._response = response;\r\n this.metadata.status = response.status;\r\n return response.status;\r\n }\r\n\r\n private async loadText(response: Response) {\r\n const value = await response.text();\r\n this.metadata.message = value;\r\n return RpcSerializedValue.create(value);\r\n }\r\n\r\n private async loadBinary(response: Response) {\r\n const value = new Uint8Array(await response.arrayBuffer());\r\n const objects = JSON.stringify(MarshalingBinaryMarker.createDefault());\r\n return RpcSerializedValue.create(objects, [value]);\r\n }\r\n\r\n private async loadMultipart(response: Response, contentType: string) {\r\n const data = await response.arrayBuffer();\r\n const value = new RpcMultipartParser(contentType, Buffer.from(data)).parse();\r\n return value;\r\n }\r\n\r\n private async setupTransport(): Promise<void> {\r\n if (this.method === \"options\") {\r\n return;\r\n }\r\n\r\n const parameters = (await this.protocol.serialize(this)).parameters;\r\n const transportType = WebAppRpcRequest.computeTransportType(parameters, this.parameters);\r\n\r\n if (transportType === RpcContentType.Binary) {\r\n this.setupBinaryTransport(parameters);\r\n } else if (transportType === RpcContentType.Multipart) {\r\n this.setupMultipartTransport(parameters);\r\n } else {\r\n this.setupTextTransport(parameters);\r\n }\r\n }\r\n\r\n private setupBinaryTransport(parameters: RpcSerializedValue) {\r\n this._headers[WEB_RPC_CONSTANTS.CONTENT] = WEB_RPC_CONSTANTS.BINARY;\r\n this._request.method = \"post\";\r\n this._request.body = parameters.data[0];\r\n }\r\n\r\n private setupMultipartTransport(parameters: RpcSerializedValue) {\r\n // IMPORTANT: do not set a multipart Content-Type header value. The browser does this automatically!\r\n delete this._headers[WEB_RPC_CONSTANTS.CONTENT];\r\n this._request.method = \"post\";\r\n this._request.body = RpcMultipart.createForm(parameters);\r\n }\r\n\r\n private setupTextTransport(parameters: RpcSerializedValue) {\r\n if (this.operation.policy.allowResponseCaching(this)) {\r\n const encodedBody = btoa(parameters.objects); // eslint-disable-line deprecation/deprecation\r\n if (encodedBody.length <= WebAppRpcRequest.maxUrlComponentSize) {\r\n this._request.method = \"get\";\r\n this._request.body = undefined;\r\n delete this._headers[WEB_RPC_CONSTANTS.CONTENT];\r\n this._pathSuffix = encodedBody;\r\n return;\r\n }\r\n }\r\n\r\n this._pathSuffix = \"\";\r\n this._headers[WEB_RPC_CONSTANTS.CONTENT] = WEB_RPC_CONSTANTS.TEXT;\r\n this._request.method = \"post\";\r\n this._request.body = parameters.objects;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"WebAppRpcRequest.js","sourceRoot":"","sources":["../../../../src/rpc/web/WebAppRpcRequest.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 { Buffer } from \"buffer\";\r\nimport { IModelError, ServerError, ServerTimeoutError } from \"../../IModelError\";\r\nimport { RpcInterface } from \"../../RpcInterface\";\r\nimport { RpcContentType, RpcProtocolEvent, RpcRequestStatus, RpcResponseCacheControl, WEB_RPC_CONSTANTS } from \"../core/RpcConstants\";\r\nimport { SerializedRpcActivity } from \"../core/RpcInvocation\";\r\nimport { MarshalingBinaryMarker, RpcSerializedValue } from \"../core/RpcMarshaling\";\r\nimport { RpcProtocol, RpcRequestFulfillment, SerializedRpcOperation, SerializedRpcRequest } from \"../core/RpcProtocol\";\r\nimport { RpcRequest } from \"../core/RpcRequest\";\r\nimport { RpcMultipartParser } from \"./multipart/RpcMultipartParser\";\r\nimport { ReadableFormData, RpcMultipart } from \"./RpcMultipart\";\r\nimport { HttpServerRequest, HttpServerResponse, WebAppRpcProtocol } from \"./WebAppRpcProtocol\";\r\n\r\n/** @internal */\r\nexport type HttpMethod_T = \"get\" | \"put\" | \"post\" | \"delete\" | \"options\" | \"head\" | \"patch\" | \"trace\"; // eslint-disable-line @typescript-eslint/naming-convention\r\n\r\n/** A web application RPC request.\r\n * @internal\r\n */\r\nexport class WebAppRpcRequest extends RpcRequest {\r\n private _loading: boolean = false;\r\n private _request: RequestInit = {};\r\n private _pathSuffix: string = \"\";\r\n private get _headers() { return this._request.headers as { [key: string]: string }; }\r\n\r\n /** The maximum size permitted for an encoded component in a URL.\r\n * @note This is used for features like encoding the payload of a cacheable request in the URL.\r\n */\r\n public static maxUrlComponentSize = 4096;\r\n\r\n /** The HTTP method for this request. */\r\n public override method: HttpMethod_T;\r\n\r\n /** Convenience access to the protocol of this request. */\r\n public override readonly protocol: WebAppRpcProtocol = this.client.configuration.protocol as any;\r\n\r\n /** Standardized access to metadata about the request (useful for purposes such as logging). */\r\n public metadata = { status: 0, message: \"\" };\r\n\r\n /** Parse headers */\r\n private static parseHeaders(protocol: WebAppRpcProtocol, req: HttpServerRequest): SerializedRpcActivity {\r\n const headerNames: SerializedRpcActivity = protocol.serializedClientRequestContextHeaderNames;\r\n const parsedHeaders: SerializedRpcActivity = {\r\n id: req.header(headerNames.id) || \"\",\r\n applicationId: req.header(headerNames.applicationId) || \"\",\r\n applicationVersion: req.header(headerNames.applicationVersion) || \"\",\r\n sessionId: req.header(headerNames.sessionId) || \"\",\r\n authorization: (headerNames.authorization ? req.header(headerNames.authorization) : \"\") ?? \"\",\r\n };\r\n return parsedHeaders;\r\n }\r\n\r\n /** Parses a request. */\r\n public static async parseRequest(protocol: WebAppRpcProtocol, req: HttpServerRequest): Promise<SerializedRpcRequest> {\r\n const operation = protocol.getOperationFromPath(req.url!);\r\n\r\n const parsedHeaders = this.parseHeaders(protocol, req);\r\n\r\n const request: SerializedRpcRequest = {\r\n ...parsedHeaders,\r\n operation: {\r\n interfaceDefinition: operation.interfaceDefinition,\r\n operationName: operation.operationName,\r\n interfaceVersion: operation.interfaceVersion,\r\n },\r\n method: req.method,\r\n path: req.url!,\r\n parameters: operation.encodedRequest ? WebAppRpcRequest.parseFromPath(operation) : await WebAppRpcRequest.parseFromBody(req),\r\n caching: operation.encodedRequest ? RpcResponseCacheControl.Immutable : RpcResponseCacheControl.None,\r\n };\r\n\r\n request.ip = req.ip;\r\n\r\n request.protocolVersion = 0;\r\n\r\n if (protocol.protocolVersionHeaderName) {\r\n const version = req.header(protocol.protocolVersionHeaderName);\r\n if (version) {\r\n request.protocolVersion = parseInt(version, 10);\r\n }\r\n }\r\n\r\n if (!request.id) {\r\n throw new IModelError(BentleyStatus.ERROR, `Invalid request.`);\r\n }\r\n\r\n return request;\r\n }\r\n\r\n /** Sends the response for a web request. */\r\n public static async sendResponse(\r\n protocol: WebAppRpcProtocol,\r\n request: SerializedRpcRequest,\r\n fulfillment: RpcRequestFulfillment,\r\n req: HttpServerRequest,\r\n res: HttpServerResponse,\r\n ): Promise<void> {\r\n const versionHeader = protocol.protocolVersionHeaderName;\r\n if (versionHeader && RpcProtocol.protocolVersion) {\r\n res.set(versionHeader, RpcProtocol.protocolVersion.toString());\r\n }\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const { Readable, Stream } = await import(/* webpackIgnore: true */ \"stream\");\r\n const { createGzip } = await import(/* webpackIgnore: true */ \"zlib\");\r\n\r\n const transportType = WebAppRpcRequest.computeTransportType(fulfillment.result, fulfillment.rawResult);\r\n let responseBody;\r\n if (transportType === RpcContentType.Binary) {\r\n responseBody = WebAppRpcRequest.configureBinary(fulfillment, res);\r\n } else if (transportType === RpcContentType.Multipart) {\r\n responseBody = WebAppRpcRequest.configureMultipart(fulfillment, res);\r\n } else if (transportType === RpcContentType.Stream) {\r\n responseBody = WebAppRpcRequest.configureStream(fulfillment);\r\n } else {\r\n responseBody = WebAppRpcRequest.configureText(fulfillment, res);\r\n }\r\n\r\n WebAppRpcRequest.configureResponse(protocol, request, fulfillment, res);\r\n res.status(fulfillment.status);\r\n\r\n if (fulfillment.allowCompression && req.header(\"Accept-Encoding\")?.includes(\"gzip\")) {\r\n res.set(\"Content-Encoding\", \"gzip\");\r\n const readableResponseBody = (responseBody instanceof Stream) ? responseBody : Readable.from(responseBody);\r\n responseBody = readableResponseBody.pipe(createGzip());\r\n }\r\n\r\n // This check should in theory look for instances of Readable, but that would break backend implementation at\r\n // core/backend/src/RpcBackend.ts\r\n if (responseBody instanceof Stream) {\r\n responseBody.pipe(res);\r\n } else {\r\n res.send(responseBody);\r\n }\r\n }\r\n\r\n /** Determines the most efficient transport type for an RPC value. */\r\n protected static computeTransportType(value: RpcSerializedValue, source: any): RpcContentType {\r\n if (source instanceof Uint8Array || (Array.isArray(source) && source[0] instanceof Uint8Array)) {\r\n return RpcContentType.Binary;\r\n } else if (value.data.length > 0) {\r\n return RpcContentType.Multipart;\r\n } else if (value.stream) {\r\n return RpcContentType.Stream;\r\n } else {\r\n return RpcContentType.Text;\r\n }\r\n }\r\n\r\n /** Constructs a web application request. */\r\n public constructor(client: RpcInterface, operation: string, parameters: any[]) {\r\n super(client, operation, parameters);\r\n this.path = this.protocol.supplyPathForOperation(this.operation, this);\r\n this.method = \"head\";\r\n this._request.headers = {};\r\n }\r\n\r\n /** @internal */\r\n public async preflight(): Promise<Response | undefined> {\r\n this.method = \"options\";\r\n this._request.method = \"options\";\r\n await this.setHeaders();\r\n await this.send();\r\n return this._response;\r\n }\r\n\r\n protected override isHeaderAvailable(name: string): boolean {\r\n const allowed = this.protocol.allowedHeaders;\r\n return allowed.has(\"*\") || allowed.has(name);\r\n }\r\n\r\n /** Sets request header values. */\r\n protected setHeader(name: string, value: string): void {\r\n this._headers[name] = value;\r\n }\r\n\r\n /** Sends the request. */\r\n protected async send(): Promise<number> {\r\n this._loading = true;\r\n await this.setupTransport();\r\n\r\n return new Promise<number>(async (resolve, reject) => {\r\n try {\r\n resolve(await this.performFetch());\r\n } catch (reason) {\r\n reject(new ServerError(-1, typeof (reason) === \"string\" ? reason : \"Server connection error.\"));\r\n }\r\n });\r\n }\r\n\r\n protected override computeRetryAfter(attempts: number): number {\r\n const retryAfter = this._response && this._response.headers.get(\"Retry-After\");\r\n if (retryAfter) {\r\n this.resetTransientFaultCount();\r\n\r\n const r = Number(retryAfter);\r\n if (Number.isFinite(r)) {\r\n return r * 1000;\r\n }\r\n\r\n const d = Date.parse(retryAfter);\r\n if (!Number.isNaN(d)) {\r\n return d - Date.now();\r\n }\r\n } else {\r\n this.recordTransientFault();\r\n }\r\n\r\n return super.computeRetryAfter(attempts);\r\n }\r\n\r\n protected override handleUnknownResponse(code: number) {\r\n if (this.protocol.isTimeout(code)) {\r\n this.reject(new ServerTimeoutError(\"Request timeout.\"));\r\n } else {\r\n this.reject(new ServerError(code, \"Unknown server response code.\"));\r\n }\r\n }\r\n\r\n protected async load(): Promise<RpcSerializedValue> {\r\n return new Promise<RpcSerializedValue>(async (resolve, reject) => {\r\n try {\r\n if (!this._loading)\r\n return;\r\n\r\n const response = this._response;\r\n if (!response) {\r\n reject(new IModelError(BentleyStatus.ERROR, \"Invalid state.\"));\r\n return;\r\n }\r\n\r\n if (this.protocol.protocolVersionHeaderName) {\r\n const version = response.headers.get(this.protocol.protocolVersionHeaderName);\r\n if (version) {\r\n this.responseProtocolVersion = parseInt(version, 10);\r\n }\r\n }\r\n\r\n const contentType = response.headers.get(WEB_RPC_CONSTANTS.CONTENT);\r\n const responseType = WebAppRpcProtocol.computeContentType(contentType);\r\n\r\n if (responseType === RpcContentType.Binary) {\r\n resolve(await this.loadBinary(response));\r\n } else if (responseType === RpcContentType.Multipart) {\r\n resolve(await this.loadMultipart(response, contentType!));\r\n } else {\r\n resolve(await this.loadText(response));\r\n }\r\n\r\n this._loading = false;\r\n this.setLastUpdatedTime();\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.ResponseLoaded, this);\r\n } catch (reason) {\r\n if (!this._loading)\r\n return;\r\n\r\n this._loading = false;\r\n reject(new ServerError(this.metadata.status, typeof (reason) === \"string\" ? reason : \"Unknown server response error.\"));\r\n }\r\n });\r\n }\r\n\r\n /** Override to supply an alternate fetch function. */\r\n protected supplyFetch(): typeof fetch {\r\n return fetch;\r\n }\r\n\r\n /** Override to supply an alternate Request function. */\r\n protected supplyRequest(): typeof Request {\r\n return Request;\r\n }\r\n\r\n private static configureResponse(protocol: WebAppRpcProtocol, request: SerializedRpcRequest, fulfillment: RpcRequestFulfillment, res: HttpServerResponse) {\r\n const success = protocol.getStatus(fulfillment.status) === RpcRequestStatus.Resolved;\r\n\r\n if (success && request.caching === RpcResponseCacheControl.Immutable) {\r\n res.set(\"Cache-Control\", \"private, max-age=31536000, immutable\");\r\n }\r\n\r\n if (fulfillment.retry) {\r\n res.set(\"Retry-After\", fulfillment.retry);\r\n }\r\n }\r\n\r\n private static configureText(fulfillment: RpcRequestFulfillment, res: HttpServerResponse): string {\r\n res.set(WEB_RPC_CONSTANTS.CONTENT, WEB_RPC_CONSTANTS.TEXT);\r\n return (fulfillment.status === 204) ? \"\" : fulfillment.result.objects;\r\n }\r\n\r\n private static configureBinary(fulfillment: RpcRequestFulfillment, res: HttpServerResponse): Buffer {\r\n res.set(WEB_RPC_CONSTANTS.CONTENT, WEB_RPC_CONSTANTS.BINARY);\r\n const data = fulfillment.result.data[0];\r\n return Buffer.isBuffer(data) ? data : Buffer.from(data);\r\n }\r\n\r\n private static configureMultipart(fulfillment: RpcRequestFulfillment, res: HttpServerResponse): ReadableFormData {\r\n const response = RpcMultipart.createStream(fulfillment.result);\r\n const headers = response.getHeaders();\r\n for (const header in headers) {\r\n if (headers.hasOwnProperty(header)) {\r\n res.set(header, headers[header]);\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n private static configureStream(fulfillment: RpcRequestFulfillment) {\r\n return fulfillment.result.stream!;\r\n }\r\n\r\n private static parseFromPath(operation: SerializedRpcOperation): RpcSerializedValue {\r\n const decoded = operation.encodedRequest ? Buffer.from(operation.encodedRequest, \"base64\").toString(\"binary\") : \"\";\r\n return RpcSerializedValue.create(decoded);\r\n }\r\n\r\n private static async parseFromBody(req: HttpServerRequest): Promise<RpcSerializedValue> {\r\n const contentType = WebAppRpcProtocol.computeContentType(req.header(WEB_RPC_CONSTANTS.CONTENT));\r\n if (contentType === RpcContentType.Binary) {\r\n const objects = JSON.stringify([MarshalingBinaryMarker.createDefault()]);\r\n const data = [req.body as Buffer];\r\n return RpcSerializedValue.create(objects, data);\r\n } else if (contentType === RpcContentType.Multipart) {\r\n return RpcMultipart.parseRequest(req);\r\n } else {\r\n return RpcSerializedValue.create(req.body as string);\r\n }\r\n }\r\n\r\n private async performFetch(): Promise<number> {\r\n const requestClass = this.supplyRequest();\r\n const fetchFunction = this.supplyFetch();\r\n\r\n const path = new URL(this.path, typeof (location) !== \"undefined\" ? location.origin : undefined);\r\n if (this._pathSuffix) {\r\n const params = new URLSearchParams();\r\n params.set(\"parameters\", this._pathSuffix);\r\n path.search = `?${params.toString()}`;\r\n }\r\n\r\n const request = new requestClass(path.toString(), this._request);\r\n const response = await fetchFunction(request);\r\n this._response = response;\r\n this.metadata.status = response.status;\r\n return response.status;\r\n }\r\n\r\n private async loadText(response: Response) {\r\n const value = await response.text();\r\n this.metadata.message = value;\r\n return RpcSerializedValue.create(value);\r\n }\r\n\r\n private async loadBinary(response: Response) {\r\n const value = new Uint8Array(await response.arrayBuffer());\r\n const objects = JSON.stringify(MarshalingBinaryMarker.createDefault());\r\n return RpcSerializedValue.create(objects, [value]);\r\n }\r\n\r\n private async loadMultipart(response: Response, contentType: string) {\r\n const data = await response.arrayBuffer();\r\n const value = new RpcMultipartParser(contentType, Buffer.from(data)).parse();\r\n return value;\r\n }\r\n\r\n private async setupTransport(): Promise<void> {\r\n if (this.method === \"options\") {\r\n return;\r\n }\r\n\r\n const parameters = (await this.protocol.serialize(this)).parameters;\r\n const transportType = WebAppRpcRequest.computeTransportType(parameters, this.parameters);\r\n\r\n if (transportType === RpcContentType.Binary) {\r\n this.setupBinaryTransport(parameters);\r\n } else if (transportType === RpcContentType.Multipart) {\r\n this.setupMultipartTransport(parameters);\r\n } else {\r\n this.setupTextTransport(parameters);\r\n }\r\n }\r\n\r\n private setupBinaryTransport(parameters: RpcSerializedValue) {\r\n this._headers[WEB_RPC_CONSTANTS.CONTENT] = WEB_RPC_CONSTANTS.BINARY;\r\n this._request.method = \"post\";\r\n this._request.body = parameters.data[0];\r\n }\r\n\r\n private setupMultipartTransport(parameters: RpcSerializedValue) {\r\n // IMPORTANT: do not set a multipart Content-Type header value. The browser does this automatically!\r\n delete this._headers[WEB_RPC_CONSTANTS.CONTENT];\r\n this._request.method = \"post\";\r\n this._request.body = RpcMultipart.createForm(parameters);\r\n }\r\n\r\n private setupTextTransport(parameters: RpcSerializedValue) {\r\n if (this.operation.policy.allowResponseCaching(this)) {\r\n const encodedBody = btoa(parameters.objects); // eslint-disable-line deprecation/deprecation\r\n if (encodedBody.length <= WebAppRpcRequest.maxUrlComponentSize) {\r\n this._request.method = \"get\";\r\n this._request.body = undefined;\r\n delete this._headers[WEB_RPC_CONSTANTS.CONTENT];\r\n this._pathSuffix = encodedBody;\r\n return;\r\n }\r\n }\r\n\r\n this._pathSuffix = \"\";\r\n this._headers[WEB_RPC_CONSTANTS.CONTENT] = WEB_RPC_CONSTANTS.TEXT;\r\n this._request.method = \"post\";\r\n this._request.body = parameters.objects;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcMultipartParser.d.ts","sourceRoot":"","sources":["../../../../../src/rpc/web/multipart/RpcMultipartParser.ts"],"names":[],"mappings":"AAIA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"RpcMultipartParser.d.ts","sourceRoot":"","sources":["../../../../../src/rpc/web/multipart/RpcMultipartParser.ts"],"names":[],"mappings":"AAIA;;GAEG;;AA6BH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AA0B9D,gBAAgB;AAChB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAqB;gBAEhB,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAoC/C,KAAK,IAAI,kBAAkB;IAkNlC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,kBAAkB;CAE3B"}
|
|
@@ -35,6 +35,7 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
|
35
35
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
36
36
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
37
37
|
*/
|
|
38
|
+
const buffer_1 = require("buffer");
|
|
38
39
|
const string_decoder_1 = require("string_decoder");
|
|
39
40
|
const RpcMarshaling_1 = require("../../core/RpcMarshaling");
|
|
40
41
|
const START = 0;
|
|
@@ -97,7 +98,7 @@ class RpcMultipartParser {
|
|
|
97
98
|
let prevIndex = 0;
|
|
98
99
|
let index = 0;
|
|
99
100
|
let state = START;
|
|
100
|
-
const boundary = Buffer.alloc(this._boundary.length + 4);
|
|
101
|
+
const boundary = buffer_1.Buffer.alloc(this._boundary.length + 4);
|
|
101
102
|
boundary.write("\r\n--", 0, this._boundary.length + 4, "ascii");
|
|
102
103
|
boundary.write(this._boundary, 4, this._boundary.length, "ascii");
|
|
103
104
|
const boundaryChars = {};
|
|
@@ -107,7 +108,7 @@ class RpcMultipartParser {
|
|
|
107
108
|
const boundaryLength = boundary.length;
|
|
108
109
|
const boundaryEnd = boundaryLength - 1;
|
|
109
110
|
const bufferLength = this._buffer.length;
|
|
110
|
-
const lookbehind = Buffer.alloc(boundaryLength + 8);
|
|
111
|
+
const lookbehind = buffer_1.Buffer.alloc(boundaryLength + 8);
|
|
111
112
|
let c;
|
|
112
113
|
let cl;
|
|
113
114
|
for (i = 0; i < len; i++) {
|
|
@@ -343,7 +344,7 @@ class RpcMultipartParser {
|
|
|
343
344
|
this._partChunks.push(b);
|
|
344
345
|
}
|
|
345
346
|
_onParsePartEnd() {
|
|
346
|
-
const partValue = this._partChunks.length === 1 ? this._partChunks[0] : Buffer.concat(this._partChunks);
|
|
347
|
+
const partValue = this._partChunks.length === 1 ? this._partChunks[0] : buffer_1.Buffer.concat(this._partChunks);
|
|
347
348
|
if (this._partName === "objects") {
|
|
348
349
|
this._value.objects = partValue.toString();
|
|
349
350
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcMultipartParser.js","sourceRoot":"","sources":["../../../../../src/rpc/web/multipart/RpcMultipartParser.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\n/*\r\nAdapted from https://github.com/pillarjs/multiparty. Multiparty license as follows:\r\n(The MIT License)\r\n\r\nCopyright (c) 2013 Felix Geisendörfer\r\nCopyright (c) 2014 Andrew Kelley\r\nCopyright (c) 2014 Douglas Christopher Wilson\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of this software and associated documentation files (the\r\n'Software'), to deal in the Software without restriction, including\r\nwithout limitation the rights to use, copy, modify, merge, publish,\r\ndistribute, sublicense, and/or sell copies of the Software, and to\r\npermit persons to whom the Software is furnished to do so, subject to\r\nthe following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n*/\r\nimport { StringDecoder } from \"string_decoder\";\r\nimport { RpcSerializedValue } from \"../../core/RpcMarshaling\";\r\n\r\nconst START = 0;\r\nconst START_BOUNDARY = 1;\r\nconst HEADER_FIELD_START = 2;\r\nconst HEADER_FIELD = 3;\r\nconst HEADER_VALUE_START = 4;\r\nconst HEADER_VALUE = 5;\r\nconst HEADER_VALUE_ALMOST_DONE = 6;\r\nconst HEADERS_ALMOST_DONE = 7;\r\nconst PART_DATA_START = 8;\r\nconst PART_DATA = 9;\r\nconst CLOSE_BOUNDARY = 10;\r\nconst END = 11;\r\n\r\nconst LF = 10;\r\nconst CR = 13;\r\nconst SPACE = 32;\r\nconst HYPHEN = 45;\r\nconst COLON = 58;\r\nconst A = 97;\r\nconst Z = 122;\r\n\r\nconst CONTENT_TYPE_RE = /^multipart\\/(?:form-data|related)(?:;|$)/i;\r\nconst CONTENT_TYPE_PARAM_RE = /;\\s*([^=]+)=(?:\"([^\"]+)\"|([^;]+))/gi;\r\n\r\n/** @internal */\r\nexport class RpcMultipartParser {\r\n private _headerFieldMark: number | null;\r\n private _headerValueMark: number | null;\r\n private _partDataMark: number | null;\r\n private _partBoundaryFlag: boolean;\r\n private _headerFieldDecoder: StringDecoder | null;\r\n private _headerValueDecoder: StringDecoder | null;\r\n private _headerField: string;\r\n private _partHeaders: { [index: string]: string };\r\n private _partName: string | null;\r\n private _partChunks: Buffer[];\r\n private _headerValue: string;\r\n private _boundary: string;\r\n private _buffer: Buffer;\r\n private _value: RpcSerializedValue;\r\n\r\n public constructor(contentType: string, buffer: Buffer) {\r\n let m = CONTENT_TYPE_RE.exec(contentType);\r\n if (!m) {\r\n throw new Error(\"unsupported content-type\");\r\n }\r\n\r\n let boundary = \"\";\r\n CONTENT_TYPE_PARAM_RE.lastIndex = m.index + m[0].length - 1;\r\n while ((m = CONTENT_TYPE_PARAM_RE.exec(contentType))) {\r\n if (m[1].toLowerCase() !== \"boundary\") continue;\r\n boundary = m[2] || m[3];\r\n break;\r\n }\r\n\r\n if (!boundary) {\r\n throw new Error(\"content-type missing boundary\");\r\n }\r\n\r\n this._headerFieldDecoder = null;\r\n this._headerValueDecoder = null;\r\n this._headerField = \"\";\r\n this._partHeaders = {};\r\n this._partName = null;\r\n this._partChunks = [];\r\n this._headerValue = \"\";\r\n\r\n this._headerFieldMark = null;\r\n this._headerValueMark = null;\r\n this._partDataMark = null;\r\n this._partBoundaryFlag = false;\r\n\r\n this._boundary = boundary;\r\n this._buffer = buffer;\r\n this._value = RpcSerializedValue.create();\r\n }\r\n\r\n public parse(): RpcSerializedValue {\r\n let i = 0;\r\n const len = this._buffer.length;\r\n let prevIndex = 0;\r\n let index = 0;\r\n let state = START;\r\n\r\n const boundary = Buffer.alloc(this._boundary.length + 4);\r\n boundary.write(\"\\r\\n--\", 0, this._boundary.length + 4, \"ascii\");\r\n boundary.write(this._boundary, 4, this._boundary.length, \"ascii\");\r\n\r\n const boundaryChars: { [index: number]: boolean } = {};\r\n for (const char of boundary) {\r\n boundaryChars[char] = true;\r\n }\r\n\r\n const boundaryLength = boundary.length;\r\n const boundaryEnd = boundaryLength - 1;\r\n const bufferLength = this._buffer.length;\r\n const lookbehind = Buffer.alloc(boundaryLength + 8);\r\n\r\n let c;\r\n let cl;\r\n\r\n for (i = 0; i < len; i++) {\r\n c = this._buffer[i];\r\n switch (state) {\r\n case START:\r\n index = 0;\r\n state = START_BOUNDARY;\r\n /* falls through */\r\n case START_BOUNDARY:\r\n if (index === boundaryLength - 2 && c === HYPHEN) {\r\n index = 1;\r\n state = CLOSE_BOUNDARY;\r\n break;\r\n } else if (index === boundaryLength - 2) {\r\n if (c !== CR) throw new Error(`Expected CR Received ${c}`);\r\n index++;\r\n break;\r\n } else if (index === boundaryLength - 1) {\r\n if (c !== LF) throw new Error(`Expected LF Received ${c}`);\r\n index = 0;\r\n this._onParsePartBegin();\r\n state = HEADER_FIELD_START;\r\n break;\r\n }\r\n\r\n if (c !== boundary[index + 2]) index = -2;\r\n if (c === boundary[index + 2]) index++;\r\n break;\r\n case HEADER_FIELD_START:\r\n state = HEADER_FIELD;\r\n this._headerFieldMark = i;\r\n index = 0;\r\n /* falls through */\r\n case HEADER_FIELD:\r\n if (c === CR) {\r\n this._headerFieldMark = null;\r\n state = HEADERS_ALMOST_DONE;\r\n break;\r\n }\r\n\r\n index++;\r\n if (c === HYPHEN) break;\r\n\r\n if (c === COLON) {\r\n if (index === 1) {\r\n // empty header field\r\n throw new Error(\"Empty header field\");\r\n }\r\n this._onParseHeaderField(this._buffer.slice(this._headerFieldMark as number, i));\r\n this._headerFieldMark = null;\r\n state = HEADER_VALUE_START;\r\n break;\r\n }\r\n\r\n cl = c | 0x20;\r\n if (cl < A || cl > Z) {\r\n throw new Error(`Expected alphabetic character, received ${c}`);\r\n }\r\n break;\r\n case HEADER_VALUE_START:\r\n if (c === SPACE) break;\r\n\r\n this._headerValueMark = i;\r\n state = HEADER_VALUE;\r\n /* falls through */\r\n case HEADER_VALUE:\r\n if (c === CR) {\r\n this._onParseHeaderValue(this._buffer.slice(this._headerValueMark as number, i));\r\n this._headerValueMark = null;\r\n this._onParseHeaderEnd();\r\n state = HEADER_VALUE_ALMOST_DONE;\r\n }\r\n break;\r\n case HEADER_VALUE_ALMOST_DONE:\r\n if (c !== LF) throw new Error(`Expected LF Received ${c}`);\r\n state = HEADER_FIELD_START;\r\n break;\r\n case HEADERS_ALMOST_DONE:\r\n if (c !== LF) throw new Error(`Expected LF Received ${c}`);\r\n const err: any = this._onParseHeadersEnd(i + 1);\r\n if (err) throw err;\r\n state = PART_DATA_START;\r\n break;\r\n case PART_DATA_START:\r\n state = PART_DATA;\r\n this._partDataMark = i;\r\n /* falls through */\r\n case PART_DATA:\r\n prevIndex = index;\r\n\r\n if (index === 0) {\r\n // boyer-moore derived algorithm to safely skip non-boundary data\r\n i += boundaryEnd;\r\n while (i < bufferLength && !(this._buffer[i] in boundaryChars)) {\r\n i += boundaryLength;\r\n }\r\n i -= boundaryEnd;\r\n c = this._buffer[i];\r\n }\r\n\r\n if (index < boundaryLength) {\r\n if (boundary[index] === c) {\r\n if (index === 0) {\r\n this._onParsePartData(this._buffer.slice(this._partDataMark as number, i));\r\n this._partDataMark = null;\r\n }\r\n index++;\r\n } else {\r\n index = 0;\r\n }\r\n } else if (index === boundaryLength) {\r\n index++;\r\n if (c === CR) {\r\n // CR = part boundary\r\n this._partBoundaryFlag = true;\r\n } else if (c === HYPHEN) {\r\n index = 1;\r\n state = CLOSE_BOUNDARY;\r\n break;\r\n } else {\r\n index = 0;\r\n }\r\n } else if (index - 1 === boundaryLength) {\r\n if (this._partBoundaryFlag) {\r\n index = 0;\r\n if (c === LF) {\r\n this._partBoundaryFlag = false;\r\n this._onParsePartEnd();\r\n this._onParsePartBegin();\r\n state = HEADER_FIELD_START;\r\n break;\r\n }\r\n } else {\r\n index = 0;\r\n }\r\n }\r\n\r\n if (index > 0) {\r\n // when matching a possible boundary, keep a lookbehind reference\r\n // in case it turns out to be a false lead\r\n lookbehind[index - 1] = c;\r\n } else if (prevIndex > 0) {\r\n // if our boundary turned out to be rubbish, the captured lookbehind\r\n // belongs to partData\r\n this._onParsePartData(lookbehind.slice(0, prevIndex));\r\n prevIndex = 0;\r\n this._partDataMark = i;\r\n\r\n // reconsider the current character even so it interrupted the sequence\r\n // it could be the beginning of a new sequence\r\n i--;\r\n }\r\n\r\n break;\r\n case CLOSE_BOUNDARY:\r\n if (c !== HYPHEN) throw new Error(`Expected HYPHEN Received ${c}`);\r\n if (index === 1) {\r\n this._onParsePartEnd();\r\n state = END;\r\n } else if (index > 1) {\r\n throw new Error(\"Parser has invalid state.\");\r\n }\r\n index++;\r\n break;\r\n case END:\r\n break;\r\n default:\r\n throw new Error(\"Parser has invalid state.\");\r\n }\r\n }\r\n\r\n if (this._headerFieldMark != null) {\r\n this._onParseHeaderField(this._buffer.slice(this._headerFieldMark));\r\n this._headerFieldMark = 0;\r\n }\r\n if (this._headerValueMark != null) {\r\n this._onParseHeaderValue(this._buffer.slice(this._headerValueMark));\r\n this._headerValueMark = 0;\r\n }\r\n if (this._partDataMark != null) {\r\n this._onParsePartData(this._buffer.slice(this._partDataMark));\r\n this._partDataMark = 0;\r\n }\r\n\r\n return this._value;\r\n }\r\n\r\n private _onParsePartBegin() {\r\n this._clearPartVars();\r\n }\r\n\r\n private _clearPartVars() {\r\n this._partHeaders = {};\r\n this._partName = null;\r\n this._partChunks.length = 0;\r\n\r\n this._headerFieldDecoder = new StringDecoder(\"utf8\");\r\n this._headerField = \"\";\r\n this._headerValueDecoder = new StringDecoder(\"utf8\");\r\n this._headerValue = \"\";\r\n }\r\n\r\n private _onParseHeaderField(b: Buffer) {\r\n this._headerField += this._headerFieldDecoder!.write(b);\r\n }\r\n\r\n private _onParseHeaderValue(b: Buffer) {\r\n this._headerValue += this._headerValueDecoder!.write(b);\r\n }\r\n\r\n private _onParseHeaderEnd() {\r\n this._headerField = this._headerField.toLowerCase();\r\n this._partHeaders[this._headerField] = this._headerValue;\r\n\r\n let m: RegExpMatchArray | null;\r\n if (this._headerField === \"content-disposition\") {\r\n if (m = this._headerValue.match(/\\bname=\"([^\"]+)\"/i)) {\r\n this._partName = m[1];\r\n }\r\n // this._partFilename = parseFilename(this._headerValue);\r\n } else if (this._headerField === \"content-transfer-encoding\") {\r\n // this._partTransferEncoding = this._headerValue.toLowerCase();\r\n }\r\n\r\n this._headerFieldDecoder = new StringDecoder(\"utf8\");\r\n this._headerField = \"\";\r\n this._headerValueDecoder = new StringDecoder(\"utf8\");\r\n this._headerValue = \"\";\r\n }\r\n\r\n private _onParsePartData(b: Buffer) {\r\n this._partChunks.push(b);\r\n }\r\n\r\n private _onParsePartEnd() {\r\n const partValue = this._partChunks.length === 1 ? this._partChunks[0] : Buffer.concat(this._partChunks);\r\n\r\n if (this._partName === \"objects\") {\r\n this._value.objects = partValue.toString();\r\n } else {\r\n this._value.data.push(partValue);\r\n }\r\n\r\n this._clearPartVars();\r\n }\r\n\r\n private _onParseHeadersEnd(_offset: number) {\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RpcMultipartParser.js","sourceRoot":"","sources":["../../../../../src/rpc/web/multipart/RpcMultipartParser.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\n/*\r\nAdapted from https://github.com/pillarjs/multiparty. Multiparty license as follows:\r\n(The MIT License)\r\n\r\nCopyright (c) 2013 Felix Geisendörfer\r\nCopyright (c) 2014 Andrew Kelley\r\nCopyright (c) 2014 Douglas Christopher Wilson\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of this software and associated documentation files (the\r\n'Software'), to deal in the Software without restriction, including\r\nwithout limitation the rights to use, copy, modify, merge, publish,\r\ndistribute, sublicense, and/or sell copies of the Software, and to\r\npermit persons to whom the Software is furnished to do so, subject to\r\nthe following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n*/\r\nimport { Buffer } from \"buffer\";\r\nimport { StringDecoder } from \"string_decoder\";\r\nimport { RpcSerializedValue } from \"../../core/RpcMarshaling\";\r\n\r\nconst START = 0;\r\nconst START_BOUNDARY = 1;\r\nconst HEADER_FIELD_START = 2;\r\nconst HEADER_FIELD = 3;\r\nconst HEADER_VALUE_START = 4;\r\nconst HEADER_VALUE = 5;\r\nconst HEADER_VALUE_ALMOST_DONE = 6;\r\nconst HEADERS_ALMOST_DONE = 7;\r\nconst PART_DATA_START = 8;\r\nconst PART_DATA = 9;\r\nconst CLOSE_BOUNDARY = 10;\r\nconst END = 11;\r\n\r\nconst LF = 10;\r\nconst CR = 13;\r\nconst SPACE = 32;\r\nconst HYPHEN = 45;\r\nconst COLON = 58;\r\nconst A = 97;\r\nconst Z = 122;\r\n\r\nconst CONTENT_TYPE_RE = /^multipart\\/(?:form-data|related)(?:;|$)/i;\r\nconst CONTENT_TYPE_PARAM_RE = /;\\s*([^=]+)=(?:\"([^\"]+)\"|([^;]+))/gi;\r\n\r\n/** @internal */\r\nexport class RpcMultipartParser {\r\n private _headerFieldMark: number | null;\r\n private _headerValueMark: number | null;\r\n private _partDataMark: number | null;\r\n private _partBoundaryFlag: boolean;\r\n private _headerFieldDecoder: StringDecoder | null;\r\n private _headerValueDecoder: StringDecoder | null;\r\n private _headerField: string;\r\n private _partHeaders: { [index: string]: string };\r\n private _partName: string | null;\r\n private _partChunks: Buffer[];\r\n private _headerValue: string;\r\n private _boundary: string;\r\n private _buffer: Buffer;\r\n private _value: RpcSerializedValue;\r\n\r\n public constructor(contentType: string, buffer: Buffer) {\r\n let m = CONTENT_TYPE_RE.exec(contentType);\r\n if (!m) {\r\n throw new Error(\"unsupported content-type\");\r\n }\r\n\r\n let boundary = \"\";\r\n CONTENT_TYPE_PARAM_RE.lastIndex = m.index + m[0].length - 1;\r\n while ((m = CONTENT_TYPE_PARAM_RE.exec(contentType))) {\r\n if (m[1].toLowerCase() !== \"boundary\") continue;\r\n boundary = m[2] || m[3];\r\n break;\r\n }\r\n\r\n if (!boundary) {\r\n throw new Error(\"content-type missing boundary\");\r\n }\r\n\r\n this._headerFieldDecoder = null;\r\n this._headerValueDecoder = null;\r\n this._headerField = \"\";\r\n this._partHeaders = {};\r\n this._partName = null;\r\n this._partChunks = [];\r\n this._headerValue = \"\";\r\n\r\n this._headerFieldMark = null;\r\n this._headerValueMark = null;\r\n this._partDataMark = null;\r\n this._partBoundaryFlag = false;\r\n\r\n this._boundary = boundary;\r\n this._buffer = buffer;\r\n this._value = RpcSerializedValue.create();\r\n }\r\n\r\n public parse(): RpcSerializedValue {\r\n let i = 0;\r\n const len = this._buffer.length;\r\n let prevIndex = 0;\r\n let index = 0;\r\n let state = START;\r\n\r\n const boundary = Buffer.alloc(this._boundary.length + 4);\r\n boundary.write(\"\\r\\n--\", 0, this._boundary.length + 4, \"ascii\");\r\n boundary.write(this._boundary, 4, this._boundary.length, \"ascii\");\r\n\r\n const boundaryChars: { [index: number]: boolean } = {};\r\n for (const char of boundary) {\r\n boundaryChars[char] = true;\r\n }\r\n\r\n const boundaryLength = boundary.length;\r\n const boundaryEnd = boundaryLength - 1;\r\n const bufferLength = this._buffer.length;\r\n const lookbehind = Buffer.alloc(boundaryLength + 8);\r\n\r\n let c;\r\n let cl;\r\n\r\n for (i = 0; i < len; i++) {\r\n c = this._buffer[i];\r\n switch (state) {\r\n case START:\r\n index = 0;\r\n state = START_BOUNDARY;\r\n /* falls through */\r\n case START_BOUNDARY:\r\n if (index === boundaryLength - 2 && c === HYPHEN) {\r\n index = 1;\r\n state = CLOSE_BOUNDARY;\r\n break;\r\n } else if (index === boundaryLength - 2) {\r\n if (c !== CR) throw new Error(`Expected CR Received ${c}`);\r\n index++;\r\n break;\r\n } else if (index === boundaryLength - 1) {\r\n if (c !== LF) throw new Error(`Expected LF Received ${c}`);\r\n index = 0;\r\n this._onParsePartBegin();\r\n state = HEADER_FIELD_START;\r\n break;\r\n }\r\n\r\n if (c !== boundary[index + 2]) index = -2;\r\n if (c === boundary[index + 2]) index++;\r\n break;\r\n case HEADER_FIELD_START:\r\n state = HEADER_FIELD;\r\n this._headerFieldMark = i;\r\n index = 0;\r\n /* falls through */\r\n case HEADER_FIELD:\r\n if (c === CR) {\r\n this._headerFieldMark = null;\r\n state = HEADERS_ALMOST_DONE;\r\n break;\r\n }\r\n\r\n index++;\r\n if (c === HYPHEN) break;\r\n\r\n if (c === COLON) {\r\n if (index === 1) {\r\n // empty header field\r\n throw new Error(\"Empty header field\");\r\n }\r\n this._onParseHeaderField(this._buffer.slice(this._headerFieldMark as number, i));\r\n this._headerFieldMark = null;\r\n state = HEADER_VALUE_START;\r\n break;\r\n }\r\n\r\n cl = c | 0x20;\r\n if (cl < A || cl > Z) {\r\n throw new Error(`Expected alphabetic character, received ${c}`);\r\n }\r\n break;\r\n case HEADER_VALUE_START:\r\n if (c === SPACE) break;\r\n\r\n this._headerValueMark = i;\r\n state = HEADER_VALUE;\r\n /* falls through */\r\n case HEADER_VALUE:\r\n if (c === CR) {\r\n this._onParseHeaderValue(this._buffer.slice(this._headerValueMark as number, i));\r\n this._headerValueMark = null;\r\n this._onParseHeaderEnd();\r\n state = HEADER_VALUE_ALMOST_DONE;\r\n }\r\n break;\r\n case HEADER_VALUE_ALMOST_DONE:\r\n if (c !== LF) throw new Error(`Expected LF Received ${c}`);\r\n state = HEADER_FIELD_START;\r\n break;\r\n case HEADERS_ALMOST_DONE:\r\n if (c !== LF) throw new Error(`Expected LF Received ${c}`);\r\n const err: any = this._onParseHeadersEnd(i + 1);\r\n if (err) throw err;\r\n state = PART_DATA_START;\r\n break;\r\n case PART_DATA_START:\r\n state = PART_DATA;\r\n this._partDataMark = i;\r\n /* falls through */\r\n case PART_DATA:\r\n prevIndex = index;\r\n\r\n if (index === 0) {\r\n // boyer-moore derived algorithm to safely skip non-boundary data\r\n i += boundaryEnd;\r\n while (i < bufferLength && !(this._buffer[i] in boundaryChars)) {\r\n i += boundaryLength;\r\n }\r\n i -= boundaryEnd;\r\n c = this._buffer[i];\r\n }\r\n\r\n if (index < boundaryLength) {\r\n if (boundary[index] === c) {\r\n if (index === 0) {\r\n this._onParsePartData(this._buffer.slice(this._partDataMark as number, i));\r\n this._partDataMark = null;\r\n }\r\n index++;\r\n } else {\r\n index = 0;\r\n }\r\n } else if (index === boundaryLength) {\r\n index++;\r\n if (c === CR) {\r\n // CR = part boundary\r\n this._partBoundaryFlag = true;\r\n } else if (c === HYPHEN) {\r\n index = 1;\r\n state = CLOSE_BOUNDARY;\r\n break;\r\n } else {\r\n index = 0;\r\n }\r\n } else if (index - 1 === boundaryLength) {\r\n if (this._partBoundaryFlag) {\r\n index = 0;\r\n if (c === LF) {\r\n this._partBoundaryFlag = false;\r\n this._onParsePartEnd();\r\n this._onParsePartBegin();\r\n state = HEADER_FIELD_START;\r\n break;\r\n }\r\n } else {\r\n index = 0;\r\n }\r\n }\r\n\r\n if (index > 0) {\r\n // when matching a possible boundary, keep a lookbehind reference\r\n // in case it turns out to be a false lead\r\n lookbehind[index - 1] = c;\r\n } else if (prevIndex > 0) {\r\n // if our boundary turned out to be rubbish, the captured lookbehind\r\n // belongs to partData\r\n this._onParsePartData(lookbehind.slice(0, prevIndex));\r\n prevIndex = 0;\r\n this._partDataMark = i;\r\n\r\n // reconsider the current character even so it interrupted the sequence\r\n // it could be the beginning of a new sequence\r\n i--;\r\n }\r\n\r\n break;\r\n case CLOSE_BOUNDARY:\r\n if (c !== HYPHEN) throw new Error(`Expected HYPHEN Received ${c}`);\r\n if (index === 1) {\r\n this._onParsePartEnd();\r\n state = END;\r\n } else if (index > 1) {\r\n throw new Error(\"Parser has invalid state.\");\r\n }\r\n index++;\r\n break;\r\n case END:\r\n break;\r\n default:\r\n throw new Error(\"Parser has invalid state.\");\r\n }\r\n }\r\n\r\n if (this._headerFieldMark != null) {\r\n this._onParseHeaderField(this._buffer.slice(this._headerFieldMark));\r\n this._headerFieldMark = 0;\r\n }\r\n if (this._headerValueMark != null) {\r\n this._onParseHeaderValue(this._buffer.slice(this._headerValueMark));\r\n this._headerValueMark = 0;\r\n }\r\n if (this._partDataMark != null) {\r\n this._onParsePartData(this._buffer.slice(this._partDataMark));\r\n this._partDataMark = 0;\r\n }\r\n\r\n return this._value;\r\n }\r\n\r\n private _onParsePartBegin() {\r\n this._clearPartVars();\r\n }\r\n\r\n private _clearPartVars() {\r\n this._partHeaders = {};\r\n this._partName = null;\r\n this._partChunks.length = 0;\r\n\r\n this._headerFieldDecoder = new StringDecoder(\"utf8\");\r\n this._headerField = \"\";\r\n this._headerValueDecoder = new StringDecoder(\"utf8\");\r\n this._headerValue = \"\";\r\n }\r\n\r\n private _onParseHeaderField(b: Buffer) {\r\n this._headerField += this._headerFieldDecoder!.write(b);\r\n }\r\n\r\n private _onParseHeaderValue(b: Buffer) {\r\n this._headerValue += this._headerValueDecoder!.write(b);\r\n }\r\n\r\n private _onParseHeaderEnd() {\r\n this._headerField = this._headerField.toLowerCase();\r\n this._partHeaders[this._headerField] = this._headerValue;\r\n\r\n let m: RegExpMatchArray | null;\r\n if (this._headerField === \"content-disposition\") {\r\n if (m = this._headerValue.match(/\\bname=\"([^\"]+)\"/i)) {\r\n this._partName = m[1];\r\n }\r\n // this._partFilename = parseFilename(this._headerValue);\r\n } else if (this._headerField === \"content-transfer-encoding\") {\r\n // this._partTransferEncoding = this._headerValue.toLowerCase();\r\n }\r\n\r\n this._headerFieldDecoder = new StringDecoder(\"utf8\");\r\n this._headerField = \"\";\r\n this._headerValueDecoder = new StringDecoder(\"utf8\");\r\n this._headerValue = \"\";\r\n }\r\n\r\n private _onParsePartData(b: Buffer) {\r\n this._partChunks.push(b);\r\n }\r\n\r\n private _onParsePartEnd() {\r\n const partValue = this._partChunks.length === 1 ? this._partChunks[0] : Buffer.concat(this._partChunks);\r\n\r\n if (this._partName === \"objects\") {\r\n this._value.objects = partValue.toString();\r\n } else {\r\n this._value.data.push(partValue);\r\n }\r\n\r\n this._clearPartVars();\r\n }\r\n\r\n private _onParseHeadersEnd(_offset: number) {\r\n }\r\n}\r\n"]}
|
|
@@ -6,10 +6,11 @@ import { TransformProps } from "@itwin/core-geometry";
|
|
|
6
6
|
import { Placement2dProps, Placement3dProps } from "../ElementProps";
|
|
7
7
|
import { ElementGeometryDataEntry } from "../geometry/ElementGeometry";
|
|
8
8
|
import { GeometryStreamProps } from "../geometry/GeometryStream";
|
|
9
|
-
import { ContentFlags,
|
|
9
|
+
import { ContentFlags, TreeFlags } from "../tile/TileMetadata";
|
|
10
10
|
/** Wire format describing properties common to [[PersistentGraphicsRequestProps]] and [[DynamicGraphicsRequestProps]].
|
|
11
11
|
* @see [[ElementGraphicsRequestProps]] for more details.
|
|
12
12
|
* @public
|
|
13
|
+
* @extensions
|
|
13
14
|
*/
|
|
14
15
|
export interface GraphicsRequestProps {
|
|
15
16
|
/** Uniquely identifies this request among all [[ElementGraphicsRequestProps]] for a given [[IModel]]. */
|
|
@@ -30,9 +31,15 @@ export interface GraphicsRequestProps {
|
|
|
30
31
|
/** If true, surface edges will be omitted from the graphics. */
|
|
31
32
|
readonly omitEdges?: boolean;
|
|
32
33
|
/** If omitEdges is false, specifies the type of edges to produce. Generally determined by TileAdmin.requestElementGraphics.
|
|
34
|
+
* @note This uses the deleted EdgeType enum where 1 indicates non-indexed edges and 2 indicates indexed edges, to avoid breaking the RPC API.
|
|
33
35
|
* @internal
|
|
34
36
|
*/
|
|
35
|
-
readonly edgeType?:
|
|
37
|
+
readonly edgeType?: 1 | 2;
|
|
38
|
+
/** If true, and omitEdges is false, a polyface with no edge visibility info will display edges for all faces;
|
|
39
|
+
* if false, edges will be inferred from the polyface's topology.
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
readonly smoothPolyfaceEdges?: boolean;
|
|
36
43
|
/** If true, the element's graphics will be clipped against the iModel's project extents. */
|
|
37
44
|
readonly clipToProjectExtents?: boolean;
|
|
38
45
|
/** If defined, the compact string representation of a [ClipVector]($core-geometry) to be applied to the geometry to produce section-cut
|
|
@@ -40,10 +47,15 @@ export interface GraphicsRequestProps {
|
|
|
40
47
|
* @see [ClipVector.toCompactString]($core-geometry) to produce the string representation.
|
|
41
48
|
*/
|
|
42
49
|
readonly sectionCut?: string;
|
|
50
|
+
/** If true, vertex positions will be quantized to [[QPoint3d]]s to conserve space at the expense of accuracy. Quantization may produce
|
|
51
|
+
* perceptible inaccuracies when producing graphics for large and/or highly-detailed elements.
|
|
52
|
+
*/
|
|
53
|
+
quantizePositions?: boolean;
|
|
43
54
|
}
|
|
44
55
|
/** Wire format describing a request to produce graphics in "iMdl" format for a single element.
|
|
45
56
|
* @see [[ElementGraphicsRequestProps]] for more details.
|
|
46
57
|
* @public
|
|
58
|
+
* @extensions
|
|
47
59
|
*/
|
|
48
60
|
export interface PersistentGraphicsRequestProps extends GraphicsRequestProps {
|
|
49
61
|
/** The element whose geometry is to be used to generate the graphics. */
|
|
@@ -51,6 +63,7 @@ export interface PersistentGraphicsRequestProps extends GraphicsRequestProps {
|
|
|
51
63
|
}
|
|
52
64
|
/** As part of a [[DynamicGraphicsRequestProps]], specifies the geometry from which to generate the graphics in JSON format.
|
|
53
65
|
* @public
|
|
66
|
+
* @extensions
|
|
54
67
|
*/
|
|
55
68
|
export interface JsonGeometryStream {
|
|
56
69
|
/** Discriminator for [[DynamicGraphicsRequestProps.geometry]]. */
|
|
@@ -60,6 +73,7 @@ export interface JsonGeometryStream {
|
|
|
60
73
|
}
|
|
61
74
|
/** As part of a [[DynamicGraphicsRequestProps]], specifies the geometry from which to generate the graphics in binary flatbuffer-encoded format.
|
|
62
75
|
* @public
|
|
76
|
+
* @extensions
|
|
63
77
|
*/
|
|
64
78
|
export interface FlatBufferGeometryStream {
|
|
65
79
|
/** Discriminator for [[DynamicGraphicsRequestProps.geometry]]. */
|
|
@@ -71,6 +85,7 @@ export interface FlatBufferGeometryStream {
|
|
|
71
85
|
* @see [[DynamicGraphicsRequest2dProps]] and [[DynamicGraphicsRequest3dProps]].
|
|
72
86
|
* @see [[ElementGraphicsRequestProps]] for more details.
|
|
73
87
|
* @public
|
|
88
|
+
* @extensions
|
|
74
89
|
*/
|
|
75
90
|
export interface DynamicGraphicsRequestProps extends GraphicsRequestProps {
|
|
76
91
|
/** The geometry from which to generate the graphics. */
|
|
@@ -90,6 +105,7 @@ export interface DynamicGraphicsRequestProps extends GraphicsRequestProps {
|
|
|
90
105
|
/** Wire format describing a request to produce graphics in "iMdl" format for a 2d geometry stream.
|
|
91
106
|
* @see [[ElementGraphicsRequestProps]] for more details.
|
|
92
107
|
* @public
|
|
108
|
+
* @extensions
|
|
93
109
|
*/
|
|
94
110
|
export interface DynamicGraphicsRequest2dProps extends DynamicGraphicsRequestProps {
|
|
95
111
|
/** Specifies the geometry is 2d. */
|
|
@@ -100,6 +116,7 @@ export interface DynamicGraphicsRequest2dProps extends DynamicGraphicsRequestPro
|
|
|
100
116
|
/** Wire format describing a request to produce graphics in "iMdl" format for a 3d geometry stream.
|
|
101
117
|
* @see [[ElementGraphicsRequestProps]] for more details.
|
|
102
118
|
* @public
|
|
119
|
+
* @extensions
|
|
103
120
|
*/
|
|
104
121
|
export interface DynamicGraphicsRequest3dProps extends DynamicGraphicsRequestProps {
|
|
105
122
|
/** Specifies the geometry is 3d. */
|
|
@@ -112,6 +129,7 @@ export interface DynamicGraphicsRequest3dProps extends DynamicGraphicsRequestPro
|
|
|
112
129
|
* @see [TileAdmin.requestElementGraphics]($frontend) and [IModelDb.generateElementGraphics]($backend) to fulfill such a request.
|
|
113
130
|
* @see [readElementGraphics]($frontend) to convert the result of a request to a [RenderGraphic]($frontend) for display.
|
|
114
131
|
* @public
|
|
132
|
+
* @extensions
|
|
115
133
|
*/
|
|
116
134
|
export declare type ElementGraphicsRequestProps = PersistentGraphicsRequestProps | DynamicGraphicsRequest2dProps | DynamicGraphicsRequest3dProps;
|
|
117
135
|
//# sourceMappingURL=ElementGraphics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementGraphics.d.ts","sourceRoot":"","sources":["../../../src/tile/ElementGraphics.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"ElementGraphics.d.ts","sourceRoot":"","sources":["../../../src/tile/ElementGraphics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementGraphics.js","sourceRoot":"","sources":["../../../src/tile/ElementGraphics.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","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 Tile\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { TransformProps } from \"@itwin/core-geometry\";\r\nimport { Placement2dProps, Placement3dProps } from \"../ElementProps\";\r\nimport { ElementGeometryDataEntry } from \"../geometry/ElementGeometry\";\r\nimport { GeometryStreamProps } from \"../geometry/GeometryStream\";\r\nimport { ContentFlags,
|
|
1
|
+
{"version":3,"file":"ElementGraphics.js","sourceRoot":"","sources":["../../../src/tile/ElementGraphics.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","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 Tile\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { TransformProps } from \"@itwin/core-geometry\";\r\nimport { Placement2dProps, Placement3dProps } from \"../ElementProps\";\r\nimport { ElementGeometryDataEntry } from \"../geometry/ElementGeometry\";\r\nimport { GeometryStreamProps } from \"../geometry/GeometryStream\";\r\nimport { ContentFlags, TreeFlags } from \"../tile/TileMetadata\";\r\n\r\n/** Wire format describing properties common to [[PersistentGraphicsRequestProps]] and [[DynamicGraphicsRequestProps]].\r\n * @see [[ElementGraphicsRequestProps]] for more details.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface GraphicsRequestProps {\r\n /** Uniquely identifies this request among all [[ElementGraphicsRequestProps]] for a given [[IModel]]. */\r\n readonly id: string;\r\n /** Log10 of the chord tolerance with which to stroke the element's geometry. e.g., for a chord tolerance of 0.01 (10^-2) meters, supply -2. */\r\n readonly toleranceLog10: number;\r\n /** The major version of the \"iMdl\" format to use when producing the iMdl representation of the element's geometry.\r\n * If omitted, the most recent version known to the backend will be used.\r\n * @alpha\r\n */\r\n readonly formatVersion?: number;\r\n /** Optional flags. [[TreeFlags.UseProjectExtents]] has no effect. [[TreeFlags.EnforceDisplayPriority]] is not yet implemented. @alpha */\r\n readonly treeFlags?: TreeFlags;\r\n /** Optional flags. [[ContentFlags.ImprovedElision]] has no effect. @alpha */\r\n readonly contentFlags?: ContentFlags;\r\n /** Transform from element graphics to world coordinates. Defaults to identity. */\r\n readonly location?: TransformProps;\r\n /** If true, surface edges will be omitted from the graphics. */\r\n readonly omitEdges?: boolean;\r\n /** If omitEdges is false, specifies the type of edges to produce. Generally determined by TileAdmin.requestElementGraphics.\r\n * @note This uses the deleted EdgeType enum where 1 indicates non-indexed edges and 2 indicates indexed edges, to avoid breaking the RPC API.\r\n * @internal\r\n */\r\n readonly edgeType?: 1 | 2;\r\n /** If true, and omitEdges is false, a polyface with no edge visibility info will display edges for all faces;\r\n * if false, edges will be inferred from the polyface's topology.\r\n * @internal\r\n */\r\n readonly smoothPolyfaceEdges?: boolean;\r\n /** If true, the element's graphics will be clipped against the iModel's project extents. */\r\n readonly clipToProjectExtents?: boolean;\r\n /** If defined, the compact string representation of a [ClipVector]($core-geometry) to be applied to the geometry to produce section-cut\r\n * geometry at the intersections with the clip planes. Any geometry *not* intersecting the clip planes is omitted from the tiles.\r\n * @see [ClipVector.toCompactString]($core-geometry) to produce the string representation.\r\n */\r\n readonly sectionCut?: string;\r\n /** If true, vertex positions will be quantized to [[QPoint3d]]s to conserve space at the expense of accuracy. Quantization may produce\r\n * perceptible inaccuracies when producing graphics for large and/or highly-detailed elements.\r\n */\r\n quantizePositions?: boolean;\r\n}\r\n\r\n/** Wire format describing a request to produce graphics in \"iMdl\" format for a single element.\r\n * @see [[ElementGraphicsRequestProps]] for more details.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface PersistentGraphicsRequestProps extends GraphicsRequestProps {\r\n /** The element whose geometry is to be used to generate the graphics. */\r\n readonly elementId: Id64String;\r\n}\r\n\r\n/** As part of a [[DynamicGraphicsRequestProps]], specifies the geometry from which to generate the graphics in JSON format.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface JsonGeometryStream {\r\n /** Discriminator for [[DynamicGraphicsRequestProps.geometry]]. */\r\n format: \"json\";\r\n /** The geometry stream in JSON format. */\r\n data: GeometryStreamProps;\r\n}\r\n\r\n/** As part of a [[DynamicGraphicsRequestProps]], specifies the geometry from which to generate the graphics in binary flatbuffer-encoded format.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface FlatBufferGeometryStream {\r\n /** Discriminator for [[DynamicGraphicsRequestProps.geometry]]. */\r\n format: \"flatbuffer\";\r\n /** The geometry stream in flatbuffer format. */\r\n data: ElementGeometryDataEntry[];\r\n}\r\n\r\n/** Wire format describing a request to produce graphics in \"iMdl\" format for a single geometry stream.\r\n * @see [[DynamicGraphicsRequest2dProps]] and [[DynamicGraphicsRequest3dProps]].\r\n * @see [[ElementGraphicsRequestProps]] for more details.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface DynamicGraphicsRequestProps extends GraphicsRequestProps {\r\n /** The geometry from which to generate the graphics. */\r\n readonly geometry: JsonGeometryStream | FlatBufferGeometryStream;\r\n /** The category to which the geometry belongs. This is required to identify a persistent [SpatialCategory]($backend) for 3d geometry or\r\n * [DrawingCategory]($backend) for 2d geometry.\r\n */\r\n readonly categoryId: Id64String;\r\n /** If specified, tools will recognize the generated graphics as being associated with this element. */\r\n readonly elementId?: Id64String;\r\n /** If specified, tools will recognize the generated graphics as being associated with this model.\r\n * It should identify a 3d model for 3d geometry or a 2d model for 2d geometry.\r\n * It needn't identify a persistent model - it can be a transient Id.\r\n */\r\n readonly modelId?: Id64String;\r\n}\r\n\r\n/** Wire format describing a request to produce graphics in \"iMdl\" format for a 2d geometry stream.\r\n * @see [[ElementGraphicsRequestProps]] for more details.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface DynamicGraphicsRequest2dProps extends DynamicGraphicsRequestProps {\r\n /** Specifies the geometry is 2d. */\r\n readonly type: \"2d\";\r\n /** The origin and rotation of the geometry. */\r\n readonly placement: Omit<Placement2dProps, \"bbox\">;\r\n}\r\n\r\n/** Wire format describing a request to produce graphics in \"iMdl\" format for a 3d geometry stream.\r\n * @see [[ElementGraphicsRequestProps]] for more details.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface DynamicGraphicsRequest3dProps extends DynamicGraphicsRequestProps {\r\n /** Specifies the geometry is 3d. */\r\n readonly type: \"3d\";\r\n /** The origin and rotation of the geometry. */\r\n readonly placement: Omit<Placement3dProps, \"bbox\">;\r\n}\r\n\r\n/** Wire format describing a request to produce graphics in \"iMdl\" format for a single element or geometry stream.\r\n * @note Every request must have an `id` that is unique amongst all extant requests for a given [[IModel]].\r\n * @see [TileAdmin.requestElementGraphics]($frontend) and [IModelDb.generateElementGraphics]($backend) to fulfill such a request.\r\n * @see [readElementGraphics]($frontend) to convert the result of a request to a [RenderGraphic]($frontend) for display.\r\n * @public\r\n * @extensions\r\n */\r\nexport type ElementGraphicsRequestProps = PersistentGraphicsRequestProps | DynamicGraphicsRequest2dProps | DynamicGraphicsRequest3dProps;\r\n"]}
|
|
@@ -25,13 +25,13 @@ export declare enum CurrentImdlVersion {
|
|
|
25
25
|
* front-end is not capable of reading the tile content. Otherwise, this front-end can read the tile content even if the header specifies a
|
|
26
26
|
* greater minor version than CurrentVersion.Minor, although some data may be skipped.
|
|
27
27
|
*/
|
|
28
|
-
Major =
|
|
28
|
+
Major = 28,
|
|
29
29
|
/** The unsigned 16-bit minor version number. If the major version in the tile header is equal to CurrentVersion.Major, then this package can
|
|
30
30
|
* read the tile content even if the minor version in the tile header is greater than this value, although some data may be skipped.
|
|
31
31
|
*/
|
|
32
32
|
Minor = 0,
|
|
33
33
|
/** The unsigned 32-bit version number derived from the 16-bit major and minor version numbers. */
|
|
34
|
-
Combined =
|
|
34
|
+
Combined = 1835008
|
|
35
35
|
}
|
|
36
36
|
/** Header embedded at the beginning of binary tile data in iMdl format describing its contents.
|
|
37
37
|
* @internal
|
|
@@ -34,13 +34,13 @@ var CurrentImdlVersion;
|
|
|
34
34
|
* front-end is not capable of reading the tile content. Otherwise, this front-end can read the tile content even if the header specifies a
|
|
35
35
|
* greater minor version than CurrentVersion.Minor, although some data may be skipped.
|
|
36
36
|
*/
|
|
37
|
-
CurrentImdlVersion[CurrentImdlVersion["Major"] =
|
|
37
|
+
CurrentImdlVersion[CurrentImdlVersion["Major"] = 28] = "Major";
|
|
38
38
|
/** The unsigned 16-bit minor version number. If the major version in the tile header is equal to CurrentVersion.Major, then this package can
|
|
39
39
|
* read the tile content even if the minor version in the tile header is greater than this value, although some data may be skipped.
|
|
40
40
|
*/
|
|
41
41
|
CurrentImdlVersion[CurrentImdlVersion["Minor"] = 0] = "Minor";
|
|
42
42
|
/** The unsigned 32-bit version number derived from the 16-bit major and minor version numbers. */
|
|
43
|
-
CurrentImdlVersion[CurrentImdlVersion["Combined"] =
|
|
43
|
+
CurrentImdlVersion[CurrentImdlVersion["Combined"] = 1835008] = "Combined";
|
|
44
44
|
})(CurrentImdlVersion = exports.CurrentImdlVersion || (exports.CurrentImdlVersion = {}));
|
|
45
45
|
/** Header embedded at the beginning of binary tile data in iMdl format describing its contents.
|
|
46
46
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTileIO.js","sourceRoot":"","sources":["../../../src/tile/IModelTileIO.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 Tile\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d } from \"../geometry/Placement\";\r\nimport { nextPoint3d64FromByteStream, TileFormat, TileHeader } from \"./TileIO\";\r\n\r\n/** Flags describing the geometry contained within a tile in iMdl format.\r\n * @internal\r\n */\r\nexport enum ImdlFlags {\r\n /** No special flags */\r\n None = 0,\r\n /** The tile contains some curved geometry */\r\n ContainsCurves = 1 << 0,\r\n /** Some geometry within the tile range was omitted based on its size */\r\n Incomplete = 1 << 2,\r\n /** The tile must be refined by sub-division, not magnification. */\r\n DisallowMagnification = 1 << 3,\r\n}\r\n\r\n/** Describes the maximum major and minor version of the iMdl tile format supported by this version of this package.\r\n * @internal\r\n */\r\nexport enum CurrentImdlVersion {\r\n /** The unsigned 16-bit major version number. If the major version specified in the tile header is greater than this value, then this\r\n * front-end is not capable of reading the tile content. Otherwise, this front-end can read the tile content even if the header specifies a\r\n * greater minor version than CurrentVersion.Minor, although some data may be skipped.\r\n */\r\n Major =
|
|
1
|
+
{"version":3,"file":"IModelTileIO.js","sourceRoot":"","sources":["../../../src/tile/IModelTileIO.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 Tile\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d } from \"../geometry/Placement\";\r\nimport { nextPoint3d64FromByteStream, TileFormat, TileHeader } from \"./TileIO\";\r\n\r\n/** Flags describing the geometry contained within a tile in iMdl format.\r\n * @internal\r\n */\r\nexport enum ImdlFlags {\r\n /** No special flags */\r\n None = 0,\r\n /** The tile contains some curved geometry */\r\n ContainsCurves = 1 << 0,\r\n /** Some geometry within the tile range was omitted based on its size */\r\n Incomplete = 1 << 2,\r\n /** The tile must be refined by sub-division, not magnification. */\r\n DisallowMagnification = 1 << 3,\r\n}\r\n\r\n/** Describes the maximum major and minor version of the iMdl tile format supported by this version of this package.\r\n * @internal\r\n */\r\nexport enum CurrentImdlVersion {\r\n /** The unsigned 16-bit major version number. If the major version specified in the tile header is greater than this value, then this\r\n * front-end is not capable of reading the tile content. Otherwise, this front-end can read the tile content even if the header specifies a\r\n * greater minor version than CurrentVersion.Minor, although some data may be skipped.\r\n */\r\n Major = 28,\r\n /** The unsigned 16-bit minor version number. If the major version in the tile header is equal to CurrentVersion.Major, then this package can\r\n * read the tile content even if the minor version in the tile header is greater than this value, although some data may be skipped.\r\n */\r\n Minor = 0,\r\n /** The unsigned 32-bit version number derived from the 16-bit major and minor version numbers. */\r\n Combined = (Major << 0x10) | Minor,\r\n}\r\n\r\n/** Header embedded at the beginning of binary tile data in iMdl format describing its contents.\r\n * @internal\r\n */\r\nexport class ImdlHeader extends TileHeader {\r\n /** The size of this header in bytes. */\r\n public readonly headerLength: number;\r\n /** Flags describing the geometry contained within the tile */\r\n public readonly flags: ImdlFlags;\r\n /** A bounding box no larger than the tile's range, tightly enclosing the tile's geometry; or a null range if the tile is empty */\r\n public readonly contentRange: ElementAlignedBox3d;\r\n /** The chord tolerance in meters at which the tile's geometry was faceted */\r\n public readonly tolerance: number;\r\n /** The number of elements which contributed at least some geometry to the tile content */\r\n public readonly numElementsIncluded: number;\r\n /** The number of elements within the tile range which contributed no geometry to the tile content */\r\n public readonly numElementsExcluded: number;\r\n /** The total number of bytes in the binary tile data, including this header */\r\n public readonly tileLength: number;\r\n /** A bitfield wherein each set bit indicates an empty sub-volume. */\r\n public readonly emptySubRanges: number;\r\n\r\n public get versionMajor(): number { return this.version >>> 0x10; }\r\n public get versionMinor(): number { return (this.version & 0xffff) >>> 0; }\r\n\r\n public get isValid(): boolean { return TileFormat.IModel === this.format; }\r\n public get isReadableVersion(): boolean { return this.versionMajor <= CurrentImdlVersion.Major; }\r\n\r\n /** Deserialize a header from the binary data at the stream's current position.\r\n * If the binary data does not contain a valid header, the Header will be marked 'invalid'.\r\n */\r\n public constructor(stream: ByteStream) {\r\n super(stream);\r\n this.headerLength = stream.nextUint32;\r\n this.flags = stream.nextUint32;\r\n\r\n this.contentRange = new Range3d();\r\n nextPoint3d64FromByteStream(stream, this.contentRange.low);\r\n nextPoint3d64FromByteStream(stream, this.contentRange.high);\r\n\r\n this.tolerance = stream.nextFloat64;\r\n this.numElementsIncluded = stream.nextUint32;\r\n this.numElementsExcluded = stream.nextUint32;\r\n this.tileLength = stream.nextUint32;\r\n\r\n // empty sub-volume bit field introduced in format v02.00\r\n this.emptySubRanges = this.versionMajor >= 2 ? stream.nextUint32 : 0;\r\n\r\n // Skip any unprocessed bytes in header\r\n const remainingHeaderBytes = this.headerLength - stream.curPos;\r\n assert(remainingHeaderBytes >= 0);\r\n stream.advance(remainingHeaderBytes);\r\n\r\n if (stream.isPastTheEnd)\r\n this.invalidate();\r\n }\r\n}\r\n\r\n/** Header preceding the feature table embedded in an iMdl tile's content.\r\n * @internal\r\n */\r\nexport class FeatureTableHeader {\r\n public static readFrom(stream: ByteStream) {\r\n const length = stream.nextUint32;\r\n const maxFeatures = stream.nextUint32;\r\n const count = stream.nextUint32;\r\n return stream.isPastTheEnd ? undefined : new FeatureTableHeader(length, maxFeatures, count);\r\n }\r\n\r\n public static sizeInBytes = 12;\r\n\r\n private constructor(public readonly length: number,\r\n public readonly maxFeatures: number,\r\n public readonly count: number) { }\r\n}\r\n"]}
|
|
@@ -43,6 +43,7 @@ export interface TileOptions {
|
|
|
43
43
|
readonly disableMagnification: boolean;
|
|
44
44
|
readonly alwaysSubdivideIncompleteTiles: boolean;
|
|
45
45
|
readonly enableIndexedEdges: boolean;
|
|
46
|
+
readonly generateAllPolyfaceEdges: boolean;
|
|
46
47
|
}
|
|
47
48
|
/** @internal */
|
|
48
49
|
export declare namespace TileOptions {
|
|
@@ -54,13 +55,17 @@ export declare namespace TileOptions {
|
|
|
54
55
|
*/
|
|
55
56
|
function fromTreeIdAndContentId(treeId: string, contentId: string): TileOptions;
|
|
56
57
|
}
|
|
57
|
-
/**
|
|
58
|
-
|
|
58
|
+
/** The result of [[parseTileTreeIdAndContentId]].
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
export interface ParsedTileTreeIdAndContentId {
|
|
59
62
|
modelId: Id64String;
|
|
60
63
|
treeId: IModelTileTreeId;
|
|
61
64
|
contentId: ContentIdSpec;
|
|
62
65
|
options: TileOptions;
|
|
63
|
-
}
|
|
66
|
+
}
|
|
67
|
+
/** @internal */
|
|
68
|
+
export declare function parseTileTreeIdAndContentId(treeId: string, contentId: string): ParsedTileTreeIdAndContentId;
|
|
64
69
|
/** @internal */
|
|
65
70
|
export declare const defaultTileOptions: TileOptions;
|
|
66
71
|
/** @internal */
|
|
@@ -75,16 +80,16 @@ export declare enum TreeFlags {
|
|
|
75
80
|
OptimizeBRepProcessing = 4,
|
|
76
81
|
UseLargerTiles = 8
|
|
77
82
|
}
|
|
78
|
-
/** Describes
|
|
79
|
-
* @
|
|
83
|
+
/** Describes how edges should be produced for tiles in a tile tree.
|
|
84
|
+
* @internal
|
|
80
85
|
*/
|
|
81
|
-
export
|
|
82
|
-
/**
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
|
|
86
|
+
export interface EdgeOptions {
|
|
87
|
+
/** Generate indexed edges. These use less memory and draw more efficiently than non-indexed edges, but require WebGL 2.
|
|
88
|
+
* Generally the display system will determine which to use based on the device's capabilities and application configuration.
|
|
89
|
+
*/
|
|
90
|
+
indexed: boolean;
|
|
91
|
+
/** For polyfaces that lack edge visibility information, generate edges for all faces; otherwise, infer edges from mesh topology. */
|
|
92
|
+
smooth: boolean;
|
|
88
93
|
}
|
|
89
94
|
/** Describes a tile tree used to draw the contents of a model, possibly with embedded animation.
|
|
90
95
|
* @internal
|
|
@@ -93,7 +98,7 @@ export interface PrimaryTileTreeId {
|
|
|
93
98
|
/** Describes the type of tile tree. */
|
|
94
99
|
type: BatchType.Primary;
|
|
95
100
|
/** The type of edges to include in tile content. */
|
|
96
|
-
edges:
|
|
101
|
+
edges: EdgeOptions | false;
|
|
97
102
|
/** Id of the [DisplayStyle]($backend) or [RenderTimeline]($backend) element holding the [[RenderSchedule]] script to be applied to the tiles. */
|
|
98
103
|
animationId?: Id64String;
|
|
99
104
|
/** If true, meshes within the tiles will be grouped into nodes based on the display priority associated with their subcategories,
|