@itwin/core-common 3.1.0-dev.6 → 3.1.0
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 +104 -17
- 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/Fonts.d.ts +16 -5
- package/lib/cjs/Fonts.d.ts.map +1 -1
- package/lib/cjs/Fonts.js +6 -2
- package/lib/cjs/Fonts.js.map +1 -1
- package/lib/cjs/Gradient.d.ts.map +1 -1
- package/lib/cjs/Gradient.js +10 -18
- package/lib/cjs/Gradient.js.map +1 -1
- package/lib/cjs/MapImagerySettings.d.ts +2 -0
- package/lib/cjs/MapImagerySettings.d.ts.map +1 -1
- package/lib/cjs/MapImagerySettings.js.map +1 -1
- package/lib/cjs/MapLayerSettings.d.ts +120 -37
- package/lib/cjs/MapLayerSettings.d.ts.map +1 -1
- package/lib/cjs/MapLayerSettings.js +156 -86
- package/lib/cjs/MapLayerSettings.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 +7 -0
- package/lib/cjs/SpatialClassification.js.map +1 -1
- package/lib/cjs/geometry/TextString.d.ts +5 -4
- package/lib/cjs/geometry/TextString.d.ts.map +1 -1
- package/lib/cjs/geometry/TextString.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocket.d.ts +0 -1
- package/lib/cjs/ipc/IpcWebSocket.d.ts.map +1 -1
- package/lib/cjs/ipc/IpcWebSocket.js +4 -13
- package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.d.ts +2 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.d.ts.map +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.js +24 -15
- package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +1 -0
- package/lib/cjs/rpc/IModelReadRpcInterface.d.ts.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js +1 -0
- 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/RpcInvocation.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.js +1 -6
- package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.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/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/Fonts.d.ts +16 -5
- package/lib/esm/Fonts.d.ts.map +1 -1
- package/lib/esm/Fonts.js +6 -2
- package/lib/esm/Fonts.js.map +1 -1
- package/lib/esm/Gradient.d.ts.map +1 -1
- package/lib/esm/Gradient.js +10 -18
- package/lib/esm/Gradient.js.map +1 -1
- package/lib/esm/MapImagerySettings.d.ts +2 -0
- package/lib/esm/MapImagerySettings.d.ts.map +1 -1
- package/lib/esm/MapImagerySettings.js.map +1 -1
- package/lib/esm/MapLayerSettings.d.ts +120 -37
- package/lib/esm/MapLayerSettings.d.ts.map +1 -1
- package/lib/esm/MapLayerSettings.js +152 -84
- package/lib/esm/MapLayerSettings.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 +7 -0
- package/lib/esm/SpatialClassification.js.map +1 -1
- package/lib/esm/geometry/TextString.d.ts +5 -4
- package/lib/esm/geometry/TextString.d.ts.map +1 -1
- package/lib/esm/geometry/TextString.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocket.d.ts +0 -1
- package/lib/esm/ipc/IpcWebSocket.d.ts.map +1 -1
- package/lib/esm/ipc/IpcWebSocket.js +4 -13
- package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.d.ts +2 -1
- package/lib/esm/ipc/IpcWebSocketTransport.d.ts.map +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.js +24 -15
- package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.d.ts +1 -0
- package/lib/esm/rpc/IModelReadRpcInterface.d.ts.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js +1 -0
- 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/RpcInvocation.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.js +1 -6
- package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.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/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTileRpcInterface.d.ts","sourceRoot":"","sources":["../../../src/rpc/IModelTileRpcInterface.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEvF,cAAc;AACd,8BAAsB,sBAAuB,SAAQ,YAAY;WACjD,SAAS,IAAI,sBAAsB;IAEjD,2CAA2C;IAC3C,gBAAuB,aAAa,4BAA4B;IAEhE,6CAA6C;IAC7C,OAAc,gBAAgB,SAAW;IAOzC
|
|
1
|
+
{"version":3,"file":"IModelTileRpcInterface.d.ts","sourceRoot":"","sources":["../../../src/rpc/IModelTileRpcInterface.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEvF,cAAc;AACd,8BAAsB,sBAAuB,SAAQ,YAAY;WACjD,SAAS,IAAI,sBAAsB;IAEjD,2CAA2C;IAC3C,gBAAuB,aAAa,4BAA4B;IAEhE,6CAA6C;IAC7C,OAAc,gBAAgB,SAAW;IAOzC;;OAEG;IACU,wBAAwB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,+BAA+B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAI3I;;OAEG;IACU,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzD,gBAAgB;IACH,oBAAoB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAEzG;;;;OAIG;IACU,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIvJ;;OAEG;IACU,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7G,gBAAgB;IACH,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC;IAIzD;;;;;OAKG;IACU,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzG;;;;OAIG;IACU,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,2BAA2B,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;CAGvI"}
|
|
@@ -17,12 +17,14 @@ class IModelTileRpcInterface extends RpcInterface_1.RpcInterface {
|
|
|
17
17
|
NOTE: Any add/remove/change to the methods below requires an update of the interface version.
|
|
18
18
|
NOTE: Please consult the README in this folder for the semantic versioning rules.
|
|
19
19
|
===========================================================================================*/
|
|
20
|
-
/**
|
|
20
|
+
/** Returns connection information for external tile cache or an empty `CloudStorageContainerUrl` if no external tile cache is configured on the backend.
|
|
21
|
+
* @beta
|
|
22
|
+
*/
|
|
21
23
|
async getTileCacheContainerUrl(_tokenProps, _id) {
|
|
22
24
|
return this.forward(arguments);
|
|
23
25
|
}
|
|
24
26
|
/** Returns true if an external tile cache is configured on the backend.
|
|
25
|
-
* @internal
|
|
27
|
+
* @internal @deprecated
|
|
26
28
|
*/
|
|
27
29
|
async isUsingExternalTileCache() {
|
|
28
30
|
return this.forward(arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTileRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/IModelTileRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAMH,kDAA+C;AAC/C,8CAA2C;AAI3C,cAAc;AACd,MAAsB,sBAAuB,SAAQ,2BAAY;IACxD,MAAM,CAAC,SAAS,KAA6B,OAAO,uBAAU,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAQtH;;;iGAG6F;IAE7F
|
|
1
|
+
{"version":3,"file":"IModelTileRpcInterface.js","sourceRoot":"","sources":["../../../src/rpc/IModelTileRpcInterface.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAMH,kDAA+C;AAC/C,8CAA2C;AAI3C,cAAc;AACd,MAAsB,sBAAuB,SAAQ,2BAAY;IACxD,MAAM,CAAC,SAAS,KAA6B,OAAO,uBAAU,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAQtH;;;iGAG6F;IAE7F;;OAEG;IACI,KAAK,CAAC,wBAAwB,CAAC,WAA2B,EAAE,GAAoC;QACrG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,wBAAwB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;IACT,KAAK,CAAC,oBAAoB,CAAC,WAA2B,EAAE,GAAW,IAAkC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7I;;;;OAIG;IACI,KAAK,CAAC,mBAAmB,CAAC,SAAyB,EAAE,OAAe,EAAE,UAAkB,EAAE,KAAyB;QACxH,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,mBAAmB,CAAC,SAAyB,EAAE,IAA2B;QACrF,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;IACT,KAAK,CAAC,gBAAgB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,WAA2B,EAAE,SAAgC,IAAmB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7I;;;;OAIG;IACI,KAAK,CAAC,sBAAsB,CAAC,SAAyB,EAAE,QAAqC;QAClG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;;AAnEH,wDAoEC;AAjEC,2CAA2C;AACpB,oCAAa,GAAG,wBAAwB,CAAC;AAEhE,6CAA6C;AAC/B,uCAAgB,GAAG,OAAO,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\nimport { Id64Array } from \"@itwin/core-bentley\";\r\nimport { CloudStorageContainerDescriptor, CloudStorageContainerUrl } from \"../CloudStorage\";\r\nimport { TileContentIdentifier } from \"../CloudStorageTileCache\";\r\nimport { IModelRpcProps } from \"../IModel\";\r\nimport { RpcInterface } from \"../RpcInterface\";\r\nimport { RpcManager } from \"../RpcManager\";\r\nimport { ElementGraphicsRequestProps } from \"../tile/ElementGraphics\";\r\nimport { IModelTileTreeProps, TileContentSource, TileVersionInfo } from \"../TileProps\";\r\n\r\n/** @public */\r\nexport abstract class IModelTileRpcInterface extends RpcInterface {\r\n public static getClient(): IModelTileRpcInterface { return RpcManager.getClientForInterface(IModelTileRpcInterface); }\r\n\r\n /** The immutable name of the interface. */\r\n public static readonly interfaceName = \"IModelTileRpcInterface\";\r\n\r\n /** The semantic version of the interface. */\r\n public static interfaceVersion = \"3.0.0\";\r\n\r\n /*===========================================================================================\r\n NOTE: Any add/remove/change to the methods below requires an update of the interface version.\r\n NOTE: Please consult the README in this folder for the semantic versioning rules.\r\n ===========================================================================================*/\r\n\r\n /** Returns connection information for external tile cache or an empty `CloudStorageContainerUrl` if no external tile cache is configured on the backend.\r\n * @beta\r\n */\r\n public async getTileCacheContainerUrl(_tokenProps: IModelRpcProps, _id: CloudStorageContainerDescriptor): Promise<CloudStorageContainerUrl> {\r\n return this.forward(arguments);\r\n }\r\n\r\n /** Returns true if an external tile cache is configured on the backend.\r\n * @internal @deprecated\r\n */\r\n public async isUsingExternalTileCache(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\r\n return this.forward(arguments);\r\n }\r\n\r\n /** @internal */\r\n public async requestTileTreeProps(_tokenProps: IModelRpcProps, _id: string): Promise<IModelTileTreeProps> { return this.forward(arguments); }\r\n\r\n /** Ask the backend to generate content for the specified tile. This function, unlike the deprecated `requestTileContent`, does not check the cloud storage tile cache -\r\n * Use `CloudStorageTileCache.retrieve` for that.\r\n * @returns TileContentSource - if Backend, use retrieveTileContent. If ExternalCache, use TileAdmin.requestCachedTileContent\r\n * @internal\r\n */\r\n public async generateTileContent(_rpcProps: IModelRpcProps, _treeId: string, _contentId: string, _guid: string | undefined): Promise<TileContentSource> {\r\n return this.forward(arguments);\r\n }\r\n\r\n /** Retrieves tile content from the backend once it's generated by generateTileContent.\r\n * @internal\r\n */\r\n public async retrieveTileContent(_rpcProps: IModelRpcProps, _key: TileContentIdentifier): Promise<Uint8Array> {\r\n return this.forward(arguments);\r\n }\r\n\r\n /** @internal */\r\n public async queryVersionInfo(): Promise<TileVersionInfo> {\r\n return this.forward(arguments);\r\n }\r\n\r\n /** This is a temporary workaround for folks developing authoring applications, to be removed when proper support for such applications is introduced.\r\n * Given a set of model Ids, it purges any associated tile tree state on the back-end so that the next request for the tile tree or content will recreate that state.\r\n * Invoked after a modification is made to the model(s).\r\n * If no array of model Ids is supplied, it purges *all* tile trees, which can be quite inefficient.\r\n * @internal\r\n */\r\n public async purgeTileTrees(_tokenProps: IModelRpcProps, _modelIds: Id64Array | undefined): Promise<void> { return this.forward(arguments); }\r\n\r\n /** Requests graphics for a single element in \"iMdl\" format.\r\n * @returns graphics in iMdl format, or `undefined` if the element's geometry produced no graphics or the request was canceled before completion.\r\n * @throws IModelError on bad request (nonexistent element, duplicate request Id, etc).\r\n * @internal\r\n */\r\n public async requestElementGraphics(_rpcProps: IModelRpcProps, _request: ElementGraphicsRequestProps): Promise<Uint8Array | undefined> {\r\n return this.forward(arguments);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcInvocation.d.ts","sourceRoot":"","sources":["../../../../src/rpc/core/RpcInvocation.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAA+B,UAAU,EAA4C,MAAM,qBAAqB,CAAC;AAIrI,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAoB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGzF;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,gBAAgB;AAChB,oBAAY,cAAc,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE7F;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAc,WAAW,EAAE,cAAc,CAAiC;IAC1E,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAa;IAE7B,wCAAwC;IACxC,SAAgB,QAAQ,EAAE,WAAW,CAAC;IAEtC,4BAA4B;IAC5B,SAAgB,OAAO,EAAE,oBAAoB,CAAC;IAE9C,oCAAoC;IACpC,SAAgB,SAAS,EAAE,YAAY,CAAoB;IAE3D,mCAAmC;IACnC,SAAgB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAErC,wCAAwC;IACxC,SAAgB,WAAW,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE5D,mCAAmC;IACnC,IAAW,MAAM,IAAI,gBAAgB,CAMpC;IAED,4CAA4C;IAC5C,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED;;;OAGG;WACW,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa;IAI3D,gCAAgC;gBACb,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB;IA8BvE,OAAO,CAAC,sBAAsB;WAIhB,cAAc,CAAC,QAAQ,CAAC,EAAE,WAAW;;;;;;;YAQrC,OAAO;IA2BrB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,MAAM,CAAC,aAAa;YAOd,MAAM;YAKN,eAAe;YAOf,eAAe;
|
|
1
|
+
{"version":3,"file":"RpcInvocation.d.ts","sourceRoot":"","sources":["../../../../src/rpc/core/RpcInvocation.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAA+B,UAAU,EAA4C,MAAM,qBAAqB,CAAC;AAIrI,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAoB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGzF;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,gBAAgB;AAChB,oBAAY,cAAc,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE7F;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAc,WAAW,EAAE,cAAc,CAAiC;IAC1E,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAa;IAE7B,wCAAwC;IACxC,SAAgB,QAAQ,EAAE,WAAW,CAAC;IAEtC,4BAA4B;IAC5B,SAAgB,OAAO,EAAE,oBAAoB,CAAC;IAE9C,oCAAoC;IACpC,SAAgB,SAAS,EAAE,YAAY,CAAoB;IAE3D,mCAAmC;IACnC,SAAgB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAErC,wCAAwC;IACxC,SAAgB,WAAW,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE5D,mCAAmC;IACnC,IAAW,MAAM,IAAI,gBAAgB,CAMpC;IAED,4CAA4C;IAC5C,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED;;;OAGG;WACW,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa;IAI3D,gCAAgC;gBACb,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB;IA8BvE,OAAO,CAAC,sBAAsB;WAIhB,cAAc,CAAC,QAAQ,CAAC,EAAE,WAAW;;;;;;;YAQrC,OAAO;IA2BrB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,MAAM,CAAC,aAAa;YAOd,MAAM;YAKN,eAAe;YAOf,eAAe;IA4B7B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,uBAAuB;CAOhC"}
|
|
@@ -156,18 +156,13 @@ class RpcInvocation {
|
|
|
156
156
|
if (!RpcConfiguration_1.RpcConfiguration.developmentMode)
|
|
157
157
|
reason.stack = undefined;
|
|
158
158
|
const result = await RpcMarshaling_1.RpcMarshaling.serialize(this.protocol, reason);
|
|
159
|
-
let isNoContentError = false;
|
|
160
|
-
try {
|
|
161
|
-
isNoContentError = reason.errorNumber === core_bentley_1.IModelStatus.NoContent;
|
|
162
|
-
}
|
|
163
|
-
catch { }
|
|
164
159
|
if (reason instanceof RpcControl_1.RpcPendingResponse) {
|
|
165
160
|
this._pending = true;
|
|
166
161
|
this._threw = false;
|
|
167
162
|
result.objects = reason.message;
|
|
168
163
|
this.protocol.events.raiseEvent(RpcConstants_1.RpcProtocolEvent.BackendReportedPending, this);
|
|
169
164
|
}
|
|
170
|
-
else if (this.supportsNoContent() &&
|
|
165
|
+
else if (this.supportsNoContent() && (reason === null || reason === void 0 ? void 0 : reason.errorNumber) === core_bentley_1.IModelStatus.NoContent) {
|
|
171
166
|
this._noContent = true;
|
|
172
167
|
this._threw = false;
|
|
173
168
|
this.protocol.events.raiseEvent(RpcConstants_1.RpcProtocolEvent.BackendReportedNoContent, this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcInvocation.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcInvocation.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;AAEH,sDAAqI;AACrI,qEAAkE;AAElE,mDAAgD;AAChD,qDAAkD;AAElD,yDAAsD;AACtD,iDAAoE;AACpE,6CAAuE;AACvE,mDAAoE;AACpE,iDAA8C;AAC9C,+CAAyF;AACzF,+CAAgE;AA+BhE;;GAEG;AACH,MAAa,aAAa;IA8CxB,gCAAgC;IAChC,YAAmB,QAAqB,EAAE,OAA6B;QA7C/D,WAAM,GAAY,KAAK,CAAC;QACxB,aAAQ,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAC3B,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAW,CAAC,CAAC;QACpB,aAAQ,GAAW,CAAC,CAAC;QAQ7B,oCAAoC;QACpB,cAAS,GAAiB,SAAgB,CAAC;QAgCzD,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI;YACF,IAAI;gBACF,IAAI,CAAC,SAAS,GAAG,2BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAEvH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBACzD,IAAI,CAAC,2BAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;oBACxD,MAAM,IAAI,yBAAW,CAAC,iCAAkB,CAAC,mBAAmB,EAAE,mBAAmB,OAAO,oCAAoC,QAAQ,sBAAsB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;iBAC5L;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;oBACtC,IAAI,CAAC,SAAS,GAAG,2BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;iBACxH;qBAAM;oBACL,MAAM,KAAK,CAAC;iBACb;aACF;YAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SAC9B;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAChL,CAAC;IAnDD,mCAAmC;IACnC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,+BAAgB,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,+BAAgB,CAAC,OAAO,CAAC,CAAC;gBACxC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,+BAAgB,CAAC,QAAQ,CAAC,CAAC;oBAC1C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,+BAAgB,CAAC,SAAS,CAAC,CAAC;wBAC5C,+BAAgB,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED,4CAA4C;IAC5C,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;IACtC,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,OAAO,CAAC,OAAqB;QACzC,OAAQ,OAAe,CAAC,gCAAkB,CAAC,CAAC;IAC9C,CAAC;IAiCO,sBAAsB,CAAC,KAAU;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,QAAsB;QACjD,yDAAyD;QACzD,OAAO,QAAQ,CAAC,CAAC,CAAC;YAChB,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS;SACtL,CAAC,CAAC,CAAC,SAAS,CAAC;QACd,wDAAwD;IAC1D,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,QAAQ,GAAgB;YAC5B,UAAU,EAAE,OAAO,CAAC,EAAE;YACtB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,OAAO,CAAC,aAAa;YAClC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa;SAC3C,CAAC;QAEF,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,+BAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAExE,MAAM,UAAU,GAAG,6BAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAChF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACzF,IAAY,CAAC,gCAAkB,CAAC,GAAG,IAAI,CAAC;YACzC,MAAM,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE9C,OAAO,MAAM,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;SAC5F;QAAC,OAAO,KAAc,EAAE;YACvB,qBAAM,CAAC,QAAQ,CAAC,2CAAoB,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,2BAAY,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7K,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC3B;IACH,CAAC;IAEO,aAAa,CAAC,UAAe;QACnC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3C,OAAO;QAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACrJ,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE;gBACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrE,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;gBAEzB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;oBACrD,IAAI,mCAAgB,CAAC,oBAAoB,EAAE;wBACzC,MAAM,IAAI,yBAAW,CAAC,4BAAa,CAAC,KAAK,EAAE,oDAAoD,CAAC,CAAC;qBAClG;yBAAM;wBACL,qBAAM,CAAC,UAAU,CAAC,2CAAoB,CAAC,mBAAmB,EAAE,oDAAoD,CAAC,CAAC;qBACnH;iBACF;aACF;SACF;IACH,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,CAAiB,EAAE,CAAiB;;QAC/D,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;YACpB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;YACvB,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;YACzB,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,MAAK,MAAA,CAAC,CAAC,SAAS,0CAAE,EAAE,CAAA,CAAC,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,KAAU;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAU;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,+BAAgB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,6BAAa,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAW;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,mCAAgB,CAAC,eAAe;YACnC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,6BAAa,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEpE,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI;YAAE,gBAAgB,GAAG,MAAM,CAAC,WAAW,KAAK,2BAAY,CAAC,SAAS,CAAC;SAAE;QAAC,MAAM,GAAG;QAEnF,IAAI,MAAM,YAAY,+BAAkB,EAAE;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,+BAAgB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;SAChF;aAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,gBAAgB,EAAE;YACvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,+BAAgB,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;SAClF;aAAM,IAAI,MAAM,YAAY,gCAAmB,EAAE;YAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,+BAAgB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;SACjF;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,+BAAgB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;SAC9E;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YACjC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,yBAAW,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;IAC/E,CAAC;IAEO,OAAO,CAAC,MAA0B,EAAE,SAAc;QACxD,MAAM,WAAW,GAA0B;YACzC,MAAM;YACN,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC1C,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YACnB,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa;SACjH,CAAC;QAEF,IAAI;YACF,MAAM,IAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAQ,CAAC;YACjG,IAAI,IAAI,CAAC,gCAAkB,CAAC,KAAK,IAAI,EAAE;gBACrC,IAAI,CAAC,gCAAkB,CAAC,GAAG,SAAS,CAAC;aACtC;SACF;QAAC,OAAO,IAAI,EAAE,GAAG;QAElB,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,uBAAuB,CAAC,cAA4B;QAC1D,MAAM,IAAI,GAAI,cAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,UAAU;YACvC,MAAM,IAAI,yBAAW,CAAC,4BAAa,CAAC,KAAK,EAAE,wBAAwB,cAAc,CAAC,WAAW,CAAC,IAAI,mCAAmC,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,CAAC;QAEzK,OAAO,IAAI,CAAC;IACd,CAAC;;AA7NH,sCA8NC;;AA7Ne,yBAAW,GAAmB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAG,CAAA","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 { AccessToken, BentleyError, BentleyStatus, GuidString, IModelStatus, Logger, RpcInterfaceStatus } from \"@itwin/core-bentley\";\r\nimport { CommonLoggerCategory } from \"../../CommonLoggerCategory\";\r\nimport { IModelRpcProps } from \"../../IModel\";\r\nimport { IModelError } from \"../../IModelError\";\r\nimport { RpcInterface } from \"../../RpcInterface\";\r\nimport { SessionProps } from \"../../SessionProps\";\r\nimport { RpcConfiguration } from \"./RpcConfiguration\";\r\nimport { RpcProtocolEvent, RpcRequestStatus } from \"./RpcConstants\";\r\nimport { RpcNotFoundResponse, RpcPendingResponse } from \"./RpcControl\";\r\nimport { RpcMarshaling, RpcSerializedValue } from \"./RpcMarshaling\";\r\nimport { RpcOperation } from \"./RpcOperation\";\r\nimport { RpcProtocol, RpcRequestFulfillment, SerializedRpcRequest } from \"./RpcProtocol\";\r\nimport { CURRENT_INVOCATION, RpcRegistry } from \"./RpcRegistry\";\r\n\r\n/** The properties of an RpcActivity.\r\n * @public\r\n */\r\nexport interface RpcActivity extends SessionProps {\r\n /** Used for logging to correlate an Rpc activity between frontend and backend */\r\n readonly activityId: GuidString;\r\n\r\n /** access token for authorization */\r\n readonly accessToken: AccessToken;\r\n\r\n /** the name of the current rpc method */\r\n readonly rpcMethod?: string;\r\n}\r\n\r\n/** Serialized format for sending the request across the RPC layer\r\n * @public\r\n */\r\nexport interface SerializedRpcActivity {\r\n id: string;\r\n applicationId: string;\r\n applicationVersion: string;\r\n sessionId: string;\r\n authorization: string;\r\n csrfToken?: { headerName: string, headerValue: string };\r\n}\r\n\r\n/** @internal */\r\nexport type RpcActivityRun = (activity: RpcActivity, fn: () => Promise<any>) => Promise<any>;\r\n\r\n/** An RPC operation invocation in response to a request.\r\n * @internal\r\n */\r\nexport class RpcInvocation {\r\n public static runActivity: RpcActivityRun = async (_activity, fn) => fn();\r\n private _threw: boolean = false;\r\n private _pending: boolean = false;\r\n private _notFound: boolean = false;\r\n private _noContent: boolean = false;\r\n private _timeIn: number = 0;\r\n private _timeOut: number = 0;\r\n\r\n /** The protocol for this invocation. */\r\n public readonly protocol: RpcProtocol;\r\n\r\n /** The received request. */\r\n public readonly request: SerializedRpcRequest;\r\n\r\n /** The operation of the request. */\r\n public readonly operation: RpcOperation = undefined as any;\r\n\r\n /** The implementation response. */\r\n public readonly result: Promise<any>;\r\n\r\n /** The fulfillment for this request. */\r\n public readonly fulfillment: Promise<RpcRequestFulfillment>;\r\n\r\n /** The status for this request. */\r\n public get status(): RpcRequestStatus {\r\n return this._threw ? RpcRequestStatus.Rejected :\r\n this._pending ? RpcRequestStatus.Pending :\r\n this._notFound ? RpcRequestStatus.NotFound :\r\n this._noContent ? RpcRequestStatus.NoContent :\r\n RpcRequestStatus.Resolved;\r\n }\r\n\r\n /** The elapsed time for this invocation. */\r\n public get elapsed(): number {\r\n return this._timeOut - this._timeIn;\r\n }\r\n\r\n /**\r\n * The invocation for the current RPC operation.\r\n * @note The return value of this function is only reliable in an RPC impl class member function where program control was received from the RpcInvocation constructor function.\r\n */\r\n public static current(rpcImpl: RpcInterface): RpcInvocation {\r\n return (rpcImpl as any)[CURRENT_INVOCATION];\r\n }\r\n\r\n /** Constructs an invocation. */\r\n public constructor(protocol: RpcProtocol, request: SerializedRpcRequest) {\r\n this._timeIn = new Date().getTime();\r\n this.protocol = protocol;\r\n this.request = request;\r\n\r\n try {\r\n try {\r\n this.operation = RpcOperation.lookup(this.request.operation.interfaceDefinition, this.request.operation.operationName);\r\n\r\n const backend = this.operation.interfaceVersion;\r\n const frontend = this.request.operation.interfaceVersion;\r\n if (!RpcInterface.isVersionCompatible(backend, frontend)) {\r\n throw new IModelError(RpcInterfaceStatus.IncompatibleVersion, `Backend version ${backend} does not match frontend version ${frontend} for RPC interface ${this.operation.operationName}.`);\r\n }\r\n } catch (error) {\r\n if (this.handleUnknownOperation(error)) {\r\n this.operation = RpcOperation.lookup(this.request.operation.interfaceDefinition, this.request.operation.operationName);\r\n } else {\r\n throw error;\r\n }\r\n }\r\n\r\n this.result = this.resolve();\r\n } catch (error) {\r\n this.result = this.reject(error);\r\n }\r\n\r\n this.fulfillment = this.result.then(async (value) => this._threw ? this.fulfillRejected(value) : this.fulfillResolved(value), async (reason) => this.fulfillRejected(reason));\r\n }\r\n\r\n private handleUnknownOperation(error: any): boolean {\r\n return this.protocol.configuration.controlChannel.handleUnknownOperation(this, error);\r\n }\r\n\r\n public static sanitizeForLog(activity?: RpcActivity) {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n return activity ? {\r\n ActivityId: activity.activityId, SessionId: activity.sessionId, ApplicationId: activity.applicationId, ApplicationVersion: activity.applicationVersion, rpcMethod: activity.rpcMethod,\r\n } : undefined;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n }\r\n\r\n private async resolve(): Promise<any> {\r\n const request = this.request;\r\n const activity: RpcActivity = {\r\n activityId: request.id,\r\n applicationId: request.applicationId,\r\n applicationVersion: request.applicationVersion,\r\n sessionId: request.sessionId,\r\n accessToken: request.authorization,\r\n rpcMethod: request.operation.operationName,\r\n };\r\n\r\n try {\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.RequestReceived, this);\r\n\r\n const parameters = RpcMarshaling.deserialize(this.protocol, request.parameters);\r\n this.applyPolicies(parameters);\r\n const impl = RpcRegistry.instance.getImplForInterface(this.operation.interfaceDefinition);\r\n (impl as any)[CURRENT_INVOCATION] = this;\r\n const op = this.lookupOperationFunction(impl);\r\n\r\n return await RpcInvocation.runActivity(activity, async () => op.call(impl, ...parameters));\r\n } catch (error: unknown) {\r\n Logger.logError(CommonLoggerCategory.RpcInterfaceBackend, \"Error in RPC operation\", { error: BentleyError.getErrorProps(error), ...RpcInvocation.sanitizeForLog(activity) });\r\n return this.reject(error);\r\n }\r\n }\r\n\r\n private applyPolicies(parameters: any) {\r\n if (!parameters || !Array.isArray(parameters))\r\n return;\r\n\r\n for (let i = 0; i !== parameters.length; ++i) {\r\n const parameter = parameters[i];\r\n const isToken = typeof (parameter) === \"object\" && parameter !== null && parameter.hasOwnProperty(\"iModelId\") && parameter.hasOwnProperty(\"iTwinId\");\r\n if (isToken && this.protocol.checkToken && !this.operation.policy.allowTokenMismatch) {\r\n const inflated = this.protocol.inflateToken(parameter, this.request);\r\n parameters[i] = inflated;\r\n\r\n if (!RpcInvocation.compareTokens(parameter, inflated)) {\r\n if (RpcConfiguration.throwOnTokenMismatch) {\r\n throw new IModelError(BentleyStatus.ERROR, \"IModelRpcProps mismatch detected for this request.\");\r\n } else {\r\n Logger.logWarning(CommonLoggerCategory.RpcInterfaceBackend, \"IModelRpcProps mismatch detected for this request.\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private static compareTokens(a: IModelRpcProps, b: IModelRpcProps): boolean {\r\n return a.key === b.key &&\r\n a.iTwinId === b.iTwinId &&\r\n a.iModelId === b.iModelId &&\r\n (undefined === a.changeset || (a.changeset.id === b.changeset?.id));\r\n }\r\n\r\n private async reject(error: any): Promise<any> {\r\n this._threw = true;\r\n return error;\r\n }\r\n\r\n private async fulfillResolved(value: any): Promise<RpcRequestFulfillment> {\r\n this._timeOut = new Date().getTime();\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendResponseCreated, this);\r\n const result = await RpcMarshaling.serialize(this.protocol, value);\r\n return this.fulfill(result, value);\r\n }\r\n\r\n private async fulfillRejected(reason: any): Promise<RpcRequestFulfillment> {\r\n this._timeOut = new Date().getTime();\r\n if (!RpcConfiguration.developmentMode)\r\n reason.stack = undefined;\r\n\r\n const result = await RpcMarshaling.serialize(this.protocol, reason);\r\n\r\n let isNoContentError = false;\r\n try { isNoContentError = reason.errorNumber === IModelStatus.NoContent; } catch { }\r\n\r\n if (reason instanceof RpcPendingResponse) {\r\n this._pending = true;\r\n this._threw = false;\r\n result.objects = reason.message;\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendReportedPending, this);\r\n } else if (this.supportsNoContent() && isNoContentError) {\r\n this._noContent = true;\r\n this._threw = false;\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendReportedNoContent, this);\r\n } else if (reason instanceof RpcNotFoundResponse) {\r\n this._notFound = true;\r\n this._threw = false;\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendReportedNotFound, this);\r\n } else {\r\n this._threw = true;\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendErrorOccurred, this);\r\n }\r\n\r\n return this.fulfill(result, reason);\r\n }\r\n\r\n private supportsNoContent() {\r\n if (!this.request.protocolVersion) {\r\n return false;\r\n }\r\n\r\n return RpcProtocol.protocolVersion >= 1 && this.request.protocolVersion >= 1;\r\n }\r\n\r\n private fulfill(result: RpcSerializedValue, rawResult: any): RpcRequestFulfillment {\r\n const fulfillment: RpcRequestFulfillment = {\r\n result,\r\n rawResult,\r\n status: this.protocol.getCode(this.status),\r\n id: this.request.id,\r\n interfaceName: (typeof (this.operation) === \"undefined\") ? \"\" : this.operation.interfaceDefinition.interfaceName,\r\n };\r\n\r\n try {\r\n const impl = RpcRegistry.instance.getImplForInterface(this.operation.interfaceDefinition) as any;\r\n if (impl[CURRENT_INVOCATION] === this) {\r\n impl[CURRENT_INVOCATION] = undefined;\r\n }\r\n } catch (_err) { }\r\n\r\n return fulfillment;\r\n }\r\n\r\n private lookupOperationFunction(implementation: RpcInterface): (...args: any[]) => Promise<any> {\r\n const func = (implementation as any)[this.operation.operationName];\r\n if (!func || typeof (func) !== \"function\")\r\n throw new IModelError(BentleyStatus.ERROR, `RPC interface class \"${implementation.constructor.name}\" does not implement operation \"${this.operation.operationName}\".`);\r\n\r\n return func;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RpcInvocation.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcInvocation.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 { AccessToken, BentleyError, BentleyStatus, GuidString, IModelStatus, Logger, RpcInterfaceStatus } from \"@itwin/core-bentley\";\r\nimport { CommonLoggerCategory } from \"../../CommonLoggerCategory\";\r\nimport { IModelRpcProps } from \"../../IModel\";\r\nimport { IModelError } from \"../../IModelError\";\r\nimport { RpcInterface } from \"../../RpcInterface\";\r\nimport { SessionProps } from \"../../SessionProps\";\r\nimport { RpcConfiguration } from \"./RpcConfiguration\";\r\nimport { RpcProtocolEvent, RpcRequestStatus } from \"./RpcConstants\";\r\nimport { RpcNotFoundResponse, RpcPendingResponse } from \"./RpcControl\";\r\nimport { RpcMarshaling, RpcSerializedValue } from \"./RpcMarshaling\";\r\nimport { RpcOperation } from \"./RpcOperation\";\r\nimport { RpcProtocol, RpcRequestFulfillment, SerializedRpcRequest } from \"./RpcProtocol\";\r\nimport { CURRENT_INVOCATION, RpcRegistry } from \"./RpcRegistry\";\r\n\r\n/** The properties of an RpcActivity.\r\n * @public\r\n */\r\nexport interface RpcActivity extends SessionProps {\r\n /** Used for logging to correlate an Rpc activity between frontend and backend */\r\n readonly activityId: GuidString;\r\n\r\n /** access token for authorization */\r\n readonly accessToken: AccessToken;\r\n\r\n /** the name of the current rpc method */\r\n readonly rpcMethod?: string;\r\n}\r\n\r\n/** Serialized format for sending the request across the RPC layer\r\n * @public\r\n */\r\nexport interface SerializedRpcActivity {\r\n id: string;\r\n applicationId: string;\r\n applicationVersion: string;\r\n sessionId: string;\r\n authorization: string;\r\n csrfToken?: { headerName: string, headerValue: string };\r\n}\r\n\r\n/** @internal */\r\nexport type RpcActivityRun = (activity: RpcActivity, fn: () => Promise<any>) => Promise<any>;\r\n\r\n/** An RPC operation invocation in response to a request.\r\n * @internal\r\n */\r\nexport class RpcInvocation {\r\n public static runActivity: RpcActivityRun = async (_activity, fn) => fn();\r\n private _threw: boolean = false;\r\n private _pending: boolean = false;\r\n private _notFound: boolean = false;\r\n private _noContent: boolean = false;\r\n private _timeIn: number = 0;\r\n private _timeOut: number = 0;\r\n\r\n /** The protocol for this invocation. */\r\n public readonly protocol: RpcProtocol;\r\n\r\n /** The received request. */\r\n public readonly request: SerializedRpcRequest;\r\n\r\n /** The operation of the request. */\r\n public readonly operation: RpcOperation = undefined as any;\r\n\r\n /** The implementation response. */\r\n public readonly result: Promise<any>;\r\n\r\n /** The fulfillment for this request. */\r\n public readonly fulfillment: Promise<RpcRequestFulfillment>;\r\n\r\n /** The status for this request. */\r\n public get status(): RpcRequestStatus {\r\n return this._threw ? RpcRequestStatus.Rejected :\r\n this._pending ? RpcRequestStatus.Pending :\r\n this._notFound ? RpcRequestStatus.NotFound :\r\n this._noContent ? RpcRequestStatus.NoContent :\r\n RpcRequestStatus.Resolved;\r\n }\r\n\r\n /** The elapsed time for this invocation. */\r\n public get elapsed(): number {\r\n return this._timeOut - this._timeIn;\r\n }\r\n\r\n /**\r\n * The invocation for the current RPC operation.\r\n * @note The return value of this function is only reliable in an RPC impl class member function where program control was received from the RpcInvocation constructor function.\r\n */\r\n public static current(rpcImpl: RpcInterface): RpcInvocation {\r\n return (rpcImpl as any)[CURRENT_INVOCATION];\r\n }\r\n\r\n /** Constructs an invocation. */\r\n public constructor(protocol: RpcProtocol, request: SerializedRpcRequest) {\r\n this._timeIn = new Date().getTime();\r\n this.protocol = protocol;\r\n this.request = request;\r\n\r\n try {\r\n try {\r\n this.operation = RpcOperation.lookup(this.request.operation.interfaceDefinition, this.request.operation.operationName);\r\n\r\n const backend = this.operation.interfaceVersion;\r\n const frontend = this.request.operation.interfaceVersion;\r\n if (!RpcInterface.isVersionCompatible(backend, frontend)) {\r\n throw new IModelError(RpcInterfaceStatus.IncompatibleVersion, `Backend version ${backend} does not match frontend version ${frontend} for RPC interface ${this.operation.operationName}.`);\r\n }\r\n } catch (error) {\r\n if (this.handleUnknownOperation(error)) {\r\n this.operation = RpcOperation.lookup(this.request.operation.interfaceDefinition, this.request.operation.operationName);\r\n } else {\r\n throw error;\r\n }\r\n }\r\n\r\n this.result = this.resolve();\r\n } catch (error) {\r\n this.result = this.reject(error);\r\n }\r\n\r\n this.fulfillment = this.result.then(async (value) => this._threw ? this.fulfillRejected(value) : this.fulfillResolved(value), async (reason) => this.fulfillRejected(reason));\r\n }\r\n\r\n private handleUnknownOperation(error: any): boolean {\r\n return this.protocol.configuration.controlChannel.handleUnknownOperation(this, error);\r\n }\r\n\r\n public static sanitizeForLog(activity?: RpcActivity) {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n return activity ? {\r\n ActivityId: activity.activityId, SessionId: activity.sessionId, ApplicationId: activity.applicationId, ApplicationVersion: activity.applicationVersion, rpcMethod: activity.rpcMethod,\r\n } : undefined;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n }\r\n\r\n private async resolve(): Promise<any> {\r\n const request = this.request;\r\n const activity: RpcActivity = {\r\n activityId: request.id,\r\n applicationId: request.applicationId,\r\n applicationVersion: request.applicationVersion,\r\n sessionId: request.sessionId,\r\n accessToken: request.authorization,\r\n rpcMethod: request.operation.operationName,\r\n };\r\n\r\n try {\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.RequestReceived, this);\r\n\r\n const parameters = RpcMarshaling.deserialize(this.protocol, request.parameters);\r\n this.applyPolicies(parameters);\r\n const impl = RpcRegistry.instance.getImplForInterface(this.operation.interfaceDefinition);\r\n (impl as any)[CURRENT_INVOCATION] = this;\r\n const op = this.lookupOperationFunction(impl);\r\n\r\n return await RpcInvocation.runActivity(activity, async () => op.call(impl, ...parameters));\r\n } catch (error: unknown) {\r\n Logger.logError(CommonLoggerCategory.RpcInterfaceBackend, \"Error in RPC operation\", { error: BentleyError.getErrorProps(error), ...RpcInvocation.sanitizeForLog(activity) });\r\n return this.reject(error);\r\n }\r\n }\r\n\r\n private applyPolicies(parameters: any) {\r\n if (!parameters || !Array.isArray(parameters))\r\n return;\r\n\r\n for (let i = 0; i !== parameters.length; ++i) {\r\n const parameter = parameters[i];\r\n const isToken = typeof (parameter) === \"object\" && parameter !== null && parameter.hasOwnProperty(\"iModelId\") && parameter.hasOwnProperty(\"iTwinId\");\r\n if (isToken && this.protocol.checkToken && !this.operation.policy.allowTokenMismatch) {\r\n const inflated = this.protocol.inflateToken(parameter, this.request);\r\n parameters[i] = inflated;\r\n\r\n if (!RpcInvocation.compareTokens(parameter, inflated)) {\r\n if (RpcConfiguration.throwOnTokenMismatch) {\r\n throw new IModelError(BentleyStatus.ERROR, \"IModelRpcProps mismatch detected for this request.\");\r\n } else {\r\n Logger.logWarning(CommonLoggerCategory.RpcInterfaceBackend, \"IModelRpcProps mismatch detected for this request.\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private static compareTokens(a: IModelRpcProps, b: IModelRpcProps): boolean {\r\n return a.key === b.key &&\r\n a.iTwinId === b.iTwinId &&\r\n a.iModelId === b.iModelId &&\r\n (undefined === a.changeset || (a.changeset.id === b.changeset?.id));\r\n }\r\n\r\n private async reject(error: any): Promise<any> {\r\n this._threw = true;\r\n return error;\r\n }\r\n\r\n private async fulfillResolved(value: any): Promise<RpcRequestFulfillment> {\r\n this._timeOut = new Date().getTime();\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendResponseCreated, this);\r\n const result = await RpcMarshaling.serialize(this.protocol, value);\r\n return this.fulfill(result, value);\r\n }\r\n\r\n private async fulfillRejected(reason: any): Promise<RpcRequestFulfillment> {\r\n this._timeOut = new Date().getTime();\r\n if (!RpcConfiguration.developmentMode)\r\n reason.stack = undefined;\r\n\r\n const result = await RpcMarshaling.serialize(this.protocol, reason);\r\n\r\n if (reason instanceof RpcPendingResponse) {\r\n this._pending = true;\r\n this._threw = false;\r\n result.objects = reason.message;\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendReportedPending, this);\r\n } else if (this.supportsNoContent() && reason?.errorNumber === IModelStatus.NoContent) {\r\n this._noContent = true;\r\n this._threw = false;\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendReportedNoContent, this);\r\n } else if (reason instanceof RpcNotFoundResponse) {\r\n this._notFound = true;\r\n this._threw = false;\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendReportedNotFound, this);\r\n } else {\r\n this._threw = true;\r\n this.protocol.events.raiseEvent(RpcProtocolEvent.BackendErrorOccurred, this);\r\n }\r\n\r\n return this.fulfill(result, reason);\r\n }\r\n\r\n private supportsNoContent() {\r\n if (!this.request.protocolVersion) {\r\n return false;\r\n }\r\n\r\n return RpcProtocol.protocolVersion >= 1 && this.request.protocolVersion >= 1;\r\n }\r\n\r\n private fulfill(result: RpcSerializedValue, rawResult: any): RpcRequestFulfillment {\r\n const fulfillment: RpcRequestFulfillment = {\r\n result,\r\n rawResult,\r\n status: this.protocol.getCode(this.status),\r\n id: this.request.id,\r\n interfaceName: (typeof (this.operation) === \"undefined\") ? \"\" : this.operation.interfaceDefinition.interfaceName,\r\n };\r\n\r\n try {\r\n const impl = RpcRegistry.instance.getImplForInterface(this.operation.interfaceDefinition) as any;\r\n if (impl[CURRENT_INVOCATION] === this) {\r\n impl[CURRENT_INVOCATION] = undefined;\r\n }\r\n } catch (_err) { }\r\n\r\n return fulfillment;\r\n }\r\n\r\n private lookupOperationFunction(implementation: RpcInterface): (...args: any[]) => Promise<any> {\r\n const func = (implementation as any)[this.operation.operationName];\r\n if (!func || typeof (func) !== \"function\")\r\n throw new IModelError(BentleyStatus.ERROR, `RPC interface class \"${implementation.constructor.name}\" does not implement operation \"${this.operation.operationName}\".`);\r\n\r\n return func;\r\n }\r\n}\r\n"]}
|
|
@@ -44,7 +44,7 @@ class BentleyCloudRpcProtocol extends WebAppRpcProtocol_1.WebAppRpcProtocol {
|
|
|
44
44
|
/** Returns the operation specified by an OpenAPI-compatible URI path. */
|
|
45
45
|
getOperationFromPath(path) {
|
|
46
46
|
const url = new url_1.URL(path, "https://localhost/");
|
|
47
|
-
const components = url.pathname.split("/");
|
|
47
|
+
const components = url.pathname.split("/").filter((x) => x); // filter out empty segments
|
|
48
48
|
const operationComponent = components.slice(-1)[0];
|
|
49
49
|
const encodedRequest = url.searchParams.get("parameters") || "";
|
|
50
50
|
const firstHyphen = operationComponent.indexOf("-");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BentleyCloudRpcProtocol.js","sourceRoot":"","sources":["../../../../src/rpc/web/BentleyCloudRpcProtocol.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\nimport { URL } from \"url\";\r\nimport { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps } from \"../../IModel\";\r\nimport { IModelError } from \"../../IModelError\";\r\nimport { RpcConfiguration } from \"../core/RpcConfiguration\";\r\nimport { RpcOperation } from \"../core/RpcOperation\";\r\nimport { SerializedRpcOperation, SerializedRpcRequest } from \"../core/RpcProtocol\";\r\nimport { RpcRequest } from \"../core/RpcRequest\";\r\nimport { OpenAPIParameter } from \"./OpenAPI\";\r\nimport { WebAppRpcProtocol } from \"./WebAppRpcProtocol\";\r\nimport { SerializedRpcActivity } from \"../core/RpcInvocation\";\r\n\r\nenum AppMode {\r\n MilestoneReview = \"1\",\r\n}\r\n\r\n/** An http protocol for Bentley cloud RPC interface deployments.\r\n * @internal\r\n */\r\nexport abstract class BentleyCloudRpcProtocol extends WebAppRpcProtocol {\r\n public override checkToken = true;\r\n\r\n /** The name of various HTTP request headers based on client's request context */\r\n public override serializedClientRequestContextHeaderNames: SerializedRpcActivity = {\r\n /** The name of the HTTP request id header. */\r\n id: \"X-Correlation-Id\",\r\n\r\n /** The name of the HTTP application id header. */\r\n applicationId: \"X-Application-Id\",\r\n\r\n /** The name of the HTTP application version header. */\r\n applicationVersion: \"X-Application-Version\",\r\n\r\n /** The name of the HTTP session id header. */\r\n sessionId: \"X-Session-Id\",\r\n\r\n /** The name of the HTTP authorization header. */\r\n authorization: \"Authorization\",\r\n };\r\n\r\n /** The name of the RPC protocol version header. */\r\n public override protocolVersionHeaderName = \"X-Protocol-Version\";\r\n\r\n /** Returns the operation specified by an OpenAPI-compatible URI path. */\r\n public override getOperationFromPath(path: string): SerializedRpcOperation {\r\n const url = new URL(path, \"https://localhost/\");\r\n const components = url.pathname.split(\"/\");\r\n\r\n const operationComponent = components.slice(-1)[0];\r\n const encodedRequest = url.searchParams.get(\"parameters\") || \"\";\r\n\r\n const firstHyphen = operationComponent.indexOf(\"-\");\r\n const lastHyphen = operationComponent.lastIndexOf(\"-\");\r\n const interfaceDefinition = operationComponent.slice(0, firstHyphen);\r\n const interfaceVersion = operationComponent.slice(firstHyphen + 1, lastHyphen);\r\n const operationName = operationComponent.slice(lastHyphen + 1);\r\n\r\n return { interfaceDefinition, operationName, interfaceVersion, encodedRequest };\r\n }\r\n\r\n /** Supplies the OpenAPI-compatible URI path for an RPC operation. */\r\n public override supplyPathForOperation(operation: RpcOperation, request: RpcRequest | undefined) {\r\n const prefix = this.pathPrefix;\r\n const appTitle = this.info.title;\r\n const appVersion = this.info.version;\r\n const operationId = `${operation.interfaceDefinition.interfaceName}-${operation.interfaceVersion}-${operation.operationName}`;\r\n\r\n let appMode: string = \"\";\r\n let iTwinId: string = \"\";\r\n let iModelId: string = \"\";\r\n let routeChangesetId: string | undefined;\r\n /* Note: The changesetId field is omitted in the route in the case of ReadWrite connections since the connection is generally expected to be at the\r\n * latest version and not some specific changeset. Also, for the first version (before any changesets), the changesetId in the route is arbitrarily\r\n * set to \"0\" instead of an empty string, since the latter is more un-intuitive for a route. However, in all other use cases, including the changesetId\r\n * held by the IModelRpcProps itself, the changesetId of \"\" (i.e., empty string) signifies the first version - this is more intuitive and retains\r\n * compatibility with the majority of use cases. */\r\n\r\n if (request === undefined) {\r\n appMode = \"{modeId}\";\r\n iTwinId = \"{iTwinId}\";\r\n iModelId = \"{iModelId}\";\r\n routeChangesetId = \"{changeSetId}\";\r\n } else {\r\n let token = operation.policy.token(request) || RpcOperation.fallbackToken;\r\n\r\n if (!token || !token.iModelId) {\r\n if (RpcConfiguration.disableRoutingValidation) {\r\n token = { key: \"\" };\r\n } else {\r\n throw new IModelError(BentleyStatus.ERROR, \"Invalid iModelToken for RPC operation request\");\r\n }\r\n }\r\n\r\n iTwinId = encodeURIComponent(token.iTwinId || \"\");\r\n iModelId = encodeURIComponent(token.iModelId!);\r\n\r\n routeChangesetId = token.changeset?.id || \"0\";\r\n appMode = AppMode.MilestoneReview;\r\n }\r\n\r\n return `${prefix}/${appTitle}/${appVersion}/mode/${appMode}/context/${iTwinId}/imodel/${iModelId}${!!routeChangesetId ? `/changeset/${routeChangesetId}` : \"\"}/${operationId}`;\r\n }\r\n\r\n /**\r\n * Inflates the IModelRpcProps from the URL path for each request on the backend.\r\n * @note This function updates the IModelRpcProps value supplied in the request body.\r\n */\r\n public override inflateToken(tokenFromBody: IModelRpcProps, request: SerializedRpcRequest): IModelRpcProps {\r\n const urlPathComponents = request.path.split(\"/\");\r\n\r\n const iModelKey = tokenFromBody.key;\r\n let iModelId = tokenFromBody.iModelId;\r\n let iTwinId = tokenFromBody.iTwinId;\r\n const changeset = { id: tokenFromBody.changeset?.id ?? \"0\", index: tokenFromBody.changeset?.index };\r\n\r\n for (let i = 0; i <= urlPathComponents.length; ++i) {\r\n const key = urlPathComponents[i];\r\n const value = urlPathComponents[i + 1];\r\n if (key === \"mode\") {\r\n ++i;\r\n } else if (key === \"context\") {\r\n iTwinId = value;\r\n ++i;\r\n } else if (key === \"imodel\") {\r\n iModelId = value;\r\n ++i;\r\n } else if (key === \"changeset\") {\r\n changeset.id = (value === \"0\") ? \"\" : value;\r\n ++i;\r\n }\r\n }\r\n\r\n return { key: iModelKey, iTwinId, iModelId, changeset };\r\n }\r\n\r\n /** Returns the OpenAPI-compatible URI path parameters for an RPC operation.\r\n * @internal\r\n */\r\n public supplyPathParametersForOperation(_operation: RpcOperation): OpenAPIParameter[] {\r\n return [\r\n { name: \"modeId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"iTwinId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"iModelId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"changeSetId\", in: \"path\", required: false, schema: { type: \"string\" } },\r\n ];\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BentleyCloudRpcProtocol.js","sourceRoot":"","sources":["../../../../src/rpc/web/BentleyCloudRpcProtocol.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\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 { URL } from \"url\";\r\nimport { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps } from \"../../IModel\";\r\nimport { IModelError } from \"../../IModelError\";\r\nimport { RpcConfiguration } from \"../core/RpcConfiguration\";\r\nimport { RpcOperation } from \"../core/RpcOperation\";\r\nimport { SerializedRpcOperation, SerializedRpcRequest } from \"../core/RpcProtocol\";\r\nimport { RpcRequest } from \"../core/RpcRequest\";\r\nimport { OpenAPIParameter } from \"./OpenAPI\";\r\nimport { WebAppRpcProtocol } from \"./WebAppRpcProtocol\";\r\nimport { SerializedRpcActivity } from \"../core/RpcInvocation\";\r\n\r\nenum AppMode {\r\n MilestoneReview = \"1\",\r\n}\r\n\r\n/** An http protocol for Bentley cloud RPC interface deployments.\r\n * @internal\r\n */\r\nexport abstract class BentleyCloudRpcProtocol extends WebAppRpcProtocol {\r\n public override checkToken = true;\r\n\r\n /** The name of various HTTP request headers based on client's request context */\r\n public override serializedClientRequestContextHeaderNames: SerializedRpcActivity = {\r\n /** The name of the HTTP request id header. */\r\n id: \"X-Correlation-Id\",\r\n\r\n /** The name of the HTTP application id header. */\r\n applicationId: \"X-Application-Id\",\r\n\r\n /** The name of the HTTP application version header. */\r\n applicationVersion: \"X-Application-Version\",\r\n\r\n /** The name of the HTTP session id header. */\r\n sessionId: \"X-Session-Id\",\r\n\r\n /** The name of the HTTP authorization header. */\r\n authorization: \"Authorization\",\r\n };\r\n\r\n /** The name of the RPC protocol version header. */\r\n public override protocolVersionHeaderName = \"X-Protocol-Version\";\r\n\r\n /** Returns the operation specified by an OpenAPI-compatible URI path. */\r\n public override getOperationFromPath(path: string): SerializedRpcOperation {\r\n const url = new URL(path, \"https://localhost/\");\r\n const components = url.pathname.split(\"/\").filter((x) => x); // filter out empty segments\r\n\r\n const operationComponent = components.slice(-1)[0];\r\n const encodedRequest = url.searchParams.get(\"parameters\") || \"\";\r\n\r\n const firstHyphen = operationComponent.indexOf(\"-\");\r\n const lastHyphen = operationComponent.lastIndexOf(\"-\");\r\n const interfaceDefinition = operationComponent.slice(0, firstHyphen);\r\n const interfaceVersion = operationComponent.slice(firstHyphen + 1, lastHyphen);\r\n const operationName = operationComponent.slice(lastHyphen + 1);\r\n\r\n return { interfaceDefinition, operationName, interfaceVersion, encodedRequest };\r\n }\r\n\r\n /** Supplies the OpenAPI-compatible URI path for an RPC operation. */\r\n public override supplyPathForOperation(operation: RpcOperation, request: RpcRequest | undefined) {\r\n const prefix = this.pathPrefix;\r\n const appTitle = this.info.title;\r\n const appVersion = this.info.version;\r\n const operationId = `${operation.interfaceDefinition.interfaceName}-${operation.interfaceVersion}-${operation.operationName}`;\r\n\r\n let appMode: string = \"\";\r\n let iTwinId: string = \"\";\r\n let iModelId: string = \"\";\r\n let routeChangesetId: string | undefined;\r\n /* Note: The changesetId field is omitted in the route in the case of ReadWrite connections since the connection is generally expected to be at the\r\n * latest version and not some specific changeset. Also, for the first version (before any changesets), the changesetId in the route is arbitrarily\r\n * set to \"0\" instead of an empty string, since the latter is more un-intuitive for a route. However, in all other use cases, including the changesetId\r\n * held by the IModelRpcProps itself, the changesetId of \"\" (i.e., empty string) signifies the first version - this is more intuitive and retains\r\n * compatibility with the majority of use cases. */\r\n\r\n if (request === undefined) {\r\n appMode = \"{modeId}\";\r\n iTwinId = \"{iTwinId}\";\r\n iModelId = \"{iModelId}\";\r\n routeChangesetId = \"{changeSetId}\";\r\n } else {\r\n let token = operation.policy.token(request) || RpcOperation.fallbackToken;\r\n\r\n if (!token || !token.iModelId) {\r\n if (RpcConfiguration.disableRoutingValidation) {\r\n token = { key: \"\" };\r\n } else {\r\n throw new IModelError(BentleyStatus.ERROR, \"Invalid iModelToken for RPC operation request\");\r\n }\r\n }\r\n\r\n iTwinId = encodeURIComponent(token.iTwinId || \"\");\r\n iModelId = encodeURIComponent(token.iModelId!);\r\n\r\n routeChangesetId = token.changeset?.id || \"0\";\r\n appMode = AppMode.MilestoneReview;\r\n }\r\n\r\n return `${prefix}/${appTitle}/${appVersion}/mode/${appMode}/context/${iTwinId}/imodel/${iModelId}${!!routeChangesetId ? `/changeset/${routeChangesetId}` : \"\"}/${operationId}`;\r\n }\r\n\r\n /**\r\n * Inflates the IModelRpcProps from the URL path for each request on the backend.\r\n * @note This function updates the IModelRpcProps value supplied in the request body.\r\n */\r\n public override inflateToken(tokenFromBody: IModelRpcProps, request: SerializedRpcRequest): IModelRpcProps {\r\n const urlPathComponents = request.path.split(\"/\");\r\n\r\n const iModelKey = tokenFromBody.key;\r\n let iModelId = tokenFromBody.iModelId;\r\n let iTwinId = tokenFromBody.iTwinId;\r\n const changeset = { id: tokenFromBody.changeset?.id ?? \"0\", index: tokenFromBody.changeset?.index };\r\n\r\n for (let i = 0; i <= urlPathComponents.length; ++i) {\r\n const key = urlPathComponents[i];\r\n const value = urlPathComponents[i + 1];\r\n if (key === \"mode\") {\r\n ++i;\r\n } else if (key === \"context\") {\r\n iTwinId = value;\r\n ++i;\r\n } else if (key === \"imodel\") {\r\n iModelId = value;\r\n ++i;\r\n } else if (key === \"changeset\") {\r\n changeset.id = (value === \"0\") ? \"\" : value;\r\n ++i;\r\n }\r\n }\r\n\r\n return { key: iModelKey, iTwinId, iModelId, changeset };\r\n }\r\n\r\n /** Returns the OpenAPI-compatible URI path parameters for an RPC operation.\r\n * @internal\r\n */\r\n public supplyPathParametersForOperation(_operation: RpcOperation): OpenAPIParameter[] {\r\n return [\r\n { name: \"modeId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"iTwinId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"iModelId\", in: \"path\", required: true, schema: { type: \"string\" } },\r\n { name: \"changeSetId\", in: \"path\", required: false, schema: { type: \"string\" } },\r\n ];\r\n }\r\n}\r\n"]}
|
|
@@ -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 = 27,
|
|
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 = 1769472
|
|
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"] = 27] = "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"] = 1769472] = "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 = 27,\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudStorage.d.ts","sourceRoot":"","sources":["../../src/CloudStorage.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"CloudStorage.d.ts","sourceRoot":"","sources":["../../src/CloudStorage.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,YAAY;AACZ,oBAAY,oBAAoB;IAC9B,KAAK,IAAA;IACL,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,OAAO,IAAA;CACR;AAED,YAAY;AACZ,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,YAAY;AACZ,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,+BAA+B,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,YAAY;AACZ,yBAAiB,wBAAwB,CAAC;IACxC,SAAgB,KAAK,IAAI,wBAAwB,CAOhD;CACF;AAED,YAAY;AACZ,8BAAsB,iBAAiB,CAAC,UAAU,EAAE,YAAY;IAC9D,OAAO,CAAC,WAAW,CAAwC;IAEpD,QAAQ,EAAE,oBAAoB,CAAgC;aACrD,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM;aACzC,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM;IACxD,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM;IAClD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,+BAA+B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IACrI,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAC7F,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,wBAAwB,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS;;IAMrF,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;cAkBxD,eAAe,CAAC,SAAS,EAAE,wBAAwB,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBvG,OAAO,CAAC,yBAAyB,CAA6D;cAE9E,YAAY,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAmChF"}
|
package/lib/esm/CloudStorage.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module CloudStorage
|
|
7
7
|
*/
|
|
8
|
+
import { UnexpectedErrors } from "@itwin/core-bentley";
|
|
8
9
|
/** @beta */
|
|
9
10
|
export var CloudStorageProvider;
|
|
10
11
|
(function (CloudStorageProvider) {
|
|
@@ -37,27 +38,20 @@ export class CloudStorageCache {
|
|
|
37
38
|
formContainerKey(id) { return this.formContainerName(id); }
|
|
38
39
|
supplyUrlBase(_container, _id) { return undefined; }
|
|
39
40
|
async retrieve(id) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (response.ok) {
|
|
49
|
-
const content = await this.instantiateResource(response);
|
|
50
|
-
resolve(content);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
resolve(undefined);
|
|
54
|
-
}
|
|
41
|
+
try {
|
|
42
|
+
const container = await this.getContainer(id);
|
|
43
|
+
if (!container.url)
|
|
44
|
+
return undefined;
|
|
45
|
+
const response = await this.requestResource(container, id);
|
|
46
|
+
if (response.ok) {
|
|
47
|
+
const content = await this.instantiateResource(response);
|
|
48
|
+
return content;
|
|
55
49
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
UnexpectedErrors.handle(err);
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
61
55
|
}
|
|
62
56
|
async requestResource(container, id) {
|
|
63
57
|
const base = this.supplyUrlBase(container, id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudStorage.js","sourceRoot":"","sources":["../../src/CloudStorage.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,YAAY;AACZ,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,iEAAK,CAAA;IACL,mEAAM,CAAA;IACN,uEAAQ,CAAA;IACR,uEAAQ,CAAA;IACR,qEAAO,CAAA;AACT,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAoBD,YAAY;AACZ,MAAM,KAAW,wBAAwB,CASxC;AATD,WAAiB,wBAAwB;IACvC,SAAgB,KAAK;QACnB,OAAO;YACL,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACxB,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,EAAE;SACR,CAAC;IACJ,CAAC;IAPe,8BAAK,QAOpB,CAAA;AACH,CAAC,EATgB,wBAAwB,KAAxB,wBAAwB,QASxC;AAED,YAAY;AACZ,MAAM,OAAgB,iBAAiB;IAWrC;QARO,aAAQ,GAAyB,oBAAoB,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CloudStorage.js","sourceRoot":"","sources":["../../src/CloudStorage.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 CloudStorage\r\n */\r\n\r\nimport { UnexpectedErrors } from \"@itwin/core-bentley\";\r\n\r\n/** @beta */\r\nexport enum CloudStorageProvider {\r\n Azure,\r\n Amazon,\r\n AliCloud,\r\n External,\r\n Unknown,\r\n}\r\n\r\n/** @beta */\r\nexport interface CloudStorageContainerDescriptor {\r\n provider?: CloudStorageProvider;\r\n name: string;\r\n resource?: string;\r\n}\r\n\r\n/** @beta */\r\nexport interface CloudStorageContainerUrl {\r\n descriptor: CloudStorageContainerDescriptor;\r\n valid: number;\r\n expires: number;\r\n url: string;\r\n method?: string;\r\n headers?: Record<string, string>;\r\n bound?: boolean;\r\n}\r\n\r\n/** @beta */\r\nexport namespace CloudStorageContainerUrl {\r\n export function empty(): CloudStorageContainerUrl {\r\n return {\r\n descriptor: { name: \"\" },\r\n valid: 0,\r\n expires: 0,\r\n url: \"\",\r\n };\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport abstract class CloudStorageCache<TContentId, TContentType> {\r\n private _containers: Map<string, CloudStorageContainerUrl>;\r\n\r\n public provider: CloudStorageProvider = CloudStorageProvider.Unknown;\r\n public abstract formContainerName(id: TContentId): string;\r\n public abstract formResourceName(id: TContentId): string;\r\n protected formContainerKey(id: TContentId): string { return this.formContainerName(id); }\r\n protected abstract obtainContainerUrl(id: TContentId, descriptor: CloudStorageContainerDescriptor): Promise<CloudStorageContainerUrl>;\r\n protected abstract instantiateResource(response: Response): Promise<TContentType | undefined>;\r\n protected supplyUrlBase(_container: CloudStorageContainerUrl, _id: TContentId): string | undefined { return undefined; }\r\n\r\n public constructor() {\r\n this._containers = new Map();\r\n }\r\n\r\n public async retrieve(id: TContentId): Promise<TContentType | undefined> {\r\n try {\r\n const container = await this.getContainer(id);\r\n if (!container.url)\r\n return undefined;\r\n\r\n const response = await this.requestResource(container, id);\r\n if (response.ok) {\r\n const content = await this.instantiateResource(response);\r\n return content;\r\n }\r\n } catch (err) {\r\n UnexpectedErrors.handle(err);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected async requestResource(container: CloudStorageContainerUrl, id: TContentId): Promise<Response> {\r\n const base = this.supplyUrlBase(container, id);\r\n const url = (undefined === base || \"\" === base) ? new URL(container.url) : new URL(container.url, base);\r\n\r\n if (!container.bound) {\r\n url.pathname += `/${this.formResourceName(id)}`;\r\n }\r\n\r\n const init: RequestInit = {\r\n headers: container.headers,\r\n method: \"GET\",\r\n };\r\n\r\n return fetch(url.toString(), init);\r\n }\r\n\r\n private _pendingContainerRequests: Map<string, Promise<CloudStorageContainerUrl>> = new Map();\r\n\r\n protected async getContainer(id: TContentId): Promise<CloudStorageContainerUrl> {\r\n const now = new Date().getTime();\r\n const name = this.formContainerName(id);\r\n const resource = this.formResourceName(id);\r\n const key = this.formContainerKey(id);\r\n\r\n let container = this._containers.get(key);\r\n if (container && container.url && (container.valid > now || container.expires < now)) {\r\n container = undefined;\r\n this._containers.delete(key);\r\n }\r\n\r\n if (!container) {\r\n let request = this._pendingContainerRequests.get(key);\r\n if (!request) {\r\n request = new Promise(async (resolve, reject) => {\r\n try {\r\n container = await this.obtainContainerUrl(id, { name, resource });\r\n this._containers.set(key, container);\r\n this._pendingContainerRequests.delete(key);\r\n resolve(container);\r\n } catch (err) {\r\n this._pendingContainerRequests.delete(key);\r\n reject(err);\r\n }\r\n });\r\n\r\n this._pendingContainerRequests.set(key, request);\r\n }\r\n\r\n return request;\r\n }\r\n\r\n return container;\r\n }\r\n}\r\n"]}
|
package/lib/esm/Fonts.d.ts
CHANGED
|
@@ -9,12 +9,19 @@ export declare enum FontType {
|
|
|
9
9
|
Rsc = 2,
|
|
10
10
|
Shx = 3
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
12
|
+
/** An iModel-local identifier for a font.
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export declare type FontId = number;
|
|
16
|
+
/** The properties of a Font.
|
|
13
17
|
* @public
|
|
14
18
|
*/
|
|
15
19
|
export interface FontProps {
|
|
16
|
-
|
|
20
|
+
/** the Id, within an iModel, of this font. */
|
|
21
|
+
id: FontId;
|
|
22
|
+
/** The type of font */
|
|
17
23
|
type: FontType;
|
|
24
|
+
/** The name of the font. */
|
|
18
25
|
name: string;
|
|
19
26
|
}
|
|
20
27
|
/** The properties of a FontMap
|
|
@@ -23,8 +30,12 @@ export interface FontProps {
|
|
|
23
30
|
export interface FontMapProps {
|
|
24
31
|
fonts: FontProps[];
|
|
25
32
|
}
|
|
26
|
-
/**
|
|
27
|
-
* A
|
|
33
|
+
/**
|
|
34
|
+
* A FontMap holds the set of font names available in an iModel.
|
|
35
|
+
* Within the GeometryStream of an Element, a specific font is referenced by its FontId that is local to the iModel.
|
|
36
|
+
* This class maps FontIds to FontProps.
|
|
37
|
+
* @note The font map is generally established when the iModel is first created to specify the set of fonts available
|
|
38
|
+
* for editors. Adding new entries requires that the schema lock be held.
|
|
28
39
|
* @public
|
|
29
40
|
*/
|
|
30
41
|
export declare class FontMap {
|
|
@@ -33,6 +44,6 @@ export declare class FontMap {
|
|
|
33
44
|
addFonts(fonts: FontProps[]): void;
|
|
34
45
|
toJSON(): FontMapProps;
|
|
35
46
|
/** look up a font by name or number and return its FontProps */
|
|
36
|
-
getFont(arg: string |
|
|
47
|
+
getFont(arg: string | FontId): FontProps | undefined;
|
|
37
48
|
}
|
|
38
49
|
//# sourceMappingURL=Fonts.d.ts.map
|
package/lib/esm/Fonts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fonts.d.ts","sourceRoot":"","sources":["../../src/Fonts.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;GAEG;AACH,oBAAY,QAAQ;IAAG,QAAQ,IAAI;IAAE,GAAG,IAAI;IAAE,GAAG,IAAI;CAAE;AAEvD;;GAEG;AACH,MAAM,WAAW,SAAS;
|
|
1
|
+
{"version":3,"file":"Fonts.d.ts","sourceRoot":"","sources":["../../src/Fonts.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;GAEG;AACH,oBAAY,QAAQ;IAAG,QAAQ,IAAI;IAAE,GAAG,IAAI;IAAE,GAAG,IAAI;CAAE;AAEvD;;GAEG;AACH,oBAAY,MAAM,GAAG,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE;AAEpD;;;;;;;GAOG;AACH,qBAAa,OAAO;IAClB,SAAgB,KAAK,yBAAgC;gBACzC,KAAK,CAAC,EAAE,YAAY;IAIzB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE;IAG3B,MAAM,IAAI,YAAY;IAK7B,gEAAgE;IACzD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS;CAM5D"}
|
package/lib/esm/Fonts.js
CHANGED
|
@@ -14,8 +14,12 @@ export var FontType;
|
|
|
14
14
|
FontType[FontType["Rsc"] = 2] = "Rsc";
|
|
15
15
|
FontType[FontType["Shx"] = 3] = "Shx";
|
|
16
16
|
})(FontType || (FontType = {}));
|
|
17
|
-
/**
|
|
18
|
-
* A
|
|
17
|
+
/**
|
|
18
|
+
* A FontMap holds the set of font names available in an iModel.
|
|
19
|
+
* Within the GeometryStream of an Element, a specific font is referenced by its FontId that is local to the iModel.
|
|
20
|
+
* This class maps FontIds to FontProps.
|
|
21
|
+
* @note The font map is generally established when the iModel is first created to specify the set of fonts available
|
|
22
|
+
* for editors. Adding new entries requires that the schema lock be held.
|
|
19
23
|
* @public
|
|
20
24
|
*/
|
|
21
25
|
export class FontMap {
|
package/lib/esm/Fonts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fonts.js","sourceRoot":"","sources":["../../src/Fonts.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAA2C;AAAvD,WAAY,QAAQ;IAAG,+CAAY,CAAA;IAAE,qCAAO,CAAA;IAAE,qCAAO,CAAA;AAAC,CAAC,EAA3C,QAAQ,KAAR,QAAQ,QAAmC;
|
|
1
|
+
{"version":3,"file":"Fonts.js","sourceRoot":"","sources":["../../src/Fonts.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAA2C;AAAvD,WAAY,QAAQ;IAAG,+CAAY,CAAA;IAAE,qCAAO,CAAA;IAAE,qCAAO,CAAA;AAAC,CAAC,EAA3C,QAAQ,KAAR,QAAQ,QAAmC;AAwBvD;;;;;;;GAOG;AACH,MAAM,OAAO,OAAO;IAElB,YAAY,KAAoB;QADhB,UAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;QAEnD,IAAI,SAAS,KAAK,KAAK;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACM,QAAQ,CAAC,KAAkB;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IACM,MAAM;QACX,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IACD,gEAAgE;IACzD,OAAO,CAAC,GAAoB;QACjC,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACpC,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF","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 Symbology\r\n */\r\n\r\n/** The type of a font.\r\n * @public\r\n */\r\nexport enum FontType { TrueType = 1, Rsc = 2, Shx = 3 }\r\n\r\n/** An iModel-local identifier for a font.\r\n * @public\r\n */\r\nexport type FontId = number;\r\n\r\n/** The properties of a Font.\r\n * @public\r\n */\r\nexport interface FontProps {\r\n /** the Id, within an iModel, of this font. */\r\n id: FontId;\r\n /** The type of font */\r\n type: FontType;\r\n /** The name of the font. */\r\n name: string;\r\n}\r\n\r\n/** The properties of a FontMap\r\n * @public\r\n */\r\nexport interface FontMapProps { fonts: FontProps[] }\r\n\r\n/**\r\n * A FontMap holds the set of font names available in an iModel.\r\n * Within the GeometryStream of an Element, a specific font is referenced by its FontId that is local to the iModel.\r\n * This class maps FontIds to FontProps.\r\n * @note The font map is generally established when the iModel is first created to specify the set of fonts available\r\n * for editors. Adding new entries requires that the schema lock be held.\r\n * @public\r\n */\r\nexport class FontMap {\r\n public readonly fonts = new Map<FontId, FontProps>();\r\n constructor(props?: FontMapProps) {\r\n if (undefined !== props)\r\n this.addFonts(props.fonts);\r\n }\r\n public addFonts(fonts: FontProps[]) {\r\n fonts.forEach((font) => this.fonts.set(font.id, font));\r\n }\r\n public toJSON(): FontMapProps {\r\n const fonts: FontProps[] = [];\r\n this.fonts.forEach((font) => fonts.push(font));\r\n return { fonts };\r\n }\r\n /** look up a font by name or number and return its FontProps */\r\n public getFont(arg: string | FontId): FontProps | undefined {\r\n if (typeof arg === \"number\") return this.fonts.get(arg);\r\n for (const font of this.fonts.values())\r\n if (font.name === arg) return font;\r\n return undefined;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gradient.d.ts","sourceRoot":"","sources":["../../src/Gradient.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,WAAW,EAAqB,MAAM,SAAS,CAAC;AACzD,OAAO,EAAqD,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAE/I;;;;GAIG;AACH,yBAAiB,QAAQ,CAAC;IACxB,4CAA4C;IAC5C,KAAY,KAAK;QACf,gBAAgB;QAChB,IAAI,IAAI;QACR,8CAA8C;QAC9C,MAAM,IAAI;QACV,2EAA2E;QAC3E,OAAO,IAAI;KACZ;IAED,+FAA+F;IAC/F,KAAY,IAAI;QACd,IAAI,IAAI;QACR,MAAM,IAAI;QACV,MAAM,IAAI;QACV,WAAW,IAAI;QACf,SAAS,IAAI;QACb,aAAa,IAAI;QACjB,4DAA4D;QAC5D,QAAQ,IAAI;KACb;IAED,mDAAmD;IACnD,UAAiB,aAAa;QAC5B,iEAAiE;QACjE,KAAK,EAAE,MAAM,CAAC;QACd,qCAAqC;QACrC,KAAK,EAAE,aAAa,CAAC;KACtB;IAED;;OAEG;IACH,MAAa,QAAQ;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,QAAQ,CAAC;oBACJ,IAAI,EAAE,aAAa;KAIvC;IAED,wEAAwE;IACxE,SAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAEhE;IAED,+EAA+E;IAC/E,UAAiB,SAAS;QACxB,gGAAgG;QAChG,IAAI,EAAE,IAAI,CAAC;QACX,mGAAmG;QACnG,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,gDAAgD;QAChD,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,iHAAiH;QACjH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,6DAA6D;QAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,0FAA0F;QAC1F,IAAI,EAAE,aAAa,EAAE,CAAC;QACtB,kDAAkD;QAClD,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;KAClD;IAED;;;OAGG;IACH,MAAa,IAAI;QACR,IAAI,OAAa;QACjB,KAAK,EAAE,KAAK,CAAc;QAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAK;QAClB,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;QAC5C,IAAI,EAAE,QAAQ,EAAE,CAAM;QAE7B,gDAAgD;eAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS;QAevC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAO7B;QACF,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAwC;QAEvE,sCAAsC;eACxB,cAAc,CAAC,QAAQ,EAAE,wBAAwB;QAoBxD,MAAM,IAAI,SAAS;QAQnB,KAAK,IAAI,IAAI;QAIpB,2EAA2E;QACpE,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;QAInC;;;;WAIG;eACW,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,GAAG,MAAM;QAsDzE;;WAEG;QACI,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;QAInC;;;WAGG;QACH,OAAO,CAAC,WAAW;QAInB,6FAA6F;QACtF,QAAQ,CAAC,KAAK,EAAE,MAAM;QAqC7B,IAAW,eAAe,IAAI,OAAO,CAOpC;QAED,kEAAkE;QAClE,IAAW,UAAU,IAAI,OAAO,CAA+C;QAE/E;;;;WAIG;QACI,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;
|
|
1
|
+
{"version":3,"file":"Gradient.d.ts","sourceRoot":"","sources":["../../src/Gradient.ts"],"names":[],"mappings":"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"}
|