@itwin/rpcinterface-full-stack-tests 3.2.6 → 3.2.9

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.
@@ -61372,7 +61372,7 @@ var Id64;
61372
61372
  */
61373
61373
  function isInvalid(id) { return Id64.invalid === id; }
61374
61374
  Id64.isInvalid = isInvalid;
61375
- /** A specialized replacement for Set<Id64String> optimized for performance-critical code which represents large sets of 64-bit IDs as pairs of
61375
+ /** A specialized replacement for Set<Id64String> optimized for performance-critical code which represents large sets of [[Id64]]s as pairs of
61376
61376
  * 32-bit integers.
61377
61377
  * The internal representation is a Map<number, Set<number>> where the Map key is the upper 4 bytes of the IDs and the Set elements are the lower 4 bytes of the IDs.
61378
61378
  * Because the upper 4 bytes store the 24-bit briefcase ID plus the upper 8 bits of the local ID, there will be a very small distribution of unique Map keys.
@@ -61435,6 +61435,10 @@ var Id64;
61435
61435
  const set = this._map.get(high);
61436
61436
  return undefined !== set && set.has(low);
61437
61437
  }
61438
+ /** Returns true if the set contains the Id specified by `pair`. */
61439
+ hasPair(pair) {
61440
+ return this.has(pair.lower, pair.upper);
61441
+ }
61438
61442
  /** Returns true if the set contains no Ids. */
61439
61443
  get isEmpty() { return 0 === this._map.size; }
61440
61444
  /** Returns the number of Ids contained in the set. */
@@ -91227,8 +91231,6 @@ class RpcProtocol {
91227
91231
  async fulfill(request) {
91228
91232
  return new (this.invocationType)(this, request).fulfillment;
91229
91233
  }
91230
- /** @internal */
91231
- async initialize(_token) { }
91232
91234
  /** Serializes a request. */
91233
91235
  async serialize(request) {
91234
91236
  const serializedContext = await _RpcConfiguration__WEBPACK_IMPORTED_MODULE_1__["RpcConfiguration"].requestContext.serialize(request);
@@ -91719,7 +91721,7 @@ class RpcRequest {
91719
91721
  this._retryAfter = null;
91720
91722
  this._transientFaults = 0;
91721
91723
  this._response = undefined;
91722
- this.responseProtocolVersion = 0;
91724
+ this.responseProtocolVersion = _RpcProtocol__WEBPACK_IMPORTED_MODULE_6__["RpcProtocolVersion"].None;
91723
91725
  this._created = new Date().getTime();
91724
91726
  this.path = "";
91725
91727
  this.method = "";
@@ -91799,10 +91801,6 @@ class RpcRequest {
91799
91801
  setLastUpdatedTime() {
91800
91802
  this._lastUpdated = new Date().getTime();
91801
91803
  }
91802
- /** Override to describe available headers based on a protocol-specific criteria (such as a CORS whitelist). */
91803
- isHeaderAvailable(_name) {
91804
- return true;
91805
- }
91806
91804
  computeRetryAfter(attempts) {
91807
91805
  return (((Math.pow(2, attempts) - 1) / 2) * 500) + 500;
91808
91806
  }
@@ -91843,7 +91841,6 @@ class RpcRequest {
91843
91841
  this._connecting = true;
91844
91842
  RpcRequest._activeRequests.set(this.id, this);
91845
91843
  this.protocol.events.raiseEvent(_RpcConstants__WEBPACK_IMPORTED_MODULE_3__["RpcProtocolEvent"].RequestCreated, this);
91846
- await this.protocol.initialize(this.operation.policy.token(this));
91847
91844
  this._sending = new Cancellable(this.setHeaders().then(async () => this.send()));
91848
91845
  this.operation.policy.sentCallback(this);
91849
91846
  const response = await this._sending.promise;
@@ -92044,9 +92041,8 @@ class RpcRequest {
92044
92041
  }
92045
92042
  async setHeaders() {
92046
92043
  const versionHeader = this.protocol.protocolVersionHeaderName;
92047
- if (versionHeader && _RpcProtocol__WEBPACK_IMPORTED_MODULE_6__["RpcProtocol"].protocolVersion && this.isHeaderAvailable(versionHeader)) {
92044
+ if (versionHeader && _RpcProtocol__WEBPACK_IMPORTED_MODULE_6__["RpcProtocol"].protocolVersion)
92048
92045
  this.setHeader(versionHeader, _RpcProtocol__WEBPACK_IMPORTED_MODULE_6__["RpcProtocol"].protocolVersion.toString());
92049
- }
92050
92046
  const headerNames = this.protocol.serializedClientRequestContextHeaderNames;
92051
92047
  const headerValues = await _RpcConfiguration__WEBPACK_IMPORTED_MODULE_2__["RpcConfiguration"].requestContext.serialize(this);
92052
92048
  if (headerNames.id)
@@ -92703,17 +92699,11 @@ class WebAppRpcLogging {
92703
92699
  "use strict";
92704
92700
  __webpack_require__.r(__webpack_exports__);
92705
92701
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WebAppRpcProtocol", function() { return WebAppRpcProtocol; });
92706
- /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
92707
- /* harmony import */ var _core_RpcConfiguration__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/RpcConfiguration */ "../../core/common/lib/esm/rpc/core/RpcConfiguration.js");
92708
- /* harmony import */ var _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/RpcConstants */ "../../core/common/lib/esm/rpc/core/RpcConstants.js");
92709
- /* harmony import */ var _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/RpcProtocol */ "../../core/common/lib/esm/rpc/core/RpcProtocol.js");
92710
- /* harmony import */ var _OpenAPI__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OpenAPI */ "../../core/common/lib/esm/rpc/web/OpenAPI.js");
92711
- /* harmony import */ var _WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./WebAppRpcLogging */ "../../core/common/lib/esm/rpc/web/WebAppRpcLogging.js");
92712
- /* harmony import */ var _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./WebAppRpcRequest */ "../../core/common/lib/esm/rpc/web/WebAppRpcRequest.js");
92713
- /* harmony import */ var _CommonLoggerCategory__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../CommonLoggerCategory */ "../../core/common/lib/esm/CommonLoggerCategory.js");
92714
- /* harmony import */ var _RpcInterface__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../RpcInterface */ "../../core/common/lib/esm/RpcInterface.js");
92715
- /* harmony import */ var _RpcManager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../RpcManager */ "../../core/common/lib/esm/RpcManager.js");
92716
- /* harmony import */ var _core_RpcRoutingToken__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../core/RpcRoutingToken */ "../../core/common/lib/esm/rpc/core/RpcRoutingToken.js");
92702
+ /* harmony import */ var _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/RpcConstants */ "../../core/common/lib/esm/rpc/core/RpcConstants.js");
92703
+ /* harmony import */ var _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/RpcProtocol */ "../../core/common/lib/esm/rpc/core/RpcProtocol.js");
92704
+ /* harmony import */ var _OpenAPI__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OpenAPI */ "../../core/common/lib/esm/rpc/web/OpenAPI.js");
92705
+ /* harmony import */ var _WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WebAppRpcLogging */ "../../core/common/lib/esm/rpc/web/WebAppRpcLogging.js");
92706
+ /* harmony import */ var _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./WebAppRpcRequest */ "../../core/common/lib/esm/rpc/web/WebAppRpcRequest.js");
92717
92707
  /*---------------------------------------------------------------------------------------------
92718
92708
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
92719
92709
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -92726,67 +92716,20 @@ __webpack_require__.r(__webpack_exports__);
92726
92716
 
92727
92717
 
92728
92718
 
92729
-
92730
-
92731
-
92732
-
92733
-
92734
-
92735
- class InitializeInterface extends _RpcInterface__WEBPACK_IMPORTED_MODULE_8__["RpcInterface"] {
92736
- async initialize(_token) { return this.forward(arguments); }
92737
- static createRequest(protocol, token) {
92738
- const routing = _core_RpcRoutingToken__WEBPACK_IMPORTED_MODULE_10__["RpcRoutingToken"].generate();
92739
- const config = class extends _core_RpcConfiguration__WEBPACK_IMPORTED_MODULE_1__["RpcConfiguration"] {
92740
- constructor() {
92741
- super(...arguments);
92742
- this.interfaces = () => [InitializeInterface];
92743
- this.protocol = protocol;
92744
- }
92745
- };
92746
- _core_RpcConfiguration__WEBPACK_IMPORTED_MODULE_1__["RpcConfiguration"].assignWithRouting(InitializeInterface, routing, config);
92747
- const instance = _core_RpcConfiguration__WEBPACK_IMPORTED_MODULE_1__["RpcConfiguration"].obtain(config);
92748
- _core_RpcConfiguration__WEBPACK_IMPORTED_MODULE_1__["RpcConfiguration"].initializeInterfaces(instance);
92749
- const client = _RpcManager__WEBPACK_IMPORTED_MODULE_9__["RpcManager"].getClientForInterface(InitializeInterface, routing);
92750
- return new (protocol.requestType)(client, "initialize", [token]);
92751
- }
92752
- }
92753
- InitializeInterface.interfaceName = "InitializeInterface";
92754
- InitializeInterface.interfaceVersion = "1.0.0";
92755
92719
  /** The HTTP application protocol.
92756
92720
  * @internal
92757
92721
  */
92758
- class WebAppRpcProtocol extends _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_3__["RpcProtocol"] {
92722
+ class WebAppRpcProtocol extends _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_1__["RpcProtocol"] {
92759
92723
  /** Constructs an HTTP protocol. */
92760
92724
  constructor(configuration) {
92761
92725
  super(configuration);
92762
92726
  this.preserveStreams = true;
92763
- /** @internal */
92764
- this.allowedHeaders = new Set();
92765
92727
  /** An optional prefix for RPC operation URI paths. */
92766
92728
  this.pathPrefix = "";
92767
92729
  /** The RPC request class for this protocol. */
92768
- this.requestType = _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_6__["WebAppRpcRequest"];
92730
+ this.requestType = _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_4__["WebAppRpcRequest"];
92769
92731
  this.supportsStatusCategory = true;
92770
- this.events.addListener(_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_5__["WebAppRpcLogging"].logProtocolEvent);
92771
- }
92772
- /** @internal */
92773
- async initialize(token) {
92774
- if (this._initialized) {
92775
- return this._initialized;
92776
- }
92777
- return this._initialized = new Promise(async (resolve) => {
92778
- try {
92779
- const request = InitializeInterface.createRequest(this, token);
92780
- const response = await request.preflight();
92781
- if (response && response.ok) {
92782
- (response.headers.get("Access-Control-Allow-Headers") || "").split(",").forEach((v) => this.allowedHeaders.add(v.trim()));
92783
- }
92784
- }
92785
- catch (err) {
92786
- _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__["Logger"].logWarning(_CommonLoggerCategory__WEBPACK_IMPORTED_MODULE_7__["CommonLoggerCategory"].RpcInterfaceFrontend, "Unable to discover backend capabilities.", _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__["BentleyError"].getErrorProps(err));
92787
- }
92788
- resolve();
92789
- });
92732
+ this.events.addListener(_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_3__["WebAppRpcLogging"].logProtocolEvent);
92790
92733
  }
92791
92734
  /** Convenience handler for an RPC operation get request for an HTTP server. */
92792
92735
  async handleOperationGetRequest(req, res) {
@@ -92794,9 +92737,9 @@ class WebAppRpcProtocol extends _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_3__["
92794
92737
  }
92795
92738
  /** Convenience handler for an RPC operation post request for an HTTP server. */
92796
92739
  async handleOperationPostRequest(req, res) {
92797
- const request = await _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_6__["WebAppRpcRequest"].parseRequest(this, req);
92740
+ const request = await _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_4__["WebAppRpcRequest"].parseRequest(this, req);
92798
92741
  const fulfillment = await this.fulfill(request);
92799
- await _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_6__["WebAppRpcRequest"].sendResponse(this, request, fulfillment, req, res);
92742
+ await _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_4__["WebAppRpcRequest"].sendResponse(this, request, fulfillment, req, res);
92800
92743
  }
92801
92744
  /** Convenience handler for an OpenAPI description request for an HTTP server. */
92802
92745
  handleOpenApiDescriptionRequest(_req, res) {
@@ -92806,45 +92749,45 @@ class WebAppRpcProtocol extends _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_3__["
92806
92749
  /** Converts an HTTP content type value to an RPC content type value. */
92807
92750
  static computeContentType(httpType) {
92808
92751
  if (!httpType)
92809
- return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcContentType"].Unknown;
92810
- if (httpType.indexOf(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["WEB_RPC_CONSTANTS"].ANY_TEXT) === 0) {
92811
- return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcContentType"].Text;
92752
+ return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcContentType"].Unknown;
92753
+ if (httpType.indexOf(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["WEB_RPC_CONSTANTS"].ANY_TEXT) === 0) {
92754
+ return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcContentType"].Text;
92812
92755
  }
92813
- else if (httpType.indexOf(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["WEB_RPC_CONSTANTS"].BINARY) === 0) {
92814
- return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcContentType"].Binary;
92756
+ else if (httpType.indexOf(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["WEB_RPC_CONSTANTS"].BINARY) === 0) {
92757
+ return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcContentType"].Binary;
92815
92758
  }
92816
- else if (httpType.indexOf(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["WEB_RPC_CONSTANTS"].MULTIPART) === 0) {
92817
- return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcContentType"].Multipart;
92759
+ else if (httpType.indexOf(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["WEB_RPC_CONSTANTS"].MULTIPART) === 0) {
92760
+ return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcContentType"].Multipart;
92818
92761
  }
92819
92762
  else {
92820
- return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcContentType"].Unknown;
92763
+ return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcContentType"].Unknown;
92821
92764
  }
92822
92765
  }
92823
92766
  /** Supplies the status corresponding to a protocol-specific code value. */
92824
92767
  getStatus(code) {
92825
92768
  switch (code) {
92826
- case 404: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].NotFound;
92827
- case 202: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].Pending;
92828
- case 200: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].Resolved;
92829
- case 500: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].Rejected;
92830
- case 204: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].NoContent;
92831
- case 502: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].BadGateway;
92832
- case 503: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].ServiceUnavailable;
92833
- case 504: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].GatewayTimeout;
92834
- default: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].Unknown;
92769
+ case 404: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].NotFound;
92770
+ case 202: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].Pending;
92771
+ case 200: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].Resolved;
92772
+ case 500: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].Rejected;
92773
+ case 204: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].NoContent;
92774
+ case 502: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].BadGateway;
92775
+ case 503: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].ServiceUnavailable;
92776
+ case 504: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].GatewayTimeout;
92777
+ default: return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].Unknown;
92835
92778
  }
92836
92779
  }
92837
92780
  /** Supplies the protocol-specific code corresponding to a status value. */
92838
92781
  getCode(status) {
92839
92782
  switch (status) {
92840
- case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].NotFound: return 404;
92841
- case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].Pending: return 202;
92842
- case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].Resolved: return 200;
92843
- case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].Rejected: return 500;
92844
- case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].NoContent: return 204;
92845
- case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].BadGateway: return 502;
92846
- case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].ServiceUnavailable: return 503;
92847
- case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_2__["RpcRequestStatus"].GatewayTimeout: return 504;
92783
+ case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].NotFound: return 404;
92784
+ case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].Pending: return 202;
92785
+ case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].Resolved: return 200;
92786
+ case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].Rejected: return 500;
92787
+ case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].NoContent: return 204;
92788
+ case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].BadGateway: return 502;
92789
+ case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].ServiceUnavailable: return 503;
92790
+ case _core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__["RpcRequestStatus"].GatewayTimeout: return 504;
92848
92791
  default: return 501;
92849
92792
  }
92850
92793
  }
@@ -92855,7 +92798,7 @@ class WebAppRpcProtocol extends _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_3__["
92855
92798
  /** An OpenAPI-compatible description of this protocol.
92856
92799
  * @internal
92857
92800
  */
92858
- get openAPIDescription() { return new _OpenAPI__WEBPACK_IMPORTED_MODULE_4__["RpcOpenAPIDescription"](this); }
92801
+ get openAPIDescription() { return new _OpenAPI__WEBPACK_IMPORTED_MODULE_2__["RpcOpenAPIDescription"](this); }
92859
92802
  }
92860
92803
 
92861
92804
 
@@ -93015,18 +92958,6 @@ class WebAppRpcRequest extends _core_RpcRequest__WEBPACK_IMPORTED_MODULE_6__["Rp
93015
92958
  return _core_RpcConstants__WEBPACK_IMPORTED_MODULE_3__["RpcContentType"].Text;
93016
92959
  }
93017
92960
  }
93018
- /** @internal */
93019
- async preflight() {
93020
- this.method = "options";
93021
- this._request.method = "options";
93022
- await this.setHeaders();
93023
- await this.send();
93024
- return this._response;
93025
- }
93026
- isHeaderAvailable(name) {
93027
- const allowed = this.protocol.allowedHeaders;
93028
- return allowed.has("*") || allowed.has(name);
93029
- }
93030
92961
  /** Sets request header values. */
93031
92962
  setHeader(name, value) {
93032
92963
  this._headers[name] = value;
@@ -93197,9 +93128,6 @@ class WebAppRpcRequest extends _core_RpcRequest__WEBPACK_IMPORTED_MODULE_6__["Rp
93197
93128
  return value;
93198
93129
  }
93199
93130
  async setupTransport() {
93200
- if (this.method === "options") {
93201
- return;
93202
- }
93203
93131
  const parameters = (await this.protocol.serialize(this)).parameters;
93204
93132
  const transportType = WebAppRpcRequest.computeTransportType(parameters, this.parameters);
93205
93133
  if (transportType === _core_RpcConstants__WEBPACK_IMPORTED_MODULE_3__["RpcContentType"].Binary) {
@@ -105735,17 +105663,24 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__["
105735
105663
  this.elements = new IModelConnection.Elements(this);
105736
105664
  this.codeSpecs = new IModelConnection.CodeSpecs(this);
105737
105665
  this.views = new IModelConnection.Views(this);
105666
+ this.categories = new IModelConnection.Categories(this);
105738
105667
  this.selectionSet = new _SelectionSet__WEBPACK_IMPORTED_MODULE_8__["SelectionSet"](this);
105739
105668
  this.hilited = new _SelectionSet__WEBPACK_IMPORTED_MODULE_8__["HiliteSet"](this);
105740
105669
  this.tiles = new _Tiles__WEBPACK_IMPORTED_MODULE_11__["Tiles"](this);
105741
- this.subcategories = new _SubCategoriesCache__WEBPACK_IMPORTED_MODULE_9__["SubCategoriesCache"](this);
105742
105670
  this.geoServices = new _GeoServices__WEBPACK_IMPORTED_MODULE_4__["GeoServices"](this);
105743
105671
  this.displayedExtents = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__["Range3d"].fromJSON(this.projectExtents);
105744
105672
  this.onProjectExtentsChanged.addListener(() => {
105745
105673
  // Compute new displayed extents as the union of the ranges we previously expanded by with the new project extents.
105746
105674
  this.expandDisplayedExtents(this._extentsExpansion);
105747
105675
  });
105676
+ this.hilited.onModelSubCategoryModeChanged.addListener(() => {
105677
+ _IModelApp__WEBPACK_IMPORTED_MODULE_5__["IModelApp"].viewManager.onSelectionSetChanged(this);
105678
+ });
105748
105679
  }
105680
+ /** A cache of information about SubCategories chiefly used for rendering.
105681
+ * @internal
105682
+ */
105683
+ get subcategories() { return this.categories.cache; }
105749
105684
  /** @internal Return true if a GCS is not defined for this iModelConnection; also returns true if GCS is defined but disabled. */
105750
105685
  get noGcsDefined() { return this._gcsDisabled || undefined === this.geographicCoordinateSystem; }
105751
105686
  /** @internal */
@@ -106559,6 +106494,25 @@ class SnapshotConnection extends IModelConnection {
106559
106494
  }
106560
106495
  }
106561
106496
  IModelConnection.Views = Views;
106497
+ /** Provides access to information about the [Category]($backend)'s stored in an [[IModelConnection]].
106498
+ * This information is cached internally so that repeated requests need not query the backend.
106499
+ * @see [[IModelConnection.categories]] for the categories associated with a specific iModel.
106500
+ */
106501
+ class Categories {
106502
+ /** @internal */
106503
+ constructor(iModel) {
106504
+ this.cache = new _SubCategoriesCache__WEBPACK_IMPORTED_MODULE_9__["SubCategoriesCache"](iModel);
106505
+ }
106506
+ /** Obtain information about one or more [Category]($backend)'s. */
106507
+ async getCategoryInfo(categoryIds) {
106508
+ return this.cache.getCategoryInfo(categoryIds);
106509
+ }
106510
+ /** Obtain information about one or more [SubCategory]($backend)'s belonging to the specified [Category]($backend). */
106511
+ async getSubCategoryInfo(args) {
106512
+ return this.cache.getSubCategoryInfo(args.category, args.subCategories);
106513
+ }
106514
+ }
106515
+ IModelConnection.Categories = Categories;
106562
106516
  })(IModelConnection || (IModelConnection = {}));
106563
106517
 
106564
106518
 
@@ -110104,11 +110058,17 @@ class HilitedElementIds extends HilitedIds {
110104
110058
  }
110105
110059
  /** A set of *hilited* elements for an [[IModelConnection]], by element id.
110106
110060
  * Hilited elements are displayed with a customizable hilite effect within a [[Viewport]].
110107
- * The set exposes 3 types of elements in 3 separate collections: geometric elements, subcategories, and geometric models.
110061
+ * The set exposes 3 types of elements in 3 separate collections: [GeometricElement]($backend), [GeometricModel]($backend), and [SubCategory]($backend).
110062
+ * The [[models]] and [[subcategories]] can be hilited independently or as an intersection of the two sets, as specified by [[modelSubCategoryMode]].
110063
+ *
110064
+ * Technically, the hilite effect is applied to [Feature]($common)s, not [Element]($backend)s. An element's geometry stream can contain multiple
110065
+ * features belonging to different subcategories.
110066
+ *
110067
+ * Because Javascript lacks efficient support for 64-bit integers, the Ids are stored as pairs of 32-bit integers via [Id64.Uint32Set]($bentley).
110068
+ *
110108
110069
  * @note Typically, elements are hilited by virtue of their presence in the IModelConnection's [[SelectionSet]]. The HiliteSet allows additional
110109
110070
  * elements to be displayed with the hilite effect without adding them to the [[SelectionSet]]. If you add elements to the HiliteSet directly, you
110110
110071
  * are also responsible for removing them as appropriate.
110111
- * @note Support for subcategories and geometric models in the HiliteSet is currently `beta`.
110112
110072
  * @see [[IModelConnection.hilited]] for the HiliteSet associated with an iModel.
110113
110073
  * @see [Hilite.Settings]($common) for customization of the hilite effect.
110114
110074
  * @public
@@ -110122,12 +110082,30 @@ class HiliteSet {
110122
110082
  */
110123
110083
  constructor(iModel, syncWithSelectionSet = true) {
110124
110084
  this.iModel = iModel;
110085
+ this._mode = "union";
110086
+ /** Event raised just before changing the value of [[modelSubCategoryMode]]. */
110087
+ this.onModelSubCategoryModeChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__["BeEvent"]();
110125
110088
  this._elements = new HilitedElementIds(iModel, syncWithSelectionSet);
110126
110089
  this.subcategories = new HilitedIds(iModel);
110127
110090
  this.models = new HilitedIds(iModel);
110128
110091
  }
110129
110092
  /** The set of hilited elements. */
110130
110093
  get elements() { return this._elements; }
110094
+ /** Controls how the sets of hilited [[models]] and [[subcategories]] interact with one another.
110095
+ * By default they are treated as a union: a [Feature]($common) is hilited if either its model **or** its subcategory is hilited.
110096
+ * This can be changed to an intersection such that a [Feature]($common) is hilited only if both its model **and** subcategory are hilited.
110097
+ * @note The sets of hilited models and subcategories are independent of the set of hilited [[elements]] - an element whose Id is present in
110098
+ * [[elements]] is always hilited regardless of its model or subcategories.
110099
+ */
110100
+ get modelSubCategoryMode() {
110101
+ return this._mode;
110102
+ }
110103
+ set modelSubCategoryMode(mode) {
110104
+ if (mode === this._mode)
110105
+ return;
110106
+ this.onModelSubCategoryModeChanged.raiseEvent(mode);
110107
+ this._mode = mode;
110108
+ }
110131
110109
  /** Control whether the hilited elements will be synchronized with the contents of the [[SelectionSet]].
110132
110110
  * By default they are synchronized. Applications that override this take responsibility for managing the set of hilited entities.
110133
110111
  * When turning synchronization off, the contents of the HiliteSet will remain unchanged.
@@ -111745,6 +111723,40 @@ class SubCategoriesCache {
111745
111723
  set.add(subCategoryId);
111746
111724
  this._appearances.set(subCategoryId, appearance);
111747
111725
  }
111726
+ async getCategoryInfo(inputCategoryIds) {
111727
+ // Eliminate duplicates...
111728
+ const categoryIds = new Set(typeof inputCategoryIds === "string" ? [inputCategoryIds] : inputCategoryIds);
111729
+ const req = this.load(categoryIds);
111730
+ if (req)
111731
+ await req.promise;
111732
+ const map = new Map();
111733
+ for (const categoryId of categoryIds) {
111734
+ const subCategoryIds = this._byCategoryId.get(categoryId);
111735
+ if (!subCategoryIds)
111736
+ continue;
111737
+ const subCategories = this.mapSubCategoryInfos(categoryId, subCategoryIds);
111738
+ map.set(categoryId, { id: categoryId, subCategories });
111739
+ }
111740
+ return map;
111741
+ }
111742
+ async getSubCategoryInfo(categoryId, inputSubCategoryIds) {
111743
+ // Eliminate duplicates...
111744
+ const subCategoryIds = new Set(typeof inputSubCategoryIds === "string" ? [inputSubCategoryIds] : inputSubCategoryIds);
111745
+ const req = this.load(categoryId);
111746
+ if (req)
111747
+ await req.promise;
111748
+ return this.mapSubCategoryInfos(categoryId, subCategoryIds);
111749
+ }
111750
+ mapSubCategoryInfos(categoryId, subCategoryIds) {
111751
+ const map = new Map();
111752
+ for (const id of subCategoryIds) {
111753
+ const appearance = this._appearances.get(id);
111754
+ Object(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__["assert"])(undefined !== appearance);
111755
+ if (appearance)
111756
+ map.set(id, { id, categoryId, appearance });
111757
+ }
111758
+ return map;
111759
+ }
111748
111760
  }
111749
111761
  /** This namespace and the types within it are exported strictly for use in tests.
111750
111762
  * @internal
@@ -133152,7 +133164,7 @@ function extractHilitedVolumeClassifierCommands(hilites, cmds) {
133152
133164
  if (undefined === surface || undefined === surface.mesh.uniformFeatureId)
133153
133165
  continue;
133154
133166
  const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId);
133155
- if (undefined === feature || !Object(_FeatureOverrides__WEBPACK_IMPORTED_MODULE_1__["isFeatureHilited"])(feature, hilites))
133167
+ if (undefined === feature || !Object(_FeatureOverrides__WEBPACK_IMPORTED_MODULE_1__["isFeatureHilited"])(feature, hilites, hilites.models.hasId(batch.featureTable.modelId)))
133156
133168
  continue;
133157
133169
  break;
133158
133170
  }
@@ -133499,11 +133511,12 @@ function computeWidthAndHeight(nEntries, nRgbaPerEntry, nExtraRgba = 0, nTables
133499
133511
  Object(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__["assert"])(0 === width % nRgbaPerEntry);
133500
133512
  return { width, height };
133501
133513
  }
133502
- function isFeatureHilited(feature, hilites) {
133514
+ function isFeatureHilited(feature, hilites, isModelHilited) {
133503
133515
  if (hilites.isEmpty)
133504
133516
  return false;
133505
- return hilites.elements.has(feature.elementId.lower, feature.elementId.upper) ||
133506
- hilites.subcategories.has(feature.subCategoryId.lower, feature.subCategoryId.upper);
133517
+ if ("union" === hilites.modelSubCategoryMode)
133518
+ return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);
133519
+ return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));
133507
133520
  }
133508
133521
  /** @internal */
133509
133522
  class FeatureOverrides {
@@ -133528,6 +133541,8 @@ class FeatureOverrides {
133528
133541
  get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }
133529
133542
  get anyOpaque() { return this._anyOpaque; }
133530
133543
  get anyHilited() { return this._anyHilited; }
133544
+ /** For tests. */
133545
+ get lutData() { var _a; return (_a = this._lut) === null || _a === void 0 ? void 0 : _a.dataBytes; }
133531
133546
  get byteLength() { return undefined !== this._lut ? this._lut.bytesUsed : 0; }
133532
133547
  get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }
133533
133548
  get isUniformFlashed() {
@@ -133577,7 +133592,7 @@ class FeatureOverrides {
133577
133592
  const allowFlash = true !== this._options.noFlash;
133578
133593
  const allowEmphasis = true !== this._options.noEmphasis;
133579
133594
  const modelIdParts = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__["Id64"].getUint32Pair(map.modelId);
133580
- const isModelHilited = allowHilite && hilites.models.has(modelIdParts.lower, modelIdParts.upper);
133595
+ const isModelHilited = allowHilite && hilites.models.hasPair(modelIdParts);
133581
133596
  this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;
133582
133597
  let nHidden = 0;
133583
133598
  let nOverridden = 0;
@@ -133605,7 +133620,7 @@ class FeatureOverrides {
133605
133620
  continue;
133606
133621
  }
133607
133622
  let flags = app.nonLocatable ? 32 /* NonLocatable */ : 0 /* None */;
133608
- if (isModelHilited || (allowHilite && isFeatureHilited(feature, hilites))) {
133623
+ if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {
133609
133624
  flags |= 256 /* Hilited */;
133610
133625
  this._anyHilited = true;
133611
133626
  }
@@ -133665,39 +133680,42 @@ class FeatureOverrides {
133665
133680
  }
133666
133681
  // NB: If hilites is undefined, it means that the hilited set has not changed.
133667
133682
  updateFlashedAndHilited(data, map, flashed, hilites) {
133668
- const allowHilite = true !== this._options.noHilite;
133683
+ if (!hilites || true === this._options.noHilite) {
133684
+ this.updateFlashed(data, map, flashed);
133685
+ return;
133686
+ }
133669
133687
  const allowFlash = true !== this._options.noFlash;
133670
- this._anyOverridden = this._anyHilited = false;
133688
+ const intersect = "intersection" === hilites.modelSubCategoryMode;
133671
133689
  let isModelHilited = false;
133672
- let needElemId = allowFlash && undefined !== flashed;
133673
- let needSubCatId = false;
133674
- if (undefined !== hilites) {
133690
+ if (!hilites.models.isEmpty) {
133675
133691
  const modelId = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__["Id64"].getUint32Pair(map.modelId);
133676
- isModelHilited = allowHilite && hilites.models.has(modelId.lower, modelId.upper);
133677
- needSubCatId = !isModelHilited && allowHilite && !hilites.subcategories.isEmpty;
133678
- needElemId = needElemId || (!isModelHilited && allowHilite && !hilites.elements.isEmpty);
133692
+ isModelHilited = hilites.models.hasPair(modelId);
133679
133693
  }
133694
+ this._anyOverridden = this._anyHilited = false;
133680
133695
  for (let i = 0; i < map.numFeatures; i++) {
133681
133696
  const dataIndex = i * 4 * 2;
133682
133697
  const oldFlags = data.getOvrFlagsAtIndex(dataIndex);
133683
133698
  if (0 /* None */ !== (oldFlags & 1 /* Visibility */)) {
133684
- // Do the same thing as when applying feature overrides - if it's invisible, none of the other flags matter
133685
- // (and if we don't check this we can end up rendering silhouettes around invisible elements in selection set)
133699
+ // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.
133686
133700
  this._anyOverridden = true;
133687
133701
  continue;
133688
133702
  }
133689
- let isFlashed = false;
133690
- let isHilited = undefined !== hilites ? isModelHilited : (0 !== (oldFlags & 256 /* Hilited */));
133691
- if (needElemId) {
133692
- const elemId = map.getElementIdPair(i);
133693
- if (undefined !== flashed && allowFlash)
133694
- isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;
133695
- if (!isHilited && allowHilite && undefined !== hilites)
133696
- isHilited = hilites.elements.has(elemId.lower, elemId.upper);
133703
+ let elemId;
133704
+ let isHilited = isModelHilited && !intersect;
133705
+ if (!isHilited && !hilites.elements.isEmpty) {
133706
+ elemId = map.getElementIdPair(i);
133707
+ isHilited = hilites.elements.hasPair(elemId);
133708
+ }
133709
+ if (!isHilited && !hilites.subcategories.isEmpty) {
133710
+ if (isModelHilited || !intersect) {
133711
+ const subcat = map.getSubCategoryIdPair(i);
133712
+ isHilited = hilites.subcategories.hasPair(subcat);
133713
+ }
133697
133714
  }
133698
- if (needSubCatId && !isHilited && allowHilite) {
133699
- const subcat = map.getSubCategoryIdPair(i);
133700
- isHilited = hilites.subcategories.has(subcat.lower, subcat.upper);
133715
+ let isFlashed = false;
133716
+ if (flashed && allowFlash) {
133717
+ elemId = elemId !== null && elemId !== void 0 ? elemId : map.getElementIdPair(i);
133718
+ isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;
133701
133719
  }
133702
133720
  let newFlags = isFlashed ? (oldFlags | 16 /* Flashed */) : (oldFlags & ~16 /* Flashed */);
133703
133721
  newFlags = isHilited ? (newFlags | 256 /* Hilited */) : (newFlags & ~256 /* Hilited */);
@@ -133709,6 +133727,30 @@ class FeatureOverrides {
133709
133727
  }
133710
133728
  this.updateUniformSymbologyFlags();
133711
133729
  }
133730
+ updateFlashed(data, map, flashed) {
133731
+ if (true === this._options.noFlash)
133732
+ return;
133733
+ this._anyOverridden = false;
133734
+ for (let i = 0; i < map.numFeatures; i++) {
133735
+ const dataIndex = i * 4 * 2;
133736
+ const oldFlags = data.getOvrFlagsAtIndex(dataIndex);
133737
+ if (0 /* None */ !== (oldFlags & 1 /* Visibility */)) {
133738
+ // If it's invisible, none of the other flags matter and we can't flash it.
133739
+ this._anyOverridden = true;
133740
+ continue;
133741
+ }
133742
+ let isFlashed = false;
133743
+ if (flashed) {
133744
+ const elemId = map.getElementIdPair(i);
133745
+ isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;
133746
+ }
133747
+ const newFlags = isFlashed ? (oldFlags | 16 /* Flashed */) : (oldFlags & ~16 /* Flashed */);
133748
+ data.setOvrFlagsAtIndex(dataIndex, newFlags);
133749
+ if (0 /* None */ !== newFlags)
133750
+ this._anyOverridden = true;
133751
+ }
133752
+ this.updateUniformSymbologyFlags();
133753
+ }
133712
133754
  static createFromTarget(target, options, cleanup) {
133713
133755
  return new FeatureOverrides(target, options, cleanup);
133714
133756
  }
@@ -145888,6 +145930,7 @@ function swapImageByte(image, i0, i1) {
145888
145930
  class EmptyHiliteSet {
145889
145931
  constructor() {
145890
145932
  this.isEmpty = true;
145933
+ this.modelSubCategoryMode = "union";
145891
145934
  this.elements = this.subcategories = this.models = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__["Id64"].Uint32Set();
145892
145935
  }
145893
145936
  }
@@ -188649,7 +188692,7 @@ SetupWalkCameraTool.iconSpec = "icon-camera-location";
188649
188692
  /*! exports provided: name, version, description, main, module, typings, license, scripts, repository, keywords, author, peerDependencies, //devDependencies, devDependencies, //dependencies, dependencies, nyc, eslintConfig, default */
188650
188693
  /***/ (function(module) {
188651
188694
 
188652
- module.exports = JSON.parse("{\"name\":\"@itwin/core-frontend\",\"version\":\"3.2.6\",\"description\":\"iTwin.js frontend components\",\"main\":\"lib/cjs/core-frontend.js\",\"module\":\"lib/esm/core-frontend.js\",\"typings\":\"lib/cjs/core-frontend\",\"license\":\"MIT\",\"scripts\":{\"build\":\"npm run -s copy:public && npm run -s build:cjs\",\"build:ci\":\"npm run -s build && npm run -s build:esm\",\"build:cjs\":\"tsc 1>&2 --outDir lib/cjs\",\"build:esm\":\"tsc 1>&2 --module ES2020 --outDir lib/esm\",\"clean\":\"rimraf lib .rush/temp/package-deps*.json\",\"copy:public\":\"cpx \\\"./src/public/**/*\\\" ./lib/public\",\"docs\":\"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts\",\"extract-api\":\"betools extract-api --entry=core-frontend && npm run extract-extension-api\",\"extract-extension-api\":\"eslint --no-eslintrc -c \\\"../../tools/eslint-plugin/dist/configs/extension-exports-config.js\\\" \\\"./src/**/*.ts\\\" 1>&2\",\"lint\":\"eslint -f visualstudio \\\"./src/**/*.ts\\\" 1>&2\",\"pseudolocalize\":\"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO\",\"test\":\"npm run -s webpackTests && certa -r chrome\",\"cover\":\"npm -s test\",\"test:debug\":\"certa -r chrome --debug\",\"webpackTests\":\"webpack --config ./src/test/utils/webpack.config.js 1>&2\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/iTwin/itwinjs-core/tree/master/core/frontend\"},\"keywords\":[\"Bentley\",\"BIM\",\"iModel\",\"digital-twin\",\"iTwin\"],\"author\":{\"name\":\"Bentley Systems, Inc.\",\"url\":\"http://www.bentley.com\"},\"peerDependencies\":{\"@itwin/appui-abstract\":\"workspace:^3.2.6\",\"@itwin/core-bentley\":\"workspace:^3.2.6\",\"@itwin/core-common\":\"workspace:^3.2.6\",\"@itwin/core-geometry\":\"workspace:^3.2.6\",\"@itwin/core-orbitgt\":\"workspace:^3.2.6\",\"@itwin/core-quantity\":\"workspace:^3.2.6\",\"@itwin/webgl-compatibility\":\"workspace:^3.2.6\"},\"//devDependencies\":[\"NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install\",\"NOTE: All tools used by scripts in this package must be listed as devDependencies\"],\"devDependencies\":{\"@itwin/appui-abstract\":\"workspace:*\",\"@itwin/build-tools\":\"workspace:*\",\"@itwin/core-bentley\":\"workspace:*\",\"@itwin/core-common\":\"workspace:*\",\"@itwin/core-geometry\":\"workspace:*\",\"@itwin/core-orbitgt\":\"workspace:*\",\"@itwin/core-quantity\":\"workspace:*\",\"@itwin/certa\":\"workspace:*\",\"@itwin/eslint-plugin\":\"workspace:*\",\"@itwin/webgl-compatibility\":\"workspace:*\",\"@types/chai\":\"^4.1.4\",\"@types/chai-as-promised\":\"^7\",\"@types/deep-assign\":\"^0.1.0\",\"@types/lodash\":\"^4.14.0\",\"@types/mocha\":\"^8.2.2\",\"@types/node\":\"16.11.7\",\"@types/qs\":\"^6.5.0\",\"@types/semver\":\"^5.5.0\",\"@types/superagent\":\"^4.1.14\",\"@types/sinon\":\"^9.0.0\",\"chai\":\"^4.1.2\",\"chai-as-promised\":\"^7\",\"cpx2\":\"^3.0.0\",\"eslint\":\"^7.11.0\",\"glob\":\"^7.1.2\",\"mocha\":\"^8.3.2\",\"nyc\":\"^15.1.0\",\"rimraf\":\"^3.0.2\",\"sinon\":\"^9.0.2\",\"source-map-loader\":\"^1.0.0\",\"typescript\":\"~4.4.0\",\"webpack\":\"4.42.0\"},\"//dependencies\":[\"NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API\",\"NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed\"],\"dependencies\":{\"@itwin/core-i18n\":\"workspace:*\",\"@itwin/core-telemetry\":\"workspace:*\",\"@loaders.gl/core\":\"^3.1.6\",\"@loaders.gl/draco\":\"^3.1.6\",\"deep-assign\":\"^2.0.0\",\"fuse.js\":\"^3.3.0\",\"lodash\":\"^4.17.10\",\"qs\":\"^6.5.1\",\"semver\":\"^5.5.0\",\"superagent\":\"^7.0.1\",\"wms-capabilities\":\"0.4.0\",\"xml-js\":\"~1.6.11\"},\"nyc\":{\"extends\":\"./node_modules/@itwin/build-tools/.nycrc\"},\"eslintConfig\":{\"plugins\":[\"@itwin\"],\"extends\":\"plugin:@itwin/itwinjs-recommended\",\"rules\":{\"@itwin/no-internal-barrel-imports\":[\"error\",{\"required-barrel-modules\":[\"./src/tile/internal.ts\"]}],\"@itwin/public-extension-exports\":[\"error\",{\"releaseTags\":[\"public\",\"preview\"],\"outputApiFile\":false}]},\"overrides\":[{\"files\":[\"*.test.ts\",\"*.test.tsx\",\"**/test/**/*.ts\"],\"rules\":{\"@itwin/no-internal-barrel-imports\":\"off\"}}]}}");
188695
+ module.exports = JSON.parse("{\"name\":\"@itwin/core-frontend\",\"version\":\"3.2.9\",\"description\":\"iTwin.js frontend components\",\"main\":\"lib/cjs/core-frontend.js\",\"module\":\"lib/esm/core-frontend.js\",\"typings\":\"lib/cjs/core-frontend\",\"license\":\"MIT\",\"scripts\":{\"build\":\"npm run -s copy:public && npm run -s build:cjs\",\"build:ci\":\"npm run -s build && npm run -s build:esm\",\"build:cjs\":\"tsc 1>&2 --outDir lib/cjs\",\"build:esm\":\"tsc 1>&2 --module ES2020 --outDir lib/esm\",\"clean\":\"rimraf lib .rush/temp/package-deps*.json\",\"copy:public\":\"cpx \\\"./src/public/**/*\\\" ./lib/public\",\"docs\":\"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts\",\"extract-api\":\"betools extract-api --entry=core-frontend && npm run extract-extension-api\",\"extract-extension-api\":\"eslint --no-eslintrc -c \\\"../../tools/eslint-plugin/dist/configs/extension-exports-config.js\\\" \\\"./src/**/*.ts\\\" 1>&2\",\"lint\":\"eslint -f visualstudio \\\"./src/**/*.ts\\\" 1>&2\",\"pseudolocalize\":\"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO\",\"test\":\"npm run -s webpackTests && certa -r chrome\",\"cover\":\"npm -s test\",\"test:debug\":\"certa -r chrome --debug\",\"webpackTests\":\"webpack --config ./src/test/utils/webpack.config.js 1>&2\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/iTwin/itwinjs-core/tree/master/core/frontend\"},\"keywords\":[\"Bentley\",\"BIM\",\"iModel\",\"digital-twin\",\"iTwin\"],\"author\":{\"name\":\"Bentley Systems, Inc.\",\"url\":\"http://www.bentley.com\"},\"peerDependencies\":{\"@itwin/appui-abstract\":\"workspace:^3.2.9\",\"@itwin/core-bentley\":\"workspace:^3.2.9\",\"@itwin/core-common\":\"workspace:^3.2.9\",\"@itwin/core-geometry\":\"workspace:^3.2.9\",\"@itwin/core-orbitgt\":\"workspace:^3.2.9\",\"@itwin/core-quantity\":\"workspace:^3.2.9\",\"@itwin/webgl-compatibility\":\"workspace:^3.2.9\"},\"//devDependencies\":[\"NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install\",\"NOTE: All tools used by scripts in this package must be listed as devDependencies\"],\"devDependencies\":{\"@itwin/appui-abstract\":\"workspace:*\",\"@itwin/build-tools\":\"workspace:*\",\"@itwin/core-bentley\":\"workspace:*\",\"@itwin/core-common\":\"workspace:*\",\"@itwin/core-geometry\":\"workspace:*\",\"@itwin/core-orbitgt\":\"workspace:*\",\"@itwin/core-quantity\":\"workspace:*\",\"@itwin/certa\":\"workspace:*\",\"@itwin/eslint-plugin\":\"workspace:*\",\"@itwin/webgl-compatibility\":\"workspace:*\",\"@types/chai\":\"^4.1.4\",\"@types/chai-as-promised\":\"^7\",\"@types/deep-assign\":\"^0.1.0\",\"@types/lodash\":\"^4.14.0\",\"@types/mocha\":\"^8.2.2\",\"@types/node\":\"16.11.7\",\"@types/qs\":\"^6.5.0\",\"@types/semver\":\"^5.5.0\",\"@types/superagent\":\"^4.1.14\",\"@types/sinon\":\"^9.0.0\",\"chai\":\"^4.1.2\",\"chai-as-promised\":\"^7\",\"cpx2\":\"^3.0.0\",\"eslint\":\"^7.11.0\",\"glob\":\"^7.1.2\",\"mocha\":\"^8.3.2\",\"nyc\":\"^15.1.0\",\"rimraf\":\"^3.0.2\",\"sinon\":\"^9.0.2\",\"source-map-loader\":\"^1.0.0\",\"typescript\":\"~4.4.0\",\"webpack\":\"4.42.0\"},\"//dependencies\":[\"NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API\",\"NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed\"],\"dependencies\":{\"@itwin/core-i18n\":\"workspace:*\",\"@itwin/core-telemetry\":\"workspace:*\",\"@loaders.gl/core\":\"^3.1.6\",\"@loaders.gl/draco\":\"^3.1.6\",\"deep-assign\":\"^2.0.0\",\"fuse.js\":\"^3.3.0\",\"lodash\":\"^4.17.10\",\"qs\":\"^6.5.1\",\"semver\":\"^5.5.0\",\"superagent\":\"^7.0.1\",\"wms-capabilities\":\"0.4.0\",\"xml-js\":\"~1.6.11\"},\"nyc\":{\"extends\":\"./node_modules/@itwin/build-tools/.nycrc\"},\"eslintConfig\":{\"plugins\":[\"@itwin\"],\"extends\":\"plugin:@itwin/itwinjs-recommended\",\"rules\":{\"@itwin/no-internal-barrel-imports\":[\"error\",{\"required-barrel-modules\":[\"./src/tile/internal.ts\"]}],\"@itwin/public-extension-exports\":[\"error\",{\"releaseTags\":[\"public\",\"preview\"],\"outputApiFile\":false}]},\"overrides\":[{\"files\":[\"*.test.ts\",\"*.test.tsx\",\"**/test/**/*.ts\"],\"rules\":{\"@itwin/no-internal-barrel-imports\":\"off\"}}]}}");
188653
188696
 
188654
188697
  /***/ }),
188655
188698
 
@@ -302156,7 +302199,7 @@ class TestContext {
302156
302199
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
302157
302200
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${(_a = process.env.IMJS_URL_PREFIX) !== null && _a !== void 0 ? _a : ""}api.bentley.com/imodels` } });
302158
302201
  await core_frontend_1.NoRenderApp.startup({
302159
- applicationVersion: "3.2.6",
302202
+ applicationVersion: "3.2.9",
302160
302203
  applicationId: this.settings.gprid,
302161
302204
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
302162
302205
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),