@itwin/rpcinterface-full-stack-tests 5.16.0-dev.4 → 5.16.0-dev.5

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.
@@ -56955,12 +56955,24 @@ class ImageMapLayerSettings extends MapLayerSettings {
56955
56955
  userName;
56956
56956
  password;
56957
56957
  accessKey;
56958
- /** List of query parameters to append to the settings URL and persisted as part of the JSON representation.
56959
- * @note Sensitive information like user credentials should be provided in [[unsavedQueryParams]] to ensure it is never persisted.
56958
+ /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses
56959
+ * and `delete` keep working.
56960
+ * @deprecated in 5.16. Use [[queryParams]].
56960
56961
  * @beta
56961
56962
  */
56962
56963
  savedQueryParams;
56964
+ /** Non-secret query parameters appended to every request made for the layer, persisted as part of the JSON
56965
+ * representation ([[ImageMapLayerProps.queryParams]]). Secrets must never be placed here; the hosting application
56966
+ * injects them per session through a fetch handler (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in
56967
+ * `@itwin/core-frontend`), which also protects them against leaking through redirects.
56968
+ * @beta
56969
+ */
56970
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- the deprecated field is the storage until its removal.
56971
+ get queryParams() { return this.savedQueryParams; }
56972
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
56973
+ set queryParams(value) { this.savedQueryParams = value; }
56963
56974
  /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.
56975
+ * @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.
56964
56976
  * @beta
56965
56977
  */
56966
56978
  unsavedQueryParams;
@@ -56978,7 +56990,7 @@ class ImageMapLayerSettings extends MapLayerSettings {
56978
56990
  this.url = props.url;
56979
56991
  this.accessKey = props.accessKey;
56980
56992
  if (props.queryParams) {
56981
- this.savedQueryParams = { ...props.queryParams };
56993
+ this.queryParams = { ...props.queryParams };
56982
56994
  }
56983
56995
  if (props.properties) {
56984
56996
  this.properties = { ...props.properties };
@@ -57002,8 +57014,8 @@ class ImageMapLayerSettings extends MapLayerSettings {
57002
57014
  props.formatId = this.formatId;
57003
57015
  if (this.subLayers.length > 0)
57004
57016
  props.subLayers = this.subLayers.map((x) => x.toJSON());
57005
- if (this.savedQueryParams)
57006
- props.queryParams = { ...this.savedQueryParams };
57017
+ if (this.queryParams)
57018
+ props.queryParams = { ...this.queryParams };
57007
57019
  if (this.properties) {
57008
57020
  props.properties = structuredClone(this.properties);
57009
57021
  }
@@ -57018,10 +57030,10 @@ class ImageMapLayerSettings extends MapLayerSettings {
57018
57030
  // Clone members not part of MapLayerProps
57019
57031
  clone.userName = this.userName;
57020
57032
  clone.password = this.password;
57033
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
57021
57034
  if (this.unsavedQueryParams)
57035
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
57022
57036
  clone.unsavedQueryParams = { ...this.unsavedQueryParams };
57023
- if (this.savedQueryParams)
57024
- clone.savedQueryParams = { ...this.savedQueryParams };
57025
57037
  return clone;
57026
57038
  }
57027
57039
  /** @internal */
@@ -57034,8 +57046,8 @@ class ImageMapLayerSettings extends MapLayerSettings {
57034
57046
  if (changedProps.queryParams) {
57035
57047
  props.queryParams = { ...changedProps.queryParams };
57036
57048
  }
57037
- else if (this.savedQueryParams) {
57038
- props.queryParams = { ...this.savedQueryParams };
57049
+ else if (this.queryParams) {
57050
+ props.queryParams = { ...this.queryParams };
57039
57051
  }
57040
57052
  if (changedProps.properties) {
57041
57053
  props.properties = { ...changedProps.properties };
@@ -57111,14 +57123,17 @@ class ImageMapLayerSettings extends MapLayerSettings {
57111
57123
  this.userName = userName;
57112
57124
  this.password = password;
57113
57125
  }
57114
- /** Collect all query parameters
57115
- * @beta
57116
- */
57126
+ /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`
57127
+ * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.
57128
+ * @beta
57129
+ */
57117
57130
  collectQueryParams() {
57118
57131
  let queryParams = {};
57119
- if (this.savedQueryParams)
57120
- queryParams = { ...this.savedQueryParams };
57132
+ if (this.queryParams)
57133
+ queryParams = { ...this.queryParams };
57134
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
57121
57135
  if (this.unsavedQueryParams)
57136
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
57122
57137
  queryParams = { ...queryParams, ...this.unsavedQueryParams };
57123
57138
  return queryParams;
57124
57139
  }
@@ -136164,6 +136179,7 @@ __webpack_require__.r(__webpack_exports__);
136164
136179
  /* harmony export */ ManipulatorToolEvent: () => (/* reexport safe */ _tools_ToolAdmin__WEBPACK_IMPORTED_MODULE_115__.ManipulatorToolEvent),
136165
136180
  /* harmony export */ MapCartoRectangle: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapCartoRectangle),
136166
136181
  /* harmony export */ MapFeatureInfoRecord: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapFeatureInfoRecord),
136182
+ /* harmony export */ MapLayerAuthenticationFailedError: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerAuthenticationFailedError),
136167
136183
  /* harmony export */ MapLayerFeatureRecord: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerFeatureRecord),
136168
136184
  /* harmony export */ MapLayerFormat: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerFormat),
136169
136185
  /* harmony export */ MapLayerFormatRegistry: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerFormatRegistry),
@@ -136173,6 +136189,7 @@ __webpack_require__.r(__webpack_exports__);
136173
136189
  /* harmony export */ MapLayerSourceStatus: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerSourceStatus),
136174
136190
  /* harmony export */ MapLayerSources: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerSources),
136175
136191
  /* harmony export */ MapLayerTileTreeReference: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapLayerTileTreeReference),
136192
+ /* harmony export */ MapLayerUntrustedOriginError: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.MapLayerUntrustedOriginError),
136176
136193
  /* harmony export */ MapTile: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapTile),
136177
136194
  /* harmony export */ MapTileProjection: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapTileProjection),
136178
136195
  /* harmony export */ MapTileTree: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.MapTileTree),
@@ -136388,10 +136405,12 @@ __webpack_require__.r(__webpack_exports__);
136388
136405
  /* harmony export */ createQuantityDescription: () => (/* reexport safe */ _properties_FormattedQuantityDescription__WEBPACK_IMPORTED_MODULE_72__.createQuantityDescription),
136389
136406
  /* harmony export */ createSpatialTileTreeReferences: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.createSpatialTileTreeReferences),
136390
136407
  /* harmony export */ createWorkerProxy: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_12__.createWorkerProxy),
136408
+ /* harmony export */ credentialedFetchRedirect: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.credentialedFetchRedirect),
136391
136409
  /* harmony export */ deflateCoordinates: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.deflateCoordinates),
136392
136410
  /* harmony export */ extractImageSourceDimensions: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_12__.extractImageSourceDimensions),
136393
136411
  /* harmony export */ eyeToCartographicOnGlobe: () => (/* reexport safe */ _ViewGlobalLocation__WEBPACK_IMPORTED_MODULE_60__.eyeToCartographicOnGlobe),
136394
136412
  /* harmony export */ eyeToCartographicOnGlobeFromGcs: () => (/* reexport safe */ _ViewGlobalLocation__WEBPACK_IMPORTED_MODULE_60__.eyeToCartographicOnGlobeFromGcs),
136413
+ /* harmony export */ fetchMapLayerRequest: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.fetchMapLayerRequest),
136395
136414
  /* harmony export */ formatAnimationBranchId: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_125__.formatAnimationBranchId),
136396
136415
  /* harmony export */ getCenteredViewRect: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_12__.getCenteredViewRect),
136397
136416
  /* harmony export */ getCesiumAssetUrl: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_101__.getCesiumAssetUrl),
@@ -138804,6 +138823,7 @@ __webpack_require__.r(__webpack_exports__);
138804
138823
  /* harmony export */ LayerTileTreeHandler: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.LayerTileTreeHandler),
138805
138824
  /* harmony export */ LayerTileTreeReferenceHandler: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.LayerTileTreeReferenceHandler),
138806
138825
  /* harmony export */ LogoDecoration: () => (/* reexport safe */ _GoogleMapsDecorator__WEBPACK_IMPORTED_MODULE_9__.LogoDecoration),
138826
+ /* harmony export */ MapLayerUntrustedOriginError: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.MapLayerUntrustedOriginError),
138807
138827
  /* harmony export */ MapTileTreeReference: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.MapTileTreeReference),
138808
138828
  /* harmony export */ OnScreenTarget: () => (/* reexport safe */ _render_webgl_Target__WEBPACK_IMPORTED_MODULE_3__.OnScreenTarget),
138809
138829
  /* harmony export */ PerformanceMetrics: () => (/* reexport safe */ _render_webgl_PerformanceMetrics__WEBPACK_IMPORTED_MODULE_4__.PerformanceMetrics),
@@ -138821,7 +138841,9 @@ __webpack_require__.r(__webpack_exports__);
138821
138841
  /* harmony export */ appendQueryParams: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.appendQueryParams),
138822
138842
  /* harmony export */ collectMaskRefs: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.collectMaskRefs),
138823
138843
  /* harmony export */ createSpatialTileTreeReferences: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.createSpatialTileTreeReferences),
138844
+ /* harmony export */ credentialedFetchRedirect: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.credentialedFetchRedirect),
138824
138845
  /* harmony export */ deflateCoordinates: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.deflateCoordinates),
138846
+ /* harmony export */ fetchMapLayerRequest: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.fetchMapLayerRequest),
138825
138847
  /* harmony export */ formatAnimationBranchId: () => (/* reexport safe */ _render_AnimationBranchState__WEBPACK_IMPORTED_MODULE_6__.formatAnimationBranchId)
138826
138848
  /* harmony export */ });
138827
138849
  /* harmony import */ var _common_internal_Symbols__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/internal/Symbols */ "../../core/frontend/lib/esm/common/internal/Symbols.js");
@@ -177907,6 +177929,8 @@ class ArcGisUtilities {
177907
177929
  metadata = await this.getServiceJson({ url: source.url, formatId: source.formatId, userName: source.userName, password: source.password, queryParams: source.collectQueryParams(), ignoreCache });
177908
177930
  }
177909
177931
  catch (err) {
177932
+ if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerAuthenticationFailedError)
177933
+ return { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
177910
177934
  if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError) {
177911
177935
  let blockedOrigin;
177912
177936
  try {
@@ -177921,16 +177945,17 @@ class ArcGisUtilities {
177921
177945
  if (json === undefined) {
177922
177946
  return { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidUrl };
177923
177947
  }
177924
- else if (json.error !== undefined) {
177948
+ const errorCode = metadata?.errorCode;
177949
+ if (errorCode !== undefined) {
177925
177950
  // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers
177926
177951
  // and return information needed to initiate the authentification process... the end-user
177927
177952
  // will have to provide his credentials before we can fully validate this source.
177928
177953
  // Note: Some servers will throw a error 403 (You do not have permissions to access this resource or perform this operation),
177929
177954
  // instead of 499 (TokenRequired)
177930
- if (json.error.code === ArcGisErrorCode.TokenRequired || json.error.code === ArcGisErrorCode.MissingPermissions) {
177955
+ if (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.MissingPermissions) {
177931
177956
  return (source.userName || source.password) ? { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials } : { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
177932
177957
  }
177933
- else if (json.error.code === ArcGisErrorCode.InvalidCredentials)
177958
+ else if (errorCode === ArcGisErrorCode.InvalidCredentials)
177934
177959
  return { status: _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials };
177935
177960
  }
177936
177961
  // Check this service support the expected queries
@@ -177981,11 +178006,17 @@ class ArcGisUtilities {
177981
178006
  * @param requireToken Flag to indicate if a token is required
177982
178007
  * @throws [[MapLayerUntrustedOriginError]] if an NTLM/Negotiate challenge could not be answered because
177983
178008
  * the URL's origin is not trusted (see [[MapLayerFormatRegistry.restrictCredentialsToTrustedOrigins]]);
178009
+ * [[MapLayerAuthenticationFailedError]] if a registered [[MapLayerFetchHandler]] reported an
178010
+ * authentication failure;
177984
178011
  * all other errors are caught and reported by returning `undefined`.
177985
178012
  */
177986
178013
  static async getServiceJson(args) {
177987
- const { url, formatId, userName, password, queryParams, ignoreCache, requireToken } = args;
177988
- if (!ignoreCache) {
178014
+ const { url, layerUrl = url, layerProperties, formatId, userName, password, queryParams, ignoreCache, requireToken } = args;
178015
+ const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry?.getAccessClient(formatId);
178016
+ // The cache is keyed by URL only, so responses customized by the fetch handler (e.g.
178017
+ // header-authenticated) must not be shared with or served from differently-customized requests.
178018
+ const hasFetchHandler = (_IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers.length ?? 0) > 0;
178019
+ if (!ignoreCache && !hasFetchHandler) {
177989
178020
  const cached = ArcGisUtilities._serviceCache.get(url);
177990
178021
  if (cached !== undefined)
177991
178022
  return cached;
@@ -178004,55 +178035,71 @@ class ArcGisUtilities {
178004
178035
  appendParams(tmpUrl, queryParams);
178005
178036
  return tmpUrl;
178006
178037
  };
178038
+ // Routes each request through the registered fetch handler (if any); handler failures propagate.
178039
+ // The NTLM/SSO retry applies only to the initial request, and never to sends the handler modified.
178040
+ const requestJson = async (target, allowSsoRetry) => {
178041
+ return (0,_tile_internal__WEBPACK_IMPORTED_MODULE_1__.fetchMapLayerRequest)({
178042
+ url: target.toString(),
178043
+ formatId,
178044
+ layerUrl,
178045
+ layerProperties,
178046
+ send: async (request, credentialed) => {
178047
+ // Sends the handler modified may carry injected secrets: same redirect policy as credentialed ones.
178048
+ let rsp = await fetch(request.url, { method: "GET", headers: request.headers, redirect: credentialed ? (0,_tile_internal__WEBPACK_IMPORTED_MODULE_1__.credentialedFetchRedirect)() : undefined });
178049
+ if (allowSsoRetry && rsp.status === 401 && !requireToken && !credentialed && (0,_request_utils__WEBPACK_IMPORTED_MODULE_3__.headersIncludeAuthMethod)(rsp.headers, ["ntlm", "negotiate"])) {
178050
+ // fetch follows redirects transparently, so trust decisions target the final (post-redirect) URL.
178051
+ const challengedUrl = rsp.url || request.url;
178052
+ if (!_IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.isSsoAllowed(challengedUrl))
178053
+ throw new _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError(challengedUrl);
178054
+ _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.logUntrustedOriginUse(challengedUrl);
178055
+ // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication).
178056
+ rsp = await fetch(challengedUrl, {
178057
+ method: "GET",
178058
+ credentials: "include",
178059
+ redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
178060
+ });
178061
+ }
178062
+ return rsp;
178063
+ },
178064
+ });
178065
+ };
178007
178066
  let accessTokenRequired = false;
178008
178067
  try {
178009
178068
  let tmpUrl = createUrlObj();
178010
178069
  // In some cases, caller might already know token is required, so append it immediately
178011
178070
  if (requireToken) {
178012
- const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);
178013
178071
  if (accessClient) {
178014
178072
  accessTokenRequired = true;
178015
178073
  await ArcGisUtilities.appendSecurityToken(tmpUrl, accessClient, { mapLayerUrl: new URL(url), userName, password });
178016
178074
  }
178017
178075
  }
178018
- let response = await fetch(tmpUrl, { method: "GET" });
178019
- if (response.status === 401 && !requireToken && (0,_request_utils__WEBPACK_IMPORTED_MODULE_3__.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])) {
178020
- // fetch follows redirects transparently, so trust decisions target the final (post-redirect) URL.
178021
- const challengedUrl = response.url || tmpUrl.toString();
178022
- if (!_IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.isSsoAllowed(challengedUrl))
178023
- throw new _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError(challengedUrl);
178024
- _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.logUntrustedOriginUse(challengedUrl);
178025
- // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication).
178026
- response = await fetch(challengedUrl, {
178027
- method: "GET",
178028
- credentials: "include",
178029
- redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
178030
- });
178031
- }
178076
+ let { response, managedByHandler } = await requestJson(tmpUrl, true);
178032
178077
  // Append security token when corresponding error code is returned by ArcGIS service
178033
- let errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);
178078
+ const errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);
178034
178079
  if (!accessTokenRequired
178035
178080
  && (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.MissingPermissions)) {
178036
178081
  accessTokenRequired = true;
178037
178082
  // If token required
178038
- const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);
178039
178083
  if (accessClient) {
178040
178084
  tmpUrl = createUrlObj();
178041
178085
  await ArcGisUtilities.appendSecurityToken(tmpUrl, accessClient, { mapLayerUrl: new URL(url), userName, password });
178042
- response = await fetch(tmpUrl.toString(), { method: "GET" });
178043
- errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);
178086
+ ({ response, managedByHandler } = await requestJson(tmpUrl, false));
178044
178087
  }
178045
178088
  }
178046
178089
  const json = await response.json();
178047
- const info = { content: json, accessTokenRequired };
178048
- // Cache the response only if it doesn't contain any error.
178049
- ArcGisUtilities._serviceCache.set(url, (errorCode === undefined ? info : undefined));
178090
+ // Classified from the parsed body regardless of the Content-Type the server labelled it with.
178091
+ const contentErrorCode = json?.error?.code;
178092
+ const info = { content: json, accessTokenRequired, errorCode: managedByHandler ? undefined : contentErrorCode };
178093
+ // Cache the response only if it doesn't contain any error, and never when a fetch handler managed it or
178094
+ // is registered (the cache is keyed by URL only, so protected data must not be cached).
178095
+ if (!hasFetchHandler && !managedByHandler)
178096
+ ArcGisUtilities._serviceCache.set(url, (contentErrorCode === undefined ? info : undefined));
178050
178097
  return info; // Always return json, even though it contains an error code.
178051
178098
  }
178052
178099
  catch (err) {
178053
178100
  ArcGisUtilities._serviceCache.set(url, undefined);
178054
- if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError)
178055
- throw err; // propagate so callers can report the blocked origin
178101
+ if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerUntrustedOriginError || err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerAuthenticationFailedError)
178102
+ throw err; // propagate so callers can report the blocked origin / authentication failure
178056
178103
  return undefined;
178057
178104
  }
178058
178105
  }
@@ -178188,6 +178235,8 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
178188
178235
  */
178189
178236
  _accessTokenRequired = false;
178190
178237
  _querySupported = false;
178238
+ /** Responses of [[fetch]] managed by a fetch handler (see [[MapLayerFetchResult.managedByHandler]]). */
178239
+ _handlerManagedFetchResponses = new WeakSet();
178191
178240
  get supportsMapFeatureInfo() { return this._querySupported; }
178192
178241
  constructor(settings, usesCachedTiles) {
178193
178242
  super(settings, usesCachedTiles);
@@ -178212,11 +178261,13 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
178212
178261
  async getServiceJson() {
178213
178262
  let metadata;
178214
178263
  try {
178215
- 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() });
178264
+ 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() });
178216
178265
  }
178217
178266
  catch (err) {
178218
178267
  if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerUntrustedOriginError)
178219
178268
  this.reportBlockedOrigin(err.url);
178269
+ else if (err instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerAuthenticationFailedError)
178270
+ this.setStatus(_tile_internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerImageryProviderStatus.RequireAuth);
178220
178271
  }
178221
178272
  if (metadata && metadata.accessTokenRequired) {
178222
178273
  const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.getAccessClient(this._settings.formatId);
@@ -178234,6 +178285,56 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
178234
178285
  }
178235
178286
  return metadata;
178236
178287
  }
178288
+ /** The default send for [[fetch]]: legacy redirect policy and origin-trust checks for one target.
178289
+ * The NTLM/SSO retry applies only when `allowSsoRetry` (the initial request of an operation), and
178290
+ * never to sends a fetch handler modified.
178291
+ */
178292
+ async sendArcGisRequest(request, credentialed, allowSsoRetry, options) {
178293
+ const includeCredentials = this.includeUserCredentials(request.url);
178294
+ let rsp = await fetch(request.url, {
178295
+ ...options,
178296
+ headers: request.headers,
178297
+ credentials: includeCredentials ? "include" : undefined,
178298
+ // Sends the handler modified may carry injected secrets: same redirect policy as credentialed ones.
178299
+ redirect: (includeCredentials || credentialed) ? ((0,_tile_internal__WEBPACK_IMPORTED_MODULE_0__.credentialedFetchRedirect)() ?? options?.redirect) : options?.redirect,
178300
+ });
178301
+ if (includeCredentials || credentialed)
178302
+ this.checkCredentialedRedirect(request.url, rsp);
178303
+ if (allowSsoRetry && rsp.status === 401 && !this._lastAccessToken && !credentialed && (0,_request_utils__WEBPACK_IMPORTED_MODULE_3__.headersIncludeAuthMethod)(rsp.headers, ["ntlm", "negotiate"])) {
178304
+ // fetch follows redirects transparently, so trust decisions target the final (post-redirect) URL.
178305
+ const challengedUrl = rsp.url || request.url;
178306
+ if (this.isSsoAllowed(challengedUrl)) {
178307
+ // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication).
178308
+ this.logUntrustedOriginUse(challengedUrl);
178309
+ rsp = await fetch(challengedUrl, {
178310
+ ...options,
178311
+ credentials: "include",
178312
+ redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
178313
+ });
178314
+ if (rsp.status === 200) {
178315
+ this.recordSsoSucceeded(challengedUrl); // avoid going through 401 challenges over and over for this origin
178316
+ }
178317
+ }
178318
+ else {
178319
+ this.reportBlockedOrigin(challengedUrl);
178320
+ }
178321
+ }
178322
+ return rsp;
178323
+ }
178324
+ /** Routes one request - initial, HTML fallback or token retry - through the registered fetch handler
178325
+ * (if any), with fresh headers per request so injected values are neither accumulated nor exposed to
178326
+ * cross-origin redirects.
178327
+ */
178328
+ async requestViaHandler(target, allowSsoRetry, options) {
178329
+ return (0,_tile_internal__WEBPACK_IMPORTED_MODULE_0__.fetchMapLayerRequest)({
178330
+ url: target.toString(),
178331
+ formatId: this._settings.formatId,
178332
+ layerUrl: this._settings.url,
178333
+ layerProperties: this._settings.properties,
178334
+ headers: new Headers(options?.headers),
178335
+ send: async (request, credentialed) => this.sendArcGisRequest(request, credentialed, allowSsoRetry, options),
178336
+ });
178337
+ }
178237
178338
  /**
178238
178339
  * Make a request to an ArcGIS service using the provided URL and init parameters.
178239
178340
  * @param url URL to query
@@ -178242,19 +178343,24 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
178242
178343
  */
178243
178344
  async fetch(url, options) {
178244
178345
  let errorCode;
178245
- const urlObj = new URL(url);
178246
178346
  const queryParams = this._settings.collectQueryParams();
178247
- Object.keys(queryParams).forEach((paramKey) => {
178248
- if (!urlObj.searchParams.has(paramKey))
178249
- urlObj.searchParams.append(paramKey, queryParams[paramKey]);
178250
- });
178251
- if (this._accessTokenRequired && this._accessClient) {
178252
- this._lastAccessToken = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {
178253
- mapLayerUrl: new URL(this._settings.url),
178254
- portal: typeof this._settings.properties?.portal === "string" ? this._settings.properties.portal : undefined,
178255
- userName: this._settings.userName,
178256
- password: this._settings.password
178347
+ const buildRequestUrl = () => {
178348
+ const requestUrl = new URL(url);
178349
+ Object.keys(queryParams).forEach((paramKey) => {
178350
+ if (!requestUrl.searchParams.has(paramKey))
178351
+ requestUrl.searchParams.append(paramKey, queryParams[paramKey]);
178257
178352
  });
178353
+ return requestUrl;
178354
+ };
178355
+ const accessTokenParams = {
178356
+ mapLayerUrl: new URL(this._settings.url),
178357
+ portal: typeof this._settings.properties?.portal === "string" ? this._settings.properties.portal : undefined,
178358
+ userName: this._settings.userName,
178359
+ password: this._settings.password,
178360
+ };
178361
+ const urlObj = buildRequestUrl();
178362
+ if (this._accessTokenRequired && this._accessClient) {
178363
+ this._lastAccessToken = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, accessTokenParams);
178258
178364
  }
178259
178365
  // We want to complete the first request before letting other requests go;
178260
178366
  // this done to avoid flooding server with requests missing credentials
@@ -178263,35 +178369,9 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
178263
178369
  else
178264
178370
  await this._firstRequestPromise;
178265
178371
  let response;
178372
+ let managedByHandler = false;
178266
178373
  try {
178267
- const requestUrl = urlObj.toString();
178268
- const includeCredentials = this.includeUserCredentials(requestUrl);
178269
- response = await fetch(urlObj, {
178270
- ...options,
178271
- credentials: includeCredentials ? "include" : undefined,
178272
- redirect: includeCredentials ? this.credentialedRedirect : options?.redirect,
178273
- });
178274
- if (includeCredentials)
178275
- this.checkCredentialedRedirect(requestUrl, response);
178276
- if (response.status === 401 && !this._lastAccessToken && (0,_request_utils__WEBPACK_IMPORTED_MODULE_3__.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])) {
178277
- // fetch follows redirects transparently, so trust decisions target the final (post-redirect) URL.
178278
- const challengedUrl = response.url || requestUrl;
178279
- if (this.isSsoAllowed(challengedUrl)) {
178280
- // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication).
178281
- this.logUntrustedOriginUse(challengedUrl);
178282
- response = await fetch(challengedUrl, {
178283
- ...options,
178284
- credentials: "include",
178285
- redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
178286
- });
178287
- if (response.status === 200) {
178288
- this.recordSsoSucceeded(challengedUrl); // avoid going through 401 challenges over and over for this origin
178289
- }
178290
- }
178291
- else {
178292
- this.reportBlockedOrigin(challengedUrl);
178293
- }
178294
- }
178374
+ ({ response, managedByHandler } = await this.requestViaHandler(urlObj, true, options));
178295
178375
  if ((this._lastAccessToken && response.status === 400)
178296
178376
  || response.headers.get("content-type")?.toLowerCase().includes("htm")) {
178297
178377
  // For some reasons when we make a request with the fetch() api and there is a token error
@@ -178302,7 +178382,7 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
178302
178382
  if (this._lastAccessToken && this._accessTokenRequired)
178303
178383
  tmpUrl.searchParams.append("token", this._lastAccessToken.token);
178304
178384
  tmpUrl.searchParams.append("f", "json");
178305
- response = await fetch(tmpUrl.toString(), options);
178385
+ ({ response, managedByHandler } = await this.requestViaHandler(tmpUrl, false, options));
178306
178386
  }
178307
178387
  errorCode = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.checkForResponseErrorCode(response);
178308
178388
  if (errorCode !== undefined &&
@@ -178314,19 +178394,21 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
178314
178394
  // Token might have expired, make a second attempt by forcing new token.
178315
178395
  if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)
178316
178396
  this._accessClient.invalidateToken(this._lastAccessToken);
178317
- const urlObj2 = new URL(url);
178397
+ // A fresh URL: the expired token must not remain as a first `token` parameter.
178398
+ const retryUrl = buildRequestUrl();
178318
178399
  if (this._accessClient) {
178319
178400
  try {
178320
- this._lastAccessToken = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, { mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });
178401
+ this._lastAccessToken = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.appendSecurityToken(retryUrl, this._accessClient, accessTokenParams);
178321
178402
  }
178322
178403
  catch {
178323
178404
  }
178324
178405
  }
178325
178406
  // Make a second attempt with refreshed token
178326
- response = await fetch(urlObj2.toString(), options);
178407
+ ({ response, managedByHandler } = await this.requestViaHandler(retryUrl, false, options));
178327
178408
  errorCode = await _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.checkForResponseErrorCode(response);
178328
178409
  }
178329
- if (errorCode !== undefined &&
178410
+ // An error code in a response managed by the fetch handler is not classified here.
178411
+ if (!managedByHandler && errorCode !== undefined &&
178330
178412
  (errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired
178331
178413
  || errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken
178332
178414
  || errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.MissingPermissions)) {
@@ -178341,13 +178423,24 @@ class ArcGISImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE_0__.
178341
178423
  }
178342
178424
  }
178343
178425
  }
178426
+ catch (error) {
178427
+ if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerAuthenticationFailedError)
178428
+ this.reportAuthenticationFailure();
178429
+ throw error;
178430
+ }
178344
178431
  finally {
178345
178432
  this.onFirstRequestCompleted.raiseEvent();
178346
178433
  }
178347
178434
  if (response === undefined)
178348
178435
  throw new Error("fetch call failed");
178436
+ if (managedByHandler)
178437
+ this._handlerManagedFetchResponses.add(response);
178349
178438
  return response;
178350
178439
  }
178440
+ /** Also true for responses of [[fetch]] a handler returned as its own. */
178441
+ isManagedByHandler(response) {
178442
+ return this._handlerManagedFetchResponses.has(response) || super.isManagedByHandler(response);
178443
+ }
178351
178444
  }
178352
178445
 
178353
178446
 
@@ -178504,14 +178597,15 @@ class ArcGISMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MOD
178504
178597
  const metadata = await this.getServiceJson();
178505
178598
  if (metadata?.content === undefined) {
178506
178599
  // By returning (i.e., not throwing), we ensure the tile tree gets created and the current provider is preserved to report status.
178507
- if (this.status === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.UntrustedOrigin)
178600
+ if (this.status === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.UntrustedOrigin || this.status === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.RequireAuth)
178508
178601
  return;
178509
178602
  throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.ServerError(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_5__.IModelStatus.ValidationFailed, "");
178510
178603
  }
178511
178604
  const json = metadata.content;
178512
- if (json?.error?.code === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.TokenRequired
178513
- || json?.error?.code === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.InvalidToken
178514
- || json?.error?.code === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.MissingPermissions) {
178605
+ const errorCode = metadata.errorCode;
178606
+ if (errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.TokenRequired
178607
+ || errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.InvalidToken
178608
+ || errorCode === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.MissingPermissions) {
178515
178609
  // Check again layer status, it might have change during await.
178516
178610
  if (this.status === _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.Valid) {
178517
178611
  this.setStatus(_tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.RequireAuth);
@@ -179527,7 +179621,13 @@ class WmsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE
179527
179621
  async initialize() {
179528
179622
  try {
179529
179623
  const credentials = (this._settings.userName && this._settings.password ? { user: this._settings.userName, password: this._settings.password } : undefined);
179530
- this._capabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_3__.WmsCapabilities.create(this._baseUrl, credentials);
179624
+ this._capabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_3__.WmsCapabilities.create(this._baseUrl, {
179625
+ credentials,
179626
+ queryParams: this._settings.collectQueryParams(),
179627
+ formatId: this._settings.formatId,
179628
+ layerUrl: this._settings.url,
179629
+ layerProperties: this._settings.properties,
179630
+ });
179531
179631
  if (undefined !== this._capabilities) {
179532
179632
  this._allLayersRange = this._capabilities.cartoRange;
179533
179633
  if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {
@@ -179561,7 +179661,7 @@ class WmsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODULE
179561
179661
  if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapLayerUntrustedOriginError) {
179562
179662
  this.reportBlockedOrigin(error.url);
179563
179663
  }
179564
- else if (error?.status === 401) {
179664
+ else if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapLayerAuthenticationFailedError || error?.status === 401) {
179565
179665
  this.setStatus(_tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapLayerImageryProviderStatus.RequireAuth);
179566
179666
  }
179567
179667
  else {
@@ -179724,7 +179824,13 @@ class WmtsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODUL
179724
179824
  async initialize() {
179725
179825
  try {
179726
179826
  const credentials = (this._settings.userName && this._settings.password ? { user: this._settings.userName, password: this._settings.password } : undefined);
179727
- this._capabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmtsCapabilities.create(this._baseUrl, credentials);
179827
+ this._capabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmtsCapabilities.create(this._baseUrl, {
179828
+ credentials,
179829
+ queryParams: this._settings.collectQueryParams(),
179830
+ formatId: this._settings.formatId,
179831
+ layerUrl: this._settings.url,
179832
+ layerProperties: this._settings.properties,
179833
+ });
179728
179834
  this.initPreferredTileMatrixSet();
179729
179835
  this.initPreferredStyle();
179730
179836
  this.initDisplayedLayer();
@@ -179740,7 +179846,7 @@ class WmtsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODUL
179740
179846
  if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerUntrustedOriginError) {
179741
179847
  this.reportBlockedOrigin(error.url);
179742
179848
  }
179743
- else if (error?.status === 401) {
179849
+ else if (error instanceof _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerAuthenticationFailedError || error?.status === 401) {
179744
179850
  this.setStatus(_tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.RequireAuth);
179745
179851
  }
179746
179852
  else {
@@ -179900,6 +180006,113 @@ class WmtsMapLayerImageryProvider extends _tile_internal__WEBPACK_IMPORTED_MODUL
179900
180006
  }
179901
180007
 
179902
180008
 
180009
+ /***/ },
180010
+
180011
+ /***/ "../../core/frontend/lib/esm/internal/tile/map/MapLayerFetch.js"
180012
+ /*!**********************************************************************!*\
180013
+ !*** ../../core/frontend/lib/esm/internal/tile/map/MapLayerFetch.js ***!
180014
+ \**********************************************************************/
180015
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
180016
+
180017
+ "use strict";
180018
+ __webpack_require__.r(__webpack_exports__);
180019
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
180020
+ /* harmony export */ credentialedFetchRedirect: () => (/* binding */ credentialedFetchRedirect),
180021
+ /* harmony export */ fetchMapLayerRequest: () => (/* binding */ fetchMapLayerRequest)
180022
+ /* harmony export */ });
180023
+ /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
180024
+ /*---------------------------------------------------------------------------------------------
180025
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
180026
+ * See LICENSE.md in the project root for license terms and full copyright notice.
180027
+ *--------------------------------------------------------------------------------------------*/
180028
+ /** @packageDocumentation
180029
+ * @module Tiles
180030
+ */
180031
+
180032
+ /** Routes an outgoing map-layer request through the pipeline of [[MapLayerFetchHandler]]s registered via
180033
+ * [[MapLayerFormatRegistry.addMapLayerFetchHandler]]; issues the default send directly when there is none or
180034
+ * every handler declines. A handler may decline, pass a copy of the request with other query parameters or
180035
+ * headers to `fetchRequest` (which offers it to the remaining handlers, then sends it credentialed), call it
180036
+ * any number of times, short-circuit with its own response, or throw [[MapLayerAuthenticationFailedError]].
180037
+ * @internal
180038
+ */
180039
+ async function fetchMapLayerRequest(args) {
180040
+ const headers = args.headers ?? new Headers();
180041
+ const { layerUrl, layerProperties, formatId } = args;
180042
+ // Snapshot: registrations changing while a handler awaits must not shift the pipeline of a request in flight.
180043
+ const handlers = [...(_IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers ?? [])];
180044
+ let parsed;
180045
+ if (handlers.length > 0) {
180046
+ try {
180047
+ // Relative URLs are valid targets (fetch resolves them against the document); resolve them the same way so
180048
+ // they are not opted out of the pipeline. Parsing only: the URL sent stays the caller's unless its query changes.
180049
+ parsed = new URL(args.url, typeof document !== "undefined" ? document.baseURI : undefined);
180050
+ }
180051
+ catch {
180052
+ // Not a parseable URL; issue the original request unhandled.
180053
+ }
180054
+ }
180055
+ if (!parsed) {
180056
+ const unhandled = await args.send({ url: args.url, layerUrl, layerProperties, formatId, searchParams: new URLSearchParams(), headers }, false);
180057
+ return { response: unhandled, managedByHandler: false };
180058
+ }
180059
+ const original = parsed;
180060
+ const originalSearch = original.searchParams.toString();
180061
+ const request = { url: args.url, layerUrl, layerProperties, formatId, searchParams: original.searchParams, headers };
180062
+ // Copies the mutable fields (including provider properties and their arrays; `readonly` is shallow), so a handler that
180063
+ // mutates its request in place and then declines cannot leak the mutation to the next handler or to the default
180064
+ // send. The URL string stays ours verbatim (URL serialization would normalize it) unless the query parameters
180065
+ // changed, in which case it is recomputed from them; the target never changes.
180066
+ const snapshot = (source) => {
180067
+ const searchParams = new URLSearchParams(source.searchParams);
180068
+ let url = args.url;
180069
+ if (searchParams.toString() !== originalSearch) {
180070
+ const changed = new URL(original);
180071
+ changed.search = searchParams.toString();
180072
+ url = changed.toString();
180073
+ }
180074
+ // Properties are informational layer context, not handler-editable request data. Always clone the
180075
+ // original settings, not source.layerProperties, so forwarding a modified copy cannot change that context.
180076
+ return { url, layerUrl, layerProperties: layerProperties === undefined ? undefined : structuredClone(layerProperties), formatId, searchParams, headers: new Headers(source.headers) };
180077
+ };
180078
+ // Offers the request to handlers[index..]: a declined request goes unchanged to the next handler; a request a
180079
+ // handler sends is offered to the remaining ones, then issued credentialed.
180080
+ const dispatch = async (index, toOffer) => {
180081
+ for (let i = index; i < handlers.length; ++i) {
180082
+ const handled = await handlers[i](snapshot(toOffer), async (toSend) => {
180083
+ const next = snapshot(toSend);
180084
+ return (await dispatch(i + 1, next)) ?? args.send(next, true);
180085
+ });
180086
+ if (handled)
180087
+ return handled;
180088
+ }
180089
+ return undefined;
180090
+ };
180091
+ const response = await dispatch(0, request);
180092
+ if (response)
180093
+ return { response, managedByHandler: true };
180094
+ return { response: await args.send(request, false), managedByHandler: false };
180095
+ }
180096
+ /** The redirect policy for a request that carries credentials: browser credentials (see
180097
+ * [[MapLayerImageryProvider.includeUserCredentials]]), settings-derived basic auth, or values a fetch handler
180098
+ * injected (see [[MapLayerFetchRequest]]).
180099
+ *
180100
+ * When [[MapLayerFormatRegistry.restrictCredentialsToTrustedOrigins]] is enabled, redirects are refused
180101
+ * outright (`"error"`). `fetch` cannot be asked to follow only same-origin redirects, and by the time a
180102
+ * followed redirect can be inspected the credentials have already been delivered to the destination — so
180103
+ * refusing is the only way to honour the guarantee that credentials reach none but the origins listed in
180104
+ * [[MapLayerFormatRegistry.trustedCredentialsOrigins]]. Legitimate same-origin redirects fail as a result;
180105
+ * that is the cost of the opt-in restriction.
180106
+ *
180107
+ * When the restriction is disabled (the default), redirects are followed as before and
180108
+ * [[MapLayerImageryProvider.checkCredentialedRedirect]] reports the destination after the fact.
180109
+ * @internal
180110
+ */
180111
+ function credentialedFetchRedirect() {
180112
+ return _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined;
180113
+ }
180114
+
180115
+
179903
180116
  /***/ },
179904
180117
 
179905
180118
  /***/ "../../core/frontend/lib/esm/internal/tile/map/MapTileAvailability.js"
@@ -180264,7 +180477,7 @@ __webpack_require__.r(__webpack_exports__);
180264
180477
  * @internal
180265
180478
  */
180266
180479
  function appendQueryParams(url, queryParams) {
180267
- if (!queryParams)
180480
+ if (!queryParams || Object.keys(queryParams).length === 0)
180268
180481
  return url;
180269
180482
  // create a lower-case array of keys
180270
180483
  const currentParams = [];
@@ -180316,7 +180529,8 @@ __webpack_require__.r(__webpack_exports__);
180316
180529
  /* harmony export */ WmsCapability: () => (/* binding */ WmsCapability)
180317
180530
  /* harmony export */ });
180318
180531
  /* 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");
180319
- /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
180532
+ /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
180533
+ /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
180320
180534
  /*---------------------------------------------------------------------------------------------
180321
180535
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
180322
180536
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -180326,8 +180540,9 @@ __webpack_require__.r(__webpack_exports__);
180326
180540
  */
180327
180541
 
180328
180542
 
180543
+
180329
180544
  function rangeFromJSONArray(json) {
180330
- return (Array.isArray(json) && json.length === 4) ? _tile_internal__WEBPACK_IMPORTED_MODULE_1__.MapCartoRectangle.fromDegrees(json[0], json[1], json[2], json[3]) : undefined;
180545
+ return (Array.isArray(json) && json.length === 4) ? _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapCartoRectangle.fromDegrees(json[0], json[1], json[2], json[3]) : undefined;
180331
180546
  }
180332
180547
  function rangeFromJSON(json) {
180333
180548
  if (undefined !== json.LatLonBoundingBox)
@@ -180523,13 +180738,9 @@ class WmsCapabilities {
180523
180738
  return undefined; // Degenerate capabilities document
180524
180739
  }
180525
180740
  }
180526
- static async create(url, credentials, ignoreCache, queryParams) {
180527
- if (!ignoreCache) {
180528
- const cached = WmsCapabilities._capabilitiesCache.get(url);
180529
- if (cached !== undefined)
180530
- return cached;
180531
- }
180532
- const tmpUrl = new URL(_tile_internal__WEBPACK_IMPORTED_MODULE_1__.WmsUtilities.getBaseUrl(url));
180741
+ static async create(url, options) {
180742
+ const { credentials, ignoreCache, queryParams, formatId, layerUrl, layerProperties } = options ?? {};
180743
+ const tmpUrl = new URL(_tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmsUtilities.getBaseUrl(url));
180533
180744
  tmpUrl.searchParams.append("request", "GetCapabilities");
180534
180745
  tmpUrl.searchParams.append("service", "WMS");
180535
180746
  if (queryParams) {
@@ -180538,15 +180749,25 @@ class WmsCapabilities {
180538
180749
  tmpUrl.searchParams.append(paramKey, queryParams[paramKey]);
180539
180750
  });
180540
180751
  }
180541
- const xmlCapabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_1__.WmsUtilities.fetchXml(tmpUrl.toString(), credentials);
180752
+ const cacheKey = tmpUrl.toString();
180753
+ // The cache never contains credentialed results (see the write below), so a credentialed request
180754
+ // must not be served a cached public document either; responses customized by the fetch handler
180755
+ // must not be shared with or served from differently-customized requests.
180756
+ const hasFetchHandler = (_IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers.length ?? 0) > 0;
180757
+ if (!ignoreCache && !hasFetchHandler && !credentials) {
180758
+ const cached = WmsCapabilities._capabilitiesCache.get(cacheKey);
180759
+ if (cached !== undefined)
180760
+ return cached;
180761
+ }
180762
+ const xmlCapabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmsUtilities.fetchXml(tmpUrl.toString(), { credentials, formatId: formatId ?? "WMS", layerUrl: layerUrl ?? url, layerProperties });
180542
180763
  if (!xmlCapabilities)
180543
180764
  return undefined;
180544
180765
  const capabilities = WmsCapabilities.tryParse(xmlCapabilities);
180545
180766
  if (capabilities === undefined)
180546
180767
  return undefined;
180547
- if (!credentials) {
180768
+ if (!credentials && !hasFetchHandler) {
180548
180769
  // Avoid caching protected data
180549
- WmsCapabilities._capabilitiesCache.set(url, capabilities);
180770
+ WmsCapabilities._capabilitiesCache.set(cacheKey, capabilities);
180550
180771
  }
180551
180772
  return capabilities;
180552
180773
  }
@@ -180584,9 +180805,6 @@ __webpack_require__.r(__webpack_exports__);
180584
180805
 
180585
180806
 
180586
180807
 
180587
- /** @packageDocumentation
180588
- * @module Tiles
180589
- */
180590
180808
  /** @internal */
180591
180809
  class WmsUtilities {
180592
180810
  static getBaseUrl(url) {
@@ -180597,21 +180815,58 @@ class WmsUtilities {
180597
180815
  * fetch XML from HTTP request
180598
180816
  * @param url server URL to address the request
180599
180817
  */
180600
- static async fetchXml(url, credentials) {
180818
+ static async fetchXml(url, options) {
180819
+ const { credentials, formatId, layerUrl, layerProperties } = options ?? {};
180601
180820
  let headers;
180602
- if (credentials && credentials.user && credentials.password) {
180821
+ const hasCredentials = !!(credentials && credentials.user && credentials.password);
180822
+ if (hasCredentials) {
180603
180823
  // Basic credentials are considered settings-derived credentials for this source. When the registry is
180604
180824
  // enforcing trusted origins, the source URL itself is the only implicitly trusted origin for basic auth;
180605
180825
  // opaque/custom-protocol URLs have no network origin and must therefore be treated as untrusted.
180606
- const allowBasicAuth = !_IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins
180826
+ // Optional chaining: some callers run before IModelApp startup.
180827
+ const allowBasicAuth = !_IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry?.restrictCredentialsToTrustedOrigins
180607
180828
  || _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry.isCredentialsSharingAllowed(url, url);
180608
180829
  if (allowBasicAuth) {
180609
180830
  headers = new Headers();
180610
180831
  (0,_request_utils__WEBPACK_IMPORTED_MODULE_2__.setBasicAuthorization)(headers, credentials);
180611
180832
  }
180612
180833
  }
180613
- let response = await fetch(url, { method: "GET", headers });
180614
- if (!headers && credentials && credentials.user && credentials.password && (response.status === 401 || response.status === 403)) {
180834
+ const credentialsWithheld = hasCredentials && headers === undefined;
180835
+ // Route the request through the registered fetch handler (if any). Handler failures — including
180836
+ // MapLayerAuthenticationFailedError — propagate so callers can transition to RequireAuth.
180837
+ const { response, managedByHandler } = await (0,_tile_internal__WEBPACK_IMPORTED_MODULE_3__.fetchMapLayerRequest)({
180838
+ url,
180839
+ formatId: formatId ?? "",
180840
+ layerUrl: layerUrl ?? url,
180841
+ layerProperties,
180842
+ headers,
180843
+ send: async (request, credentialed) => {
180844
+ const rsp = await fetch(request.url, {
180845
+ method: "GET",
180846
+ headers: request.headers,
180847
+ // Sends the handler modified may carry injected secrets: same redirect policy as credentialed ones.
180848
+ redirect: credentialed ? (0,_tile_internal__WEBPACK_IMPORTED_MODULE_3__.credentialedFetchRedirect)() : undefined,
180849
+ });
180850
+ // A send the handler modified never falls back to the legacy basic-auth / NTLM-SSO handling:
180851
+ // the handler is the authentication authority for it.
180852
+ return credentialed ? rsp : WmsUtilities.handleLegacyChallenges(rsp, request.url, credentials, credentialsWithheld);
180853
+ },
180854
+ });
180855
+ if (response.status !== 200) {
180856
+ // A status in a response managed by the fetch handler is not an authentication failure (it would have
180857
+ // thrown MapLayerAuthenticationFailedError): report it without a status so callers do not classify it.
180858
+ if (managedByHandler)
180859
+ throw new Error(`Map-layer fetch handler returned status ${response.status} for '${url}'`);
180860
+ throw new _request_Request__WEBPACK_IMPORTED_MODULE_1__.HttpResponseError(response.status, await response.text());
180861
+ }
180862
+ return response.text();
180863
+ }
180864
+ /** Legacy (no injected credentials) challenge handling: basic-auth/untrusted-origin classification and the SSO retry.
180865
+ * `credentialsWithheld` is true when basic credentials exist but were not attached because the origin is untrusted.
180866
+ */
180867
+ static async handleLegacyChallenges(firstResponse, url, credentials, credentialsWithheld) {
180868
+ let response = firstResponse;
180869
+ if (credentialsWithheld && (response.status === 401 || response.status === 403)) {
180615
180870
  throw new _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapLayerUntrustedOriginError(url);
180616
180871
  }
180617
180872
  if (!credentials && response.status === 401 && (0,_request_utils__WEBPACK_IMPORTED_MODULE_2__.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])) {
@@ -180627,9 +180882,7 @@ class WmsUtilities {
180627
180882
  redirect: _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined,
180628
180883
  });
180629
180884
  }
180630
- if (response.status !== 200)
180631
- throw new _request_Request__WEBPACK_IMPORTED_MODULE_1__.HttpResponseError(response.status, await response.text());
180632
- return response.text();
180885
+ return response;
180633
180886
  }
180634
180887
  }
180635
180888
 
@@ -180651,7 +180904,8 @@ __webpack_require__.r(__webpack_exports__);
180651
180904
  /* harmony export */ });
180652
180905
  /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
180653
180906
  /* harmony import */ var _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @itwin/core-geometry */ "../../core/geometry/lib/esm/core-geometry.js");
180654
- /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
180907
+ /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
180908
+ /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
180655
180909
  /*---------------------------------------------------------------------------------------------
180656
180910
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
180657
180911
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -180662,6 +180916,7 @@ __webpack_require__.r(__webpack_exports__);
180662
180916
 
180663
180917
 
180664
180918
 
180919
+
180665
180920
  var OwsConstants;
180666
180921
  (function (OwsConstants) {
180667
180922
  OwsConstants["ABSTRACT_XMLTAG"] = "ows:Abstract";
@@ -181067,14 +181322,14 @@ var WmtsCapability;
181067
181322
  upperCornerArray = getElementTextContent(bbox[0], OwsConstants.UPPERCORNER_XMLTAG)?.split(" ").map((x) => +x);
181068
181323
  }
181069
181324
  if (lowerCornerArray?.length === 2 && upperCornerArray?.length === 2)
181070
- this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapCartoRectangle.fromDegrees(lowerCornerArray[0], lowerCornerArray[1], upperCornerArray[0], upperCornerArray[1]);
181325
+ this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapCartoRectangle.fromDegrees(lowerCornerArray[0], lowerCornerArray[1], upperCornerArray[0], upperCornerArray[1]);
181071
181326
  // If we could not initialized WSG84 bounding box, attempt to initialized it from Bounding Box
181072
181327
  if (!this.wsg84BoundingBox && (this.boundingBox?.crs?.includes("EPSG:4326") || this.boundingBox?.crs?.includes("CRS:84"))) {
181073
181328
  const range = this.boundingBox.range;
181074
181329
  if (range)
181075
- this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapCartoRectangle.fromDegrees(range.low.x, range.low.y, range.high.x, range.high.y);
181330
+ this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapCartoRectangle.fromDegrees(range.low.x, range.low.y, range.high.x, range.high.y);
181076
181331
  else
181077
- this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_2__.MapCartoRectangle.createMaximum();
181332
+ this.wsg84BoundingBox = _tile_internal__WEBPACK_IMPORTED_MODULE_3__.MapCartoRectangle.createMaximum();
181078
181333
  }
181079
181334
  // Style
181080
181335
  const style = elem.getElementsByTagName("Style");
@@ -181127,13 +181382,9 @@ class WmtsCapabilities {
181127
181382
  const xmlDoc = parser.parseFromString(xmlCapabilities, "text/xml");
181128
181383
  return new WmtsCapabilities(xmlDoc);
181129
181384
  }
181130
- static async create(url, credentials, ignoreCache, queryParams) {
181131
- if (!ignoreCache) {
181132
- const cached = WmtsCapabilities._capabilitiesCache.get(url);
181133
- if (cached !== undefined)
181134
- return cached;
181135
- }
181136
- const tmpUrl = new URL(_tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmsUtilities.getBaseUrl(url));
181385
+ static async create(url, options) {
181386
+ const { credentials, ignoreCache, queryParams, formatId, layerUrl, layerProperties } = options ?? {};
181387
+ const tmpUrl = new URL(_tile_internal__WEBPACK_IMPORTED_MODULE_3__.WmsUtilities.getBaseUrl(url));
181137
181388
  tmpUrl.searchParams.append("request", "GetCapabilities");
181138
181389
  tmpUrl.searchParams.append("service", "WMTS");
181139
181390
  if (queryParams) {
@@ -181142,12 +181393,22 @@ class WmtsCapabilities {
181142
181393
  tmpUrl.searchParams.append(paramKey, queryParams[paramKey]);
181143
181394
  });
181144
181395
  }
181145
- const xmlCapabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_2__.WmsUtilities.fetchXml(tmpUrl.toString(), credentials);
181396
+ const cacheKey = tmpUrl.toString();
181397
+ // The cache never contains credentialed results (see the write below), so a credentialed request
181398
+ // must not be served a cached public document either; responses customized by the fetch handler
181399
+ // must not be shared with or served from differently-customized requests.
181400
+ const hasFetchHandler = (_IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers.length ?? 0) > 0;
181401
+ if (!ignoreCache && !hasFetchHandler && !credentials) {
181402
+ const cached = WmtsCapabilities._capabilitiesCache.get(cacheKey);
181403
+ if (cached !== undefined)
181404
+ return cached;
181405
+ }
181406
+ const xmlCapabilities = await _tile_internal__WEBPACK_IMPORTED_MODULE_3__.WmsUtilities.fetchXml(tmpUrl.toString(), { credentials, formatId: formatId ?? "WMTS", layerUrl: layerUrl ?? url, layerProperties });
181146
181407
  if (!xmlCapabilities)
181147
181408
  return undefined;
181148
181409
  const capabilities = WmtsCapabilities.createFromXml(xmlCapabilities);
181149
- if (capabilities)
181150
- WmtsCapabilities._capabilitiesCache.set(url, capabilities);
181410
+ if (capabilities && !credentials && !hasFetchHandler)
181411
+ WmtsCapabilities._capabilitiesCache.set(cacheKey, capabilities);
181151
181412
  return capabilities;
181152
181413
  }
181153
181414
  }
@@ -193171,27 +193432,27 @@ var TiledGraphicsProvider;
193171
193432
  "use strict";
193172
193433
  __webpack_require__.r(__webpack_exports__);
193173
193434
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
193174
- /* harmony export */ AnimatedTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.AnimatedTreeReference),
193175
- /* harmony export */ ArcGISIdentifyRequestUrl: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_57__.ArcGISIdentifyRequestUrl),
193176
- /* harmony export */ ArcGISImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISImageryProvider__WEBPACK_IMPORTED_MODULE_53__.ArcGISImageryProvider),
193177
- /* harmony export */ ArcGISMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_57__.ArcGISMapLayerImageryProvider),
193435
+ /* harmony export */ AnimatedTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.AnimatedTreeReference),
193436
+ /* harmony export */ ArcGISIdentifyRequestUrl: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_59__.ArcGISIdentifyRequestUrl),
193437
+ /* harmony export */ ArcGISImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISImageryProvider__WEBPACK_IMPORTED_MODULE_55__.ArcGISImageryProvider),
193438
+ /* harmony export */ ArcGISMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGISMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_59__.ArcGISMapLayerImageryProvider),
193178
193439
  /* harmony export */ ArcGISTileMap: () => (/* reexport safe */ _internal_tile_map_ArcGISTileMap__WEBPACK_IMPORTED_MODULE_39__.ArcGISTileMap),
193179
- /* harmony export */ ArcGisErrorCode: () => (/* reexport safe */ _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_43__.ArcGisErrorCode),
193180
- /* harmony export */ ArcGisGeometryReaderJSON: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGisGeometryReaderJSON__WEBPACK_IMPORTED_MODULE_56__.ArcGisGeometryReaderJSON),
193181
- /* harmony export */ ArcGisUtilities: () => (/* reexport safe */ _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_43__.ArcGisUtilities),
193440
+ /* harmony export */ ArcGisErrorCode: () => (/* reexport safe */ _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_44__.ArcGisErrorCode),
193441
+ /* harmony export */ ArcGisGeometryReaderJSON: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_ArcGisGeometryReaderJSON__WEBPACK_IMPORTED_MODULE_58__.ArcGisGeometryReaderJSON),
193442
+ /* harmony export */ ArcGisUtilities: () => (/* reexport safe */ _internal_tile_map_ArcGisUtilities__WEBPACK_IMPORTED_MODULE_44__.ArcGisUtilities),
193182
193443
  /* harmony export */ B3dmReader: () => (/* reexport safe */ _internal_tile_B3dmReader__WEBPACK_IMPORTED_MODULE_34__.B3dmReader),
193183
193444
  /* harmony export */ BatchedTileIdMap: () => (/* reexport safe */ _internal_tile_BatchedTileIdMap__WEBPACK_IMPORTED_MODULE_12__.BatchedTileIdMap),
193184
- /* harmony export */ BingElevationProvider: () => (/* reexport safe */ _map_BingElevation__WEBPACK_IMPORTED_MODULE_73__.BingElevationProvider),
193185
- /* harmony export */ BingMapsImageryLayerProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_BingImageryProvider__WEBPACK_IMPORTED_MODULE_58__.BingMapsImageryLayerProvider),
193186
- /* harmony export */ CesiumIonAssetProvider: () => (/* reexport safe */ _internal_tile_CesiumAssetProvider__WEBPACK_IMPORTED_MODULE_88__.CesiumIonAssetProvider),
193187
- /* harmony export */ ContextShareProvider: () => (/* reexport safe */ _internal_tile_ContextShareProvider__WEBPACK_IMPORTED_MODULE_89__.ContextShareProvider),
193445
+ /* harmony export */ BingElevationProvider: () => (/* reexport safe */ _map_BingElevation__WEBPACK_IMPORTED_MODULE_75__.BingElevationProvider),
193446
+ /* harmony export */ BingMapsImageryLayerProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_BingImageryProvider__WEBPACK_IMPORTED_MODULE_60__.BingMapsImageryLayerProvider),
193447
+ /* harmony export */ CesiumIonAssetProvider: () => (/* reexport safe */ _internal_tile_CesiumAssetProvider__WEBPACK_IMPORTED_MODULE_90__.CesiumIonAssetProvider),
193448
+ /* harmony export */ ContextShareProvider: () => (/* reexport safe */ _internal_tile_ContextShareProvider__WEBPACK_IMPORTED_MODULE_91__.ContextShareProvider),
193188
193449
  /* harmony export */ DisclosedTileTreeSet: () => (/* reexport safe */ _DisclosedTileTreeSet__WEBPACK_IMPORTED_MODULE_3__.DisclosedTileTreeSet),
193189
- /* harmony export */ DynamicIModelTile: () => (/* reexport safe */ _internal_tile_DynamicIModelTile__WEBPACK_IMPORTED_MODULE_80__.DynamicIModelTile),
193190
- /* harmony export */ EllipsoidTerrainProvider: () => (/* reexport safe */ _map_EllipsoidTerrainProvider__WEBPACK_IMPORTED_MODULE_69__.EllipsoidTerrainProvider),
193191
- /* harmony export */ FeatureGeometryBaseRenderer: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_FeatureGeometryRenderer__WEBPACK_IMPORTED_MODULE_54__.FeatureGeometryBaseRenderer),
193192
- /* harmony export */ FeatureGraphicsRenderer: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_FeatureGraphicsRenderer__WEBPACK_IMPORTED_MODULE_55__.FeatureGraphicsRenderer),
193193
- /* harmony export */ FetchCloudStorage: () => (/* reexport safe */ _internal_tile_FetchCloudStorage__WEBPACK_IMPORTED_MODULE_92__.FetchCloudStorage),
193194
- /* harmony export */ GeographicTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__.GeographicTilingScheme),
193450
+ /* harmony export */ DynamicIModelTile: () => (/* reexport safe */ _internal_tile_DynamicIModelTile__WEBPACK_IMPORTED_MODULE_82__.DynamicIModelTile),
193451
+ /* harmony export */ EllipsoidTerrainProvider: () => (/* reexport safe */ _map_EllipsoidTerrainProvider__WEBPACK_IMPORTED_MODULE_71__.EllipsoidTerrainProvider),
193452
+ /* harmony export */ FeatureGeometryBaseRenderer: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_FeatureGeometryRenderer__WEBPACK_IMPORTED_MODULE_56__.FeatureGeometryBaseRenderer),
193453
+ /* harmony export */ FeatureGraphicsRenderer: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_FeatureGraphicsRenderer__WEBPACK_IMPORTED_MODULE_57__.FeatureGraphicsRenderer),
193454
+ /* harmony export */ FetchCloudStorage: () => (/* reexport safe */ _internal_tile_FetchCloudStorage__WEBPACK_IMPORTED_MODULE_94__.FetchCloudStorage),
193455
+ /* harmony export */ GeographicTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__.GeographicTilingScheme),
193195
193456
  /* harmony export */ GltfBufferData: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.GltfBufferData),
193196
193457
  /* harmony export */ GltfGraphicsReader: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.GltfGraphicsReader),
193197
193458
  /* harmony export */ GltfMeshData: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.GltfMeshData),
@@ -193199,67 +193460,68 @@ __webpack_require__.r(__webpack_exports__);
193199
193460
  /* harmony export */ GltfReaderProps: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.GltfReaderProps),
193200
193461
  /* harmony export */ GraphicsCollectorDrawArgs: () => (/* reexport safe */ _internal_tile_GraphicsCollector__WEBPACK_IMPORTED_MODULE_11__.GraphicsCollectorDrawArgs),
193201
193462
  /* harmony export */ I3dmReader: () => (/* reexport safe */ _internal_tile_I3dmReader__WEBPACK_IMPORTED_MODULE_33__.I3dmReader),
193202
- /* harmony export */ IModelTile: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_79__.IModelTile),
193463
+ /* harmony export */ IModelTile: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_81__.IModelTile),
193203
193464
  /* harmony export */ IModelTileRequestChannels: () => (/* reexport safe */ _internal_tile_IModelTileRequestChannels__WEBPACK_IMPORTED_MODULE_27__.IModelTileRequestChannels),
193204
- /* harmony export */ IModelTileTree: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_81__.IModelTileTree),
193205
- /* harmony export */ ImageryMapLayerFormat: () => (/* reexport safe */ _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_63__.ImageryMapLayerFormat),
193206
- /* harmony export */ ImageryMapLayerTreeReference: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__.ImageryMapLayerTreeReference),
193207
- /* harmony export */ ImageryMapTile: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__.ImageryMapTile),
193208
- /* harmony export */ ImageryMapTileTree: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__.ImageryMapTileTree),
193209
- /* harmony export */ ImageryTileTreeState: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__.ImageryTileTreeState),
193465
+ /* harmony export */ IModelTileTree: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_83__.IModelTileTree),
193466
+ /* harmony export */ ImageryMapLayerFormat: () => (/* reexport safe */ _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_65__.ImageryMapLayerFormat),
193467
+ /* harmony export */ ImageryMapLayerTreeReference: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__.ImageryMapLayerTreeReference),
193468
+ /* harmony export */ ImageryMapTile: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__.ImageryMapTile),
193469
+ /* harmony export */ ImageryMapTileTree: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__.ImageryMapTileTree),
193470
+ /* harmony export */ ImageryTileTreeState: () => (/* reexport safe */ _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__.ImageryTileTreeState),
193210
193471
  /* harmony export */ ImdlReader: () => (/* reexport safe */ _ImdlReader__WEBPACK_IMPORTED_MODULE_35__.ImdlReader),
193211
193472
  /* harmony export */ LRUTileList: () => (/* reexport safe */ _internal_tile_LRUTileList__WEBPACK_IMPORTED_MODULE_5__.LRUTileList),
193212
- /* harmony export */ LayerTextureParams: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_94__.LayerTextureParams),
193473
+ /* harmony export */ LayerTextureParams: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_96__.LayerTextureParams),
193213
193474
  /* harmony export */ LayerTileTreeHandler: () => (/* reexport safe */ _internal_tile_LayerTileTreeHandler__WEBPACK_IMPORTED_MODULE_20__.LayerTileTreeHandler),
193214
193475
  /* harmony export */ LayerTileTreeReferenceHandler: () => (/* reexport safe */ _internal_tile_LayerTileTreeReferenceHandler__WEBPACK_IMPORTED_MODULE_19__.LayerTileTreeReferenceHandler),
193215
- /* harmony export */ MapBoxLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_MapBoxLayerImageryProvider__WEBPACK_IMPORTED_MODULE_59__.MapBoxLayerImageryProvider),
193476
+ /* harmony export */ MapBoxLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_MapBoxLayerImageryProvider__WEBPACK_IMPORTED_MODULE_61__.MapBoxLayerImageryProvider),
193216
193477
  /* harmony export */ MapCartoRectangle: () => (/* reexport safe */ _map_MapCartoRectangle__WEBPACK_IMPORTED_MODULE_1__.MapCartoRectangle),
193217
- /* harmony export */ MapFeatureInfoRecord: () => (/* reexport safe */ _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_41__.MapFeatureInfoRecord),
193218
- /* harmony export */ MapLayerFeatureRecord: () => (/* reexport safe */ _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_41__.MapLayerFeatureRecord),
193219
- /* harmony export */ MapLayerFormat: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_42__.MapLayerFormat),
193220
- /* harmony export */ MapLayerFormatRegistry: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_42__.MapLayerFormatRegistry),
193221
- /* harmony export */ MapLayerImageryProvider: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__.MapLayerImageryProvider),
193222
- /* harmony export */ MapLayerImageryProviderStatus: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__.MapLayerImageryProviderStatus),
193223
- /* harmony export */ MapLayerSource: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_86__.MapLayerSource),
193224
- /* harmony export */ MapLayerSourceStatus: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_86__.MapLayerSourceStatus),
193225
- /* harmony export */ MapLayerSources: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_86__.MapLayerSources),
193226
- /* harmony export */ MapLayerTileTreeReference: () => (/* reexport safe */ _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_64__.MapLayerTileTreeReference),
193227
- /* harmony export */ MapLayerUntrustedOriginError: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_42__.MapLayerUntrustedOriginError),
193228
- /* harmony export */ MapTile: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.MapTile),
193229
- /* harmony export */ MapTileLoader: () => (/* reexport safe */ _internal_tile_map_MapTileLoader__WEBPACK_IMPORTED_MODULE_72__.MapTileLoader),
193230
- /* harmony export */ MapTileProjection: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.MapTileProjection),
193231
- /* harmony export */ MapTileTree: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__.MapTileTree),
193232
- /* harmony export */ MapTileTreeReference: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__.MapTileTreeReference),
193233
- /* harmony export */ MapTileTreeScaleRangeVisibility: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__.MapTileTreeScaleRangeVisibility),
193234
- /* harmony export */ MapTiledGraphicsProvider: () => (/* reexport safe */ _map_MapTiledGraphicsProvider__WEBPACK_IMPORTED_MODULE_87__.MapTiledGraphicsProvider),
193235
- /* harmony export */ MapTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__.MapTilingScheme),
193236
- /* harmony export */ ModelMapLayerTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.ModelMapLayerTileTreeReference),
193237
- /* harmony export */ OPCFormatInterpreter: () => (/* reexport safe */ _internal_tile_OPCFormatInterpreter__WEBPACK_IMPORTED_MODULE_91__.OPCFormatInterpreter),
193238
- /* harmony export */ OrbitGtTileTree: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__.OrbitGtTileTree),
193239
- /* harmony export */ OrbitGtTreeReference: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__.OrbitGtTreeReference),
193240
- /* harmony export */ PlanarProjection: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.PlanarProjection),
193241
- /* harmony export */ PlanarTilePatch: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.PlanarTilePatch),
193242
- /* harmony export */ ProjectedTexture: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_94__.ProjectedTexture),
193478
+ /* harmony export */ MapFeatureInfoRecord: () => (/* reexport safe */ _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_42__.MapFeatureInfoRecord),
193479
+ /* harmony export */ MapLayerAuthenticationFailedError: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__.MapLayerAuthenticationFailedError),
193480
+ /* harmony export */ MapLayerFeatureRecord: () => (/* reexport safe */ _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_42__.MapLayerFeatureRecord),
193481
+ /* harmony export */ MapLayerFormat: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__.MapLayerFormat),
193482
+ /* harmony export */ MapLayerFormatRegistry: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__.MapLayerFormatRegistry),
193483
+ /* harmony export */ MapLayerImageryProvider: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__.MapLayerImageryProvider),
193484
+ /* harmony export */ MapLayerImageryProviderStatus: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__.MapLayerImageryProviderStatus),
193485
+ /* harmony export */ MapLayerSource: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_88__.MapLayerSource),
193486
+ /* harmony export */ MapLayerSourceStatus: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_88__.MapLayerSourceStatus),
193487
+ /* harmony export */ MapLayerSources: () => (/* reexport safe */ _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_88__.MapLayerSources),
193488
+ /* harmony export */ MapLayerTileTreeReference: () => (/* reexport safe */ _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_66__.MapLayerTileTreeReference),
193489
+ /* harmony export */ MapLayerUntrustedOriginError: () => (/* reexport safe */ _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__.MapLayerUntrustedOriginError),
193490
+ /* harmony export */ MapTile: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.MapTile),
193491
+ /* harmony export */ MapTileLoader: () => (/* reexport safe */ _internal_tile_map_MapTileLoader__WEBPACK_IMPORTED_MODULE_74__.MapTileLoader),
193492
+ /* harmony export */ MapTileProjection: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.MapTileProjection),
193493
+ /* harmony export */ MapTileTree: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__.MapTileTree),
193494
+ /* harmony export */ MapTileTreeReference: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__.MapTileTreeReference),
193495
+ /* harmony export */ MapTileTreeScaleRangeVisibility: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__.MapTileTreeScaleRangeVisibility),
193496
+ /* harmony export */ MapTiledGraphicsProvider: () => (/* reexport safe */ _map_MapTiledGraphicsProvider__WEBPACK_IMPORTED_MODULE_89__.MapTiledGraphicsProvider),
193497
+ /* harmony export */ MapTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__.MapTilingScheme),
193498
+ /* harmony export */ ModelMapLayerTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.ModelMapLayerTileTreeReference),
193499
+ /* harmony export */ OPCFormatInterpreter: () => (/* reexport safe */ _internal_tile_OPCFormatInterpreter__WEBPACK_IMPORTED_MODULE_93__.OPCFormatInterpreter),
193500
+ /* harmony export */ OrbitGtTileTree: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__.OrbitGtTileTree),
193501
+ /* harmony export */ OrbitGtTreeReference: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__.OrbitGtTreeReference),
193502
+ /* harmony export */ PlanarProjection: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.PlanarProjection),
193503
+ /* harmony export */ PlanarTilePatch: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.PlanarTilePatch),
193504
+ /* harmony export */ ProjectedTexture: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_96__.ProjectedTexture),
193243
193505
  /* harmony export */ QuadId: () => (/* reexport safe */ _map_QuadId__WEBPACK_IMPORTED_MODULE_2__.QuadId),
193244
193506
  /* harmony export */ ReadonlyTileUserSet: () => (/* reexport safe */ _internal_tile_TileUserSet__WEBPACK_IMPORTED_MODULE_31__.ReadonlyTileUserSet),
193245
- /* harmony export */ RealityModelTileTree: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityModelTileTree),
193246
- /* harmony export */ RealityModelTileTreeProps: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityModelTileTreeProps),
193247
- /* harmony export */ RealityModelTileUtils: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityModelTileUtils),
193507
+ /* harmony export */ RealityModelTileTree: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityModelTileTree),
193508
+ /* harmony export */ RealityModelTileTreeProps: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityModelTileTreeProps),
193509
+ /* harmony export */ RealityModelTileUtils: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityModelTileUtils),
193248
193510
  /* harmony export */ RealityTile: () => (/* reexport safe */ _RealityTile__WEBPACK_IMPORTED_MODULE_6__.RealityTile),
193249
193511
  /* harmony export */ RealityTileDrawArgs: () => (/* reexport safe */ _internal_tile_RealityTileDrawArgs__WEBPACK_IMPORTED_MODULE_10__.RealityTileDrawArgs),
193250
- /* harmony export */ RealityTileLoader: () => (/* reexport safe */ _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_71__.RealityTileLoader),
193251
- /* harmony export */ RealityTileRegion: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityTileRegion),
193512
+ /* harmony export */ RealityTileLoader: () => (/* reexport safe */ _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_73__.RealityTileLoader),
193513
+ /* harmony export */ RealityTileRegion: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityTileRegion),
193252
193514
  /* harmony export */ RealityTileTree: () => (/* reexport safe */ _RealityTileTree__WEBPACK_IMPORTED_MODULE_15__.RealityTileTree),
193253
- /* harmony export */ RealityTreeReference: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.RealityTreeReference),
193254
- /* harmony export */ SelectParent: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_79__.SelectParent),
193255
- /* harmony export */ SpatialClassifierTileTreeReference: () => (/* reexport safe */ _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_83__.SpatialClassifierTileTreeReference),
193256
- /* harmony export */ SpatialTileTreeReferences: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.SpatialTileTreeReferences),
193257
- /* harmony export */ TerrainMeshProvider: () => (/* reexport safe */ _map_TerrainMeshProvider__WEBPACK_IMPORTED_MODULE_66__.TerrainMeshProvider),
193258
- /* harmony export */ TerrainProviderRegistry: () => (/* reexport safe */ _map_TerrainProvider__WEBPACK_IMPORTED_MODULE_67__.TerrainProviderRegistry),
193259
- /* harmony export */ ThreeDTileFormatInterpreter: () => (/* reexport safe */ _internal_tile_ThreeDTileFormatInterpreter__WEBPACK_IMPORTED_MODULE_90__.ThreeDTileFormatInterpreter),
193515
+ /* harmony export */ RealityTreeReference: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.RealityTreeReference),
193516
+ /* harmony export */ SelectParent: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_81__.SelectParent),
193517
+ /* harmony export */ SpatialClassifierTileTreeReference: () => (/* reexport safe */ _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_85__.SpatialClassifierTileTreeReference),
193518
+ /* harmony export */ SpatialTileTreeReferences: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.SpatialTileTreeReferences),
193519
+ /* harmony export */ TerrainMeshProvider: () => (/* reexport safe */ _map_TerrainMeshProvider__WEBPACK_IMPORTED_MODULE_68__.TerrainMeshProvider),
193520
+ /* harmony export */ TerrainProviderRegistry: () => (/* reexport safe */ _map_TerrainProvider__WEBPACK_IMPORTED_MODULE_69__.TerrainProviderRegistry),
193521
+ /* harmony export */ ThreeDTileFormatInterpreter: () => (/* reexport safe */ _internal_tile_ThreeDTileFormatInterpreter__WEBPACK_IMPORTED_MODULE_92__.ThreeDTileFormatInterpreter),
193260
193522
  /* harmony export */ Tile: () => (/* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_4__.Tile),
193261
193523
  /* harmony export */ TileAdmin: () => (/* reexport safe */ _TileAdmin__WEBPACK_IMPORTED_MODULE_23__.TileAdmin),
193262
- /* harmony export */ TileAvailability: () => (/* reexport safe */ _internal_tile_map_MapTileAvailability__WEBPACK_IMPORTED_MODULE_75__.TileAvailability),
193524
+ /* harmony export */ TileAvailability: () => (/* reexport safe */ _internal_tile_map_MapTileAvailability__WEBPACK_IMPORTED_MODULE_77__.TileAvailability),
193263
193525
  /* harmony export */ TileBoundingBoxes: () => (/* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_4__.TileBoundingBoxes),
193264
193526
  /* harmony export */ TileDrawArgs: () => (/* reexport safe */ _TileDrawArgs__WEBPACK_IMPORTED_MODULE_9__.TileDrawArgs),
193265
193527
  /* harmony export */ TileGeometryCollector: () => (/* reexport safe */ _TileGeometryCollector__WEBPACK_IMPORTED_MODULE_21__.TileGeometryCollector),
@@ -193274,7 +193536,7 @@ __webpack_require__.r(__webpack_exports__);
193274
193536
  /* harmony export */ TileTree: () => (/* reexport safe */ _TileTree__WEBPACK_IMPORTED_MODULE_14__.TileTree),
193275
193537
  /* harmony export */ TileTreeLoadStatus: () => (/* reexport safe */ _TileTree__WEBPACK_IMPORTED_MODULE_14__.TileTreeLoadStatus),
193276
193538
  /* harmony export */ TileTreeReference: () => (/* reexport safe */ _TileTreeReference__WEBPACK_IMPORTED_MODULE_18__.TileTreeReference),
193277
- /* harmony export */ TileUrlImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_TileUrlImageryProvider__WEBPACK_IMPORTED_MODULE_60__.TileUrlImageryProvider),
193539
+ /* harmony export */ TileUrlImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_TileUrlImageryProvider__WEBPACK_IMPORTED_MODULE_62__.TileUrlImageryProvider),
193278
193540
  /* harmony export */ TileUsageMarker: () => (/* reexport safe */ _TileUsageMarker__WEBPACK_IMPORTED_MODULE_29__.TileUsageMarker),
193279
193541
  /* harmony export */ TileUser: () => (/* reexport safe */ _TileUser__WEBPACK_IMPORTED_MODULE_30__.TileUser),
193280
193542
  /* harmony export */ TileUserIdSet: () => (/* reexport safe */ _internal_tile_LRUTileList__WEBPACK_IMPORTED_MODULE_5__.TileUserIdSet),
@@ -193285,66 +193547,68 @@ __webpack_require__.r(__webpack_exports__);
193285
193547
  /* harmony export */ TraversalDetails: () => (/* reexport safe */ _RealityTileTree__WEBPACK_IMPORTED_MODULE_15__.TraversalDetails),
193286
193548
  /* harmony export */ TraversalSelectionContext: () => (/* reexport safe */ _RealityTileTree__WEBPACK_IMPORTED_MODULE_15__.TraversalSelectionContext),
193287
193549
  /* harmony export */ UniqueTileUserSets: () => (/* reexport safe */ _internal_tile_TileUserSet__WEBPACK_IMPORTED_MODULE_31__.UniqueTileUserSets),
193288
- /* harmony export */ UpsampledMapTile: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_70__.UpsampledMapTile),
193289
- /* harmony export */ WebMercator: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WebMercator__WEBPACK_IMPORTED_MODULE_50__.WebMercator),
193290
- /* harmony export */ WebMercatorProjection: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__.WebMercatorProjection),
193291
- /* harmony export */ WebMercatorTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__.WebMercatorTilingScheme),
193292
- /* harmony export */ WmsCapabilities: () => (/* reexport safe */ _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_45__.WmsCapabilities),
193293
- /* harmony export */ WmsCapability: () => (/* reexport safe */ _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_45__.WmsCapability),
193294
- /* harmony export */ WmsMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WmsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_61__.WmsMapLayerImageryProvider),
193295
- /* harmony export */ WmsUtilities: () => (/* reexport safe */ _internal_tile_map_WmsUtilities__WEBPACK_IMPORTED_MODULE_44__.WmsUtilities),
193296
- /* harmony export */ WmtsCapabilities: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_46__.WmtsCapabilities),
193297
- /* harmony export */ WmtsCapability: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_46__.WmtsCapability),
193298
- /* harmony export */ WmtsConstants: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_46__.WmtsConstants),
193299
- /* harmony export */ WmtsMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WmtsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_62__.WmtsMapLayerImageryProvider),
193550
+ /* harmony export */ UpsampledMapTile: () => (/* reexport safe */ _map_MapTile__WEBPACK_IMPORTED_MODULE_72__.UpsampledMapTile),
193551
+ /* harmony export */ WebMercator: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WebMercator__WEBPACK_IMPORTED_MODULE_52__.WebMercator),
193552
+ /* harmony export */ WebMercatorProjection: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__.WebMercatorProjection),
193553
+ /* harmony export */ WebMercatorTilingScheme: () => (/* reexport safe */ _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__.WebMercatorTilingScheme),
193554
+ /* harmony export */ WmsCapabilities: () => (/* reexport safe */ _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_47__.WmsCapabilities),
193555
+ /* harmony export */ WmsCapability: () => (/* reexport safe */ _internal_tile_map_WmsCapabilities__WEBPACK_IMPORTED_MODULE_47__.WmsCapability),
193556
+ /* harmony export */ WmsMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WmsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_63__.WmsMapLayerImageryProvider),
193557
+ /* harmony export */ WmsUtilities: () => (/* reexport safe */ _internal_tile_map_WmsUtilities__WEBPACK_IMPORTED_MODULE_46__.WmsUtilities),
193558
+ /* harmony export */ WmtsCapabilities: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_48__.WmtsCapabilities),
193559
+ /* harmony export */ WmtsCapability: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_48__.WmtsCapability),
193560
+ /* harmony export */ WmtsConstants: () => (/* reexport safe */ _internal_tile_map_WmtsCapabilities__WEBPACK_IMPORTED_MODULE_48__.WmtsConstants),
193561
+ /* harmony export */ WmtsMapLayerImageryProvider: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_WmtsMapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_64__.WmtsMapLayerImageryProvider),
193300
193562
  /* harmony export */ acquireImdlDecoder: () => (/* reexport safe */ _internal_tile_ImdlDecoder__WEBPACK_IMPORTED_MODULE_36__.acquireImdlDecoder),
193301
193563
  /* harmony export */ acquireImdlParser: () => (/* reexport safe */ _internal_tile_ImdlParser__WEBPACK_IMPORTED_MODULE_38__.acquireImdlParser),
193302
193564
  /* harmony export */ addRangeGraphic: () => (/* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_4__.addRangeGraphic),
193303
- /* harmony export */ appendQueryParams: () => (/* reexport safe */ _internal_tile_map_UrlUtils__WEBPACK_IMPORTED_MODULE_48__.appendQueryParams),
193304
- /* harmony export */ collectMaskRefs: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.collectMaskRefs),
193305
- /* harmony export */ compareMapLayer: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_94__.compareMapLayer),
193306
- /* harmony export */ computeCesiumTokenTimeoutInterval: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.computeCesiumTokenTimeoutInterval),
193307
- /* harmony export */ computeVerticalDatumShift: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__.computeVerticalDatumShift),
193308
- /* harmony export */ createClassifierTileTreeReference: () => (/* reexport safe */ _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_83__.createClassifierTileTreeReference),
193565
+ /* harmony export */ appendQueryParams: () => (/* reexport safe */ _internal_tile_map_UrlUtils__WEBPACK_IMPORTED_MODULE_50__.appendQueryParams),
193566
+ /* harmony export */ collectMaskRefs: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.collectMaskRefs),
193567
+ /* harmony export */ compareMapLayer: () => (/* reexport safe */ _internal_render_webgl_MapLayerParams__WEBPACK_IMPORTED_MODULE_96__.compareMapLayer),
193568
+ /* harmony export */ computeCesiumTokenTimeoutInterval: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.computeCesiumTokenTimeoutInterval),
193569
+ /* harmony export */ computeVerticalDatumShift: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__.computeVerticalDatumShift),
193570
+ /* harmony export */ createClassifierTileTreeReference: () => (/* reexport safe */ _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_85__.createClassifierTileTreeReference),
193309
193571
  /* harmony export */ createDefaultViewFlagOverrides: () => (/* reexport safe */ _internal_tile_ViewFlagOverrides__WEBPACK_IMPORTED_MODULE_0__.createDefaultViewFlagOverrides),
193310
193572
  /* harmony export */ createGraphicFromDescription: () => (/* reexport safe */ _internal_tile_ImdlGraphicsCreator__WEBPACK_IMPORTED_MODULE_37__.createGraphicFromDescription),
193311
193573
  /* harmony export */ createGraphicTemplateFromDescription: () => (/* reexport safe */ _internal_tile_ImdlGraphicsCreator__WEBPACK_IMPORTED_MODULE_37__.createGraphicTemplateFromDescription),
193312
- /* harmony export */ createMapLayerTreeReference: () => (/* reexport safe */ _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_64__.createMapLayerTreeReference),
193313
- /* harmony export */ createMaskTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.createMaskTreeReference),
193314
- /* harmony export */ createModelMapLayerTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.createModelMapLayerTileTreeReference),
193315
- /* harmony export */ createOrbitGtTileTreeReference: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__.createOrbitGtTileTreeReference),
193316
- /* harmony export */ createPrimaryTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.createPrimaryTileTreeReference),
193317
- /* harmony export */ createReaderPropsWithBaseUrl: () => (/* reexport safe */ _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_71__.createReaderPropsWithBaseUrl),
193318
- /* harmony export */ createRealityTileTreeReference: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__.createRealityTileTreeReference),
193319
- /* harmony export */ createSpatialTileTreeReferences: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.createSpatialTileTreeReferences),
193574
+ /* harmony export */ createMapLayerTreeReference: () => (/* reexport safe */ _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_66__.createMapLayerTreeReference),
193575
+ /* harmony export */ createMaskTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.createMaskTreeReference),
193576
+ /* harmony export */ createModelMapLayerTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.createModelMapLayerTileTreeReference),
193577
+ /* harmony export */ createOrbitGtTileTreeReference: () => (/* reexport safe */ _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__.createOrbitGtTileTreeReference),
193578
+ /* harmony export */ createPrimaryTileTreeReference: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.createPrimaryTileTreeReference),
193579
+ /* harmony export */ createReaderPropsWithBaseUrl: () => (/* reexport safe */ _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_73__.createReaderPropsWithBaseUrl),
193580
+ /* harmony export */ createRealityTileTreeReference: () => (/* reexport safe */ _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__.createRealityTileTreeReference),
193581
+ /* harmony export */ createSpatialTileTreeReferences: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.createSpatialTileTreeReferences),
193582
+ /* harmony export */ credentialedFetchRedirect: () => (/* reexport safe */ _internal_tile_map_MapLayerFetch__WEBPACK_IMPORTED_MODULE_45__.credentialedFetchRedirect),
193320
193583
  /* harmony export */ decodeImdlGraphics: () => (/* reexport safe */ _internal_tile_ImdlGraphicsCreator__WEBPACK_IMPORTED_MODULE_37__.decodeImdlGraphics),
193321
- /* harmony export */ decodeMeshoptBuffer: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_93__.decodeMeshoptBuffer),
193322
- /* harmony export */ deflateCoordinates: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_CoordinatesUtils__WEBPACK_IMPORTED_MODULE_47__.deflateCoordinates),
193323
- /* harmony export */ disposeTileTreesForGeometricModels: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__.disposeTileTreesForGeometricModels),
193324
- /* harmony export */ escapeHtml: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__.escapeHtml),
193325
- /* harmony export */ getCesiumAccessClient: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumAccessClient),
193326
- /* harmony export */ getCesiumAccessTokenAndEndpointUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumAccessTokenAndEndpointUrl),
193327
- /* harmony export */ getCesiumAssetUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumAssetUrl),
193328
- /* harmony export */ getCesiumOSMBuildingsUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumOSMBuildingsUrl),
193329
- /* harmony export */ getCesiumTerrainEndpointErrorDescription: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumTerrainEndpointErrorDescription),
193330
- /* harmony export */ getCesiumTerrainProvider: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.getCesiumTerrainProvider),
193331
- /* harmony export */ getGcsConverterAvailable: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__.getGcsConverterAvailable),
193584
+ /* harmony export */ decodeMeshoptBuffer: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_95__.decodeMeshoptBuffer),
193585
+ /* harmony export */ deflateCoordinates: () => (/* reexport safe */ _internal_tile_map_ImageryProviders_CoordinatesUtils__WEBPACK_IMPORTED_MODULE_49__.deflateCoordinates),
193586
+ /* harmony export */ disposeTileTreesForGeometricModels: () => (/* reexport safe */ _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__.disposeTileTreesForGeometricModels),
193587
+ /* harmony export */ escapeHtml: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__.escapeHtml),
193588
+ /* harmony export */ fetchMapLayerRequest: () => (/* reexport safe */ _internal_tile_map_MapLayerFetch__WEBPACK_IMPORTED_MODULE_45__.fetchMapLayerRequest),
193589
+ /* harmony export */ getCesiumAccessClient: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumAccessClient),
193590
+ /* harmony export */ getCesiumAccessTokenAndEndpointUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumAccessTokenAndEndpointUrl),
193591
+ /* harmony export */ getCesiumAssetUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumAssetUrl),
193592
+ /* harmony export */ getCesiumOSMBuildingsUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumOSMBuildingsUrl),
193593
+ /* harmony export */ getCesiumTerrainEndpointErrorDescription: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumTerrainEndpointErrorDescription),
193594
+ /* harmony export */ getCesiumTerrainProvider: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.getCesiumTerrainProvider),
193595
+ /* harmony export */ getGcsConverterAvailable: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__.getGcsConverterAvailable),
193332
193596
  /* harmony export */ getMeshPrimitives: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.getMeshPrimitives),
193333
- /* harmony export */ getMeshoptDecoder: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_93__.getMeshoptDecoder),
193334
- /* harmony export */ iModelTileParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_79__.iModelTileParamsFromJSON),
193335
- /* harmony export */ iModelTileTreeParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_81__.iModelTileTreeParamsFromJSON),
193336
- /* harmony export */ internalMapLayerImageryFormats: () => (/* reexport safe */ _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_63__.internalMapLayerImageryFormats),
193597
+ /* harmony export */ getMeshoptDecoder: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_95__.getMeshoptDecoder),
193598
+ /* harmony export */ iModelTileParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_81__.iModelTileParamsFromJSON),
193599
+ /* harmony export */ iModelTileTreeParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_83__.iModelTileTreeParamsFromJSON),
193600
+ /* harmony export */ internalMapLayerImageryFormats: () => (/* reexport safe */ _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_65__.internalMapLayerImageryFormats),
193337
193601
  /* harmony export */ overrideRequestTileTreeProps: () => (/* reexport safe */ _TileAdmin__WEBPACK_IMPORTED_MODULE_23__.overrideRequestTileTreeProps),
193338
193602
  /* harmony export */ readElementGraphics: () => (/* reexport safe */ _ImdlReader__WEBPACK_IMPORTED_MODULE_35__.readElementGraphics),
193339
193603
  /* harmony export */ readGltf: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.readGltf),
193340
193604
  /* harmony export */ readGltfGraphics: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.readGltfGraphics),
193341
193605
  /* harmony export */ readGltfTemplate: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.readGltfTemplate),
193342
193606
  /* harmony export */ readImdlContent: () => (/* reexport safe */ _ImdlReader__WEBPACK_IMPORTED_MODULE_35__.readImdlContent),
193343
- /* harmony export */ readPntsColors: () => (/* reexport safe */ _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_76__.readPntsColors),
193344
- /* harmony export */ readPointCloudTileContent: () => (/* reexport safe */ _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_76__.readPointCloudTileContent),
193345
- /* harmony export */ resolveCesiumTerrainEndpoint: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__.resolveCesiumTerrainEndpoint),
193346
- /* harmony export */ tileTreeReferenceFromRenderGraphic: () => (/* reexport safe */ _RenderGraphicTileTree__WEBPACK_IMPORTED_MODULE_78__.tileTreeReferenceFromRenderGraphic),
193347
- /* harmony export */ tryGetOrigin: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__.tryGetOrigin)
193607
+ /* harmony export */ readPntsColors: () => (/* reexport safe */ _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_78__.readPntsColors),
193608
+ /* harmony export */ readPointCloudTileContent: () => (/* reexport safe */ _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_78__.readPointCloudTileContent),
193609
+ /* harmony export */ resolveCesiumTerrainEndpoint: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__.resolveCesiumTerrainEndpoint),
193610
+ /* harmony export */ tileTreeReferenceFromRenderGraphic: () => (/* reexport safe */ _RenderGraphicTileTree__WEBPACK_IMPORTED_MODULE_80__.tileTreeReferenceFromRenderGraphic),
193611
+ /* harmony export */ tryGetOrigin: () => (/* reexport safe */ _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__.tryGetOrigin)
193348
193612
  /* harmony export */ });
193349
193613
  /* harmony import */ var _internal_tile_ViewFlagOverrides__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/tile/ViewFlagOverrides */ "../../core/frontend/lib/esm/internal/tile/ViewFlagOverrides.js");
193350
193614
  /* harmony import */ var _map_MapCartoRectangle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map/MapCartoRectangle */ "../../core/frontend/lib/esm/tile/map/MapCartoRectangle.js");
@@ -193387,60 +193651,62 @@ __webpack_require__.r(__webpack_exports__);
193387
193651
  /* harmony import */ var _internal_tile_ImdlParser__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../internal/tile/ImdlParser */ "../../core/frontend/lib/esm/internal/tile/ImdlParser.js");
193388
193652
  /* 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");
193389
193653
  /* harmony import */ var _map_MapLayerAuthentication__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./map/MapLayerAuthentication */ "../../core/frontend/lib/esm/tile/map/MapLayerAuthentication.js");
193390
- /* harmony import */ var _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./map/MapFeatureInfo */ "../../core/frontend/lib/esm/tile/map/MapFeatureInfo.js");
193391
- /* harmony import */ var _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./map/MapLayerFormatRegistry */ "../../core/frontend/lib/esm/tile/map/MapLayerFormatRegistry.js");
193392
- /* 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");
193393
- /* 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");
193394
- /* 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");
193395
- /* 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");
193396
- /* 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");
193397
- /* 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");
193398
- /* harmony import */ var _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./map/MapLayerImageryProvider */ "../../core/frontend/lib/esm/tile/map/MapLayerImageryProvider.js");
193399
- /* 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");
193400
- /* 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");
193401
- /* 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");
193402
- /* 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");
193403
- /* 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");
193404
- /* 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");
193405
- /* 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");
193406
- /* 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");
193407
- /* 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");
193408
- /* 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");
193409
- /* 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");
193410
- /* 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");
193411
- /* 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");
193412
- /* harmony import */ var _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./map/MapLayerImageryFormats */ "../../core/frontend/lib/esm/tile/map/MapLayerImageryFormats.js");
193413
- /* harmony import */ var _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./map/MapLayerTileTreeReference */ "../../core/frontend/lib/esm/tile/map/MapLayerTileTreeReference.js");
193414
- /* harmony import */ var _map_MapTileTree__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./map/MapTileTree */ "../../core/frontend/lib/esm/tile/map/MapTileTree.js");
193415
- /* harmony import */ var _map_TerrainMeshProvider__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./map/TerrainMeshProvider */ "../../core/frontend/lib/esm/tile/map/TerrainMeshProvider.js");
193416
- /* harmony import */ var _map_TerrainProvider__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./map/TerrainProvider */ "../../core/frontend/lib/esm/tile/map/TerrainProvider.js");
193417
- /* harmony import */ var _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./map/CesiumTerrainProvider */ "../../core/frontend/lib/esm/tile/map/CesiumTerrainProvider.js");
193418
- /* harmony import */ var _map_EllipsoidTerrainProvider__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./map/EllipsoidTerrainProvider */ "../../core/frontend/lib/esm/tile/map/EllipsoidTerrainProvider.js");
193419
- /* harmony import */ var _map_MapTile__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./map/MapTile */ "../../core/frontend/lib/esm/tile/map/MapTile.js");
193420
- /* harmony import */ var _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ../internal/tile/RealityTileLoader */ "../../core/frontend/lib/esm/internal/tile/RealityTileLoader.js");
193421
- /* 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");
193422
- /* harmony import */ var _map_BingElevation__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./map/BingElevation */ "../../core/frontend/lib/esm/tile/map/BingElevation.js");
193423
- /* harmony import */ var _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./map/MapTilingScheme */ "../../core/frontend/lib/esm/tile/map/MapTilingScheme.js");
193424
- /* 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");
193425
- /* harmony import */ var _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ../internal/tile/PntsReader */ "../../core/frontend/lib/esm/internal/tile/PntsReader.js");
193426
- /* harmony import */ var _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ../internal/tile/RealityModelTileTree */ "../../core/frontend/lib/esm/internal/tile/RealityModelTileTree.js");
193427
- /* harmony import */ var _RenderGraphicTileTree__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./RenderGraphicTileTree */ "../../core/frontend/lib/esm/tile/RenderGraphicTileTree.js");
193428
- /* harmony import */ var _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ../internal/tile/IModelTile */ "../../core/frontend/lib/esm/internal/tile/IModelTile.js");
193429
- /* harmony import */ var _internal_tile_DynamicIModelTile__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ../internal/tile/DynamicIModelTile */ "../../core/frontend/lib/esm/internal/tile/DynamicIModelTile.js");
193430
- /* harmony import */ var _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ../internal/tile/IModelTileTree */ "../../core/frontend/lib/esm/internal/tile/IModelTileTree.js");
193431
- /* harmony import */ var _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../internal/tile/PrimaryTileTree */ "../../core/frontend/lib/esm/internal/tile/PrimaryTileTree.js");
193432
- /* harmony import */ var _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../internal/tile/ClassifierTileTree */ "../../core/frontend/lib/esm/internal/tile/ClassifierTileTree.js");
193433
- /* harmony import */ var _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../internal/tile/OrbitGtTileTree */ "../../core/frontend/lib/esm/internal/tile/OrbitGtTileTree.js");
193434
- /* harmony import */ var _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./map/ImageryTileTree */ "../../core/frontend/lib/esm/tile/map/ImageryTileTree.js");
193435
- /* harmony import */ var _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./map/MapLayerSources */ "../../core/frontend/lib/esm/tile/map/MapLayerSources.js");
193436
- /* harmony import */ var _map_MapTiledGraphicsProvider__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./map/MapTiledGraphicsProvider */ "../../core/frontend/lib/esm/tile/map/MapTiledGraphicsProvider.js");
193437
- /* harmony import */ var _internal_tile_CesiumAssetProvider__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ../internal/tile/CesiumAssetProvider */ "../../core/frontend/lib/esm/internal/tile/CesiumAssetProvider.js");
193438
- /* harmony import */ var _internal_tile_ContextShareProvider__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ../internal/tile/ContextShareProvider */ "../../core/frontend/lib/esm/internal/tile/ContextShareProvider.js");
193439
- /* harmony import */ var _internal_tile_ThreeDTileFormatInterpreter__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ../internal/tile/ThreeDTileFormatInterpreter */ "../../core/frontend/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js");
193440
- /* harmony import */ var _internal_tile_OPCFormatInterpreter__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ../internal/tile/OPCFormatInterpreter */ "../../core/frontend/lib/esm/internal/tile/OPCFormatInterpreter.js");
193441
- /* harmony import */ var _internal_tile_FetchCloudStorage__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ../internal/tile/FetchCloudStorage */ "../../core/frontend/lib/esm/internal/tile/FetchCloudStorage.js");
193442
- /* harmony import */ var _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ../internal/tile/MeshoptCompression */ "../../core/frontend/lib/esm/internal/tile/MeshoptCompression.js");
193443
- /* 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");
193654
+ /* harmony import */ var _map_MapLayerFetchHandler__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./map/MapLayerFetchHandler */ "../../core/frontend/lib/esm/tile/map/MapLayerFetchHandler.js");
193655
+ /* harmony import */ var _map_MapFeatureInfo__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./map/MapFeatureInfo */ "../../core/frontend/lib/esm/tile/map/MapFeatureInfo.js");
193656
+ /* harmony import */ var _map_MapLayerFormatRegistry__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./map/MapLayerFormatRegistry */ "../../core/frontend/lib/esm/tile/map/MapLayerFormatRegistry.js");
193657
+ /* 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");
193658
+ /* 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");
193659
+ /* 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");
193660
+ /* 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");
193661
+ /* 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");
193662
+ /* 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");
193663
+ /* 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");
193664
+ /* harmony import */ var _map_MapLayerImageryProvider__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./map/MapLayerImageryProvider */ "../../core/frontend/lib/esm/tile/map/MapLayerImageryProvider.js");
193665
+ /* 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");
193666
+ /* 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");
193667
+ /* 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");
193668
+ /* 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");
193669
+ /* 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");
193670
+ /* 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");
193671
+ /* 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");
193672
+ /* 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");
193673
+ /* 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");
193674
+ /* 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");
193675
+ /* 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");
193676
+ /* 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");
193677
+ /* 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");
193678
+ /* harmony import */ var _map_MapLayerImageryFormats__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./map/MapLayerImageryFormats */ "../../core/frontend/lib/esm/tile/map/MapLayerImageryFormats.js");
193679
+ /* harmony import */ var _map_MapLayerTileTreeReference__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./map/MapLayerTileTreeReference */ "../../core/frontend/lib/esm/tile/map/MapLayerTileTreeReference.js");
193680
+ /* harmony import */ var _map_MapTileTree__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./map/MapTileTree */ "../../core/frontend/lib/esm/tile/map/MapTileTree.js");
193681
+ /* harmony import */ var _map_TerrainMeshProvider__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./map/TerrainMeshProvider */ "../../core/frontend/lib/esm/tile/map/TerrainMeshProvider.js");
193682
+ /* harmony import */ var _map_TerrainProvider__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./map/TerrainProvider */ "../../core/frontend/lib/esm/tile/map/TerrainProvider.js");
193683
+ /* harmony import */ var _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./map/CesiumTerrainProvider */ "../../core/frontend/lib/esm/tile/map/CesiumTerrainProvider.js");
193684
+ /* harmony import */ var _map_EllipsoidTerrainProvider__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./map/EllipsoidTerrainProvider */ "../../core/frontend/lib/esm/tile/map/EllipsoidTerrainProvider.js");
193685
+ /* harmony import */ var _map_MapTile__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./map/MapTile */ "../../core/frontend/lib/esm/tile/map/MapTile.js");
193686
+ /* harmony import */ var _internal_tile_RealityTileLoader__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ../internal/tile/RealityTileLoader */ "../../core/frontend/lib/esm/internal/tile/RealityTileLoader.js");
193687
+ /* 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");
193688
+ /* harmony import */ var _map_BingElevation__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./map/BingElevation */ "../../core/frontend/lib/esm/tile/map/BingElevation.js");
193689
+ /* harmony import */ var _map_MapTilingScheme__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./map/MapTilingScheme */ "../../core/frontend/lib/esm/tile/map/MapTilingScheme.js");
193690
+ /* 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");
193691
+ /* harmony import */ var _internal_tile_PntsReader__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ../internal/tile/PntsReader */ "../../core/frontend/lib/esm/internal/tile/PntsReader.js");
193692
+ /* harmony import */ var _internal_tile_RealityModelTileTree__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ../internal/tile/RealityModelTileTree */ "../../core/frontend/lib/esm/internal/tile/RealityModelTileTree.js");
193693
+ /* harmony import */ var _RenderGraphicTileTree__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./RenderGraphicTileTree */ "../../core/frontend/lib/esm/tile/RenderGraphicTileTree.js");
193694
+ /* harmony import */ var _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ../internal/tile/IModelTile */ "../../core/frontend/lib/esm/internal/tile/IModelTile.js");
193695
+ /* harmony import */ var _internal_tile_DynamicIModelTile__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../internal/tile/DynamicIModelTile */ "../../core/frontend/lib/esm/internal/tile/DynamicIModelTile.js");
193696
+ /* harmony import */ var _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../internal/tile/IModelTileTree */ "../../core/frontend/lib/esm/internal/tile/IModelTileTree.js");
193697
+ /* harmony import */ var _internal_tile_PrimaryTileTree__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../internal/tile/PrimaryTileTree */ "../../core/frontend/lib/esm/internal/tile/PrimaryTileTree.js");
193698
+ /* harmony import */ var _internal_tile_ClassifierTileTree__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ../internal/tile/ClassifierTileTree */ "../../core/frontend/lib/esm/internal/tile/ClassifierTileTree.js");
193699
+ /* harmony import */ var _internal_tile_OrbitGtTileTree__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ../internal/tile/OrbitGtTileTree */ "../../core/frontend/lib/esm/internal/tile/OrbitGtTileTree.js");
193700
+ /* harmony import */ var _map_ImageryTileTree__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./map/ImageryTileTree */ "../../core/frontend/lib/esm/tile/map/ImageryTileTree.js");
193701
+ /* harmony import */ var _map_MapLayerSources__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./map/MapLayerSources */ "../../core/frontend/lib/esm/tile/map/MapLayerSources.js");
193702
+ /* harmony import */ var _map_MapTiledGraphicsProvider__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./map/MapTiledGraphicsProvider */ "../../core/frontend/lib/esm/tile/map/MapTiledGraphicsProvider.js");
193703
+ /* harmony import */ var _internal_tile_CesiumAssetProvider__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ../internal/tile/CesiumAssetProvider */ "../../core/frontend/lib/esm/internal/tile/CesiumAssetProvider.js");
193704
+ /* harmony import */ var _internal_tile_ContextShareProvider__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ../internal/tile/ContextShareProvider */ "../../core/frontend/lib/esm/internal/tile/ContextShareProvider.js");
193705
+ /* harmony import */ var _internal_tile_ThreeDTileFormatInterpreter__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ../internal/tile/ThreeDTileFormatInterpreter */ "../../core/frontend/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js");
193706
+ /* harmony import */ var _internal_tile_OPCFormatInterpreter__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ../internal/tile/OPCFormatInterpreter */ "../../core/frontend/lib/esm/internal/tile/OPCFormatInterpreter.js");
193707
+ /* harmony import */ var _internal_tile_FetchCloudStorage__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ../internal/tile/FetchCloudStorage */ "../../core/frontend/lib/esm/internal/tile/FetchCloudStorage.js");
193708
+ /* harmony import */ var _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ../internal/tile/MeshoptCompression */ "../../core/frontend/lib/esm/internal/tile/MeshoptCompression.js");
193709
+ /* 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");
193444
193710
  /*---------------------------------------------------------------------------------------------
193445
193711
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
193446
193712
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -193551,6 +193817,8 @@ __webpack_require__.r(__webpack_exports__);
193551
193817
 
193552
193818
 
193553
193819
 
193820
+
193821
+
193554
193822
 
193555
193823
 
193556
193824
 
@@ -195061,6 +195329,26 @@ __webpack_require__.r(__webpack_exports__);
195061
195329
 
195062
195330
 
195063
195331
 
195332
+ /***/ },
195333
+
195334
+ /***/ "../../core/frontend/lib/esm/tile/map/MapLayerFetchHandler.js"
195335
+ /*!********************************************************************!*\
195336
+ !*** ../../core/frontend/lib/esm/tile/map/MapLayerFetchHandler.js ***!
195337
+ \********************************************************************/
195338
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
195339
+
195340
+ "use strict";
195341
+ __webpack_require__.r(__webpack_exports__);
195342
+ /*---------------------------------------------------------------------------------------------
195343
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
195344
+ * See LICENSE.md in the project root for license terms and full copyright notice.
195345
+ *--------------------------------------------------------------------------------------------*/
195346
+ /** @packageDocumentation
195347
+ * @module MapLayers
195348
+ */
195349
+
195350
+
195351
+
195064
195352
  /***/ },
195065
195353
 
195066
195354
  /***/ "../../core/frontend/lib/esm/tile/map/MapLayerFormatRegistry.js"
@@ -195072,6 +195360,7 @@ __webpack_require__.r(__webpack_exports__);
195072
195360
  "use strict";
195073
195361
  __webpack_require__.r(__webpack_exports__);
195074
195362
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
195363
+ /* harmony export */ MapLayerAuthenticationFailedError: () => (/* binding */ MapLayerAuthenticationFailedError),
195075
195364
  /* harmony export */ MapLayerFormat: () => (/* binding */ MapLayerFormat),
195076
195365
  /* harmony export */ MapLayerFormatRegistry: () => (/* binding */ MapLayerFormatRegistry),
195077
195366
  /* harmony export */ MapLayerUntrustedOriginError: () => (/* binding */ MapLayerUntrustedOriginError)
@@ -195155,6 +195444,22 @@ class MapLayerUntrustedOriginError extends Error {
195155
195444
  this.url = url;
195156
195445
  }
195157
195446
  }
195447
+ /** Error reporting an unrecoverable authentication failure for a map-layer request.
195448
+ * Thrown by a [[MapLayerFetchHandler]] when it recognizes an authentication failure it cannot fix
195449
+ * silently (e.g. a `401` that survives a token refresh, or a protocol-specific error embedded in a
195450
+ * `200` body); callers convert it to [[MapLayerImageryProviderStatus.RequireAuth]] (tile requests and
195451
+ * provider initialization) or [[MapLayerSourceStatus.RequireAuth]] (source validation), letting the
195452
+ * application prompt for re-authentication.
195453
+ * @beta
195454
+ */
195455
+ class MapLayerAuthenticationFailedError extends Error {
195456
+ /** The URL of the request that failed to authenticate. */
195457
+ url;
195458
+ constructor(url) {
195459
+ super("Authentication failed for map-layer request");
195460
+ this.url = url;
195461
+ }
195462
+ }
195158
195463
  /**
195159
195464
  * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
195160
195465
  * @public
@@ -195174,6 +195479,30 @@ class MapLayerFormatRegistry {
195174
195479
  * @beta
195175
195480
  */
195176
195481
  restrictCredentialsToTrustedOrigins = false;
195482
+ _fetchHandlers = [];
195483
+ /** Appends a [[MapLayerFetchHandler]] to the pipeline wrapping every map-layer network request issued through
195484
+ * [[MapLayerImageryProvider]] — tiles, tooltips, capabilities, service metadata, and source validation.
195485
+ * Handlers run in registration order (the first registered is the outermost), each deciding whether to
195486
+ * manage a request or decline it to the next one; several layers of an application can therefore register
195487
+ * their own handler without coordinating. Returns the function that removes the handler.
195488
+ * @beta
195489
+ */
195490
+ addMapLayerFetchHandler(handler) {
195491
+ // One wrapper per registration, so registering the same function twice yields independent removers.
195492
+ const registration = async (request, fetchRequest) => handler(request, fetchRequest);
195493
+ this._fetchHandlers.push(registration);
195494
+ return () => {
195495
+ const index = this._fetchHandlers.indexOf(registration);
195496
+ if (index >= 0)
195497
+ this._fetchHandlers.splice(index, 1);
195498
+ };
195499
+ }
195500
+ /** The registered [[MapLayerFetchHandler]]s, in pipeline order.
195501
+ * @internal
195502
+ */
195503
+ get mapLayerFetchHandlers() {
195504
+ return this._fetchHandlers;
195505
+ }
195177
195506
  constructor(opts) {
195178
195507
  this._configOptions = opts ?? {};
195179
195508
  _internal__WEBPACK_IMPORTED_MODULE_2__.internalMapLayerImageryFormats.forEach((format) => this.register(format));
@@ -195383,7 +195712,12 @@ class WmsMapLayerFormat extends ImageryMapLayerFormat {
195383
195712
  try {
195384
195713
  let subLayers;
195385
195714
  const maxVisibleSubLayers = 50;
195386
- const capabilities = await _internal__WEBPACK_IMPORTED_MODULE_0__.WmsCapabilities.create(url, (userName && password ? { user: userName, password } : undefined), ignoreCache, source.collectQueryParams());
195715
+ const capabilities = await _internal__WEBPACK_IMPORTED_MODULE_0__.WmsCapabilities.create(url, {
195716
+ credentials: (userName && password ? { user: userName, password } : undefined),
195717
+ ignoreCache,
195718
+ queryParams: source.collectQueryParams(),
195719
+ formatId: source.formatId,
195720
+ });
195387
195721
  if (capabilities !== undefined) {
195388
195722
  subLayers = capabilities.getSubLayers(false);
195389
195723
  const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);
@@ -195433,7 +195767,10 @@ class WmsMapLayerFormat extends ImageryMapLayerFormat {
195433
195767
  return { status: _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.UntrustedOrigin, blockedOrigin };
195434
195768
  }
195435
195769
  let status = _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidUrl;
195436
- if (err?.status === 401) {
195770
+ if (err instanceof _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerAuthenticationFailedError) {
195771
+ status = _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.RequireAuth;
195772
+ }
195773
+ else if (err?.status === 401) {
195437
195774
  status = ((userName && password) ? _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidCredentials : _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.RequireAuth);
195438
195775
  }
195439
195776
  return { status };
@@ -195458,7 +195795,12 @@ class WmtsMapLayerFormat extends ImageryMapLayerFormat {
195458
195795
  const { url, userName, password } = source;
195459
195796
  try {
195460
195797
  const subLayers = [];
195461
- const capabilities = await _internal__WEBPACK_IMPORTED_MODULE_0__.WmtsCapabilities.create(url, (userName && password ? { user: userName, password } : undefined), ignoreCache, source.collectQueryParams());
195798
+ const capabilities = await _internal__WEBPACK_IMPORTED_MODULE_0__.WmtsCapabilities.create(url, {
195799
+ credentials: (userName && password ? { user: userName, password } : undefined),
195800
+ ignoreCache,
195801
+ queryParams: source.collectQueryParams(),
195802
+ formatId: source.formatId,
195803
+ });
195462
195804
  if (!capabilities)
195463
195805
  return { status: _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidUrl };
195464
195806
  // Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.
@@ -195506,7 +195848,10 @@ class WmtsMapLayerFormat extends ImageryMapLayerFormat {
195506
195848
  return { status: _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.UntrustedOrigin, blockedOrigin };
195507
195849
  }
195508
195850
  let status = _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidUrl;
195509
- if (err?.status === 401) {
195851
+ if (err instanceof _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerAuthenticationFailedError) {
195852
+ status = _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.RequireAuth;
195853
+ }
195854
+ else if (err?.status === 401) {
195510
195855
  status = ((userName && password) ? _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.InvalidCredentials : _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerSourceStatus.RequireAuth);
195511
195856
  }
195512
195857
  return { status };
@@ -195598,6 +195943,7 @@ __webpack_require__.r(__webpack_exports__);
195598
195943
  const tileImageSize = 256, untiledImageSize = 256;
195599
195944
  const earthRadius = 6378137;
195600
195945
  const doDebugToolTips = false;
195946
+ const loggerCategory = "MapLayerImageryProvider";
195601
195947
  /** Escapes HTML metacharacters so the text renders literally when assigned to `innerHTML`.
195602
195948
  * Use for any server- or user-supplied string that ends up in the map tooltip, which is rendered
195603
195949
  * as HTML by [[MapLayerTileTreeReference.getToolTip]].
@@ -195884,12 +196230,37 @@ class MapLayerImageryProvider {
195884
196230
  * @internal
195885
196231
  */
195886
196232
  onStatusUpdated(_newStatus) { }
196233
+ /** Transitions to [[MapLayerImageryProviderStatus.RequireAuth]] after a [[MapLayerFetchHandler]] reported an
196234
+ * unrecoverable authentication failure. The user is notified once per transition, and only if tiles had
196235
+ * loaded before: an initialization failure was already reported through source validation.
196236
+ * @internal
196237
+ */
196238
+ reportAuthenticationFailure() {
196239
+ const alreadyReported = this._status === MapLayerImageryProviderStatus.RequireAuth;
196240
+ this.setStatus(MapLayerImageryProviderStatus.RequireAuth);
196241
+ if (alreadyReported || !this._hasSuccessfullyFetchedTile)
196242
+ return;
196243
+ const msg = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.Messages.LoadTileTokenError", { layerName: this._settings.name });
196244
+ _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.notifications.outputMessage(new _NotificationManager__WEBPACK_IMPORTED_MODULE_4__.NotifyMessageDetails(_NotificationManager__WEBPACK_IMPORTED_MODULE_4__.OutputMessagePriority.Warning, msg));
196245
+ }
195887
196246
  /** @internal */
195888
196247
  setRequestAuthorization(headers) {
195889
196248
  if (this._settings.userName && this._settings.password) {
195890
196249
  (0,_request_utils__WEBPACK_IMPORTED_MODULE_6__.setBasicAuthorization)(headers, this._settings.userName, this._settings.password);
195891
196250
  }
195892
196251
  }
196252
+ /** The access client registered for this layer's format, if any.
196253
+ * @internal
196254
+ */
196255
+ get accessClient() {
196256
+ return _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry?.getAccessClient(this._settings.formatId);
196257
+ }
196258
+ /** True while at least one [[MapLayerFetchHandler]] is registered via [[MapLayerFormatRegistry.addMapLayerFetchHandler]].
196259
+ * @internal
196260
+ */
196261
+ get hasFetchHandler() {
196262
+ return (_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry?.mapLayerFetchHandlers.length ?? 0) > 0;
196263
+ }
195893
196264
  /** Returns true if the given URL has the same origin as this layer's settings URL.
195894
196265
  * Used to avoid leaking credentials to third-party hosts.
195895
196266
  * @internal
@@ -195959,28 +196330,12 @@ class MapLayerImageryProvider {
195959
196330
  logUntrustedOriginUse(url) {
195960
196331
  _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry.logUntrustedOriginUse(url);
195961
196332
  }
195962
- /** The redirect policy to apply to a request that carries browser credentials (see [[includeUserCredentials]]).
195963
- *
195964
- * When [[MapLayerFormatRegistry.restrictCredentialsToTrustedOrigins]] is enabled, redirects are refused
195965
- * outright (`"error"`). `fetch` cannot be asked to follow only same-origin redirects, and by the time a
195966
- * followed redirect can be inspected the credentials have already been delivered to the destination — so
195967
- * refusing is the only way to honour the guarantee that credentials reach none but the origins listed in
195968
- * [[MapLayerFormatRegistry.trustedCredentialsOrigins]]. Legitimate same-origin redirects fail as a result;
195969
- * that is the cost of the opt-in restriction.
195970
- *
195971
- * When the restriction is disabled (the default), redirects are followed as before and
195972
- * [[checkCredentialedRedirect]] reports the destination after the fact.
195973
- * @internal
195974
- */
195975
- get credentialedRedirect() {
195976
- return _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined;
195977
- }
195978
196333
  /** Detects that a request carrying browser credentials (see [[includeUserCredentials]]) was transparently
195979
196334
  * redirected to a different origin, and reports or logs that origin.
195980
196335
  *
195981
196336
  * This is a **best-effort, after-the-fact** signal used only while
195982
196337
  * [[MapLayerFormatRegistry.restrictCredentialsToTrustedOrigins]] is disabled, where credentialed requests
195983
- * still follow redirects (see [[credentialedRedirect]]). It cannot prevent the exposure — the credentials
196338
+ * still follow redirects (see [[credentialedFetchRedirect]]). It cannot prevent the exposure — the credentials
195984
196339
  * have already been sent — and it does not fire at all when the destination denies CORS, because `fetch`
195985
196340
  * then rejects instead of returning a `Response`. The destination origin is never latched as SSO-succeeded,
195986
196341
  * so credentials do not keep flowing to it.
@@ -195995,46 +196350,32 @@ class MapLayerImageryProvider {
195995
196350
  else
195996
196351
  this.logUntrustedOriginUse(response.url); // no-op when the restriction is enabled
195997
196352
  }
195998
- /** @internal */
195999
- async makeRequest(url, timeoutMs, authorization) {
196000
- let response;
196001
- let headers;
196002
- let hasCreds = false;
196003
- // Whether this request had basic-auth credentials of its own to offer. Requests carrying a caller-supplied
196004
- // `authorization` are excluded: those bypass the origin policy entirely.
196005
- const hasSettingsCreds = !authorization && !!this._settings.userName && !!this._settings.password;
196006
- if (authorization) {
196007
- headers = new Headers();
196008
- headers.set("Authorization", authorization);
196009
- }
196010
- else if (hasSettingsCreds) {
196011
- if (this.isCredentialsSharingAllowed(url)) {
196012
- hasCreds = true;
196013
- headers = new Headers();
196014
- this.setRequestAuthorization(headers);
196015
- if (!this.matchesSettingsUrlOrigin(url))
196016
- this.logUntrustedOriginUse(url);
196017
- }
196018
- }
196019
- const includeCredentials = this.includeUserCredentials(url);
196353
+ /** The default send for [[makeRequest]]: legacy redirect policy, NTLM/SSO handling and origin-trust
196354
+ * checks for one request. The SSO retry never applies to sends a fetch handler modified.
196355
+ */
196356
+ async sendDefaultRequest(request, credentialed, hasCreds, hasSettingsCreds, timeoutMs) {
196357
+ const requestUrl = request.url;
196358
+ const includeCredentials = this.includeUserCredentials(requestUrl);
196020
196359
  const opts = {
196021
196360
  method: "GET",
196022
- headers,
196361
+ headers: request.headers,
196023
196362
  credentials: includeCredentials ? "include" : undefined,
196024
- redirect: includeCredentials ? this.credentialedRedirect : undefined,
196363
+ // Sends the handler modified may carry injected secrets: same redirect policy as credentialed ones.
196364
+ redirect: (includeCredentials || credentialed) ? (0,_internal__WEBPACK_IMPORTED_MODULE_5__.credentialedFetchRedirect)() : undefined,
196025
196365
  };
196026
196366
  if (timeoutMs !== undefined)
196027
196367
  (0,_request_utils__WEBPACK_IMPORTED_MODULE_6__.setRequestTimeout)(opts, timeoutMs);
196028
- response = await fetch(url, opts);
196029
- if (includeCredentials)
196030
- this.checkCredentialedRedirect(url, response);
196368
+ let rsp = await fetch(requestUrl, opts);
196369
+ if (includeCredentials || credentialed)
196370
+ this.checkCredentialedRedirect(requestUrl, rsp);
196031
196371
  // fetch follows redirects transparently, so all trust decisions below target the final
196032
196372
  // (post-redirect) URL reported by the response, not the URL we asked for.
196033
- const challengedUrl = response.url || url;
196034
- if (response.status === 401
196035
- && (0,_request_utils__WEBPACK_IMPORTED_MODULE_6__.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])
196373
+ const challengedUrl = rsp.url || requestUrl;
196374
+ if (rsp.status === 401
196375
+ && (0,_request_utils__WEBPACK_IMPORTED_MODULE_6__.headersIncludeAuthMethod)(rsp.headers, ["ntlm", "negotiate"])
196036
196376
  && !includeCredentials
196037
- && !hasCreds) {
196377
+ && !hasCreds
196378
+ && !credentialed) {
196038
196379
  if (this.isSsoAllowed(challengedUrl)) {
196039
196380
  // Removed the previous headers and make sure "include" credentials is set
196040
196381
  opts.headers = undefined;
@@ -196044,8 +196385,8 @@ class MapLayerImageryProvider {
196044
196385
  opts.redirect = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry.restrictCredentialsToTrustedOrigins ? "error" : undefined;
196045
196386
  this.logUntrustedOriginUse(challengedUrl);
196046
196387
  // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication)
196047
- response = await fetch(challengedUrl, opts);
196048
- if (response.status === 200) {
196388
+ rsp = await fetch(challengedUrl, opts);
196389
+ if (rsp.status === 200) {
196049
196390
  this.recordSsoSucceeded(challengedUrl); // avoid going through 401 challenges over and over for this origin
196050
196391
  }
196051
196392
  }
@@ -196053,16 +196394,69 @@ class MapLayerImageryProvider {
196053
196394
  this.reportBlockedOrigin(challengedUrl);
196054
196395
  }
196055
196396
  }
196056
- else if ((response.status === 401 || response.status === 403) && hasSettingsCreds && !this.isCredentialsSharingAllowed(challengedUrl)) {
196397
+ else if ((rsp.status === 401 || rsp.status === 403) && hasSettingsCreds && !credentialed && !this.isCredentialsSharingAllowed(challengedUrl)) {
196057
196398
  // Some servers answer an unauthenticated request with 403 (Forbidden) rather than a 401 challenge;
196058
196399
  // since this request could not present its credentials to the challenging origin, either status most
196059
- // likely results from that. The permission is recomputed for the challenged URL rather than reusing the
196400
+ // likely results from that (never on a send the handler modified: the handler classifies those).
196401
+ // The permission is recomputed for the challenged URL rather than reusing the
196060
196402
  // decision made for the requested one: `fetch` strips the Authorization header when it follows a
196061
196403
  // cross-origin redirect, so a trusted request can still arrive unauthenticated at an untrusted origin,
196062
196404
  // and conversely a request that started out untrusted may end up at an origin that is trusted.
196063
196405
  this.reportBlockedOrigin(challengedUrl);
196064
196406
  }
196065
- return response;
196407
+ return rsp;
196408
+ }
196409
+ /** @internal */
196410
+ async makeRequest(url, timeoutMs, authorization) {
196411
+ let headers;
196412
+ let hasCreds = false;
196413
+ // Whether this request had basic-auth credentials of its own to offer. Requests carrying a caller-supplied
196414
+ // `authorization` are excluded: those bypass the origin policy entirely.
196415
+ const hasSettingsCreds = !authorization && !!this._settings.userName && !!this._settings.password;
196416
+ if (authorization) {
196417
+ headers = new Headers();
196418
+ headers.set("Authorization", authorization);
196419
+ }
196420
+ else if (hasSettingsCreds) {
196421
+ if (this.isCredentialsSharingAllowed(url)) {
196422
+ hasCreds = true;
196423
+ headers = new Headers();
196424
+ this.setRequestAuthorization(headers);
196425
+ if (!this.matchesSettingsUrlOrigin(url))
196426
+ this.logUntrustedOriginUse(url);
196427
+ }
196428
+ }
196429
+ // Route the request through the registered fetch handler (if any), which has full control: it may
196430
+ // send a copy with other query parameters and headers, retry, or short-circuit. Handler failures propagate: the
196431
+ // request must never silently degrade to an unauthenticated one.
196432
+ try {
196433
+ const { response, managedByHandler } = await (0,_internal__WEBPACK_IMPORTED_MODULE_5__.fetchMapLayerRequest)({
196434
+ url,
196435
+ formatId: this._settings.formatId,
196436
+ layerUrl: this._settings.url,
196437
+ layerProperties: this._settings.properties,
196438
+ headers,
196439
+ send: async (request, credentialed) => this.sendDefaultRequest(request, credentialed, hasCreds, hasSettingsCreds, timeoutMs),
196440
+ });
196441
+ if (managedByHandler)
196442
+ this._handlerManagedResponses.add(response);
196443
+ return response;
196444
+ }
196445
+ catch (error) {
196446
+ if (error instanceof _internal__WEBPACK_IMPORTED_MODULE_5__.MapLayerAuthenticationFailedError)
196447
+ this.reportAuthenticationFailure();
196448
+ throw error;
196449
+ }
196450
+ }
196451
+ /** Responses of [[makeRequest]] managed by a fetch handler (see [[MapLayerFetchResult.managedByHandler]]). */
196452
+ _handlerManagedResponses = new WeakSet();
196453
+ /** Returns true if a fetch handler returned this [[makeRequest]] response as its own, in which case the
196454
+ * provider applies none of its default response handling (status-code or protocol-error classification):
196455
+ * the handler reports authentication failures by throwing [[MapLayerAuthenticationFailedError]] instead.
196456
+ * @internal
196457
+ */
196458
+ isManagedByHandler(response) {
196459
+ return this._handlerManagedResponses.has(response);
196066
196460
  }
196067
196461
  /** Returns a map layer tile at the specified settings. */
196068
196462
  async loadTile(row, column, zoomLevel) {
@@ -196097,16 +196491,39 @@ class MapLayerImageryProvider {
196097
196491
  headers = new Headers();
196098
196492
  this.setRequestAuthorization(headers);
196099
196493
  }
196494
+ let response;
196100
196495
  try {
196101
- const includeCredentials = this.includeUserCredentials(url);
196102
- const response = await fetch(url, {
196103
- method: "GET",
196496
+ ({ response } = await (0,_internal__WEBPACK_IMPORTED_MODULE_5__.fetchMapLayerRequest)({
196497
+ url,
196498
+ formatId: this._settings.formatId,
196499
+ layerUrl: this._settings.url,
196500
+ layerProperties: this._settings.properties,
196104
196501
  headers,
196105
- credentials: includeCredentials ? "include" : undefined,
196106
- redirect: includeCredentials ? this.credentialedRedirect : undefined,
196107
- });
196108
- if (includeCredentials)
196109
- this.checkCredentialedRedirect(url, response);
196502
+ send: async (request, credentialed) => {
196503
+ const requestUrl = request.url;
196504
+ const includeCredentials = this.includeUserCredentials(requestUrl);
196505
+ const rsp = await fetch(requestUrl, {
196506
+ method: "GET",
196507
+ headers: request.headers,
196508
+ credentials: includeCredentials ? "include" : undefined,
196509
+ redirect: (includeCredentials || credentialed) ? (0,_internal__WEBPACK_IMPORTED_MODULE_5__.credentialedFetchRedirect)() : undefined,
196510
+ });
196511
+ if (includeCredentials || credentialed)
196512
+ this.checkCredentialedRedirect(requestUrl, rsp);
196513
+ return rsp;
196514
+ },
196515
+ }));
196516
+ }
196517
+ catch (error) {
196518
+ // Never degrade to an unauthenticated request or reject (getToolTip callers do not catch); skip the tooltip.
196519
+ // The status transition the handler asked for still applies.
196520
+ if (error instanceof _internal__WEBPACK_IMPORTED_MODULE_5__.MapLayerAuthenticationFailedError)
196521
+ this.reportAuthenticationFailure();
196522
+ if (this.hasFetchHandler)
196523
+ _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)}`);
196524
+ return;
196525
+ }
196526
+ try {
196110
196527
  let text = await response.text();
196111
196528
  if (text) {
196112
196529
  // Tooltip content (e.g. WMS GetFeatureInfo responses) is rendered as HTML downstream and may
@@ -196228,11 +196645,7 @@ class MapLayerImageryProvider {
196228
196645
  * @internal
196229
196646
  */
196230
196647
  appendCustomParams(url) {
196231
- if (!this._settings.savedQueryParams && !this._settings.unsavedQueryParams)
196232
- return url;
196233
- let tmpUrl = (0,_internal__WEBPACK_IMPORTED_MODULE_5__.appendQueryParams)(url, this._settings.savedQueryParams);
196234
- tmpUrl = (0,_internal__WEBPACK_IMPORTED_MODULE_5__.appendQueryParams)(tmpUrl, this._settings.unsavedQueryParams);
196235
- return tmpUrl;
196648
+ return (0,_internal__WEBPACK_IMPORTED_MODULE_5__.appendQueryParams)(url, this._settings.collectQueryParams());
196236
196649
  }
196237
196650
  }
196238
196651
 
@@ -196311,21 +196724,33 @@ class MapLayerSource {
196311
196724
  transparentBackground;
196312
196725
  userName;
196313
196726
  password;
196314
- /** List of query parameters that will get appended to the source URL that should be be persisted part of the JSON representation.
196727
+ /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses
196728
+ * and `delete` keep working.
196729
+ * @deprecated in 5.16. Use [[queryParams]].
196315
196730
  * @beta
196316
196731
  */
196317
196732
  savedQueryParams;
196733
+ /** Non-secret query parameters appended to every request made for the source, persisted as part of the JSON
196734
+ * representation ([[MapLayerSourceProps.queryParams]]). Secrets must never be placed here; the hosting application
196735
+ * injects them per session through a [[MapLayerFetchHandler]].
196736
+ * @beta
196737
+ */
196738
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- the deprecated field is the storage until its removal.
196739
+ get queryParams() { return this.savedQueryParams; }
196740
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
196741
+ set queryParams(value) { this.savedQueryParams = value; }
196318
196742
  /** List of query parameters that will get appended to the source URL that should *not* be be persisted part of the JSON representation.
196743
+ * @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.
196319
196744
  * @beta
196320
196745
  */
196321
196746
  unsavedQueryParams;
196322
- constructor(formatId = "WMS", name, url, baseMap = false, transparentBackground = true, savedQueryParams) {
196747
+ constructor(formatId = "WMS", name, url, baseMap = false, transparentBackground = true, queryParams) {
196323
196748
  this.formatId = formatId;
196324
196749
  this.name = name;
196325
196750
  this.url = url;
196326
196751
  this.baseMap = baseMap;
196327
196752
  this.transparentBackground = transparentBackground;
196328
- this.savedQueryParams = savedQueryParams;
196753
+ this.queryParams = queryParams;
196329
196754
  }
196330
196755
  static fromJSON(json) {
196331
196756
  if (json === undefined)
@@ -196349,7 +196774,7 @@ class MapLayerSource {
196349
196774
  return undefined;
196350
196775
  }
196351
196776
  toJSON() {
196352
- return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground, queryParams: this.savedQueryParams };
196777
+ return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground, queryParams: this.queryParams };
196353
196778
  }
196354
196779
  toLayerSettings(subLayers) {
196355
196780
  // When MapLayerSetting is created from a MapLayerSource, sub-layers and credentials need to be set separately.
@@ -196357,10 +196782,12 @@ class MapLayerSource {
196357
196782
  if (this.userName !== undefined || this.password !== undefined) {
196358
196783
  layerSettings?.setCredentials(this.userName, this.password);
196359
196784
  }
196360
- if (this.savedQueryParams) {
196361
- layerSettings.savedQueryParams = { ...this.savedQueryParams };
196785
+ if (this.queryParams) {
196786
+ layerSettings.queryParams = { ...this.queryParams };
196362
196787
  }
196788
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
196363
196789
  if (this.unsavedQueryParams) {
196790
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
196364
196791
  layerSettings.unsavedQueryParams = { ...this.unsavedQueryParams };
196365
196792
  }
196366
196793
  return layerSettings;
@@ -196368,14 +196795,17 @@ class MapLayerSource {
196368
196795
  getCredentials() {
196369
196796
  return this.userName && this.password ? { user: this.userName, password: this.password } : undefined;
196370
196797
  }
196371
- /** Collect all query parameters
196372
- * @beta
196373
- */
196798
+ /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`
196799
+ * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.
196800
+ * @beta
196801
+ */
196374
196802
  collectQueryParams() {
196375
196803
  let queryParams = {};
196376
- if (this.savedQueryParams)
196377
- queryParams = { ...this.savedQueryParams };
196804
+ if (this.queryParams)
196805
+ queryParams = { ...this.queryParams };
196806
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
196378
196807
  if (this.unsavedQueryParams)
196808
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
196379
196809
  queryParams = { ...queryParams, ...this.unsavedQueryParams };
196380
196810
  return queryParams;
196381
196811
  }
@@ -344489,7 +344919,7 @@ class TestContext {
344489
344919
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
344490
344920
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
344491
344921
  await core_frontend_1.NoRenderApp.startup({
344492
- applicationVersion: "5.16.0-dev.4",
344922
+ applicationVersion: "5.16.0-dev.5",
344493
344923
  applicationId: this.settings.gprid,
344494
344924
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
344495
344925
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -371101,7 +371531,7 @@ class WMS {
371101
371531
  (module) {
371102
371532
 
371103
371533
  "use strict";
371104
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.16.0-dev.4","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"}}');
371534
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.16.0-dev.5","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"}}');
371105
371535
 
371106
371536
  /***/ },
371107
371537