@itwin/ecschema-rpcinterface-tests 5.15.1 → 5.16.0-dev.11

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.
@@ -5394,9 +5394,9 @@ __webpack_require__.r(__webpack_exports__);
5394
5394
 
5395
5395
  /***/ },
5396
5396
 
5397
- /***/ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestFrontendAuthorizationClient.js"
5397
+ /***/ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestFrontendAuthorizationClient.js"
5398
5398
  /*!*****************************************************************************************************************************************************************************************!*\
5399
- !*** ../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestFrontendAuthorizationClient.js ***!
5399
+ !*** ../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestFrontendAuthorizationClient.js ***!
5400
5400
  \*****************************************************************************************************************************************************************************************/
5401
5401
  (__unused_webpack_module, exports, __webpack_require__) {
5402
5402
 
@@ -5451,9 +5451,9 @@ exports.TestFrontendAuthorizationClient = TestFrontendAuthorizationClient;
5451
5451
 
5452
5452
  /***/ },
5453
5453
 
5454
- /***/ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestUsers.js"
5454
+ /***/ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestUsers.js"
5455
5455
  /*!*******************************************************************************************************************************************************************!*\
5456
- !*** ../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestUsers.js ***!
5456
+ !*** ../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestUsers.js ***!
5457
5457
  \*******************************************************************************************************************************************************************/
5458
5458
  (__unused_webpack_module, exports) {
5459
5459
 
@@ -5539,9 +5539,9 @@ exports.TestUsers = TestUsers;
5539
5539
 
5540
5540
  /***/ },
5541
5541
 
5542
- /***/ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/certa/certaCommon.js"
5542
+ /***/ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/certa/certaCommon.js"
5543
5543
  /*!***************************************************************************************************************************************************************************!*\
5544
- !*** ../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/certa/certaCommon.js ***!
5544
+ !*** ../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/certa/certaCommon.js ***!
5545
5545
  \***************************************************************************************************************************************************************************/
5546
5546
  (__unused_webpack_module, exports, __webpack_require__) {
5547
5547
 
@@ -5577,9 +5577,9 @@ async function getServiceAuthTokenFromBackend(oidcConfig) {
5577
5577
 
5578
5578
  /***/ },
5579
5579
 
5580
- /***/ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/frontend.js"
5580
+ /***/ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/frontend.js"
5581
5581
  /*!******************************************************************************************************************************************************************!*\
5582
- !*** ../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/frontend.js ***!
5582
+ !*** ../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/frontend.js ***!
5583
5583
  \******************************************************************************************************************************************************************/
5584
5584
  (__unused_webpack_module, exports, __webpack_require__) {
5585
5585
 
@@ -5604,9 +5604,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
5604
5604
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
5605
5605
  };
5606
5606
  Object.defineProperty(exports, "__esModule", ({ value: true }));
5607
- __exportStar(__webpack_require__(/*! ./TestUsers */ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestUsers.js"), exports);
5608
- __exportStar(__webpack_require__(/*! ./TestFrontendAuthorizationClient */ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestFrontendAuthorizationClient.js"), exports);
5609
- __exportStar(__webpack_require__(/*! ./certa/certaCommon */ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/certa/certaCommon.js"), exports);
5607
+ __exportStar(__webpack_require__(/*! ./TestUsers */ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestUsers.js"), exports);
5608
+ __exportStar(__webpack_require__(/*! ./TestFrontendAuthorizationClient */ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/TestFrontendAuthorizationClient.js"), exports);
5609
+ __exportStar(__webpack_require__(/*! ./certa/certaCommon */ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/certa/certaCommon.js"), exports);
5610
5610
  //# sourceMappingURL=frontend.js.map
5611
5611
 
5612
5612
  /***/ },
@@ -28306,9 +28306,9 @@ class QueryOptionsBuilder {
28306
28306
  return this;
28307
28307
  }
28308
28308
  /**
28309
- * By default all blobs are abbreviated to save memory and network bandwidth. If set to false, all blob data will be returned by query as is.
28309
+ * By default blobs are not abbreviated and all blob data is returned by query as is. If set to true, blobs are abbreviated to save memory and network bandwidth.
28310
28310
  * Use @type BlobReader to access blob data more efficiently.
28311
- * @param val A boolean value, if set to false will return complete blob type property data. This could cost time and network bandwidth.
28311
+ * @param val A boolean value, if set to true will abbreviate blob type property data instead of returning it in full. Returning complete blob data could cost time and network bandwidth.
28312
28312
  * @returns @type QueryOptionsBuilder for fluent interface.
28313
28313
  */
28314
28314
  setAbbreviateBlobs(val) {
@@ -30871,6 +30871,8 @@ class ECSqlReader extends _ECSqlReaderBase__WEBPACK_IMPORTED_MODULE_2__.ECSqlRea
30871
30871
  _lockArgs = false;
30872
30872
  _cursorId = "";
30873
30873
  _stats = { backendCpuTime: 0, backendTotalTime: 0, backendMemUsed: 0, backendRowsReturned: 0, totalTime: 0, retryCount: 0, prepareTime: 0 };
30874
+ _cloudTimingUnavailable = false;
30875
+ _cloudBlocksUnavailable = false;
30874
30876
  _options = new _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_0__.QueryOptionsBuilder().getOptions();
30875
30877
  /**
30876
30878
  * @internal
@@ -30939,7 +30941,8 @@ class ECSqlReader extends _ECSqlReaderBase__WEBPACK_IMPORTED_MODULE_2__.ECSqlRea
30939
30941
  return this._localRows[this._localOffset];
30940
30942
  }
30941
30943
  /**
30942
- * Get performance-related statistics for the current query.
30944
+ * Get accumulated statistics for this reader's lifetime, including retries and failed attempts with available timings.
30945
+ * Deprecated resets do not clear these statistics.
30943
30946
  */
30944
30947
  get stats() {
30945
30948
  return this._stats;
@@ -30985,24 +30988,66 @@ class ECSqlReader extends _ECSqlReaderBase__WEBPACK_IMPORTED_MODULE_2__.ECSqlRea
30985
30988
  async runWithRetry(request) {
30986
30989
  const needRetry = (rs) => (rs.status === _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_0__.DbResponseStatus.Partial || rs.status === _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_0__.DbResponseStatus.QueueFull || rs.status === _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_0__.DbResponseStatus.Timeout || rs.status === _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_0__.DbResponseStatus.ShuttingDown) && (rs.data === undefined || rs.data.length === 0);
30987
30990
  const updateStats = (rs) => {
30991
+ this._stats.backendMemUsed += rs.stats.memUsed;
30992
+ this._stats.backendRowsReturned += (rs.data === undefined) ? 0 : rs.data.length;
30993
+ };
30994
+ const updateTiming = (rs) => {
30988
30995
  this._stats.backendCpuTime += rs.stats.cpuTime;
30989
30996
  this._stats.backendTotalTime += rs.stats.totalTime;
30990
- this._stats.backendMemUsed += rs.stats.memUsed;
30991
30997
  this._stats.prepareTime += rs.stats.prepareTime;
30992
- this._stats.backendRowsReturned += (rs.data === undefined) ? 0 : rs.data.length;
30998
+ if (rs.stats.cloudSqliteTimingState === "notExecuted")
30999
+ return;
31000
+ if (this._cloudTimingUnavailable)
31001
+ return;
31002
+ if (rs.stats.cloudSqliteTimingState !== "unavailable" && rs.stats.downloadTime !== undefined && rs.stats.executionTime !== undefined) {
31003
+ this._stats.backendDownloadTime = (this._stats.backendDownloadTime ?? 0) + rs.stats.downloadTime;
31004
+ this._stats.backendExecutionTime = (this._stats.backendExecutionTime ?? 0) + rs.stats.executionTime;
31005
+ if (!this._cloudBlocksUnavailable) {
31006
+ const { downloadBlocks, downloadBytes } = rs.stats;
31007
+ if (downloadBlocks !== undefined && Number.isSafeInteger(downloadBlocks) && downloadBlocks >= 0
31008
+ && downloadBytes !== undefined && Number.isSafeInteger(downloadBytes) && downloadBytes >= 0) {
31009
+ this._stats.backendDownloadBlocks = (this._stats.backendDownloadBlocks ?? 0) + downloadBlocks;
31010
+ this._stats.backendDownloadBytes = (this._stats.backendDownloadBytes ?? 0) + downloadBytes;
31011
+ }
31012
+ else {
31013
+ this.invalidateCloudBlocks();
31014
+ }
31015
+ }
31016
+ }
31017
+ else {
31018
+ this.invalidateCloudTiming();
31019
+ }
30993
31020
  };
30994
- const execQuery = async (req) => {
30995
- const startTime = Date.now();
30996
- const rs = await this._executor.execute(req);
30997
- this.stats.totalTime += (Date.now() - startTime);
30998
- return rs;
31021
+ const execQuery = (req) => {
31022
+ const startTime = performance.now();
31023
+ const onResponse = (rs) => {
31024
+ this._stats.totalTime += performance.now() - startTime;
31025
+ updateTiming(rs);
31026
+ return rs;
31027
+ };
31028
+ const onError = (err) => {
31029
+ this._stats.totalTime += performance.now() - startTime;
31030
+ this.invalidateCloudTiming();
31031
+ throw err;
31032
+ };
31033
+ let result;
31034
+ try {
31035
+ result = this._executor.execute(req);
31036
+ }
31037
+ catch (err) {
31038
+ return onError(err);
31039
+ }
31040
+ return "then" in result ? result.then(onResponse, onError) : onResponse(result);
30999
31041
  };
31000
31042
  let retry = ECSqlReader._maxRetryCount;
31001
- let resp = await execQuery(request);
31043
+ let pending = execQuery(request);
31044
+ let resp = "then" in pending ? await pending : pending;
31002
31045
  _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_0__.DbQueryError.throwIfError(resp, request);
31003
31046
  while (--retry > 0 && needRetry(resp)) {
31004
- resp = await execQuery(request);
31047
+ pending = execQuery(request);
31048
+ resp = "then" in pending ? await pending : pending;
31005
31049
  this._stats.retryCount += 1;
31050
+ _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_0__.DbQueryError.throwIfError(resp, request);
31006
31051
  if (needRetry(resp)) {
31007
31052
  updateStats(resp);
31008
31053
  }
@@ -31013,6 +31058,17 @@ class ECSqlReader extends _ECSqlReaderBase__WEBPACK_IMPORTED_MODULE_2__.ECSqlRea
31013
31058
  updateStats(resp);
31014
31059
  return resp;
31015
31060
  }
31061
+ invalidateCloudTiming() {
31062
+ this._cloudTimingUnavailable = true;
31063
+ delete this._stats.backendDownloadTime;
31064
+ delete this._stats.backendExecutionTime;
31065
+ this.invalidateCloudBlocks();
31066
+ }
31067
+ invalidateCloudBlocks() {
31068
+ this._cloudBlocksUnavailable = true;
31069
+ delete this._stats.backendDownloadBlocks;
31070
+ delete this._stats.backendDownloadBytes;
31071
+ }
31016
31072
  /**
31017
31073
  * Get the metadata for each column in the query result.
31018
31074
  *
@@ -31057,13 +31113,21 @@ class ECSqlReader extends _ECSqlReaderBase__WEBPACK_IMPORTED_MODULE_2__.ECSqlRea
31057
31113
  }
31058
31114
  /**
31059
31115
  * Get all remaining rows from the query result.
31116
+ * Buffered pages are materialized without awaiting each individual row.
31060
31117
  *
31061
31118
  * @returns An array of all remaining rows from the query result.
31062
31119
  */
31063
31120
  async toArray() {
31064
31121
  const rows = [];
31122
+ const drainPage = this.step === ECSqlReader.prototype.step;
31065
31123
  while (await this.step()) {
31066
31124
  rows.push(this.formatCurrentRow());
31125
+ if (drainPage) {
31126
+ while (this._localOffset < this._localRows.length - 1) {
31127
+ ++this._localOffset;
31128
+ rows.push(this.formatCurrentRow());
31129
+ }
31130
+ }
31067
31131
  }
31068
31132
  return rows;
31069
31133
  }
@@ -31196,7 +31260,7 @@ class ECSqlReaderBase {
31196
31260
  return target.getRowInternal()[prop.index];
31197
31261
  }
31198
31262
  if (key === "getMetaData") {
31199
- return () => target._props.properties;
31263
+ return () => target.getMetaDataInternal();
31200
31264
  }
31201
31265
  if (key === "toRow") {
31202
31266
  return () => target.formatCurrentRow(true);
@@ -31251,6 +31315,10 @@ class ECSqlReaderBase {
31251
31315
  get done() {
31252
31316
  return this._done;
31253
31317
  }
31318
+ /** @internal */
31319
+ getMetaDataInternal() {
31320
+ return this._props.properties;
31321
+ }
31254
31322
  /**
31255
31323
  * Converts Base64-encoded strings in a row object into Uint8Arrays in-place.
31256
31324
  * @internal
@@ -36790,12 +36858,24 @@ class ImageMapLayerSettings extends MapLayerSettings {
36790
36858
  userName;
36791
36859
  password;
36792
36860
  accessKey;
36793
- /** List of query parameters to append to the settings URL and persisted as part of the JSON representation.
36794
- * @note Sensitive information like user credentials should be provided in [[unsavedQueryParams]] to ensure it is never persisted.
36861
+ /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses
36862
+ * and `delete` keep working.
36863
+ * @deprecated in 5.16. Use [[queryParams]].
36795
36864
  * @beta
36796
36865
  */
36797
36866
  savedQueryParams;
36867
+ /** Non-secret query parameters appended to every request made for the layer, persisted as part of the JSON
36868
+ * representation ([[ImageMapLayerProps.queryParams]]). Secrets must never be placed here; the hosting application
36869
+ * injects them per session through a fetch handler (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in
36870
+ * `@itwin/core-frontend`), which also protects them against leaking through redirects.
36871
+ * @beta
36872
+ */
36873
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- the deprecated field is the storage until its removal.
36874
+ get queryParams() { return this.savedQueryParams; }
36875
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
36876
+ set queryParams(value) { this.savedQueryParams = value; }
36798
36877
  /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.
36878
+ * @deprecated in 5.16. Register a fetch handler (`MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`) to inject secret or per-session parameters, which unlike this field are protected against leaking through redirects; use [[queryParams]] for non-secret parameters.
36799
36879
  * @beta
36800
36880
  */
36801
36881
  unsavedQueryParams;
@@ -36813,7 +36893,7 @@ class ImageMapLayerSettings extends MapLayerSettings {
36813
36893
  this.url = props.url;
36814
36894
  this.accessKey = props.accessKey;
36815
36895
  if (props.queryParams) {
36816
- this.savedQueryParams = { ...props.queryParams };
36896
+ this.queryParams = { ...props.queryParams };
36817
36897
  }
36818
36898
  if (props.properties) {
36819
36899
  this.properties = { ...props.properties };
@@ -36837,8 +36917,8 @@ class ImageMapLayerSettings extends MapLayerSettings {
36837
36917
  props.formatId = this.formatId;
36838
36918
  if (this.subLayers.length > 0)
36839
36919
  props.subLayers = this.subLayers.map((x) => x.toJSON());
36840
- if (this.savedQueryParams)
36841
- props.queryParams = { ...this.savedQueryParams };
36920
+ if (this.queryParams)
36921
+ props.queryParams = { ...this.queryParams };
36842
36922
  if (this.properties) {
36843
36923
  props.properties = structuredClone(this.properties);
36844
36924
  }
@@ -36853,10 +36933,10 @@ class ImageMapLayerSettings extends MapLayerSettings {
36853
36933
  // Clone members not part of MapLayerProps
36854
36934
  clone.userName = this.userName;
36855
36935
  clone.password = this.password;
36936
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
36856
36937
  if (this.unsavedQueryParams)
36938
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
36857
36939
  clone.unsavedQueryParams = { ...this.unsavedQueryParams };
36858
- if (this.savedQueryParams)
36859
- clone.savedQueryParams = { ...this.savedQueryParams };
36860
36940
  return clone;
36861
36941
  }
36862
36942
  /** @internal */
@@ -36869,8 +36949,8 @@ class ImageMapLayerSettings extends MapLayerSettings {
36869
36949
  if (changedProps.queryParams) {
36870
36950
  props.queryParams = { ...changedProps.queryParams };
36871
36951
  }
36872
- else if (this.savedQueryParams) {
36873
- props.queryParams = { ...this.savedQueryParams };
36952
+ else if (this.queryParams) {
36953
+ props.queryParams = { ...this.queryParams };
36874
36954
  }
36875
36955
  if (changedProps.properties) {
36876
36956
  props.properties = { ...changedProps.properties };
@@ -36946,14 +37026,17 @@ class ImageMapLayerSettings extends MapLayerSettings {
36946
37026
  this.userName = userName;
36947
37027
  this.password = password;
36948
37028
  }
36949
- /** Collect all query parameters
36950
- * @beta
36951
- */
37029
+ /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`
37030
+ * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.
37031
+ * @beta
37032
+ */
36952
37033
  collectQueryParams() {
36953
37034
  let queryParams = {};
36954
- if (this.savedQueryParams)
36955
- queryParams = { ...this.savedQueryParams };
37035
+ if (this.queryParams)
37036
+ queryParams = { ...this.queryParams };
37037
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
36956
37038
  if (this.unsavedQueryParams)
37039
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
36957
37040
  queryParams = { ...queryParams, ...this.unsavedQueryParams };
36958
37041
  return queryParams;
36959
37042
  }
@@ -97480,6 +97563,8 @@ class RealityDataSourceTilesetUrlImpl {
97480
97563
  _baseUrl = "";
97481
97564
  /** Need to be passed down to child tile requests when requesting from blob storage, e.g. a Cesium export from the Mesh Export Service*/
97482
97565
  _searchParams = "";
97566
+ /** Origin of the root tileset URL. `_searchParams` are only forwarded to this origin. */
97567
+ _origin;
97483
97568
  /** Construct a new reality data source.
97484
97569
  * @param props JSON representation of the reality data source
97485
97570
  */
@@ -97528,6 +97613,7 @@ class RealityDataSourceTilesetUrlImpl {
97528
97613
  const urlParts = url.split("/");
97529
97614
  const newUrl = new URL(url);
97530
97615
  this._searchParams = newUrl.search;
97616
+ this._origin = newUrl.origin;
97531
97617
  urlParts.pop();
97532
97618
  if (urlParts.length === 0)
97533
97619
  this._baseUrl = "";
@@ -97561,10 +97647,13 @@ class RealityDataSourceTilesetUrlImpl {
97561
97647
  /** Returns the tile URL.
97562
97648
  * If the tile path is a relative URL, the base URL is prepended to it.
97563
97649
  * For both absolute and relative tile path URLs, the search parameters are checked. If the search params are empty, the base URL's search params are appended to the tile path.
97650
+ * The base URL's search params (which may contain credentials such as a SAS token) are never appended to an absolute URL on a different origin.
97564
97651
  */
97565
97652
  getTileUrl(tilePath) {
97566
97653
  if (this.isValidURL(tilePath)) {
97567
97654
  const url = new URL(tilePath);
97655
+ if (url.origin !== this._origin)
97656
+ return tilePath;
97568
97657
  return url.search === "" ? `${tilePath}${this._searchParams}` : tilePath;
97569
97658
  }
97570
97659
  return tilePath.includes("?") ? `${this._baseUrl}${tilePath}` : `${this._baseUrl}${tilePath}${this._searchParams}`;
@@ -115999,6 +116088,7 @@ __webpack_require__.r(__webpack_exports__);
115999
116088
  /* harmony export */ ManipulatorToolEvent: () => (/* reexport safe */ _tools_ToolAdmin__WEBPACK_IMPORTED_MODULE_115__.ManipulatorToolEvent),
116000
116089
  /* harmony export */ MapCartoRectangle: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapCartoRectangle),
116001
116090
  /* harmony export */ MapFeatureInfoRecord: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapFeatureInfoRecord),
116091
+ /* harmony export */ MapLayerAuthenticationFailedError: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerAuthenticationFailedError),
116002
116092
  /* harmony export */ MapLayerFeatureRecord: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerFeatureRecord),
116003
116093
  /* harmony export */ MapLayerFormat: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerFormat),
116004
116094
  /* harmony export */ MapLayerFormatRegistry: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerFormatRegistry),
@@ -116008,6 +116098,7 @@ __webpack_require__.r(__webpack_exports__);
116008
116098
  /* harmony export */ MapLayerSourceStatus: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerSourceStatus),
116009
116099
  /* harmony export */ MapLayerSources: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerSources),
116010
116100
  /* harmony export */ MapLayerTileTreeReference: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerTileTreeReference),
116101
+ /* harmony export */ MapLayerUntrustedOriginError: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.MapLayerUntrustedOriginError),
116011
116102
  /* harmony export */ MapTile: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapTile),
116012
116103
  /* harmony export */ MapTileProjection: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapTileProjection),
116013
116104
  /* harmony export */ MapTileTree: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapTileTree),
@@ -116223,10 +116314,12 @@ __webpack_require__.r(__webpack_exports__);
116223
116314
  /* harmony export */ createQuantityDescription: () => (/* reexport safe */ _properties_FormattedQuantityDescription__WEBPACK_IMPORTED_MODULE_72__.createQuantityDescription),
116224
116315
  /* harmony export */ createSpatialTileTreeReferences: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.createSpatialTileTreeReferences),
116225
116316
  /* harmony export */ createWorkerProxy: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_12__.createWorkerProxy),
116317
+ /* harmony export */ credentialedFetchRedirect: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.credentialedFetchRedirect),
116226
116318
  /* harmony export */ deflateCoordinates: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.deflateCoordinates),
116227
116319
  /* harmony export */ extractImageSourceDimensions: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_12__.extractImageSourceDimensions),
116228
116320
  /* harmony export */ eyeToCartographicOnGlobe: () => (/* reexport safe */ _ViewGlobalLocation__WEBPACK_IMPORTED_MODULE_60__.eyeToCartographicOnGlobe),
116229
116321
  /* harmony export */ eyeToCartographicOnGlobeFromGcs: () => (/* reexport safe */ _ViewGlobalLocation__WEBPACK_IMPORTED_MODULE_60__.eyeToCartographicOnGlobeFromGcs),
116322
+ /* harmony export */ fetchMapLayerRequest: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.fetchMapLayerRequest),
116230
116323
  /* harmony export */ formatAnimationBranchId: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.formatAnimationBranchId),
116231
116324
  /* harmony export */ getCenteredViewRect: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_12__.getCenteredViewRect),
116232
116325
  /* harmony export */ getCesiumAssetUrl: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.getCesiumAssetUrl),
@@ -117562,6 +117655,9 @@ class RealityDataSourceGoogle3dTilesImpl {
117562
117655
  // We also do not need to worry about the tile path starting with a slash.
117563
117656
  // This happens in these tiles at the second .json level, but the URL API will handle that for us.
117564
117657
  const url = new URL(tilePath, this._baseUrl);
117658
+ // Never forward the API key or session params to a different origin.
117659
+ if (!this.isSameOrigin(url))
117660
+ return url.toString();
117565
117661
  // If tile is a reference to a tileset, iterate over tileset url's search params and store them in this._searchParams so we can pass them down to children
117566
117662
  if (this.getTileContentType(url.toString()) === "tileset" && url.searchParams.size !== 0) {
117567
117663
  for (const [key, value] of url.searchParams.entries()) {
@@ -117581,15 +117677,20 @@ class RealityDataSourceGoogle3dTilesImpl {
117581
117677
  }
117582
117678
  return newUrl.toString();
117583
117679
  }
117680
+ /** Returns true if `url` has the same origin as the root tileset. Credentials are only sent to that origin. */
117681
+ isSameOrigin(url) {
117682
+ return new URL(url).origin === this._baseUrl;
117683
+ }
117584
117684
  /**
117585
117685
  * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.
117586
117686
  */
117587
117687
  async getTileContent(name) {
117688
+ const url = this.getTileUrl(name);
117588
117689
  let authToken;
117589
- if (this._getAuthToken) {
117690
+ if (this._getAuthToken && this.isSameOrigin(url)) {
117590
117691
  authToken = await this._getAuthToken();
117591
117692
  }
117592
- return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(this.getTileUrl(name), "arraybuffer", authToken ? {
117693
+ return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(url, "arraybuffer", authToken ? {
117593
117694
  headers: {
117594
117695
  authorization: `Bearer ${authToken}`
117595
117696
  }
@@ -117599,11 +117700,12 @@ class RealityDataSourceGoogle3dTilesImpl {
117599
117700
  * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.
117600
117701
  */
117601
117702
  async getTileJson(name) {
117703
+ const url = this.getTileUrl(name);
117602
117704
  let authToken;
117603
- if (this._getAuthToken) {
117705
+ if (this._getAuthToken && this.isSameOrigin(url)) {
117604
117706
  authToken = await this._getAuthToken();
117605
117707
  }
117606
- return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(this.getTileUrl(name), "json", authToken ? {
117708
+ return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(url, "json", authToken ? {
117607
117709
  headers: {
117608
117710
  authorization: `Bearer ${authToken}`
117609
117711
  }
@@ -118639,6 +118741,7 @@ __webpack_require__.r(__webpack_exports__);
118639
118741
  /* harmony export */ LayerTileTreeHandler: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.LayerTileTreeHandler),
118640
118742
  /* harmony export */ LayerTileTreeReferenceHandler: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.LayerTileTreeReferenceHandler),
118641
118743
  /* harmony export */ LogoDecoration: () => (/* reexport safe */ _GoogleMapsDecorator__WEBPACK_IMPORTED_MODULE_9__.LogoDecoration),
118744
+ /* harmony export */ MapLayerUntrustedOriginError: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.MapLayerUntrustedOriginError),
118642
118745
  /* harmony export */ MapTileTreeReference: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.MapTileTreeReference),
118643
118746
  /* harmony export */ OnScreenTarget: () => (/* reexport safe */ _render_webgl_Target__WEBPACK_IMPORTED_MODULE_3__.OnScreenTarget),
118644
118747
  /* harmony export */ PerformanceMetrics: () => (/* reexport safe */ _render_webgl_PerformanceMetrics__WEBPACK_IMPORTED_MODULE_4__.PerformanceMetrics),
@@ -118656,7 +118759,9 @@ __webpack_require__.r(__webpack_exports__);
118656
118759
  /* harmony export */ appendQueryParams: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.appendQueryParams),
118657
118760
  /* harmony export */ collectMaskRefs: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.collectMaskRefs),
118658
118761
  /* harmony export */ createSpatialTileTreeReferences: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.createSpatialTileTreeReferences),
118762
+ /* harmony export */ credentialedFetchRedirect: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.credentialedFetchRedirect),
118659
118763
  /* harmony export */ deflateCoordinates: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.deflateCoordinates),
118764
+ /* harmony export */ fetchMapLayerRequest: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.fetchMapLayerRequest),
118660
118765
  /* harmony export */ formatAnimationBranchId: () => (/* reexport safe */ _render_AnimationBranchState__WEBPACK_IMPORTED_MODULE_6__.formatAnimationBranchId)
118661
118766
  /* harmony export */ });
118662
118767
  /* harmony import */ var _common_internal_Symbols__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/internal/Symbols */ "../../core/frontend/lib/esm/common/internal/Symbols.js");
@@ -156721,7 +156826,7 @@ class RealityTileLoader {
156721
156826
  /** The base URL the glTF reader should resolve relatively-referenced resources (e.g. external images) against.
156722
156827
  * Prefer the tile's own content URL so that images referenced relative to the content (typical of JSON `.gltf` tiles)
156723
156828
  * resolve correctly, rather than against the tileset root. The tileset's query/authentication parameters (e.g.
156724
- * `?sig=abc`) are preserved on the returned URL: the data source appends them to every tile request, and the glTF
156829
+ * `?sig=abc`) are preserved on the returned URL when it shares the tileset's origin: the data source appends them to every tile request, and the glTF
156725
156830
  * reader re-applies the base URL's query string to each relatively-referenced resource (see `GltfReader.resolveUrl`),
156726
156831
  * so external resources must be fetched with the same parameters.
156727
156832
  */
@@ -156732,8 +156837,10 @@ class RealityTileLoader {
156732
156837
  return tile.contentUrl;
156733
156838
  try {
156734
156839
  const resolved = new URL(tile.contentUrl, treeBaseUrl);
156735
- if ("" === resolved.search)
156736
- resolved.search = new URL(treeBaseUrl).search;
156840
+ const base = new URL(treeBaseUrl);
156841
+ // Only inherit the tileset's query (which may contain credentials) on the tileset's own origin.
156842
+ if ("" === resolved.search && resolved.origin === base.origin)
156843
+ resolved.search = base.search;
156737
156844
  return resolved.toString();
156738
156845
  }
156739
156846
  catch {
@@ -157742,6 +157849,8 @@ class ArcGisUtilities {
157742
157849
  metadata = await this.getServiceJson({ url: source.url, formatId: source.formatId, userName: source.userName, password: source.password, queryParams: source.collectQueryParams(), ignoreCache });
157743
157850
  }
157744
157851
  catch (err) {
157852
+ if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerAuthenticationFailedError)
157853
+ return { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
157745
157854
  if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError) {
157746
157855
  let blockedOrigin;
157747
157856
  try {
@@ -157756,16 +157865,17 @@ class ArcGisUtilities {
157756
157865
  if (json === undefined) {
157757
157866
  return { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidUrl };
157758
157867
  }
157759
- else if (json.error !== undefined) {
157868
+ const errorCode = metadata?.errorCode;
157869
+ if (errorCode !== undefined) {
157760
157870
  // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers
157761
157871
  // and return information needed to initiate the authentification process... the end-user
157762
157872
  // will have to provide his credentials before we can fully validate this source.
157763
157873
  // Note: Some servers will throw a error 403 (You do not have permissions to access this resource or perform this operation),
157764
157874
  // instead of 499 (TokenRequired)
157765
- if (json.error.code === ArcGisErrorCode.TokenRequired || json.error.code === ArcGisErrorCode.MissingPermissions) {
157875
+ if (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.MissingPermissions) {
157766
157876
  return (source.userName || source.password) ? { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials } : { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
157767
157877
  }
157768
- else if (json.error.code === ArcGisErrorCode.InvalidCredentials)
157878
+ else if (errorCode === ArcGisErrorCode.InvalidCredentials)
157769
157879
  return { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials };
157770
157880
  }
157771
157881
  // Check this service support the expected queries
@@ -157816,11 +157926,17 @@ class ArcGisUtilities {
157816
157926
  * @param requireToken Flag to indicate if a token is required
157817
157927
  * @throws [[MapLayerUntrustedOriginError]] if an NTLM/Negotiate challenge could not be answered because
157818
157928
  * the URL's origin is not trusted (see [[MapLayerFormatRegistry.restrictCredentialsToTrustedOrigins]]);
157929
+ * [[MapLayerAuthenticationFailedError]] if a registered [[MapLayerFetchHandler]] reported an
157930
+ * authentication failure;
157819
157931
  * all other errors are caught and reported by returning `undefined`.
157820
157932
  */
157821
157933
  static async getServiceJson(args) {
157822
- const { url, formatId, userName, password, queryParams, ignoreCache, requireToken } = args;
157823
- if (!ignoreCache) {
157934
+ const { url, layerUrl = url, layerProperties, formatId, userName, password, queryParams, ignoreCache, requireToken } = args;
157935
+ const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry?.getAccessClient(formatId);
157936
+ // The cache is keyed by URL only, so responses customized by the fetch handler (e.g.
157937
+ // header-authenticated) must not be shared with or served from differently-customized requests.
157938
+ const hasFetchHandler = (_IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers.length ?? 0) > 0;
157939
+ if (!ignoreCache && !hasFetchHandler) {
157824
157940
  const cached = ArcGisUtilities._serviceCache.get(url);
157825
157941
  if (cached !== undefined)
157826
157942
  return cached;
@@ -157839,55 +157955,71 @@ class ArcGisUtilities {
157839
157955
  appendParams(tmpUrl, queryParams);
157840
157956
  return tmpUrl;
157841
157957
  };
157958
+ // Routes each request through the registered fetch handler (if any); handler failures propagate.
157959
+ // The NTLM/SSO retry applies only to the initial request, and never to sends the handler modified.
157960
+ const requestJson = async (target, allowSsoRetry) => {
157961
+ return (0,_tile_internal__WEBPACK_IMPORTED_MODULE_1__.fetchMapLayerRequest)({
157962
+ url: target.toString(),
157963
+ formatId,
157964
+ layerUrl,
157965
+ layerProperties,
157966
+ send: async (request, credentialed) => {
157967
+ // Sends the handler modified may carry injected secrets: same redirect policy as credentialed ones.
157968
+ let rsp = await fetch(request.url, { method: "GET", headers: request.headers, redirect: credentialed ? (0,_tile_internal__WEBPACK_IMPORTED_MODULE_1__.credentialedFetchRedirect)() : undefined });
157969
+ if (allowSsoRetry && rsp.status === 401 && !requireToken && !credentialed && (0,_request_utils__WEBPACK_IMPORTED_MODULE_3__.headersIncludeAuthMethod)(rsp.headers, ["ntlm", "negotiate"])) {
157970
+ // fetch follows redirects transparently, so trust decisions target the final (post-redirect) URL.
157971
+ const challengedUrl = rsp.url || request.url;
157972
+ if (!_IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.isSsoAllowed(challengedUrl))
157973
+ throw new _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError(challengedUrl);
157974
+ _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.logUntrustedOriginUse(challengedUrl);
157975
+ // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication).
157976
+ rsp = await fetch(challengedUrl, {
157977
+ method: "GET",
157978
+ credentials: "include",
157979
+ redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
157980
+ });
157981
+ }
157982
+ return rsp;
157983
+ },
157984
+ });
157985
+ };
157842
157986
  let accessTokenRequired = false;
157843
157987
  try {
157844
157988
  let tmpUrl = createUrlObj();
157845
157989
  // In some cases, caller might already know token is required, so append it immediately
157846
157990
  if (requireToken) {
157847
- const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);
157848
157991
  if (accessClient) {
157849
157992
  accessTokenRequired = true;
157850
157993
  await ArcGisUtilities.appendSecurityToken(tmpUrl, accessClient, { mapLayerUrl: new URL(url), userName, password });
157851
157994
  }
157852
157995
  }
157853
- let response = await fetch(tmpUrl, { method: "GET" });
157854
- if (response.status === 401 && !requireToken && (0,_request_utils__WEBPACK_IMPORTED_MODULE_3__.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])) {
157855
- // fetch follows redirects transparently, so trust decisions target the final (post-redirect) URL.
157856
- const challengedUrl = response.url || tmpUrl.toString();
157857
- if (!_IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.isSsoAllowed(challengedUrl))
157858
- throw new _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError(challengedUrl);
157859
- _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.logUntrustedOriginUse(challengedUrl);
157860
- // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication).
157861
- response = await fetch(challengedUrl, {
157862
- method: "GET",
157863
- credentials: "include",
157864
- redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
157865
- });
157866
- }
157996
+ let { response, managedByHandler } = await requestJson(tmpUrl, true);
157867
157997
  // Append security token when corresponding error code is returned by ArcGIS service
157868
- let errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);
157998
+ const errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);
157869
157999
  if (!accessTokenRequired
157870
158000
  && (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.MissingPermissions)) {
157871
158001
  accessTokenRequired = true;
157872
158002
  // If token required
157873
- const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);
157874
158003
  if (accessClient) {
157875
158004
  tmpUrl = createUrlObj();
157876
158005
  await ArcGisUtilities.appendSecurityToken(tmpUrl, accessClient, { mapLayerUrl: new URL(url), userName, password });
157877
- response = await fetch(tmpUrl.toString(), { method: "GET" });
157878
- errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);
158006
+ ({ response, managedByHandler } = await requestJson(tmpUrl, false));
157879
158007
  }
157880
158008
  }
157881
158009
  const json = await response.json();
157882
- const info = { content: json, accessTokenRequired };
157883
- // Cache the response only if it doesn't contain any error.
157884
- ArcGisUtilities._serviceCache.set(url, (errorCode === undefined ? info : undefined));
158010
+ // Classified from the parsed body regardless of the Content-Type the server labelled it with.
158011
+ const contentErrorCode = json?.error?.code;
158012
+ const info = { content: json, accessTokenRequired, errorCode: managedByHandler ? undefined : contentErrorCode };
158013
+ // Cache the response only if it doesn't contain any error, and never when a fetch handler managed it or
158014
+ // is registered (the cache is keyed by URL only, so protected data must not be cached).
158015
+ if (!hasFetchHandler && !managedByHandler)
158016
+ ArcGisUtilities._serviceCache.set(url, (contentErrorCode === undefined ? info : undefined));
157885
158017
  return info; // Always return json, even though it contains an error code.
157886
158018
  }
157887
158019
  catch (err) {
157888
158020
  ArcGisUtilities._serviceCache.set(url, undefined);
157889
- if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError)
157890
- throw err; // propagate so callers can report the blocked origin
158021
+ if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError || err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerAuthenticationFailedError)
158022
+ throw err; // propagate so callers can report the blocked origin / authentication failure
157891
158023
  return undefined;
157892
158024
  }
157893
158025
  }
@@ -158023,6 +158155,8 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
158023
158155
  */
158024
158156
  _accessTokenRequired = false;
158025
158157
  _querySupported = false;
158158
+ /** Responses of [[fetch]] managed by a fetch handler (see [[MapLayerFetchResult.managedByHandler]]). */
158159
+ _handlerManagedFetchResponses = new WeakSet();
158026
158160
  get supportsMapFeatureInfo() { return this._querySupported; }
158027
158161
  constructor(settings, usesCachedTiles) {
158028
158162
  super(settings, usesCachedTiles);
@@ -158047,11 +158181,13 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
158047
158181
  async getServiceJson() {
158048
158182
  let metadata;
158049
158183
  try {
158050
- metadata = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.getServiceJson({ url: this._settings.url, formatId: this._settings.formatId, userName: this._settings.userName, password: this._settings.password, queryParams: this._settings.collectQueryParams() });
158184
+ metadata = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.getServiceJson({ url: this._settings.url, layerProperties: this._settings.properties, formatId: this._settings.formatId, userName: this._settings.userName, password: this._settings.password, queryParams: this._settings.collectQueryParams() });
158051
158185
  }
158052
158186
  catch (err) {
158053
158187
  if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerUntrustedOriginError)
158054
158188
  this.reportBlockedOrigin(err.url);
158189
+ else if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerAuthenticationFailedError)
158190
+ this.setStatus(_tile_internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerImageryProviderStatus.RequireAuth);
158055
158191
  }
158056
158192
  if (metadata && metadata.accessTokenRequired) {
158057
158193
  const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.getAccessClient(this._settings.formatId);
@@ -158069,6 +158205,56 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
158069
158205
  }
158070
158206
  return metadata;
158071
158207
  }
158208
+ /** The default send for [[fetch]]: legacy redirect policy and origin-trust checks for one target.
158209
+ * The NTLM/SSO retry applies only when `allowSsoRetry` (the initial request of an operation), and
158210
+ * never to sends a fetch handler modified.
158211
+ */
158212
+ async sendArcGisRequest(request, credentialed, allowSsoRetry, options) {
158213
+ const includeCredentials = this.includeUserCredentials(request.url);
158214
+ let rsp = await fetch(request.url, {
158215
+ ...options,
158216
+ headers: request.headers,
158217
+ credentials: includeCredentials ? "include" : undefined,
158218
+ // Sends the handler modified may carry injected secrets: same redirect policy as credentialed ones.
158219
+ redirect: (includeCredentials || credentialed) ? ((0,_tile_internal__WEBPACK_IMPORTED_MODULE_0__.credentialedFetchRedirect)() ?? options?.redirect) : options?.redirect,
158220
+ });
158221
+ if (includeCredentials || credentialed)
158222
+ this.checkCredentialedRedirect(request.url, rsp);
158223
+ if (allowSsoRetry && rsp.status === 401 && !this._lastAccessToken && !credentialed && (0,_request_utils__WEBPACK_IMPORTED_MODULE_3__.headersIncludeAuthMethod)(rsp.headers, ["ntlm", "negotiate"])) {
158224
+ // fetch follows redirects transparently, so trust decisions target the final (post-redirect) URL.
158225
+ const challengedUrl = rsp.url || request.url;
158226
+ if (this.isSsoAllowed(challengedUrl)) {
158227
+ // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication).
158228
+ this.logUntrustedOriginUse(challengedUrl);
158229
+ rsp = await fetch(challengedUrl, {
158230
+ ...options,
158231
+ credentials: "include",
158232
+ redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
158233
+ });
158234
+ if (rsp.status === 200) {
158235
+ this.recordSsoSucceeded(challengedUrl); // avoid going through 401 challenges over and over for this origin
158236
+ }
158237
+ }
158238
+ else {
158239
+ this.reportBlockedOrigin(challengedUrl);
158240
+ }
158241
+ }
158242
+ return rsp;
158243
+ }
158244
+ /** Routes one request - initial, HTML fallback or token retry - through the registered fetch handler
158245
+ * (if any), with fresh headers per request so injected values are neither accumulated nor exposed to
158246
+ * cross-origin redirects.
158247
+ */
158248
+ async requestViaHandler(target, allowSsoRetry, options) {
158249
+ return (0,_tile_internal__WEBPACK_IMPORTED_MODULE_0__.fetchMapLayerRequest)({
158250
+ url: target.toString(),
158251
+ formatId: this._settings.formatId,
158252
+ layerUrl: this._settings.url,
158253
+ layerProperties: this._settings.properties,
158254
+ headers: new Headers(options?.headers),
158255
+ send: async (request, credentialed) => this.sendArcGisRequest(request, credentialed, allowSsoRetry, options),
158256
+ });
158257
+ }
158072
158258
  /**
158073
158259
  * Make a request to an ArcGIS service using the provided URL and init parameters.
158074
158260
  * @param url URL to query
@@ -158077,19 +158263,24 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
158077
158263
  */
158078
158264
  async fetch(url, options) {
158079
158265
  let errorCode;
158080
- const urlObj = new URL(url);
158081
158266
  const queryParams = this._settings.collectQueryParams();
158082
- Object.keys(queryParams).forEach((paramKey) => {
158083
- if (!urlObj.searchParams.has(paramKey))
158084
- urlObj.searchParams.append(paramKey, queryParams[paramKey]);
158085
- });
158086
- if (this._accessTokenRequired && this._accessClient) {
158087
- this._lastAccessToken = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {
158088
- mapLayerUrl: new URL(this._settings.url),
158089
- portal: typeof this._settings.properties?.portal === "string" ? this._settings.properties.portal : undefined,
158090
- userName: this._settings.userName,
158091
- password: this._settings.password
158267
+ const buildRequestUrl = () => {
158268
+ const requestUrl = new URL(url);
158269
+ Object.keys(queryParams).forEach((paramKey) => {
158270
+ if (!requestUrl.searchParams.has(paramKey))
158271
+ requestUrl.searchParams.append(paramKey, queryParams[paramKey]);
158092
158272
  });
158273
+ return requestUrl;
158274
+ };
158275
+ const accessTokenParams = {
158276
+ mapLayerUrl: new URL(this._settings.url),
158277
+ portal: typeof this._settings.properties?.portal === "string" ? this._settings.properties.portal : undefined,
158278
+ userName: this._settings.userName,
158279
+ password: this._settings.password,
158280
+ };
158281
+ const urlObj = buildRequestUrl();
158282
+ if (this._accessTokenRequired && this._accessClient) {
158283
+ this._lastAccessToken = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, accessTokenParams);
158093
158284
  }
158094
158285
  // We want to complete the first request before letting other requests go;
158095
158286
  // this done to avoid flooding server with requests missing credentials
@@ -158098,35 +158289,9 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
158098
158289
  else
158099
158290
  await this._firstRequestPromise;
158100
158291
  let response;
158292
+ let managedByHandler = false;
158101
158293
  try {
158102
- const requestUrl = urlObj.toString();
158103
- const includeCredentials = this.includeUserCredentials(requestUrl);
158104
- response = await fetch(urlObj, {
158105
- ...options,
158106
- credentials: includeCredentials ? "include" : undefined,
158107
- redirect: includeCredentials ? this.credentialedRedirect : options?.redirect,
158108
- });
158109
- if (includeCredentials)
158110
- this.checkCredentialedRedirect(requestUrl, response);
158111
- if (response.status === 401 && !this._lastAccessToken && (0,_request_utils__WEBPACK_IMPORTED_MODULE_3__.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])) {
158112
- // fetch follows redirects transparently, so trust decisions target the final (post-redirect) URL.
158113
- const challengedUrl = response.url || requestUrl;
158114
- if (this.isSsoAllowed(challengedUrl)) {
158115
- // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication).
158116
- this.logUntrustedOriginUse(challengedUrl);
158117
- response = await fetch(challengedUrl, {
158118
- ...options,
158119
- credentials: "include",
158120
- redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
158121
- });
158122
- if (response.status === 200) {
158123
- this.recordSsoSucceeded(challengedUrl); // avoid going through 401 challenges over and over for this origin
158124
- }
158125
- }
158126
- else {
158127
- this.reportBlockedOrigin(challengedUrl);
158128
- }
158129
- }
158294
+ ({ response, managedByHandler } = await this.requestViaHandler(urlObj, true, options));
158130
158295
  if ((this._lastAccessToken && response.status === 400)
158131
158296
  || response.headers.get("content-type")?.toLowerCase().includes("htm")) {
158132
158297
  // For some reasons when we make a request with the fetch() api and there is a token error
@@ -158137,7 +158302,7 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
158137
158302
  if (this._lastAccessToken && this._accessTokenRequired)
158138
158303
  tmpUrl.searchParams.append("token", this._lastAccessToken.token);
158139
158304
  tmpUrl.searchParams.append("f", "json");
158140
- response = await fetch(tmpUrl.toString(), options);
158305
+ ({ response, managedByHandler } = await this.requestViaHandler(tmpUrl, false, options));
158141
158306
  }
158142
158307
  errorCode = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.checkForResponseErrorCode(response);
158143
158308
  if (errorCode !== undefined &&
@@ -158149,19 +158314,21 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
158149
158314
  // Token might have expired, make a second attempt by forcing new token.
158150
158315
  if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)
158151
158316
  this._accessClient.invalidateToken(this._lastAccessToken);
158152
- const urlObj2 = new URL(url);
158317
+ // A fresh URL: the expired token must not remain as a first `token` parameter.
158318
+ const retryUrl = buildRequestUrl();
158153
158319
  if (this._accessClient) {
158154
158320
  try {
158155
- this._lastAccessToken = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, { mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });
158321
+ this._lastAccessToken = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.appendSecurityToken(retryUrl, this._accessClient, accessTokenParams);
158156
158322
  }
158157
158323
  catch {
158158
158324
  }
158159
158325
  }
158160
158326
  // Make a second attempt with refreshed token
158161
- response = await fetch(urlObj2.toString(), options);
158327
+ ({ response, managedByHandler } = await this.requestViaHandler(retryUrl, false, options));
158162
158328
  errorCode = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.checkForResponseErrorCode(response);
158163
158329
  }
158164
- if (errorCode !== undefined &&
158330
+ // An error code in a response managed by the fetch handler is not classified here.
158331
+ if (!managedByHandler && errorCode !== undefined &&
158165
158332
  (errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired
158166
158333
  || errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken
158167
158334
  || errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.MissingPermissions)) {
@@ -158176,13 +158343,24 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
158176
158343
  }
158177
158344
  }
158178
158345
  }
158346
+ catch (error) {
158347
+ if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerAuthenticationFailedError)
158348
+ this.reportAuthenticationFailure();
158349
+ throw error;
158350
+ }
158179
158351
  finally {
158180
158352
  this.onFirstRequestCompleted.raiseEvent();
158181
158353
  }
158182
158354
  if (response === undefined)
158183
158355
  throw new Error("fetch call failed");
158356
+ if (managedByHandler)
158357
+ this._handlerManagedFetchResponses.add(response);
158184
158358
  return response;
158185
158359
  }
158360
+ /** Also true for responses of [[fetch]] a handler returned as its own. */
158361
+ isManagedByHandler(response) {
158362
+ return this._handlerManagedFetchResponses.has(response) || super.isManagedByHandler(response);
158363
+ }
158186
158364
  }
158187
158365
 
158188
158366
 
@@ -158339,14 +158517,15 @@ class ArcGISMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MOD
158339
158517
  const metadata = await this.getServiceJson();
158340
158518
  if (metadata?.content === undefined) {
158341
158519
  // By returning (i.e., not throwing), we ensure the tile tree gets created and the current provider is preserved to report status.
158342
- if (this.status === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.UntrustedOrigin)
158520
+ if (this.status === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.UntrustedOrigin || this.status === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.RequireAuth)
158343
158521
  return;
158344
158522
  throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.ServerError(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_5__.IModelStatus.ValidationFailed, "");
158345
158523
  }
158346
158524
  const json = metadata.content;
158347
- if (json?.error?.code === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.TokenRequired
158348
- || json?.error?.code === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.InvalidToken
158349
- || json?.error?.code === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.MissingPermissions) {
158525
+ const errorCode = metadata.errorCode;
158526
+ if (errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.TokenRequired
158527
+ || errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.InvalidToken
158528
+ || errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.MissingPermissions) {
158350
158529
  // Check again layer status, it might have change during await.
158351
158530
  if (this.status === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.Valid) {
158352
158531
  this.setStatus(_tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.RequireAuth);
@@ -159362,7 +159541,13 @@ class WmsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE
159362
159541
  async initialize() {
159363
159542
  try {
159364
159543
  const credentials = (this._settings.userName && this._settings.password ? { user: this._settings.userName, password: this._settings.password } : undefined);
159365
- this._capabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_3__.WmsCapabilities.create(this._baseUrl, credentials);
159544
+ this._capabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_3__.WmsCapabilities.create(this._baseUrl, {
159545
+ credentials,
159546
+ queryParams: this._settings.collectQueryParams(),
159547
+ formatId: this._settings.formatId,
159548
+ layerUrl: this._settings.url,
159549
+ layerProperties: this._settings.properties,
159550
+ });
159366
159551
  if (undefined !== this._capabilities) {
159367
159552
  this._allLayersRange = this._capabilities.cartoRange;
159368
159553
  if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {
@@ -159396,7 +159581,7 @@ class WmsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE
159396
159581
  if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapLayerUntrustedOriginError) {
159397
159582
  this.reportBlockedOrigin(error.url);
159398
159583
  }
159399
- else if (error?.status === 401) {
159584
+ else if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapLayerAuthenticationFailedError || error?.status === 401) {
159400
159585
  this.setStatus(_tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapLayerImageryProviderStatus.RequireAuth);
159401
159586
  }
159402
159587
  else {
@@ -159559,7 +159744,13 @@ class WmtsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODUL
159559
159744
  async initialize() {
159560
159745
  try {
159561
159746
  const credentials = (this._settings.userName && this._settings.password ? { user: this._settings.userName, password: this._settings.password } : undefined);
159562
- this._capabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmtsCapabilities.create(this._baseUrl, credentials);
159747
+ this._capabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmtsCapabilities.create(this._baseUrl, {
159748
+ credentials,
159749
+ queryParams: this._settings.collectQueryParams(),
159750
+ formatId: this._settings.formatId,
159751
+ layerUrl: this._settings.url,
159752
+ layerProperties: this._settings.properties,
159753
+ });
159563
159754
  this.initPreferredTileMatrixSet();
159564
159755
  this.initPreferredStyle();
159565
159756
  this.initDisplayedLayer();
@@ -159575,7 +159766,7 @@ class WmtsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODUL
159575
159766
  if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerUntrustedOriginError) {
159576
159767
  this.reportBlockedOrigin(error.url);
159577
159768
  }
159578
- else if (error?.status === 401) {
159769
+ else if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerAuthenticationFailedError || error?.status === 401) {
159579
159770
  this.setStatus(_tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.RequireAuth);
159580
159771
  }
159581
159772
  else {
@@ -159735,6 +159926,113 @@ class WmtsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODUL
159735
159926
  }
159736
159927
 
159737
159928
 
159929
+ /***/ },
159930
+
159931
+ /***/ "../../core/frontend/lib/esm/internal/tile/map/MapLayerFetch.js"
159932
+ /*!**********************************************************************!*\
159933
+ !*** ../../core/frontend/lib/esm/internal/tile/map/MapLayerFetch.js ***!
159934
+ \**********************************************************************/
159935
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
159936
+
159937
+ "use strict";
159938
+ __webpack_require__.r(__webpack_exports__);
159939
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
159940
+ /* harmony export */ credentialedFetchRedirect: () => (/* binding */ credentialedFetchRedirect),
159941
+ /* harmony export */ fetchMapLayerRequest: () => (/* binding */ fetchMapLayerRequest)
159942
+ /* harmony export */ });
159943
+ /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
159944
+ /*---------------------------------------------------------------------------------------------
159945
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
159946
+ * See LICENSE.md in the project root for license terms and full copyright notice.
159947
+ *--------------------------------------------------------------------------------------------*/
159948
+ /** @packageDocumentation
159949
+ * @module Tiles
159950
+ */
159951
+
159952
+ /** Routes an outgoing map-layer request through the pipeline of [[MapLayerFetchHandler]]s registered via
159953
+ * [[MapLayerFormatRegistry.addMapLayerFetchHandler]]; issues the default send directly when there is none or
159954
+ * every handler declines. A handler may decline, pass a copy of the request with other query parameters or
159955
+ * headers to `fetchRequest` (which offers it to the remaining handlers, then sends it credentialed), call it
159956
+ * any number of times, short-circuit with its own response, or throw [[MapLayerAuthenticationFailedError]].
159957
+ * @internal
159958
+ */
159959
+ async function fetchMapLayerRequest(args) {
159960
+ const headers = args.headers ?? new Headers();
159961
+ const { layerUrl, layerProperties, formatId } = args;
159962
+ // Snapshot: registrations changing while a handler awaits must not shift the pipeline of a request in flight.
159963
+ const handlers = [...(_IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers ?? [])];
159964
+ let parsed;
159965
+ if (handlers.length > 0) {
159966
+ try {
159967
+ // Relative URLs are valid targets (fetch resolves them against the document); resolve them the same way so
159968
+ // they are not opted out of the pipeline. Parsing only: the URL sent stays the caller's unless its query changes.
159969
+ parsed = new URL(args.url, typeof document !== "undefined" ? document.baseURI : undefined);
159970
+ }
159971
+ catch {
159972
+ // Not a parseable URL; issue the original request unhandled.
159973
+ }
159974
+ }
159975
+ if (!parsed) {
159976
+ const unhandled = await args.send({ url: args.url, layerUrl, layerProperties, formatId, searchParams: new URLSearchParams(), headers }, false);
159977
+ return { response: unhandled, managedByHandler: false };
159978
+ }
159979
+ const original = parsed;
159980
+ const originalSearch = original.searchParams.toString();
159981
+ const request = { url: args.url, layerUrl, layerProperties, formatId, searchParams: original.searchParams, headers };
159982
+ // Copies the mutable fields (including provider properties and their arrays; `readonly` is shallow), so a handler that
159983
+ // mutates its request in place and then declines cannot leak the mutation to the next handler or to the default
159984
+ // send. The URL string stays ours verbatim (URL serialization would normalize it) unless the query parameters
159985
+ // changed, in which case it is recomputed from them; the target never changes.
159986
+ const snapshot = (source) => {
159987
+ const searchParams = new URLSearchParams(source.searchParams);
159988
+ let url = args.url;
159989
+ if (searchParams.toString() !== originalSearch) {
159990
+ const changed = new URL(original);
159991
+ changed.search = searchParams.toString();
159992
+ url = changed.toString();
159993
+ }
159994
+ // Properties are informational layer context, not handler-editable request data. Always clone the
159995
+ // original settings, not source.layerProperties, so forwarding a modified copy cannot change that context.
159996
+ return { url, layerUrl, layerProperties: layerProperties === undefined ? undefined : structuredClone(layerProperties), formatId, searchParams, headers: new Headers(source.headers) };
159997
+ };
159998
+ // Offers the request to handlers[index..]: a declined request goes unchanged to the next handler; a request a
159999
+ // handler sends is offered to the remaining ones, then issued credentialed.
160000
+ const dispatch = async (index, toOffer) => {
160001
+ for (let i = index; i < handlers.length; ++i) {
160002
+ const handled = await handlers[i](snapshot(toOffer), async (toSend) => {
160003
+ const next = snapshot(toSend);
160004
+ return (await dispatch(i + 1, next)) ?? args.send(next, true);
160005
+ });
160006
+ if (handled)
160007
+ return handled;
160008
+ }
160009
+ return undefined;
160010
+ };
160011
+ const response = await dispatch(0, request);
160012
+ if (response)
160013
+ return { response, managedByHandler: true };
160014
+ return { response: await args.send(request, false), managedByHandler: false };
160015
+ }
160016
+ /** The redirect policy for a request that carries credentials: browser credentials (see
160017
+ * [[MapLayerImageryProvider.includeUserCredentials]]), settings-derived basic auth, or values a fetch handler
160018
+ * injected (see [[MapLayerFetchRequest]]).
160019
+ *
160020
+ * When [[MapLayerFormatRegistry.restrictCredentialsToTrustedOrigins]] is enabled, redirects are refused
160021
+ * outright (`"error"`). `fetch` cannot be asked to follow only same-origin redirects, and by the time a
160022
+ * followed redirect can be inspected the credentials have already been delivered to the destination — so
160023
+ * refusing is the only way to honour the guarantee that credentials reach none but the origins listed in
160024
+ * [[MapLayerFormatRegistry.trustedCredentialsOrigins]]. Legitimate same-origin redirects fail as a result;
160025
+ * that is the cost of the opt-in restriction.
160026
+ *
160027
+ * When the restriction is disabled (the default), redirects are followed as before and
160028
+ * [[MapLayerImageryProvider.checkCredentialedRedirect]] reports the destination after the fact.
160029
+ * @internal
160030
+ */
160031
+ function credentialedFetchRedirect() {
160032
+ return _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined;
160033
+ }
160034
+
160035
+
159738
160036
  /***/ },
159739
160037
 
159740
160038
  /***/ "../../core/frontend/lib/esm/internal/tile/map/MapTileAvailability.js"
@@ -160099,7 +160397,7 @@ __webpack_require__.r(__webpack_exports__);
160099
160397
  * @internal
160100
160398
  */
160101
160399
  function appendQueryParams(url, queryParams) {
160102
- if (!queryParams)
160400
+ if (!queryParams || Object.keys(queryParams).length === 0)
160103
160401
  return url;
160104
160402
  // create a lower-case array of keys
160105
160403
  const currentParams = [];
@@ -160151,7 +160449,8 @@ __webpack_require__.r(__webpack_exports__);
160151
160449
  /* harmony export */ WmsCapability: () => (/* binding */ WmsCapability)
160152
160450
  /* harmony export */ });
160153
160451
  /* harmony import */ var wms_capabilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! wms-capabilities */ "../../common/temp/node_modules/.pnpm/wms-capabilities@0.6.0/node_modules/wms-capabilities/dist/wms-capabilities.mjs");
160154
- /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
160452
+ /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
160453
+ /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
160155
160454
  /*---------------------------------------------------------------------------------------------
160156
160455
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
160157
160456
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -160161,8 +160460,9 @@ __webpack_require__.r(__webpack_exports__);
160161
160460
  */
160162
160461
 
160163
160462
 
160463
+
160164
160464
  function rangeFromJSONArray(json) {
160165
- return (Array.isArray(json) && json.length === 4) ? _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapCartoRectangle.fromDegrees(json[0], json[1], json[2], json[3]) : undefined;
160465
+ return (Array.isArray(json) && json.length === 4) ? _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapCartoRectangle.fromDegrees(json[0], json[1], json[2], json[3]) : undefined;
160166
160466
  }
160167
160467
  function rangeFromJSON(json) {
160168
160468
  if (undefined !== json.LatLonBoundingBox)
@@ -160358,13 +160658,9 @@ class WmsCapabilities {
160358
160658
  return undefined; // Degenerate capabilities document
160359
160659
  }
160360
160660
  }
160361
- static async create(url, credentials, ignoreCache, queryParams) {
160362
- if (!ignoreCache) {
160363
- const cached = WmsCapabilities._capabilitiesCache.get(url);
160364
- if (cached !== undefined)
160365
- return cached;
160366
- }
160367
- const tmpUrl = new URL(_tile_internal__WEBPACK_IMPORTED_MODULE_1__.WmsUtilities.getBaseUrl(url));
160661
+ static async create(url, options) {
160662
+ const { credentials, ignoreCache, queryParams, formatId, layerUrl, layerProperties } = options ?? {};
160663
+ const tmpUrl = new URL(_tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmsUtilities.getBaseUrl(url));
160368
160664
  tmpUrl.searchParams.append("request", "GetCapabilities");
160369
160665
  tmpUrl.searchParams.append("service", "WMS");
160370
160666
  if (queryParams) {
@@ -160373,15 +160669,25 @@ class WmsCapabilities {
160373
160669
  tmpUrl.searchParams.append(paramKey, queryParams[paramKey]);
160374
160670
  });
160375
160671
  }
160376
- const xmlCapabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_1__.WmsUtilities.fetchXml(tmpUrl.toString(), credentials);
160672
+ const cacheKey = tmpUrl.toString();
160673
+ // The cache never contains credentialed results (see the write below), so a credentialed request
160674
+ // must not be served a cached public document either; responses customized by the fetch handler
160675
+ // must not be shared with or served from differently-customized requests.
160676
+ const hasFetchHandler = (_IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers.length ?? 0) > 0;
160677
+ if (!ignoreCache && !hasFetchHandler && !credentials) {
160678
+ const cached = WmsCapabilities._capabilitiesCache.get(cacheKey);
160679
+ if (cached !== undefined)
160680
+ return cached;
160681
+ }
160682
+ const xmlCapabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmsUtilities.fetchXml(tmpUrl.toString(), { credentials, formatId: formatId ?? "WMS", layerUrl: layerUrl ?? url, layerProperties });
160377
160683
  if (!xmlCapabilities)
160378
160684
  return undefined;
160379
160685
  const capabilities = WmsCapabilities.tryParse(xmlCapabilities);
160380
160686
  if (capabilities === undefined)
160381
160687
  return undefined;
160382
- if (!credentials) {
160688
+ if (!credentials && !hasFetchHandler) {
160383
160689
  // Avoid caching protected data
160384
- WmsCapabilities._capabilitiesCache.set(url, capabilities);
160690
+ WmsCapabilities._capabilitiesCache.set(cacheKey, capabilities);
160385
160691
  }
160386
160692
  return capabilities;
160387
160693
  }
@@ -160419,9 +160725,6 @@ __webpack_require__.r(__webpack_exports__);
160419
160725
 
160420
160726
 
160421
160727
 
160422
- /** @packageDocumentation
160423
- * @module Tiles
160424
- */
160425
160728
  /** @internal */
160426
160729
  class WmsUtilities {
160427
160730
  static getBaseUrl(url) {
@@ -160432,21 +160735,58 @@ class WmsUtilities {
160432
160735
  * fetch XML from HTTP request
160433
160736
  * @param url server URL to address the request
160434
160737
  */
160435
- static async fetchXml(url, credentials) {
160738
+ static async fetchXml(url, options) {
160739
+ const { credentials, formatId, layerUrl, layerProperties } = options ?? {};
160436
160740
  let headers;
160437
- if (credentials && credentials.user && credentials.password) {
160741
+ const hasCredentials = !!(credentials && credentials.user && credentials.password);
160742
+ if (hasCredentials) {
160438
160743
  // Basic credentials are considered settings-derived credentials for this source. When the registry is
160439
160744
  // enforcing trusted origins, the source URL itself is the only implicitly trusted origin for basic auth;
160440
160745
  // opaque/custom-protocol URLs have no network origin and must therefore be treated as untrusted.
160441
- const allowBasicAuth = !_IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins
160746
+ // Optional chaining: some callers run before IModelApp startup.
160747
+ const allowBasicAuth = !_IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry?.restrictCredentialsToTrustedOrigins
160442
160748
  || _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry.isCredentialsSharingAllowed(url, url);
160443
160749
  if (allowBasicAuth) {
160444
160750
  headers = new Headers();
160445
160751
  (0,_request_utils__WEBPACK_IMPORTED_MODULE_2__.setBasicAuthorization)(headers, credentials);
160446
160752
  }
160447
160753
  }
160448
- let response = await fetch(url, { method: "GET", headers });
160449
- if (!headers && credentials && credentials.user && credentials.password && (response.status === 401 || response.status === 403)) {
160754
+ const credentialsWithheld = hasCredentials && headers === undefined;
160755
+ // Route the request through the registered fetch handler (if any). Handler failures — including
160756
+ // MapLayerAuthenticationFailedError — propagate so callers can transition to RequireAuth.
160757
+ const { response, managedByHandler } = await (0,_tile_internal__WEBPACK_IMPORTED_MODULE_3__.fetchMapLayerRequest)({
160758
+ url,
160759
+ formatId: formatId ?? "",
160760
+ layerUrl: layerUrl ?? url,
160761
+ layerProperties,
160762
+ headers,
160763
+ send: async (request, credentialed) => {
160764
+ const rsp = await fetch(request.url, {
160765
+ method: "GET",
160766
+ headers: request.headers,
160767
+ // Sends the handler modified may carry injected secrets: same redirect policy as credentialed ones.
160768
+ redirect: credentialed ? (0,_tile_internal__WEBPACK_IMPORTED_MODULE_3__.credentialedFetchRedirect)() : undefined,
160769
+ });
160770
+ // A send the handler modified never falls back to the legacy basic-auth / NTLM-SSO handling:
160771
+ // the handler is the authentication authority for it.
160772
+ return credentialed ? rsp : WmsUtilities.handleLegacyChallenges(rsp, request.url, credentials, credentialsWithheld);
160773
+ },
160774
+ });
160775
+ if (response.status !== 200) {
160776
+ // A status in a response managed by the fetch handler is not an authentication failure (it would have
160777
+ // thrown MapLayerAuthenticationFailedError): report it without a status so callers do not classify it.
160778
+ if (managedByHandler)
160779
+ throw new Error(`Map-layer fetch handler returned status ${response.status} for '${url}'`);
160780
+ throw new _request_Request__WEBPACK_IMPORTED_MODULE_1__.HttpResponseError(response.status, await response.text());
160781
+ }
160782
+ return response.text();
160783
+ }
160784
+ /** Legacy (no injected credentials) challenge handling: basic-auth/untrusted-origin classification and the SSO retry.
160785
+ * `credentialsWithheld` is true when basic credentials exist but were not attached because the origin is untrusted.
160786
+ */
160787
+ static async handleLegacyChallenges(firstResponse, url, credentials, credentialsWithheld) {
160788
+ let response = firstResponse;
160789
+ if (credentialsWithheld && (response.status === 401 || response.status === 403)) {
160450
160790
  throw new _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapLayerUntrustedOriginError(url);
160451
160791
  }
160452
160792
  if (!credentials && response.status === 401 && (0,_request_utils__WEBPACK_IMPORTED_MODULE_2__.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])) {
@@ -160462,9 +160802,7 @@ class WmsUtilities {
160462
160802
  redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
160463
160803
  });
160464
160804
  }
160465
- if (response.status !== 200)
160466
- throw new _request_Request__WEBPACK_IMPORTED_MODULE_1__.HttpResponseError(response.status, await response.text());
160467
- return response.text();
160805
+ return response;
160468
160806
  }
160469
160807
  }
160470
160808
 
@@ -160486,7 +160824,8 @@ __webpack_require__.r(__webpack_exports__);
160486
160824
  /* harmony export */ });
160487
160825
  /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
160488
160826
  /* harmony import */ var _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @itwin/core-geometry */ "../../core/geometry/lib/esm/core-geometry.js");
160489
- /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
160827
+ /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
160828
+ /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
160490
160829
  /*---------------------------------------------------------------------------------------------
160491
160830
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
160492
160831
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -160497,6 +160836,7 @@ __webpack_require__.r(__webpack_exports__);
160497
160836
 
160498
160837
 
160499
160838
 
160839
+
160500
160840
  var OwsConstants;
160501
160841
  (function (OwsConstants) {
160502
160842
  OwsConstants["ABSTRACT_XMLTAG"] = "ows:Abstract";
@@ -160902,14 +161242,14 @@ var WmtsCapability;
160902
161242
  upperCornerArray = getElementTextContent(bbox[0], OwsConstants.UPPERCORNER_XMLTAG)?.split(" ").map((x) => +x);
160903
161243
  }
160904
161244
  if (lowerCornerArray?.length === 2 && upperCornerArray?.length === 2)
160905
- this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapCartoRectangle.fromDegrees(lowerCornerArray[0], lowerCornerArray[1], upperCornerArray[0], upperCornerArray[1]);
161245
+ this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapCartoRectangle.fromDegrees(lowerCornerArray[0], lowerCornerArray[1], upperCornerArray[0], upperCornerArray[1]);
160906
161246
  // If we could not initialized WSG84 bounding box, attempt to initialized it from Bounding Box
160907
161247
  if (!this.wsg84BoundingBox && (this.boundingBox?.crs?.includes("EPSG:4326") || this.boundingBox?.crs?.includes("CRS:84"))) {
160908
161248
  const range = this.boundingBox.range;
160909
161249
  if (range)
160910
- this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapCartoRectangle.fromDegrees(range.low.x, range.low.y, range.high.x, range.high.y);
161250
+ this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapCartoRectangle.fromDegrees(range.low.x, range.low.y, range.high.x, range.high.y);
160911
161251
  else
160912
- this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapCartoRectangle.createMaximum();
161252
+ this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapCartoRectangle.createMaximum();
160913
161253
  }
160914
161254
  // Style
160915
161255
  const style = elem.getElementsByTagName("Style");
@@ -160962,13 +161302,9 @@ class WmtsCapabilities {
160962
161302
  const xmlDoc = parser.parseFromString(xmlCapabilities, "text/xml");
160963
161303
  return new WmtsCapabilities(xmlDoc);
160964
161304
  }
160965
- static async create(url, credentials, ignoreCache, queryParams) {
160966
- if (!ignoreCache) {
160967
- const cached = WmtsCapabilities._capabilitiesCache.get(url);
160968
- if (cached !== undefined)
160969
- return cached;
160970
- }
160971
- const tmpUrl = new URL(_tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmsUtilities.getBaseUrl(url));
161305
+ static async create(url, options) {
161306
+ const { credentials, ignoreCache, queryParams, formatId, layerUrl, layerProperties } = options ?? {};
161307
+ const tmpUrl = new URL(_tile_internal__WEBPACK_IMPORTED_MODULE_3__.WmsUtilities.getBaseUrl(url));
160972
161308
  tmpUrl.searchParams.append("request", "GetCapabilities");
160973
161309
  tmpUrl.searchParams.append("service", "WMTS");
160974
161310
  if (queryParams) {
@@ -160977,12 +161313,22 @@ class WmtsCapabilities {
160977
161313
  tmpUrl.searchParams.append(paramKey, queryParams[paramKey]);
160978
161314
  });
160979
161315
  }
160980
- const xmlCapabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmsUtilities.fetchXml(tmpUrl.toString(), credentials);
161316
+ const cacheKey = tmpUrl.toString();
161317
+ // The cache never contains credentialed results (see the write below), so a credentialed request
161318
+ // must not be served a cached public document either; responses customized by the fetch handler
161319
+ // must not be shared with or served from differently-customized requests.
161320
+ const hasFetchHandler = (_IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers.length ?? 0) > 0;
161321
+ if (!ignoreCache && !hasFetchHandler && !credentials) {
161322
+ const cached = WmtsCapabilities._capabilitiesCache.get(cacheKey);
161323
+ if (cached !== undefined)
161324
+ return cached;
161325
+ }
161326
+ const xmlCapabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_3__.WmsUtilities.fetchXml(tmpUrl.toString(), { credentials, formatId: formatId ?? "WMTS", layerUrl: layerUrl ?? url, layerProperties });
160981
161327
  if (!xmlCapabilities)
160982
161328
  return undefined;
160983
161329
  const capabilities = WmtsCapabilities.createFromXml(xmlCapabilities);
160984
- if (capabilities)
160985
- WmtsCapabilities._capabilitiesCache.set(url, capabilities);
161330
+ if (capabilities && !credentials && !hasFetchHandler)
161331
+ WmtsCapabilities._capabilitiesCache.set(cacheKey, capabilities);
160986
161332
  return capabilities;
160987
161333
  }
160988
161334
  }
@@ -167888,7 +168234,9 @@ class GltfReader {
167888
168234
  resolveUrl(uri) {
167889
168235
  try {
167890
168236
  const resolved = new URL(uri, this._baseUrl);
167891
- resolved.search = this._baseUrl?.search ?? "";
168237
+ // Only forward the base URL's query (which may contain credentials) to the same origin.
168238
+ if (this._baseUrl && resolved.origin === this._baseUrl.origin)
168239
+ resolved.search = this._baseUrl.search;
167892
168240
  return resolved.toString();
167893
168241
  }
167894
168242
  catch {
@@ -173006,27 +173354,27 @@ var TiledGraphicsProvider;
173006
173354
  "use strict";
173007
173355
  __webpack_require__.r(__webpack_exports__);
173008
173356
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
173009
- /* harmony export */ AnimatedTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.AnimatedTreeReference),
173010
- /* harmony export */ ArcGISIdentifyRequestUrl: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_57__.ArcGISIdentifyRequestUrl),
173011
- /* harmony export */ ArcGISImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISImageryProvider__WEBPACK_IMPORTED_MODULE_53__.ArcGISImageryProvider),
173012
- /* harmony export */ ArcGISMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_57__.ArcGISMapLayerImageryProvider),
173357
+ /* harmony export */ AnimatedTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.AnimatedTreeReference),
173358
+ /* harmony export */ ArcGISIdentifyRequestUrl: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_59__.ArcGISIdentifyRequestUrl),
173359
+ /* harmony export */ ArcGISImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISImageryProvider__WEBPACK_IMPORTED_MODULE_55__.ArcGISImageryProvider),
173360
+ /* harmony export */ ArcGISMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_59__.ArcGISMapLayerImageryProvider),
173013
173361
  /* harmony export */ ArcGISTileMap: () => (/* reexport safe */ _internal_tile_map_ArcGISTileMap__WEBPACK_IMPORTED_MODULE_39__.ArcGISTileMap),
173014
- /* harmony export */ ArcGisErrorCode: () => (/* reexport safe */ _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_43__.ArcGisErrorCode),
173015
- /* harmony export */ ArcGisGeometryReaderJSON: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGisGeometryReaderJSON__WEBPACK_IMPORTED_MODULE_56__.ArcGisGeometryReaderJSON),
173016
- /* harmony export */ ArcGisUtilities: () => (/* reexport safe */ _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_43__.ArcGisUtilities),
173362
+ /* harmony export */ ArcGisErrorCode: () => (/* reexport safe */ _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_44__.ArcGisErrorCode),
173363
+ /* harmony export */ ArcGisGeometryReaderJSON: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGisGeometryReaderJSON__WEBPACK_IMPORTED_MODULE_58__.ArcGisGeometryReaderJSON),
173364
+ /* harmony export */ ArcGisUtilities: () => (/* reexport safe */ _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_44__.ArcGisUtilities),
173017
173365
  /* harmony export */ B3dmReader: () => (/* reexport safe */ _internal_tile_B3dmReader__WEBPACK_IMPORTED_MODULE_34__.B3dmReader),
173018
173366
  /* harmony export */ BatchedTileIdMap: () => (/* reexport safe */ _internal_tile_BatchedTileIdMap__WEBPACK_IMPORTED_MODULE_12__.BatchedTileIdMap),
173019
- /* harmony export */ BingElevationProvider: () => (/* reexport safe */ _map_BingElevation__WEBPACK_IMPORTED_MODULE_73__.BingElevationProvider),
173020
- /* harmony export */ BingMapsImageryLayerProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_BingImageryProvider__WEBPACK_IMPORTED_MODULE_58__.BingMapsImageryLayerProvider),
173021
- /* harmony export */ CesiumIonAssetProvider: () => (/* reexport safe */ _internal_tile_CesiumAssetProvider__WEBPACK_IMPORTED_MODULE_88__.CesiumIonAssetProvider),
173022
- /* harmony export */ ContextShareProvider: () => (/* reexport safe */ _internal_tile_ContextShareProvider__WEBPACK_IMPORTED_MODULE_89__.ContextShareProvider),
173367
+ /* harmony export */ BingElevationProvider: () => (/* reexport safe */ _map_BingElevation__WEBPACK_IMPORTED_MODULE_75__.BingElevationProvider),
173368
+ /* harmony export */ BingMapsImageryLayerProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_BingImageryProvider__WEBPACK_IMPORTED_MODULE_60__.BingMapsImageryLayerProvider),
173369
+ /* harmony export */ CesiumIonAssetProvider: () => (/* reexport safe */ _internal_tile_CesiumAssetProvider__WEBPACK_IMPORTED_MODULE_90__.CesiumIonAssetProvider),
173370
+ /* harmony export */ ContextShareProvider: () => (/* reexport safe */ _internal_tile_ContextShareProvider__WEBPACK_IMPORTED_MODULE_91__.ContextShareProvider),
173023
173371
  /* harmony export */ DisclosedTileTreeSet: () => (/* reexport safe */ _DisclosedTileTreeSet__WEBPACK_IMPORTED_MODULE_3__.DisclosedTileTreeSet),
173024
- /* harmony export */ DynamicIModelTile: () => (/* reexport safe */ _internal_tile_DynamicIModelTile__WEBPACK_IMPORTED_MODULE_80__.DynamicIModelTile),
173025
- /* harmony export */ EllipsoidTerrainProvider: () => (/* reexport safe */ _map_EllipsoidTerrainProvider__WEBPACK_IMPORTED_MODULE_69__.EllipsoidTerrainProvider),
173026
- /* harmony export */ FeatureGeometryBaseRenderer: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_FeatureGeometryRenderer__WEBPACK_IMPORTED_MODULE_54__.FeatureGeometryBaseRenderer),
173027
- /* harmony export */ FeatureGraphicsRenderer: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_FeatureGraphicsRenderer__WEBPACK_IMPORTED_MODULE_55__.FeatureGraphicsRenderer),
173028
- /* harmony export */ FetchCloudStorage: () => (/* reexport safe */ _internal_tile_FetchCloudStorage__WEBPACK_IMPORTED_MODULE_92__.FetchCloudStorage),
173029
- /* harmony export */ GeographicTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__.GeographicTilingScheme),
173372
+ /* harmony export */ DynamicIModelTile: () => (/* reexport safe */ _internal_tile_DynamicIModelTile__WEBPACK_IMPORTED_MODULE_82__.DynamicIModelTile),
173373
+ /* harmony export */ EllipsoidTerrainProvider: () => (/* reexport safe */ _map_EllipsoidTerrainProvider__WEBPACK_IMPORTED_MODULE_71__.EllipsoidTerrainProvider),
173374
+ /* harmony export */ FeatureGeometryBaseRenderer: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_FeatureGeometryRenderer__WEBPACK_IMPORTED_MODULE_56__.FeatureGeometryBaseRenderer),
173375
+ /* harmony export */ FeatureGraphicsRenderer: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_FeatureGraphicsRenderer__WEBPACK_IMPORTED_MODULE_57__.FeatureGraphicsRenderer),
173376
+ /* harmony export */ FetchCloudStorage: () => (/* reexport safe */ _internal_tile_FetchCloudStorage__WEBPACK_IMPORTED_MODULE_94__.FetchCloudStorage),
173377
+ /* harmony export */ GeographicTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__.GeographicTilingScheme),
173030
173378
  /* harmony export */ GltfBufferData: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.GltfBufferData),
173031
173379
  /* harmony export */ GltfGraphicsReader: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.GltfGraphicsReader),
173032
173380
  /* harmony export */ GltfMeshData: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.GltfMeshData),
@@ -173034,67 +173382,68 @@ __webpack_require__.r(__webpack_exports__);
173034
173382
  /* harmony export */ GltfReaderProps: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.GltfReaderProps),
173035
173383
  /* harmony export */ GraphicsCollectorDrawArgs: () => (/* reexport safe */ _internal_tile_GraphicsCollector__WEBPACK_IMPORTED_MODULE_11__.GraphicsCollectorDrawArgs),
173036
173384
  /* harmony export */ I3dmReader: () => (/* reexport safe */ _internal_tile_I3dmReader__WEBPACK_IMPORTED_MODULE_33__.I3dmReader),
173037
- /* harmony export */ IModelTile: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_79__.IModelTile),
173385
+ /* harmony export */ IModelTile: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_81__.IModelTile),
173038
173386
  /* harmony export */ IModelTileRequestChannels: () => (/* reexport safe */ _internal_tile_IModelTileRequestChannels__WEBPACK_IMPORTED_MODULE_27__.IModelTileRequestChannels),
173039
- /* harmony export */ IModelTileTree: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_81__.IModelTileTree),
173040
- /* harmony export */ ImageryMapLayerFormat: () => (/* reexport safe */ _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_63__.ImageryMapLayerFormat),
173041
- /* harmony export */ ImageryMapLayerTreeReference: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__.ImageryMapLayerTreeReference),
173042
- /* harmony export */ ImageryMapTile: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__.ImageryMapTile),
173043
- /* harmony export */ ImageryMapTileTree: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__.ImageryMapTileTree),
173044
- /* harmony export */ ImageryTileTreeState: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__.ImageryTileTreeState),
173387
+ /* harmony export */ IModelTileTree: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_83__.IModelTileTree),
173388
+ /* harmony export */ ImageryMapLayerFormat: () => (/* reexport safe */ _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_65__.ImageryMapLayerFormat),
173389
+ /* harmony export */ ImageryMapLayerTreeReference: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__.ImageryMapLayerTreeReference),
173390
+ /* harmony export */ ImageryMapTile: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__.ImageryMapTile),
173391
+ /* harmony export */ ImageryMapTileTree: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__.ImageryMapTileTree),
173392
+ /* harmony export */ ImageryTileTreeState: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__.ImageryTileTreeState),
173045
173393
  /* harmony export */ ImdlReader: () => (/* reexport safe */ _ImdlReader__WEBPACK_IMPORTED_MODULE_35__.ImdlReader),
173046
173394
  /* harmony export */ LRUTileList: () => (/* reexport safe */ _internal_tile_LRUTileList__WEBPACK_IMPORTED_MODULE_5__.LRUTileList),
173047
- /* harmony export */ LayerTextureParams: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_94__.LayerTextureParams),
173395
+ /* harmony export */ LayerTextureParams: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_96__.LayerTextureParams),
173048
173396
  /* harmony export */ LayerTileTreeHandler: () => (/* reexport safe */ _internal_tile_LayerTileTreeHandler__WEBPACK_IMPORTED_MODULE_20__.LayerTileTreeHandler),
173049
173397
  /* harmony export */ LayerTileTreeReferenceHandler: () => (/* reexport safe */ _internal_tile_LayerTileTreeReferenceHandler__WEBPACK_IMPORTED_MODULE_19__.LayerTileTreeReferenceHandler),
173050
- /* harmony export */ MapBoxLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_MapBoxLayerImageryProvider__WEBPACK_IMPORTED_MODULE_59__.MapBoxLayerImageryProvider),
173398
+ /* harmony export */ MapBoxLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_MapBoxLayerImageryProvider__WEBPACK_IMPORTED_MODULE_61__.MapBoxLayerImageryProvider),
173051
173399
  /* harmony export */ MapCartoRectangle: () => (/* reexport safe */ _map_MapCartoRectangle__WEBPACK_IMPORTED_MODULE_1__.MapCartoRectangle),
173052
- /* harmony export */ MapFeatureInfoRecord: () => (/* reexport safe */ _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_41__.MapFeatureInfoRecord),
173053
- /* harmony export */ MapLayerFeatureRecord: () => (/* reexport safe */ _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_41__.MapLayerFeatureRecord),
173054
- /* harmony export */ MapLayerFormat: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_42__.MapLayerFormat),
173055
- /* harmony export */ MapLayerFormatRegistry: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_42__.MapLayerFormatRegistry),
173056
- /* harmony export */ MapLayerImageryProvider: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__.MapLayerImageryProvider),
173057
- /* harmony export */ MapLayerImageryProviderStatus: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__.MapLayerImageryProviderStatus),
173058
- /* harmony export */ MapLayerSource: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_86__.MapLayerSource),
173059
- /* harmony export */ MapLayerSourceStatus: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_86__.MapLayerSourceStatus),
173060
- /* harmony export */ MapLayerSources: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_86__.MapLayerSources),
173061
- /* harmony export */ MapLayerTileTreeReference: () => (/* reexport safe */ _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_64__.MapLayerTileTreeReference),
173062
- /* harmony export */ MapLayerUntrustedOriginError: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_42__.MapLayerUntrustedOriginError),
173063
- /* harmony export */ MapTile: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.MapTile),
173064
- /* harmony export */ MapTileLoader: () => (/* reexport safe */ _internal_tile_map_MapTileLoader__WEBPACK_IMPORTED_MODULE_72__.MapTileLoader),
173065
- /* harmony export */ MapTileProjection: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.MapTileProjection),
173066
- /* harmony export */ MapTileTree: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__.MapTileTree),
173067
- /* harmony export */ MapTileTreeReference: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__.MapTileTreeReference),
173068
- /* harmony export */ MapTileTreeScaleRangeVisibility: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__.MapTileTreeScaleRangeVisibility),
173069
- /* harmony export */ MapTiledGraphicsProvider: () => (/* reexport safe */ _map_MapTiledGraphicsProvider__WEBPACK_IMPORTED_MODULE_87__.MapTiledGraphicsProvider),
173070
- /* harmony export */ MapTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__.MapTilingScheme),
173071
- /* harmony export */ ModelMapLayerTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.ModelMapLayerTileTreeReference),
173072
- /* harmony export */ OPCFormatInterpreter: () => (/* reexport safe */ _internal_tile_OPCFormatInterpreter__WEBPACK_IMPORTED_MODULE_91__.OPCFormatInterpreter),
173073
- /* harmony export */ OrbitGtTileTree: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__.OrbitGtTileTree),
173074
- /* harmony export */ OrbitGtTreeReference: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__.OrbitGtTreeReference),
173075
- /* harmony export */ PlanarProjection: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.PlanarProjection),
173076
- /* harmony export */ PlanarTilePatch: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.PlanarTilePatch),
173077
- /* harmony export */ ProjectedTexture: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_94__.ProjectedTexture),
173400
+ /* harmony export */ MapFeatureInfoRecord: () => (/* reexport safe */ _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_42__.MapFeatureInfoRecord),
173401
+ /* harmony export */ MapLayerAuthenticationFailedError: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__.MapLayerAuthenticationFailedError),
173402
+ /* harmony export */ MapLayerFeatureRecord: () => (/* reexport safe */ _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_42__.MapLayerFeatureRecord),
173403
+ /* harmony export */ MapLayerFormat: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__.MapLayerFormat),
173404
+ /* harmony export */ MapLayerFormatRegistry: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__.MapLayerFormatRegistry),
173405
+ /* harmony export */ MapLayerImageryProvider: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__.MapLayerImageryProvider),
173406
+ /* harmony export */ MapLayerImageryProviderStatus: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__.MapLayerImageryProviderStatus),
173407
+ /* harmony export */ MapLayerSource: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_88__.MapLayerSource),
173408
+ /* harmony export */ MapLayerSourceStatus: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_88__.MapLayerSourceStatus),
173409
+ /* harmony export */ MapLayerSources: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_88__.MapLayerSources),
173410
+ /* harmony export */ MapLayerTileTreeReference: () => (/* reexport safe */ _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_66__.MapLayerTileTreeReference),
173411
+ /* harmony export */ MapLayerUntrustedOriginError: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__.MapLayerUntrustedOriginError),
173412
+ /* harmony export */ MapTile: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.MapTile),
173413
+ /* harmony export */ MapTileLoader: () => (/* reexport safe */ _internal_tile_map_MapTileLoader__WEBPACK_IMPORTED_MODULE_74__.MapTileLoader),
173414
+ /* harmony export */ MapTileProjection: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.MapTileProjection),
173415
+ /* harmony export */ MapTileTree: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__.MapTileTree),
173416
+ /* harmony export */ MapTileTreeReference: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__.MapTileTreeReference),
173417
+ /* harmony export */ MapTileTreeScaleRangeVisibility: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__.MapTileTreeScaleRangeVisibility),
173418
+ /* harmony export */ MapTiledGraphicsProvider: () => (/* reexport safe */ _map_MapTiledGraphicsProvider__WEBPACK_IMPORTED_MODULE_89__.MapTiledGraphicsProvider),
173419
+ /* harmony export */ MapTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__.MapTilingScheme),
173420
+ /* harmony export */ ModelMapLayerTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.ModelMapLayerTileTreeReference),
173421
+ /* harmony export */ OPCFormatInterpreter: () => (/* reexport safe */ _internal_tile_OPCFormatInterpreter__WEBPACK_IMPORTED_MODULE_93__.OPCFormatInterpreter),
173422
+ /* harmony export */ OrbitGtTileTree: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__.OrbitGtTileTree),
173423
+ /* harmony export */ OrbitGtTreeReference: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__.OrbitGtTreeReference),
173424
+ /* harmony export */ PlanarProjection: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.PlanarProjection),
173425
+ /* harmony export */ PlanarTilePatch: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.PlanarTilePatch),
173426
+ /* harmony export */ ProjectedTexture: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_96__.ProjectedTexture),
173078
173427
  /* harmony export */ QuadId: () => (/* reexport safe */ _map_QuadId__WEBPACK_IMPORTED_MODULE_2__.QuadId),
173079
173428
  /* harmony export */ ReadonlyTileUserSet: () => (/* reexport safe */ _internal_tile_TileUserSet__WEBPACK_IMPORTED_MODULE_31__.ReadonlyTileUserSet),
173080
- /* harmony export */ RealityModelTileTree: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityModelTileTree),
173081
- /* harmony export */ RealityModelTileTreeProps: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityModelTileTreeProps),
173082
- /* harmony export */ RealityModelTileUtils: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityModelTileUtils),
173429
+ /* harmony export */ RealityModelTileTree: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityModelTileTree),
173430
+ /* harmony export */ RealityModelTileTreeProps: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityModelTileTreeProps),
173431
+ /* harmony export */ RealityModelTileUtils: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityModelTileUtils),
173083
173432
  /* harmony export */ RealityTile: () => (/* reexport safe */ _RealityTile__WEBPACK_IMPORTED_MODULE_6__.RealityTile),
173084
173433
  /* harmony export */ RealityTileDrawArgs: () => (/* reexport safe */ _internal_tile_RealityTileDrawArgs__WEBPACK_IMPORTED_MODULE_10__.RealityTileDrawArgs),
173085
- /* harmony export */ RealityTileLoader: () => (/* reexport safe */ _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_71__.RealityTileLoader),
173086
- /* harmony export */ RealityTileRegion: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityTileRegion),
173434
+ /* harmony export */ RealityTileLoader: () => (/* reexport safe */ _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_73__.RealityTileLoader),
173435
+ /* harmony export */ RealityTileRegion: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityTileRegion),
173087
173436
  /* harmony export */ RealityTileTree: () => (/* reexport safe */ _RealityTileTree__WEBPACK_IMPORTED_MODULE_15__.RealityTileTree),
173088
- /* harmony export */ RealityTreeReference: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityTreeReference),
173089
- /* harmony export */ SelectParent: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_79__.SelectParent),
173090
- /* harmony export */ SpatialClassifierTileTreeReference: () => (/* reexport safe */ _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_83__.SpatialClassifierTileTreeReference),
173091
- /* harmony export */ SpatialTileTreeReferences: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.SpatialTileTreeReferences),
173092
- /* harmony export */ TerrainMeshProvider: () => (/* reexport safe */ _map_TerrainMeshProvider__WEBPACK_IMPORTED_MODULE_66__.TerrainMeshProvider),
173093
- /* harmony export */ TerrainProviderRegistry: () => (/* reexport safe */ _map_TerrainProvider__WEBPACK_IMPORTED_MODULE_67__.TerrainProviderRegistry),
173094
- /* harmony export */ ThreeDTileFormatInterpreter: () => (/* reexport safe */ _internal_tile_ThreeDTileFormatInterpreter__WEBPACK_IMPORTED_MODULE_90__.ThreeDTileFormatInterpreter),
173437
+ /* harmony export */ RealityTreeReference: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityTreeReference),
173438
+ /* harmony export */ SelectParent: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_81__.SelectParent),
173439
+ /* harmony export */ SpatialClassifierTileTreeReference: () => (/* reexport safe */ _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_85__.SpatialClassifierTileTreeReference),
173440
+ /* harmony export */ SpatialTileTreeReferences: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.SpatialTileTreeReferences),
173441
+ /* harmony export */ TerrainMeshProvider: () => (/* reexport safe */ _map_TerrainMeshProvider__WEBPACK_IMPORTED_MODULE_68__.TerrainMeshProvider),
173442
+ /* harmony export */ TerrainProviderRegistry: () => (/* reexport safe */ _map_TerrainProvider__WEBPACK_IMPORTED_MODULE_69__.TerrainProviderRegistry),
173443
+ /* harmony export */ ThreeDTileFormatInterpreter: () => (/* reexport safe */ _internal_tile_ThreeDTileFormatInterpreter__WEBPACK_IMPORTED_MODULE_92__.ThreeDTileFormatInterpreter),
173095
173444
  /* harmony export */ Tile: () => (/* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_4__.Tile),
173096
173445
  /* harmony export */ TileAdmin: () => (/* reexport safe */ _TileAdmin__WEBPACK_IMPORTED_MODULE_23__.TileAdmin),
173097
- /* harmony export */ TileAvailability: () => (/* reexport safe */ _internal_tile_map_MapTileAvailability__WEBPACK_IMPORTED_MODULE_75__.TileAvailability),
173446
+ /* harmony export */ TileAvailability: () => (/* reexport safe */ _internal_tile_map_MapTileAvailability__WEBPACK_IMPORTED_MODULE_77__.TileAvailability),
173098
173447
  /* harmony export */ TileBoundingBoxes: () => (/* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_4__.TileBoundingBoxes),
173099
173448
  /* harmony export */ TileDrawArgs: () => (/* reexport safe */ _TileDrawArgs__WEBPACK_IMPORTED_MODULE_9__.TileDrawArgs),
173100
173449
  /* harmony export */ TileGeometryCollector: () => (/* reexport safe */ _TileGeometryCollector__WEBPACK_IMPORTED_MODULE_21__.TileGeometryCollector),
@@ -173109,7 +173458,7 @@ __webpack_require__.r(__webpack_exports__);
173109
173458
  /* harmony export */ TileTree: () => (/* reexport safe */ _TileTree__WEBPACK_IMPORTED_MODULE_14__.TileTree),
173110
173459
  /* harmony export */ TileTreeLoadStatus: () => (/* reexport safe */ _TileTree__WEBPACK_IMPORTED_MODULE_14__.TileTreeLoadStatus),
173111
173460
  /* harmony export */ TileTreeReference: () => (/* reexport safe */ _TileTreeReference__WEBPACK_IMPORTED_MODULE_18__.TileTreeReference),
173112
- /* harmony export */ TileUrlImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_TileUrlImageryProvider__WEBPACK_IMPORTED_MODULE_60__.TileUrlImageryProvider),
173461
+ /* harmony export */ TileUrlImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_TileUrlImageryProvider__WEBPACK_IMPORTED_MODULE_62__.TileUrlImageryProvider),
173113
173462
  /* harmony export */ TileUsageMarker: () => (/* reexport safe */ _TileUsageMarker__WEBPACK_IMPORTED_MODULE_29__.TileUsageMarker),
173114
173463
  /* harmony export */ TileUser: () => (/* reexport safe */ _TileUser__WEBPACK_IMPORTED_MODULE_30__.TileUser),
173115
173464
  /* harmony export */ TileUserIdSet: () => (/* reexport safe */ _internal_tile_LRUTileList__WEBPACK_IMPORTED_MODULE_5__.TileUserIdSet),
@@ -173120,66 +173469,68 @@ __webpack_require__.r(__webpack_exports__);
173120
173469
  /* harmony export */ TraversalDetails: () => (/* reexport safe */ _RealityTileTree__WEBPACK_IMPORTED_MODULE_15__.TraversalDetails),
173121
173470
  /* harmony export */ TraversalSelectionContext: () => (/* reexport safe */ _RealityTileTree__WEBPACK_IMPORTED_MODULE_15__.TraversalSelectionContext),
173122
173471
  /* harmony export */ UniqueTileUserSets: () => (/* reexport safe */ _internal_tile_TileUserSet__WEBPACK_IMPORTED_MODULE_31__.UniqueTileUserSets),
173123
- /* harmony export */ UpsampledMapTile: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.UpsampledMapTile),
173124
- /* harmony export */ WebMercator: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WebMercator__WEBPACK_IMPORTED_MODULE_50__.WebMercator),
173125
- /* harmony export */ WebMercatorProjection: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__.WebMercatorProjection),
173126
- /* harmony export */ WebMercatorTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__.WebMercatorTilingScheme),
173127
- /* harmony export */ WmsCapabilities: () => (/* reexport safe */ _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_45__.WmsCapabilities),
173128
- /* harmony export */ WmsCapability: () => (/* reexport safe */ _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_45__.WmsCapability),
173129
- /* harmony export */ WmsMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WmsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_61__.WmsMapLayerImageryProvider),
173130
- /* harmony export */ WmsUtilities: () => (/* reexport safe */ _internal_tile_map_WmsUtilities__WEBPACK_IMPORTED_MODULE_44__.WmsUtilities),
173131
- /* harmony export */ WmtsCapabilities: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_46__.WmtsCapabilities),
173132
- /* harmony export */ WmtsCapability: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_46__.WmtsCapability),
173133
- /* harmony export */ WmtsConstants: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_46__.WmtsConstants),
173134
- /* harmony export */ WmtsMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WmtsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_62__.WmtsMapLayerImageryProvider),
173472
+ /* harmony export */ UpsampledMapTile: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.UpsampledMapTile),
173473
+ /* harmony export */ WebMercator: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WebMercator__WEBPACK_IMPORTED_MODULE_52__.WebMercator),
173474
+ /* harmony export */ WebMercatorProjection: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__.WebMercatorProjection),
173475
+ /* harmony export */ WebMercatorTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__.WebMercatorTilingScheme),
173476
+ /* harmony export */ WmsCapabilities: () => (/* reexport safe */ _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_47__.WmsCapabilities),
173477
+ /* harmony export */ WmsCapability: () => (/* reexport safe */ _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_47__.WmsCapability),
173478
+ /* harmony export */ WmsMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WmsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_63__.WmsMapLayerImageryProvider),
173479
+ /* harmony export */ WmsUtilities: () => (/* reexport safe */ _internal_tile_map_WmsUtilities__WEBPACK_IMPORTED_MODULE_46__.WmsUtilities),
173480
+ /* harmony export */ WmtsCapabilities: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_48__.WmtsCapabilities),
173481
+ /* harmony export */ WmtsCapability: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_48__.WmtsCapability),
173482
+ /* harmony export */ WmtsConstants: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_48__.WmtsConstants),
173483
+ /* harmony export */ WmtsMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WmtsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_64__.WmtsMapLayerImageryProvider),
173135
173484
  /* harmony export */ acquireImdlDecoder: () => (/* reexport safe */ _internal_tile_ImdlDecoder__WEBPACK_IMPORTED_MODULE_36__.acquireImdlDecoder),
173136
173485
  /* harmony export */ acquireImdlParser: () => (/* reexport safe */ _internal_tile_ImdlParser__WEBPACK_IMPORTED_MODULE_38__.acquireImdlParser),
173137
173486
  /* harmony export */ addRangeGraphic: () => (/* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_4__.addRangeGraphic),
173138
- /* harmony export */ appendQueryParams: () => (/* reexport safe */ _internal_tile_map_UrlUtils__WEBPACK_IMPORTED_MODULE_48__.appendQueryParams),
173139
- /* harmony export */ collectMaskRefs: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.collectMaskRefs),
173140
- /* harmony export */ compareMapLayer: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_94__.compareMapLayer),
173141
- /* harmony export */ computeCesiumTokenTimeoutInterval: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.computeCesiumTokenTimeoutInterval),
173142
- /* harmony export */ computeVerticalDatumShift: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__.computeVerticalDatumShift),
173143
- /* harmony export */ createClassifierTileTreeReference: () => (/* reexport safe */ _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_83__.createClassifierTileTreeReference),
173487
+ /* harmony export */ appendQueryParams: () => (/* reexport safe */ _internal_tile_map_UrlUtils__WEBPACK_IMPORTED_MODULE_50__.appendQueryParams),
173488
+ /* harmony export */ collectMaskRefs: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.collectMaskRefs),
173489
+ /* harmony export */ compareMapLayer: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_96__.compareMapLayer),
173490
+ /* harmony export */ computeCesiumTokenTimeoutInterval: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.computeCesiumTokenTimeoutInterval),
173491
+ /* harmony export */ computeVerticalDatumShift: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__.computeVerticalDatumShift),
173492
+ /* harmony export */ createClassifierTileTreeReference: () => (/* reexport safe */ _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_85__.createClassifierTileTreeReference),
173144
173493
  /* harmony export */ createDefaultViewFlagOverrides: () => (/* reexport safe */ _internal_tile_ViewFlagOverrides__WEBPACK_IMPORTED_MODULE_0__.createDefaultViewFlagOverrides),
173145
173494
  /* harmony export */ createGraphicFromDescription: () => (/* reexport safe */ _internal_tile_ImdlGraphicsCreator__WEBPACK_IMPORTED_MODULE_37__.createGraphicFromDescription),
173146
173495
  /* harmony export */ createGraphicTemplateFromDescription: () => (/* reexport safe */ _internal_tile_ImdlGraphicsCreator__WEBPACK_IMPORTED_MODULE_37__.createGraphicTemplateFromDescription),
173147
- /* harmony export */ createMapLayerTreeReference: () => (/* reexport safe */ _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_64__.createMapLayerTreeReference),
173148
- /* harmony export */ createMaskTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.createMaskTreeReference),
173149
- /* harmony export */ createModelMapLayerTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.createModelMapLayerTileTreeReference),
173150
- /* harmony export */ createOrbitGtTileTreeReference: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__.createOrbitGtTileTreeReference),
173151
- /* harmony export */ createPrimaryTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.createPrimaryTileTreeReference),
173152
- /* harmony export */ createReaderPropsWithBaseUrl: () => (/* reexport safe */ _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_71__.createReaderPropsWithBaseUrl),
173153
- /* harmony export */ createRealityTileTreeReference: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.createRealityTileTreeReference),
173154
- /* harmony export */ createSpatialTileTreeReferences: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.createSpatialTileTreeReferences),
173496
+ /* harmony export */ createMapLayerTreeReference: () => (/* reexport safe */ _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_66__.createMapLayerTreeReference),
173497
+ /* harmony export */ createMaskTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.createMaskTreeReference),
173498
+ /* harmony export */ createModelMapLayerTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.createModelMapLayerTileTreeReference),
173499
+ /* harmony export */ createOrbitGtTileTreeReference: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__.createOrbitGtTileTreeReference),
173500
+ /* harmony export */ createPrimaryTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.createPrimaryTileTreeReference),
173501
+ /* harmony export */ createReaderPropsWithBaseUrl: () => (/* reexport safe */ _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_73__.createReaderPropsWithBaseUrl),
173502
+ /* harmony export */ createRealityTileTreeReference: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.createRealityTileTreeReference),
173503
+ /* harmony export */ createSpatialTileTreeReferences: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.createSpatialTileTreeReferences),
173504
+ /* harmony export */ credentialedFetchRedirect: () => (/* reexport safe */ _internal_tile_map_MapLayerFetch__WEBPACK_IMPORTED_MODULE_45__.credentialedFetchRedirect),
173155
173505
  /* harmony export */ decodeImdlGraphics: () => (/* reexport safe */ _internal_tile_ImdlGraphicsCreator__WEBPACK_IMPORTED_MODULE_37__.decodeImdlGraphics),
173156
- /* harmony export */ decodeMeshoptBuffer: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_93__.decodeMeshoptBuffer),
173157
- /* harmony export */ deflateCoordinates: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_CoordinatesUtils__WEBPACK_IMPORTED_MODULE_47__.deflateCoordinates),
173158
- /* harmony export */ disposeTileTreesForGeometricModels: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.disposeTileTreesForGeometricModels),
173159
- /* harmony export */ escapeHtml: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__.escapeHtml),
173160
- /* harmony export */ getCesiumAccessClient: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumAccessClient),
173161
- /* harmony export */ getCesiumAccessTokenAndEndpointUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumAccessTokenAndEndpointUrl),
173162
- /* harmony export */ getCesiumAssetUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumAssetUrl),
173163
- /* harmony export */ getCesiumOSMBuildingsUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumOSMBuildingsUrl),
173164
- /* harmony export */ getCesiumTerrainEndpointErrorDescription: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumTerrainEndpointErrorDescription),
173165
- /* harmony export */ getCesiumTerrainProvider: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumTerrainProvider),
173166
- /* harmony export */ getGcsConverterAvailable: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__.getGcsConverterAvailable),
173506
+ /* harmony export */ decodeMeshoptBuffer: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_95__.decodeMeshoptBuffer),
173507
+ /* harmony export */ deflateCoordinates: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_CoordinatesUtils__WEBPACK_IMPORTED_MODULE_49__.deflateCoordinates),
173508
+ /* harmony export */ disposeTileTreesForGeometricModels: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.disposeTileTreesForGeometricModels),
173509
+ /* harmony export */ escapeHtml: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__.escapeHtml),
173510
+ /* harmony export */ fetchMapLayerRequest: () => (/* reexport safe */ _internal_tile_map_MapLayerFetch__WEBPACK_IMPORTED_MODULE_45__.fetchMapLayerRequest),
173511
+ /* harmony export */ getCesiumAccessClient: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumAccessClient),
173512
+ /* harmony export */ getCesiumAccessTokenAndEndpointUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumAccessTokenAndEndpointUrl),
173513
+ /* harmony export */ getCesiumAssetUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumAssetUrl),
173514
+ /* harmony export */ getCesiumOSMBuildingsUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumOSMBuildingsUrl),
173515
+ /* harmony export */ getCesiumTerrainEndpointErrorDescription: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumTerrainEndpointErrorDescription),
173516
+ /* harmony export */ getCesiumTerrainProvider: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumTerrainProvider),
173517
+ /* harmony export */ getGcsConverterAvailable: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__.getGcsConverterAvailable),
173167
173518
  /* harmony export */ getMeshPrimitives: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.getMeshPrimitives),
173168
- /* harmony export */ getMeshoptDecoder: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_93__.getMeshoptDecoder),
173169
- /* harmony export */ iModelTileParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_79__.iModelTileParamsFromJSON),
173170
- /* harmony export */ iModelTileTreeParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_81__.iModelTileTreeParamsFromJSON),
173171
- /* harmony export */ internalMapLayerImageryFormats: () => (/* reexport safe */ _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_63__.internalMapLayerImageryFormats),
173519
+ /* harmony export */ getMeshoptDecoder: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_95__.getMeshoptDecoder),
173520
+ /* harmony export */ iModelTileParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_81__.iModelTileParamsFromJSON),
173521
+ /* harmony export */ iModelTileTreeParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_83__.iModelTileTreeParamsFromJSON),
173522
+ /* harmony export */ internalMapLayerImageryFormats: () => (/* reexport safe */ _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_65__.internalMapLayerImageryFormats),
173172
173523
  /* harmony export */ overrideRequestTileTreeProps: () => (/* reexport safe */ _TileAdmin__WEBPACK_IMPORTED_MODULE_23__.overrideRequestTileTreeProps),
173173
173524
  /* harmony export */ readElementGraphics: () => (/* reexport safe */ _ImdlReader__WEBPACK_IMPORTED_MODULE_35__.readElementGraphics),
173174
173525
  /* harmony export */ readGltf: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.readGltf),
173175
173526
  /* harmony export */ readGltfGraphics: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.readGltfGraphics),
173176
173527
  /* harmony export */ readGltfTemplate: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.readGltfTemplate),
173177
173528
  /* harmony export */ readImdlContent: () => (/* reexport safe */ _ImdlReader__WEBPACK_IMPORTED_MODULE_35__.readImdlContent),
173178
- /* harmony export */ readPntsColors: () => (/* reexport safe */ _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_76__.readPntsColors),
173179
- /* harmony export */ readPointCloudTileContent: () => (/* reexport safe */ _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_76__.readPointCloudTileContent),
173180
- /* harmony export */ resolveCesiumTerrainEndpoint: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.resolveCesiumTerrainEndpoint),
173181
- /* harmony export */ tileTreeReferenceFromRenderGraphic: () => (/* reexport safe */ _RenderGraphicTileTree__WEBPACK_IMPORTED_MODULE_78__.tileTreeReferenceFromRenderGraphic),
173182
- /* harmony export */ tryGetOrigin: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__.tryGetOrigin)
173529
+ /* harmony export */ readPntsColors: () => (/* reexport safe */ _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_78__.readPntsColors),
173530
+ /* harmony export */ readPointCloudTileContent: () => (/* reexport safe */ _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_78__.readPointCloudTileContent),
173531
+ /* harmony export */ resolveCesiumTerrainEndpoint: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.resolveCesiumTerrainEndpoint),
173532
+ /* harmony export */ tileTreeReferenceFromRenderGraphic: () => (/* reexport safe */ _RenderGraphicTileTree__WEBPACK_IMPORTED_MODULE_80__.tileTreeReferenceFromRenderGraphic),
173533
+ /* harmony export */ tryGetOrigin: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__.tryGetOrigin)
173183
173534
  /* harmony export */ });
173184
173535
  /* harmony import */ var _internal_tile_ViewFlagOverrides__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/tile/ViewFlagOverrides */ "../../core/frontend/lib/esm/internal/tile/ViewFlagOverrides.js");
173185
173536
  /* harmony import */ var _map_MapCartoRectangle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map/MapCartoRectangle */ "../../core/frontend/lib/esm/tile/map/MapCartoRectangle.js");
@@ -173222,60 +173573,62 @@ __webpack_require__.r(__webpack_exports__);
173222
173573
  /* harmony import */ var _internal_tile_ImdlParser__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../internal/tile/ImdlParser */ "../../core/frontend/lib/esm/internal/tile/ImdlParser.js");
173223
173574
  /* harmony import */ var _internal_tile_map_ArcGISTileMap__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../internal/tile/map/ArcGISTileMap */ "../../core/frontend/lib/esm/internal/tile/map/ArcGISTileMap.js");
173224
173575
  /* harmony import */ var _map_MapLayerAuthentication__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./map/MapLayerAuthentication */ "../../core/frontend/lib/esm/tile/map/MapLayerAuthentication.js");
173225
- /* harmony import */ var _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./map/MapFeatureInfo */ "../../core/frontend/lib/esm/tile/map/MapFeatureInfo.js");
173226
- /* harmony import */ var _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./map/MapLayerFormatRegistry */ "../../core/frontend/lib/esm/tile/map/MapLayerFormatRegistry.js");
173227
- /* harmony import */ var _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../internal/tile/map/ArcGisUtilities */ "../../core/frontend/lib/esm/internal/tile/map/ArcGisUtilities.js");
173228
- /* harmony import */ var _internal_tile_map_WmsUtilities__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../internal/tile/map/WmsUtilities */ "../../core/frontend/lib/esm/internal/tile/map/WmsUtilities.js");
173229
- /* harmony import */ var _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../internal/tile/map/WmsCapabilities */ "../../core/frontend/lib/esm/internal/tile/map/WmsCapabilities.js");
173230
- /* harmony import */ var _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../internal/tile/map/WmtsCapabilities */ "../../core/frontend/lib/esm/internal/tile/map/WmtsCapabilities.js");
173231
- /* harmony import */ var _internal_tile_map_ImageryProviders_CoordinatesUtils__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/CoordinatesUtils */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/CoordinatesUtils.js");
173232
- /* harmony import */ var _internal_tile_map_UrlUtils__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../internal/tile/map/UrlUtils */ "../../core/frontend/lib/esm/internal/tile/map/UrlUtils.js");
173233
- /* harmony import */ var _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./map/MapLayerImageryProvider */ "../../core/frontend/lib/esm/tile/map/MapLayerImageryProvider.js");
173234
- /* harmony import */ var _internal_tile_map_ImageryProviders_WebMercator__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/WebMercator */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/WebMercator.js");
173235
- /* harmony import */ var _internal_tile_map_ImageryProviders_FeatureSymbologyRenderer__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/FeatureSymbologyRenderer */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/FeatureSymbologyRenderer.js");
173236
- /* harmony import */ var _internal_tile_map_ImageryProviders_FeatureAttributeDrivenSymbology__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js");
173237
- /* harmony import */ var _internal_tile_map_ImageryProviders_ArcGISImageryProvider__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/ArcGISImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js");
173238
- /* harmony import */ var _internal_tile_map_ImageryProviders_FeatureGeometryRenderer__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/FeatureGeometryRenderer */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/FeatureGeometryRenderer.js");
173239
- /* harmony import */ var _internal_tile_map_ImageryProviders_FeatureGraphicsRenderer__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/FeatureGraphicsRenderer */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/FeatureGraphicsRenderer.js");
173240
- /* harmony import */ var _internal_tile_map_ImageryProviders_ArcGisGeometryReaderJSON__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js");
173241
- /* harmony import */ var _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js");
173242
- /* harmony import */ var _internal_tile_map_ImageryProviders_BingImageryProvider__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/BingImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js");
173243
- /* harmony import */ var _internal_tile_map_ImageryProviders_MapBoxLayerImageryProvider__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js");
173244
- /* harmony import */ var _internal_tile_map_ImageryProviders_TileUrlImageryProvider__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/TileUrlImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/TileUrlImageryProvider.js");
173245
- /* harmony import */ var _internal_tile_map_ImageryProviders_WmsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js");
173246
- /* harmony import */ var _internal_tile_map_ImageryProviders_WmtsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js");
173247
- /* harmony import */ var _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./map/MapLayerImageryFormats */ "../../core/frontend/lib/esm/tile/map/MapLayerImageryFormats.js");
173248
- /* harmony import */ var _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./map/MapLayerTileTreeReference */ "../../core/frontend/lib/esm/tile/map/MapLayerTileTreeReference.js");
173249
- /* harmony import */ var _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./map/MapTileTree */ "../../core/frontend/lib/esm/tile/map/MapTileTree.js");
173250
- /* harmony import */ var _map_TerrainMeshProvider__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./map/TerrainMeshProvider */ "../../core/frontend/lib/esm/tile/map/TerrainMeshProvider.js");
173251
- /* harmony import */ var _map_TerrainProvider__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./map/TerrainProvider */ "../../core/frontend/lib/esm/tile/map/TerrainProvider.js");
173252
- /* harmony import */ var _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./map/CesiumTerrainProvider */ "../../core/frontend/lib/esm/tile/map/CesiumTerrainProvider.js");
173253
- /* harmony import */ var _map_EllipsoidTerrainProvider__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./map/EllipsoidTerrainProvider */ "../../core/frontend/lib/esm/tile/map/EllipsoidTerrainProvider.js");
173254
- /* harmony import */ var _map_MapTile__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./map/MapTile */ "../../core/frontend/lib/esm/tile/map/MapTile.js");
173255
- /* harmony import */ var _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ../internal/tile/RealityTileLoader */ "../../core/frontend/lib/esm/internal/tile/RealityTileLoader.js");
173256
- /* harmony import */ var _internal_tile_map_MapTileLoader__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ../internal/tile/map/MapTileLoader */ "../../core/frontend/lib/esm/internal/tile/map/MapTileLoader.js");
173257
- /* harmony import */ var _map_BingElevation__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./map/BingElevation */ "../../core/frontend/lib/esm/tile/map/BingElevation.js");
173258
- /* harmony import */ var _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./map/MapTilingScheme */ "../../core/frontend/lib/esm/tile/map/MapTilingScheme.js");
173259
- /* harmony import */ var _internal_tile_map_MapTileAvailability__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ../internal/tile/map/MapTileAvailability */ "../../core/frontend/lib/esm/internal/tile/map/MapTileAvailability.js");
173260
- /* harmony import */ var _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ../internal/tile/PntsReader */ "../../core/frontend/lib/esm/internal/tile/PntsReader.js");
173261
- /* harmony import */ var _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ../internal/tile/RealityModelTileTree */ "../../core/frontend/lib/esm/internal/tile/RealityModelTileTree.js");
173262
- /* harmony import */ var _RenderGraphicTileTree__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./RenderGraphicTileTree */ "../../core/frontend/lib/esm/tile/RenderGraphicTileTree.js");
173263
- /* harmony import */ var _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ../internal/tile/IModelTile */ "../../core/frontend/lib/esm/internal/tile/IModelTile.js");
173264
- /* harmony import */ var _internal_tile_DynamicIModelTile__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ../internal/tile/DynamicIModelTile */ "../../core/frontend/lib/esm/internal/tile/DynamicIModelTile.js");
173265
- /* harmony import */ var _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ../internal/tile/IModelTileTree */ "../../core/frontend/lib/esm/internal/tile/IModelTileTree.js");
173266
- /* harmony import */ var _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../internal/tile/PrimaryTileTree */ "../../core/frontend/lib/esm/internal/tile/PrimaryTileTree.js");
173267
- /* harmony import */ var _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../internal/tile/ClassifierTileTree */ "../../core/frontend/lib/esm/internal/tile/ClassifierTileTree.js");
173268
- /* harmony import */ var _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../internal/tile/OrbitGtTileTree */ "../../core/frontend/lib/esm/internal/tile/OrbitGtTileTree.js");
173269
- /* harmony import */ var _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./map/ImageryTileTree */ "../../core/frontend/lib/esm/tile/map/ImageryTileTree.js");
173270
- /* harmony import */ var _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./map/MapLayerSources */ "../../core/frontend/lib/esm/tile/map/MapLayerSources.js");
173271
- /* harmony import */ var _map_MapTiledGraphicsProvider__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./map/MapTiledGraphicsProvider */ "../../core/frontend/lib/esm/tile/map/MapTiledGraphicsProvider.js");
173272
- /* harmony import */ var _internal_tile_CesiumAssetProvider__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ../internal/tile/CesiumAssetProvider */ "../../core/frontend/lib/esm/internal/tile/CesiumAssetProvider.js");
173273
- /* harmony import */ var _internal_tile_ContextShareProvider__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ../internal/tile/ContextShareProvider */ "../../core/frontend/lib/esm/internal/tile/ContextShareProvider.js");
173274
- /* harmony import */ var _internal_tile_ThreeDTileFormatInterpreter__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ../internal/tile/ThreeDTileFormatInterpreter */ "../../core/frontend/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js");
173275
- /* harmony import */ var _internal_tile_OPCFormatInterpreter__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ../internal/tile/OPCFormatInterpreter */ "../../core/frontend/lib/esm/internal/tile/OPCFormatInterpreter.js");
173276
- /* harmony import */ var _internal_tile_FetchCloudStorage__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ../internal/tile/FetchCloudStorage */ "../../core/frontend/lib/esm/internal/tile/FetchCloudStorage.js");
173277
- /* harmony import */ var _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ../internal/tile/MeshoptCompression */ "../../core/frontend/lib/esm/internal/tile/MeshoptCompression.js");
173278
- /* harmony import */ var _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ../internal/render/webgl/MapLayerParams */ "../../core/frontend/lib/esm/internal/render/webgl/MapLayerParams.js");
173576
+ /* harmony import */ var _map_MapLayerFetchHandler__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./map/MapLayerFetchHandler */ "../../core/frontend/lib/esm/tile/map/MapLayerFetchHandler.js");
173577
+ /* harmony import */ var _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./map/MapFeatureInfo */ "../../core/frontend/lib/esm/tile/map/MapFeatureInfo.js");
173578
+ /* harmony import */ var _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./map/MapLayerFormatRegistry */ "../../core/frontend/lib/esm/tile/map/MapLayerFormatRegistry.js");
173579
+ /* harmony import */ var _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../internal/tile/map/ArcGisUtilities */ "../../core/frontend/lib/esm/internal/tile/map/ArcGisUtilities.js");
173580
+ /* harmony import */ var _internal_tile_map_MapLayerFetch__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../internal/tile/map/MapLayerFetch */ "../../core/frontend/lib/esm/internal/tile/map/MapLayerFetch.js");
173581
+ /* harmony import */ var _internal_tile_map_WmsUtilities__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../internal/tile/map/WmsUtilities */ "../../core/frontend/lib/esm/internal/tile/map/WmsUtilities.js");
173582
+ /* harmony import */ var _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../internal/tile/map/WmsCapabilities */ "../../core/frontend/lib/esm/internal/tile/map/WmsCapabilities.js");
173583
+ /* harmony import */ var _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../internal/tile/map/WmtsCapabilities */ "../../core/frontend/lib/esm/internal/tile/map/WmtsCapabilities.js");
173584
+ /* harmony import */ var _internal_tile_map_ImageryProviders_CoordinatesUtils__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/CoordinatesUtils */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/CoordinatesUtils.js");
173585
+ /* harmony import */ var _internal_tile_map_UrlUtils__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../internal/tile/map/UrlUtils */ "../../core/frontend/lib/esm/internal/tile/map/UrlUtils.js");
173586
+ /* harmony import */ var _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./map/MapLayerImageryProvider */ "../../core/frontend/lib/esm/tile/map/MapLayerImageryProvider.js");
173587
+ /* harmony import */ var _internal_tile_map_ImageryProviders_WebMercator__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/WebMercator */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/WebMercator.js");
173588
+ /* harmony import */ var _internal_tile_map_ImageryProviders_FeatureSymbologyRenderer__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/FeatureSymbologyRenderer */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/FeatureSymbologyRenderer.js");
173589
+ /* harmony import */ var _internal_tile_map_ImageryProviders_FeatureAttributeDrivenSymbology__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js");
173590
+ /* harmony import */ var _internal_tile_map_ImageryProviders_ArcGISImageryProvider__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/ArcGISImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js");
173591
+ /* harmony import */ var _internal_tile_map_ImageryProviders_FeatureGeometryRenderer__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/FeatureGeometryRenderer */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/FeatureGeometryRenderer.js");
173592
+ /* harmony import */ var _internal_tile_map_ImageryProviders_FeatureGraphicsRenderer__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/FeatureGraphicsRenderer */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/FeatureGraphicsRenderer.js");
173593
+ /* harmony import */ var _internal_tile_map_ImageryProviders_ArcGisGeometryReaderJSON__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js");
173594
+ /* harmony import */ var _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js");
173595
+ /* harmony import */ var _internal_tile_map_ImageryProviders_BingImageryProvider__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/BingImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js");
173596
+ /* harmony import */ var _internal_tile_map_ImageryProviders_MapBoxLayerImageryProvider__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js");
173597
+ /* harmony import */ var _internal_tile_map_ImageryProviders_TileUrlImageryProvider__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/TileUrlImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/TileUrlImageryProvider.js");
173598
+ /* harmony import */ var _internal_tile_map_ImageryProviders_WmsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js");
173599
+ /* harmony import */ var _internal_tile_map_ImageryProviders_WmtsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ../internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider */ "../../core/frontend/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js");
173600
+ /* harmony import */ var _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./map/MapLayerImageryFormats */ "../../core/frontend/lib/esm/tile/map/MapLayerImageryFormats.js");
173601
+ /* harmony import */ var _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./map/MapLayerTileTreeReference */ "../../core/frontend/lib/esm/tile/map/MapLayerTileTreeReference.js");
173602
+ /* harmony import */ var _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./map/MapTileTree */ "../../core/frontend/lib/esm/tile/map/MapTileTree.js");
173603
+ /* harmony import */ var _map_TerrainMeshProvider__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./map/TerrainMeshProvider */ "../../core/frontend/lib/esm/tile/map/TerrainMeshProvider.js");
173604
+ /* harmony import */ var _map_TerrainProvider__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./map/TerrainProvider */ "../../core/frontend/lib/esm/tile/map/TerrainProvider.js");
173605
+ /* harmony import */ var _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./map/CesiumTerrainProvider */ "../../core/frontend/lib/esm/tile/map/CesiumTerrainProvider.js");
173606
+ /* harmony import */ var _map_EllipsoidTerrainProvider__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./map/EllipsoidTerrainProvider */ "../../core/frontend/lib/esm/tile/map/EllipsoidTerrainProvider.js");
173607
+ /* harmony import */ var _map_MapTile__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./map/MapTile */ "../../core/frontend/lib/esm/tile/map/MapTile.js");
173608
+ /* harmony import */ var _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ../internal/tile/RealityTileLoader */ "../../core/frontend/lib/esm/internal/tile/RealityTileLoader.js");
173609
+ /* harmony import */ var _internal_tile_map_MapTileLoader__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ../internal/tile/map/MapTileLoader */ "../../core/frontend/lib/esm/internal/tile/map/MapTileLoader.js");
173610
+ /* harmony import */ var _map_BingElevation__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./map/BingElevation */ "../../core/frontend/lib/esm/tile/map/BingElevation.js");
173611
+ /* harmony import */ var _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./map/MapTilingScheme */ "../../core/frontend/lib/esm/tile/map/MapTilingScheme.js");
173612
+ /* harmony import */ var _internal_tile_map_MapTileAvailability__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ../internal/tile/map/MapTileAvailability */ "../../core/frontend/lib/esm/internal/tile/map/MapTileAvailability.js");
173613
+ /* harmony import */ var _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ../internal/tile/PntsReader */ "../../core/frontend/lib/esm/internal/tile/PntsReader.js");
173614
+ /* harmony import */ var _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ../internal/tile/RealityModelTileTree */ "../../core/frontend/lib/esm/internal/tile/RealityModelTileTree.js");
173615
+ /* harmony import */ var _RenderGraphicTileTree__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./RenderGraphicTileTree */ "../../core/frontend/lib/esm/tile/RenderGraphicTileTree.js");
173616
+ /* harmony import */ var _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ../internal/tile/IModelTile */ "../../core/frontend/lib/esm/internal/tile/IModelTile.js");
173617
+ /* harmony import */ var _internal_tile_DynamicIModelTile__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../internal/tile/DynamicIModelTile */ "../../core/frontend/lib/esm/internal/tile/DynamicIModelTile.js");
173618
+ /* harmony import */ var _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../internal/tile/IModelTileTree */ "../../core/frontend/lib/esm/internal/tile/IModelTileTree.js");
173619
+ /* harmony import */ var _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../internal/tile/PrimaryTileTree */ "../../core/frontend/lib/esm/internal/tile/PrimaryTileTree.js");
173620
+ /* harmony import */ var _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ../internal/tile/ClassifierTileTree */ "../../core/frontend/lib/esm/internal/tile/ClassifierTileTree.js");
173621
+ /* harmony import */ var _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ../internal/tile/OrbitGtTileTree */ "../../core/frontend/lib/esm/internal/tile/OrbitGtTileTree.js");
173622
+ /* harmony import */ var _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./map/ImageryTileTree */ "../../core/frontend/lib/esm/tile/map/ImageryTileTree.js");
173623
+ /* harmony import */ var _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./map/MapLayerSources */ "../../core/frontend/lib/esm/tile/map/MapLayerSources.js");
173624
+ /* harmony import */ var _map_MapTiledGraphicsProvider__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./map/MapTiledGraphicsProvider */ "../../core/frontend/lib/esm/tile/map/MapTiledGraphicsProvider.js");
173625
+ /* harmony import */ var _internal_tile_CesiumAssetProvider__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ../internal/tile/CesiumAssetProvider */ "../../core/frontend/lib/esm/internal/tile/CesiumAssetProvider.js");
173626
+ /* harmony import */ var _internal_tile_ContextShareProvider__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ../internal/tile/ContextShareProvider */ "../../core/frontend/lib/esm/internal/tile/ContextShareProvider.js");
173627
+ /* harmony import */ var _internal_tile_ThreeDTileFormatInterpreter__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ../internal/tile/ThreeDTileFormatInterpreter */ "../../core/frontend/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js");
173628
+ /* harmony import */ var _internal_tile_OPCFormatInterpreter__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ../internal/tile/OPCFormatInterpreter */ "../../core/frontend/lib/esm/internal/tile/OPCFormatInterpreter.js");
173629
+ /* harmony import */ var _internal_tile_FetchCloudStorage__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ../internal/tile/FetchCloudStorage */ "../../core/frontend/lib/esm/internal/tile/FetchCloudStorage.js");
173630
+ /* harmony import */ var _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ../internal/tile/MeshoptCompression */ "../../core/frontend/lib/esm/internal/tile/MeshoptCompression.js");
173631
+ /* harmony import */ var _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ../internal/render/webgl/MapLayerParams */ "../../core/frontend/lib/esm/internal/render/webgl/MapLayerParams.js");
173279
173632
  /*---------------------------------------------------------------------------------------------
173280
173633
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
173281
173634
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -173386,6 +173739,8 @@ __webpack_require__.r(__webpack_exports__);
173386
173739
 
173387
173740
 
173388
173741
 
173742
+
173743
+
173389
173744
 
173390
173745
 
173391
173746
 
@@ -174896,6 +175251,26 @@ __webpack_require__.r(__webpack_exports__);
174896
175251
 
174897
175252
 
174898
175253
 
175254
+ /***/ },
175255
+
175256
+ /***/ "../../core/frontend/lib/esm/tile/map/MapLayerFetchHandler.js"
175257
+ /*!********************************************************************!*\
175258
+ !*** ../../core/frontend/lib/esm/tile/map/MapLayerFetchHandler.js ***!
175259
+ \********************************************************************/
175260
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
175261
+
175262
+ "use strict";
175263
+ __webpack_require__.r(__webpack_exports__);
175264
+ /*---------------------------------------------------------------------------------------------
175265
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
175266
+ * See LICENSE.md in the project root for license terms and full copyright notice.
175267
+ *--------------------------------------------------------------------------------------------*/
175268
+ /** @packageDocumentation
175269
+ * @module MapLayers
175270
+ */
175271
+
175272
+
175273
+
174899
175274
  /***/ },
174900
175275
 
174901
175276
  /***/ "../../core/frontend/lib/esm/tile/map/MapLayerFormatRegistry.js"
@@ -174907,6 +175282,7 @@ __webpack_require__.r(__webpack_exports__);
174907
175282
  "use strict";
174908
175283
  __webpack_require__.r(__webpack_exports__);
174909
175284
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
175285
+ /* harmony export */ MapLayerAuthenticationFailedError: () => (/* binding */ MapLayerAuthenticationFailedError),
174910
175286
  /* harmony export */ MapLayerFormat: () => (/* binding */ MapLayerFormat),
174911
175287
  /* harmony export */ MapLayerFormatRegistry: () => (/* binding */ MapLayerFormatRegistry),
174912
175288
  /* harmony export */ MapLayerUntrustedOriginError: () => (/* binding */ MapLayerUntrustedOriginError)
@@ -174990,6 +175366,22 @@ class MapLayerUntrustedOriginError extends Error {
174990
175366
  this.url = url;
174991
175367
  }
174992
175368
  }
175369
+ /** Error reporting an unrecoverable authentication failure for a map-layer request.
175370
+ * Thrown by a [[MapLayerFetchHandler]] when it recognizes an authentication failure it cannot fix
175371
+ * silently (e.g. a `401` that survives a token refresh, or a protocol-specific error embedded in a
175372
+ * `200` body); callers convert it to [[MapLayerImageryProviderStatus.RequireAuth]] (tile requests and
175373
+ * provider initialization) or [[MapLayerSourceStatus.RequireAuth]] (source validation), letting the
175374
+ * application prompt for re-authentication.
175375
+ * @beta
175376
+ */
175377
+ class MapLayerAuthenticationFailedError extends Error {
175378
+ /** The URL of the request that failed to authenticate. */
175379
+ url;
175380
+ constructor(url) {
175381
+ super("Authentication failed for map-layer request");
175382
+ this.url = url;
175383
+ }
175384
+ }
174993
175385
  /**
174994
175386
  * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
174995
175387
  * @public
@@ -175009,6 +175401,30 @@ class MapLayerFormatRegistry {
175009
175401
  * @beta
175010
175402
  */
175011
175403
  restrictCredentialsToTrustedOrigins = false;
175404
+ _fetchHandlers = [];
175405
+ /** Appends a [[MapLayerFetchHandler]] to the pipeline wrapping every map-layer network request issued through
175406
+ * [[MapLayerImageryProvider]] — tiles, tooltips, capabilities, service metadata, and source validation.
175407
+ * Handlers run in registration order (the first registered is the outermost), each deciding whether to
175408
+ * manage a request or decline it to the next one; several layers of an application can therefore register
175409
+ * their own handler without coordinating. Returns the function that removes the handler.
175410
+ * @beta
175411
+ */
175412
+ addMapLayerFetchHandler(handler) {
175413
+ // One wrapper per registration, so registering the same function twice yields independent removers.
175414
+ const registration = async (request, fetchRequest) => handler(request, fetchRequest);
175415
+ this._fetchHandlers.push(registration);
175416
+ return () => {
175417
+ const index = this._fetchHandlers.indexOf(registration);
175418
+ if (index >= 0)
175419
+ this._fetchHandlers.splice(index, 1);
175420
+ };
175421
+ }
175422
+ /** The registered [[MapLayerFetchHandler]]s, in pipeline order.
175423
+ * @internal
175424
+ */
175425
+ get mapLayerFetchHandlers() {
175426
+ return this._fetchHandlers;
175427
+ }
175012
175428
  constructor(opts) {
175013
175429
  this._configOptions = opts ?? {};
175014
175430
  _internal__WEBPACK_IMPORTED_MODULE_2__.internalMapLayerImageryFormats.forEach((format) => this.register(format));
@@ -175218,7 +175634,12 @@ class WmsMapLayerFormat extends ImageryMapLayerFormat {
175218
175634
  try {
175219
175635
  let subLayers;
175220
175636
  const maxVisibleSubLayers = 50;
175221
- const capabilities = await _internal__WEBPACK_IMPORTED_MODULE_0__.WmsCapabilities.create(url, (userName && password ? { user: userName, password } : undefined), ignoreCache, source.collectQueryParams());
175637
+ const capabilities = await _internal__WEBPACK_IMPORTED_MODULE_0__.WmsCapabilities.create(url, {
175638
+ credentials: (userName && password ? { user: userName, password } : undefined),
175639
+ ignoreCache,
175640
+ queryParams: source.collectQueryParams(),
175641
+ formatId: source.formatId,
175642
+ });
175222
175643
  if (capabilities !== undefined) {
175223
175644
  subLayers = capabilities.getSubLayers(false);
175224
175645
  const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);
@@ -175268,7 +175689,10 @@ class WmsMapLayerFormat extends ImageryMapLayerFormat {
175268
175689
  return { status: _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.UntrustedOrigin, blockedOrigin };
175269
175690
  }
175270
175691
  let status = _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidUrl;
175271
- if (err?.status === 401) {
175692
+ if (err instanceof _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerAuthenticationFailedError) {
175693
+ status = _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.RequireAuth;
175694
+ }
175695
+ else if (err?.status === 401) {
175272
175696
  status = ((userName && password) ? _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidCredentials : _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.RequireAuth);
175273
175697
  }
175274
175698
  return { status };
@@ -175293,7 +175717,12 @@ class WmtsMapLayerFormat extends ImageryMapLayerFormat {
175293
175717
  const { url, userName, password } = source;
175294
175718
  try {
175295
175719
  const subLayers = [];
175296
- const capabilities = await _internal__WEBPACK_IMPORTED_MODULE_0__.WmtsCapabilities.create(url, (userName && password ? { user: userName, password } : undefined), ignoreCache, source.collectQueryParams());
175720
+ const capabilities = await _internal__WEBPACK_IMPORTED_MODULE_0__.WmtsCapabilities.create(url, {
175721
+ credentials: (userName && password ? { user: userName, password } : undefined),
175722
+ ignoreCache,
175723
+ queryParams: source.collectQueryParams(),
175724
+ formatId: source.formatId,
175725
+ });
175297
175726
  if (!capabilities)
175298
175727
  return { status: _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidUrl };
175299
175728
  // Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.
@@ -175341,7 +175770,10 @@ class WmtsMapLayerFormat extends ImageryMapLayerFormat {
175341
175770
  return { status: _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.UntrustedOrigin, blockedOrigin };
175342
175771
  }
175343
175772
  let status = _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidUrl;
175344
- if (err?.status === 401) {
175773
+ if (err instanceof _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerAuthenticationFailedError) {
175774
+ status = _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.RequireAuth;
175775
+ }
175776
+ else if (err?.status === 401) {
175345
175777
  status = ((userName && password) ? _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidCredentials : _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.RequireAuth);
175346
175778
  }
175347
175779
  return { status };
@@ -175433,6 +175865,7 @@ __webpack_require__.r(__webpack_exports__);
175433
175865
  const tileImageSize = 256, untiledImageSize = 256;
175434
175866
  const earthRadius = 6378137;
175435
175867
  const doDebugToolTips = false;
175868
+ const loggerCategory = "MapLayerImageryProvider";
175436
175869
  /** Escapes HTML metacharacters so the text renders literally when assigned to `innerHTML`.
175437
175870
  * Use for any server- or user-supplied string that ends up in the map tooltip, which is rendered
175438
175871
  * as HTML by [[MapLayerTileTreeReference.getToolTip]].
@@ -175719,12 +176152,37 @@ class MapLayerImageryProvider {
175719
176152
  * @internal
175720
176153
  */
175721
176154
  onStatusUpdated(_newStatus) { }
176155
+ /** Transitions to [[MapLayerImageryProviderStatus.RequireAuth]] after a [[MapLayerFetchHandler]] reported an
176156
+ * unrecoverable authentication failure. The user is notified once per transition, and only if tiles had
176157
+ * loaded before: an initialization failure was already reported through source validation.
176158
+ * @internal
176159
+ */
176160
+ reportAuthenticationFailure() {
176161
+ const alreadyReported = this._status === MapLayerImageryProviderStatus.RequireAuth;
176162
+ this.setStatus(MapLayerImageryProviderStatus.RequireAuth);
176163
+ if (alreadyReported || !this._hasSuccessfullyFetchedTile)
176164
+ return;
176165
+ const msg = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.Messages.LoadTileTokenError", { layerName: this._settings.name });
176166
+ _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.notifications.outputMessage(new _NotificationManager__WEBPACK_IMPORTED_MODULE_4__.NotifyMessageDetails(_NotificationManager__WEBPACK_IMPORTED_MODULE_4__.OutputMessagePriority.Warning, msg));
176167
+ }
175722
176168
  /** @internal */
175723
176169
  setRequestAuthorization(headers) {
175724
176170
  if (this._settings.userName && this._settings.password) {
175725
176171
  (0,_request_utils__WEBPACK_IMPORTED_MODULE_6__.setBasicAuthorization)(headers, this._settings.userName, this._settings.password);
175726
176172
  }
175727
176173
  }
176174
+ /** The access client registered for this layer's format, if any.
176175
+ * @internal
176176
+ */
176177
+ get accessClient() {
176178
+ return _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry?.getAccessClient(this._settings.formatId);
176179
+ }
176180
+ /** True while at least one [[MapLayerFetchHandler]] is registered via [[MapLayerFormatRegistry.addMapLayerFetchHandler]].
176181
+ * @internal
176182
+ */
176183
+ get hasFetchHandler() {
176184
+ return (_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers.length ?? 0) > 0;
176185
+ }
175728
176186
  /** Returns true if the given URL has the same origin as this layer's settings URL.
175729
176187
  * Used to avoid leaking credentials to third-party hosts.
175730
176188
  * @internal
@@ -175794,28 +176252,12 @@ class MapLayerImageryProvider {
175794
176252
  logUntrustedOriginUse(url) {
175795
176253
  _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry.logUntrustedOriginUse(url);
175796
176254
  }
175797
- /** The redirect policy to apply to a request that carries browser credentials (see [[includeUserCredentials]]).
175798
- *
175799
- * When [[MapLayerFormatRegistry.restrictCredentialsToTrustedOrigins]] is enabled, redirects are refused
175800
- * outright (`"error"`). `fetch` cannot be asked to follow only same-origin redirects, and by the time a
175801
- * followed redirect can be inspected the credentials have already been delivered to the destination — so
175802
- * refusing is the only way to honour the guarantee that credentials reach none but the origins listed in
175803
- * [[MapLayerFormatRegistry.trustedCredentialsOrigins]]. Legitimate same-origin redirects fail as a result;
175804
- * that is the cost of the opt-in restriction.
175805
- *
175806
- * When the restriction is disabled (the default), redirects are followed as before and
175807
- * [[checkCredentialedRedirect]] reports the destination after the fact.
175808
- * @internal
175809
- */
175810
- get credentialedRedirect() {
175811
- return _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined;
175812
- }
175813
176255
  /** Detects that a request carrying browser credentials (see [[includeUserCredentials]]) was transparently
175814
176256
  * redirected to a different origin, and reports or logs that origin.
175815
176257
  *
175816
176258
  * This is a **best-effort, after-the-fact** signal used only while
175817
176259
  * [[MapLayerFormatRegistry.restrictCredentialsToTrustedOrigins]] is disabled, where credentialed requests
175818
- * still follow redirects (see [[credentialedRedirect]]). It cannot prevent the exposure — the credentials
176260
+ * still follow redirects (see [[credentialedFetchRedirect]]). It cannot prevent the exposure — the credentials
175819
176261
  * have already been sent — and it does not fire at all when the destination denies CORS, because `fetch`
175820
176262
  * then rejects instead of returning a `Response`. The destination origin is never latched as SSO-succeeded,
175821
176263
  * so credentials do not keep flowing to it.
@@ -175830,46 +176272,32 @@ class MapLayerImageryProvider {
175830
176272
  else
175831
176273
  this.logUntrustedOriginUse(response.url); // no-op when the restriction is enabled
175832
176274
  }
175833
- /** @internal */
175834
- async makeRequest(url, timeoutMs, authorization) {
175835
- let response;
175836
- let headers;
175837
- let hasCreds = false;
175838
- // Whether this request had basic-auth credentials of its own to offer. Requests carrying a caller-supplied
175839
- // `authorization` are excluded: those bypass the origin policy entirely.
175840
- const hasSettingsCreds = !authorization && !!this._settings.userName && !!this._settings.password;
175841
- if (authorization) {
175842
- headers = new Headers();
175843
- headers.set("Authorization", authorization);
175844
- }
175845
- else if (hasSettingsCreds) {
175846
- if (this.isCredentialsSharingAllowed(url)) {
175847
- hasCreds = true;
175848
- headers = new Headers();
175849
- this.setRequestAuthorization(headers);
175850
- if (!this.matchesSettingsUrlOrigin(url))
175851
- this.logUntrustedOriginUse(url);
175852
- }
175853
- }
175854
- const includeCredentials = this.includeUserCredentials(url);
176275
+ /** The default send for [[makeRequest]]: legacy redirect policy, NTLM/SSO handling and origin-trust
176276
+ * checks for one request. The SSO retry never applies to sends a fetch handler modified.
176277
+ */
176278
+ async sendDefaultRequest(request, credentialed, hasCreds, hasSettingsCreds, timeoutMs) {
176279
+ const requestUrl = request.url;
176280
+ const includeCredentials = this.includeUserCredentials(requestUrl);
175855
176281
  const opts = {
175856
176282
  method: "GET",
175857
- headers,
176283
+ headers: request.headers,
175858
176284
  credentials: includeCredentials ? "include" : undefined,
175859
- redirect: includeCredentials ? this.credentialedRedirect : undefined,
176285
+ // Sends the handler modified may carry injected secrets: same redirect policy as credentialed ones.
176286
+ redirect: (includeCredentials || credentialed) ? (0,_internal__WEBPACK_IMPORTED_MODULE_5__.credentialedFetchRedirect)() : undefined,
175860
176287
  };
175861
176288
  if (timeoutMs !== undefined)
175862
176289
  (0,_request_utils__WEBPACK_IMPORTED_MODULE_6__.setRequestTimeout)(opts, timeoutMs);
175863
- response = await fetch(url, opts);
175864
- if (includeCredentials)
175865
- this.checkCredentialedRedirect(url, response);
176290
+ let rsp = await fetch(requestUrl, opts);
176291
+ if (includeCredentials || credentialed)
176292
+ this.checkCredentialedRedirect(requestUrl, rsp);
175866
176293
  // fetch follows redirects transparently, so all trust decisions below target the final
175867
176294
  // (post-redirect) URL reported by the response, not the URL we asked for.
175868
- const challengedUrl = response.url || url;
175869
- if (response.status === 401
175870
- && (0,_request_utils__WEBPACK_IMPORTED_MODULE_6__.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])
176295
+ const challengedUrl = rsp.url || requestUrl;
176296
+ if (rsp.status === 401
176297
+ && (0,_request_utils__WEBPACK_IMPORTED_MODULE_6__.headersIncludeAuthMethod)(rsp.headers, ["ntlm", "negotiate"])
175871
176298
  && !includeCredentials
175872
- && !hasCreds) {
176299
+ && !hasCreds
176300
+ && !credentialed) {
175873
176301
  if (this.isSsoAllowed(challengedUrl)) {
175874
176302
  // Removed the previous headers and make sure "include" credentials is set
175875
176303
  opts.headers = undefined;
@@ -175879,8 +176307,8 @@ class MapLayerImageryProvider {
175879
176307
  opts.redirect = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined;
175880
176308
  this.logUntrustedOriginUse(challengedUrl);
175881
176309
  // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication)
175882
- response = await fetch(challengedUrl, opts);
175883
- if (response.status === 200) {
176310
+ rsp = await fetch(challengedUrl, opts);
176311
+ if (rsp.status === 200) {
175884
176312
  this.recordSsoSucceeded(challengedUrl); // avoid going through 401 challenges over and over for this origin
175885
176313
  }
175886
176314
  }
@@ -175888,16 +176316,69 @@ class MapLayerImageryProvider {
175888
176316
  this.reportBlockedOrigin(challengedUrl);
175889
176317
  }
175890
176318
  }
175891
- else if ((response.status === 401 || response.status === 403) && hasSettingsCreds && !this.isCredentialsSharingAllowed(challengedUrl)) {
176319
+ else if ((rsp.status === 401 || rsp.status === 403) && hasSettingsCreds && !credentialed && !this.isCredentialsSharingAllowed(challengedUrl)) {
175892
176320
  // Some servers answer an unauthenticated request with 403 (Forbidden) rather than a 401 challenge;
175893
176321
  // since this request could not present its credentials to the challenging origin, either status most
175894
- // likely results from that. The permission is recomputed for the challenged URL rather than reusing the
176322
+ // likely results from that (never on a send the handler modified: the handler classifies those).
176323
+ // The permission is recomputed for the challenged URL rather than reusing the
175895
176324
  // decision made for the requested one: `fetch` strips the Authorization header when it follows a
175896
176325
  // cross-origin redirect, so a trusted request can still arrive unauthenticated at an untrusted origin,
175897
176326
  // and conversely a request that started out untrusted may end up at an origin that is trusted.
175898
176327
  this.reportBlockedOrigin(challengedUrl);
175899
176328
  }
175900
- return response;
176329
+ return rsp;
176330
+ }
176331
+ /** @internal */
176332
+ async makeRequest(url, timeoutMs, authorization) {
176333
+ let headers;
176334
+ let hasCreds = false;
176335
+ // Whether this request had basic-auth credentials of its own to offer. Requests carrying a caller-supplied
176336
+ // `authorization` are excluded: those bypass the origin policy entirely.
176337
+ const hasSettingsCreds = !authorization && !!this._settings.userName && !!this._settings.password;
176338
+ if (authorization) {
176339
+ headers = new Headers();
176340
+ headers.set("Authorization", authorization);
176341
+ }
176342
+ else if (hasSettingsCreds) {
176343
+ if (this.isCredentialsSharingAllowed(url)) {
176344
+ hasCreds = true;
176345
+ headers = new Headers();
176346
+ this.setRequestAuthorization(headers);
176347
+ if (!this.matchesSettingsUrlOrigin(url))
176348
+ this.logUntrustedOriginUse(url);
176349
+ }
176350
+ }
176351
+ // Route the request through the registered fetch handler (if any), which has full control: it may
176352
+ // send a copy with other query parameters and headers, retry, or short-circuit. Handler failures propagate: the
176353
+ // request must never silently degrade to an unauthenticated one.
176354
+ try {
176355
+ const { response, managedByHandler } = await (0,_internal__WEBPACK_IMPORTED_MODULE_5__.fetchMapLayerRequest)({
176356
+ url,
176357
+ formatId: this._settings.formatId,
176358
+ layerUrl: this._settings.url,
176359
+ layerProperties: this._settings.properties,
176360
+ headers,
176361
+ send: async (request, credentialed) => this.sendDefaultRequest(request, credentialed, hasCreds, hasSettingsCreds, timeoutMs),
176362
+ });
176363
+ if (managedByHandler)
176364
+ this._handlerManagedResponses.add(response);
176365
+ return response;
176366
+ }
176367
+ catch (error) {
176368
+ if (error instanceof _internal__WEBPACK_IMPORTED_MODULE_5__.MapLayerAuthenticationFailedError)
176369
+ this.reportAuthenticationFailure();
176370
+ throw error;
176371
+ }
176372
+ }
176373
+ /** Responses of [[makeRequest]] managed by a fetch handler (see [[MapLayerFetchResult.managedByHandler]]). */
176374
+ _handlerManagedResponses = new WeakSet();
176375
+ /** Returns true if a fetch handler returned this [[makeRequest]] response as its own, in which case the
176376
+ * provider applies none of its default response handling (status-code or protocol-error classification):
176377
+ * the handler reports authentication failures by throwing [[MapLayerAuthenticationFailedError]] instead.
176378
+ * @internal
176379
+ */
176380
+ isManagedByHandler(response) {
176381
+ return this._handlerManagedResponses.has(response);
175901
176382
  }
175902
176383
  /** Returns a map layer tile at the specified settings. */
175903
176384
  async loadTile(row, column, zoomLevel) {
@@ -175932,16 +176413,39 @@ class MapLayerImageryProvider {
175932
176413
  headers = new Headers();
175933
176414
  this.setRequestAuthorization(headers);
175934
176415
  }
176416
+ let response;
175935
176417
  try {
175936
- const includeCredentials = this.includeUserCredentials(url);
175937
- const response = await fetch(url, {
175938
- method: "GET",
176418
+ ({ response } = await (0,_internal__WEBPACK_IMPORTED_MODULE_5__.fetchMapLayerRequest)({
176419
+ url,
176420
+ formatId: this._settings.formatId,
176421
+ layerUrl: this._settings.url,
176422
+ layerProperties: this._settings.properties,
175939
176423
  headers,
175940
- credentials: includeCredentials ? "include" : undefined,
175941
- redirect: includeCredentials ? this.credentialedRedirect : undefined,
175942
- });
175943
- if (includeCredentials)
175944
- this.checkCredentialedRedirect(url, response);
176424
+ send: async (request, credentialed) => {
176425
+ const requestUrl = request.url;
176426
+ const includeCredentials = this.includeUserCredentials(requestUrl);
176427
+ const rsp = await fetch(requestUrl, {
176428
+ method: "GET",
176429
+ headers: request.headers,
176430
+ credentials: includeCredentials ? "include" : undefined,
176431
+ redirect: (includeCredentials || credentialed) ? (0,_internal__WEBPACK_IMPORTED_MODULE_5__.credentialedFetchRedirect)() : undefined,
176432
+ });
176433
+ if (includeCredentials || credentialed)
176434
+ this.checkCredentialedRedirect(requestUrl, rsp);
176435
+ return rsp;
176436
+ },
176437
+ }));
176438
+ }
176439
+ catch (error) {
176440
+ // Never degrade to an unauthenticated request or reject (getToolTip callers do not catch); skip the tooltip.
176441
+ // The status transition the handler asked for still applies.
176442
+ if (error instanceof _internal__WEBPACK_IMPORTED_MODULE_5__.MapLayerAuthenticationFailedError)
176443
+ this.reportAuthenticationFailure();
176444
+ if (this.hasFetchHandler)
176445
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(loggerCategory, `Map-layer fetch handler failed for tooltip request: ${_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BentleyError.getErrorMessage(error)}`);
176446
+ return;
176447
+ }
176448
+ try {
175945
176449
  let text = await response.text();
175946
176450
  if (text) {
175947
176451
  // Tooltip content (e.g. WMS GetFeatureInfo responses) is rendered as HTML downstream and may
@@ -176063,11 +176567,7 @@ class MapLayerImageryProvider {
176063
176567
  * @internal
176064
176568
  */
176065
176569
  appendCustomParams(url) {
176066
- if (!this._settings.savedQueryParams && !this._settings.unsavedQueryParams)
176067
- return url;
176068
- let tmpUrl = (0,_internal__WEBPACK_IMPORTED_MODULE_5__.appendQueryParams)(url, this._settings.savedQueryParams);
176069
- tmpUrl = (0,_internal__WEBPACK_IMPORTED_MODULE_5__.appendQueryParams)(tmpUrl, this._settings.unsavedQueryParams);
176070
- return tmpUrl;
176570
+ return (0,_internal__WEBPACK_IMPORTED_MODULE_5__.appendQueryParams)(url, this._settings.collectQueryParams());
176071
176571
  }
176072
176572
  }
176073
176573
 
@@ -176146,21 +176646,33 @@ class MapLayerSource {
176146
176646
  transparentBackground;
176147
176647
  userName;
176148
176648
  password;
176149
- /** List of query parameters that will get appended to the source URL that should be be persisted part of the JSON representation.
176649
+ /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses
176650
+ * and `delete` keep working.
176651
+ * @deprecated in 5.16. Use [[queryParams]].
176150
176652
  * @beta
176151
176653
  */
176152
176654
  savedQueryParams;
176655
+ /** Non-secret query parameters appended to every request made for the source, persisted as part of the JSON
176656
+ * representation ([[MapLayerSourceProps.queryParams]]). Secrets must never be placed here; the hosting application
176657
+ * injects them per session through a [[MapLayerFetchHandler]].
176658
+ * @beta
176659
+ */
176660
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- the deprecated field is the storage until its removal.
176661
+ get queryParams() { return this.savedQueryParams; }
176662
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
176663
+ set queryParams(value) { this.savedQueryParams = value; }
176153
176664
  /** List of query parameters that will get appended to the source URL that should *not* be be persisted part of the JSON representation.
176665
+ * @deprecated in 5.16. Register a [[MapLayerFetchHandler]] ([[MapLayerFormatRegistry.addMapLayerFetchHandler]]) to inject secret or per-session parameters, which unlike this field are protected against leaking through redirects; use [[queryParams]] for non-secret parameters.
176154
176666
  * @beta
176155
176667
  */
176156
176668
  unsavedQueryParams;
176157
- constructor(formatId = "WMS", name, url, baseMap = false, transparentBackground = true, savedQueryParams) {
176669
+ constructor(formatId = "WMS", name, url, baseMap = false, transparentBackground = true, queryParams) {
176158
176670
  this.formatId = formatId;
176159
176671
  this.name = name;
176160
176672
  this.url = url;
176161
176673
  this.baseMap = baseMap;
176162
176674
  this.transparentBackground = transparentBackground;
176163
- this.savedQueryParams = savedQueryParams;
176675
+ this.queryParams = queryParams;
176164
176676
  }
176165
176677
  static fromJSON(json) {
176166
176678
  if (json === undefined)
@@ -176184,7 +176696,7 @@ class MapLayerSource {
176184
176696
  return undefined;
176185
176697
  }
176186
176698
  toJSON() {
176187
- return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground, queryParams: this.savedQueryParams };
176699
+ return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground, queryParams: this.queryParams };
176188
176700
  }
176189
176701
  toLayerSettings(subLayers) {
176190
176702
  // When MapLayerSetting is created from a MapLayerSource, sub-layers and credentials need to be set separately.
@@ -176192,10 +176704,12 @@ class MapLayerSource {
176192
176704
  if (this.userName !== undefined || this.password !== undefined) {
176193
176705
  layerSettings?.setCredentials(this.userName, this.password);
176194
176706
  }
176195
- if (this.savedQueryParams) {
176196
- layerSettings.savedQueryParams = { ...this.savedQueryParams };
176707
+ if (this.queryParams) {
176708
+ layerSettings.queryParams = { ...this.queryParams };
176197
176709
  }
176710
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
176198
176711
  if (this.unsavedQueryParams) {
176712
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
176199
176713
  layerSettings.unsavedQueryParams = { ...this.unsavedQueryParams };
176200
176714
  }
176201
176715
  return layerSettings;
@@ -176203,14 +176717,17 @@ class MapLayerSource {
176203
176717
  getCredentials() {
176204
176718
  return this.userName && this.password ? { user: this.userName, password: this.password } : undefined;
176205
176719
  }
176206
- /** Collect all query parameters
176207
- * @beta
176208
- */
176720
+ /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`
176721
+ * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.
176722
+ * @beta
176723
+ */
176209
176724
  collectQueryParams() {
176210
176725
  let queryParams = {};
176211
- if (this.savedQueryParams)
176212
- queryParams = { ...this.savedQueryParams };
176726
+ if (this.queryParams)
176727
+ queryParams = { ...this.queryParams };
176728
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
176213
176729
  if (this.unsavedQueryParams)
176730
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
176214
176731
  queryParams = { ...queryParams, ...this.unsavedQueryParams };
176215
176732
  return queryParams;
176216
176733
  }
@@ -190090,10 +190607,35 @@ class ToolAdmin {
190090
190607
  return false;
190091
190608
  }
190092
190609
  }
190093
- /** Called when [[doUndoOperation]] or [[doRedoOperation]] fails to reverse or reinstate a Txn.
190610
+ /** Called to undo all changes made to the briefcase in the current session.
190611
+ * @returns `true` if all changes were reversed or there was nothing to undo, `false` otherwise.
190612
+ * @see [[doUndoOperation]] to undo only the most recent operation.
190613
+ * @beta
190614
+ */
190615
+ async doUndoAllOperation() {
190616
+ const imodel = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.viewManager.selectedView?.view.iModel;
190617
+ if (undefined === imodel || imodel.isReadonly || !imodel.isBriefcaseConnection())
190618
+ return false;
190619
+ if (!await this.finishEditCommandForTxnOperation())
190620
+ return false;
190621
+ let status;
190622
+ try {
190623
+ status = await imodel.txns.reverseAll();
190624
+ }
190625
+ catch (error) {
190626
+ await this.onTxnOperationError("undoAll", error);
190627
+ return false;
190628
+ }
190629
+ if (_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.IModelStatus.Success === status || _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.IModelStatus.NothingToUndo === status)
190630
+ return true;
190631
+ await this.onTxnOperationError("undoAll", new _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.IModelError(status, "Failed to undo all changes"));
190632
+ return false;
190633
+ }
190634
+ /** Called when [[doUndoOperation]], [[doRedoOperation]] or [[doUndoAllOperation]] fails to reverse or reinstate Txns.
190094
190635
  * @param _operation The operation that failed.
190095
- * @param _error The error thrown by [[BriefcaseTxns.reverseSingleTxnAsync]] or [[BriefcaseTxns.reinstateTxnAsync]].
190096
- * @note Implementations should not throw. Any exception thrown by this method propagates to the caller of [[doUndoOperation]] or [[doRedoOperation]].
190636
+ * @param _error The error thrown by [[BriefcaseTxns.reverseSingleTxnAsync]], [[BriefcaseTxns.reinstateTxnAsync]] or [[BriefcaseTxns.reverseAll]].
190637
+ * If [[BriefcaseTxns.reverseAll]] returns an unsuccessful status, this is an [IModelError]($common) with that status as its `errorNumber`.
190638
+ * @note Implementations should not throw. Any exception thrown by this method propagates to the caller of [[doUndoOperation]], [[doRedoOperation]] or [[doUndoAllOperation]].
190097
190639
  * @beta
190098
190640
  */
190099
190641
  async onTxnOperationError(_operation, _error) { }
@@ -324183,7 +324725,7 @@ exports.TestContext = void 0;
324183
324725
  const chai_1 = __webpack_require__(/*! chai */ "../../common/temp/node_modules/.pnpm/chai@4.5.0/node_modules/chai/index.js");
324184
324726
  const core_bentley_1 = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
324185
324727
  const core_frontend_1 = __webpack_require__(/*! @itwin/core-frontend */ "../../core/frontend/lib/esm/core-frontend.js");
324186
- const frontend_1 = __webpack_require__(/*! @itwin/oidc-signin-tool/lib/cjs/frontend */ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@5.1_8b352cd6ee6239e21c2765f3a789e8fa/node_modules/@itwin/oidc-signin-tool/lib/cjs/frontend.js");
324728
+ const frontend_1 = __webpack_require__(/*! @itwin/oidc-signin-tool/lib/cjs/frontend */ "../../common/temp/node_modules/.pnpm/@itwin+oidc-signin-tool@6.2_e7b0f93268ba392b62030a9909ee634e/node_modules/@itwin/oidc-signin-tool/lib/cjs/frontend.js");
324187
324729
  const Settings_1 = __webpack_require__(/*! ../../common/Settings */ "./lib/common/Settings.js");
324188
324730
  const SideChannels_1 = __webpack_require__(/*! ../../common/SideChannels */ "./lib/common/SideChannels.js");
324189
324731
  const IModelSession_1 = __webpack_require__(/*! ./IModelSession */ "./lib/frontend/setup/IModelSession.js");
@@ -337731,7 +338273,7 @@ class WMS {
337731
338273
  (module) {
337732
338274
 
337733
338275
  "use strict";
337734
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.15.1","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 && npm run -s build:esm && npm run -s build:workers && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts && npm run -s extract","extract":"betools extract --fileExt=ts --extractFrom=./src/test/example-code --recursive --out=../../generated-docs/extract","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run build:test-worker && vitest --run","cover":"npm run build:test-worker && vitest --run","build:test-worker":"vite build --config ./src/test/worker/vite.config.mts 1>&2","build:workers":"rimraf lib/workers/webpack && vite build --config ./src/workers/ImdlParser/vite.config.mts 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//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":{"@bentley/aec-units-schema":"^1.0.3","@bentley/formats-schema":"^1.0.0","@bentley/units-schema":"^1.0.12","@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/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/object-storage-core":"^3.0.4","@itwin/eslint-plugin":"^6.0.0","@types/node":"~20.17.0","@types/sinon":"^17.0.2","@vitest/browser-playwright":"^4.1.10","@vitest/coverage-v8":"^4.1.10","cpx2":"^8.0.0","eslint":"^9.31.0","playwright":"~1.56.1","rimraf":"^6.0.1","sinon":"^17.0.2","typescript":"~5.6.2","vite":"^6.4.4","vitest":"^4.1.10"},"//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/webgl-compatibility":"workspace:*","@loaders.gl/core":"^4.4.5","@loaders.gl/draco":"^4.4.5","fuse.js":"^3.3.0","wms-capabilities":"0.6.0"}}');
338276
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.16.0-dev.11","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 && npm run -s build:esm && npm run -s build:workers && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts && npm run -s extract","extract":"betools extract --fileExt=ts --extractFrom=./src/test/example-code --recursive --out=../../generated-docs/extract","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run build:test-worker && vitest --run","cover":"npm run build:test-worker && vitest --run","build:test-worker":"vite build --config ./src/test/worker/vite.config.mts 1>&2","build:workers":"rimraf lib/workers/webpack && vite build --config ./src/workers/ImdlParser/vite.config.mts 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//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":{"@bentley/aec-units-schema":"catalog:schemas","@bentley/formats-schema":"catalog:schemas","@bentley/units-schema":"catalog:schemas","@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/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/object-storage-core":"catalog:imodels-clients","@itwin/eslint-plugin":"catalog:linting","@types/node":"catalog:build","@types/sinon":"catalog:testing","@vitest/browser-playwright":"catalog:testing","@vitest/coverage-v8":"catalog:testing","cpx2":"catalog:build","eslint":"catalog:linting","playwright":"catalog:testing","rimraf":"catalog:build","sinon":"catalog:testing","typescript":"catalog:build","vite":"catalog:bundling","vitest":"catalog:testing"},"//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/webgl-compatibility":"workspace:*","@loaders.gl/core":"^4.4.5","@loaders.gl/draco":"^4.4.5","fuse.js":"^3.3.0","wms-capabilities":"0.6.0"}}');
337735
338277
 
337736
338278
  /***/ },
337737
338279