@equinor/fusion-framework-vite-plugin-spa 4.0.17-next.0 → 4.0.17

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.
@@ -6314,7 +6314,7 @@ async function runDisposePhase(ctx, instance, ref) {
6314
6314
  }
6315
6315
 
6316
6316
  // Generated by genversion.
6317
- const version$8 = '6.1.3-next.0';
6317
+ const version$8 = '6.1.2';
6318
6318
 
6319
6319
  // biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch arrays — callbacks are registered with concrete module types but stored erased; the orchestrator never inspects these shapes itself
6320
6320
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -6449,34 +6449,7 @@ class ModulesConfigurator {
6449
6449
  * @param modules - Optional array of module descriptors to pre-register.
6450
6450
  */
6451
6451
  constructor(modules) {
6452
- this._modules = new Set(modules ? this._dedupeModulesByName(modules) : []);
6453
- }
6454
- /**
6455
- * Keeps the last registration for each module name.
6456
- *
6457
- * @param modules - Module descriptors to deduplicate.
6458
- * @returns The deduplicated module descriptors.
6459
- */
6460
- _dedupeModulesByName(modules) {
6461
- const lastByName = new Map();
6462
- // Iterate in registration order so later descriptors intentionally override earlier ones.
6463
- for (const module of modules) {
6464
- lastByName.set(module.name, module);
6465
- }
6466
- return Array.from(lastByName.values());
6467
- }
6468
- /**
6469
- * Removes lifecycle callbacks belonging to a replaced module.
6470
- *
6471
- * @param moduleName - Name of the module whose callbacks are removed.
6472
- */
6473
- _removeModuleCallbacks(moduleName) {
6474
- // Remove callbacks from each lifecycle phase so replaced modules cannot run stale behavior.
6475
- this._configs = this._configs.filter((callback) => callback.moduleName !== moduleName);
6476
- // Keep cleanup callbacks aligned with the module replacement.
6477
- this._afterConfiguration = this._afterConfiguration.filter((callback) => callback.moduleName !== moduleName);
6478
- // Remove initialization callbacks as well, preventing the old module from being initialized.
6479
- this._afterInit = this._afterInit.filter((callback) => callback.moduleName !== moduleName);
6452
+ this._modules = new Set(modules);
6480
6453
  }
6481
6454
  /**
6482
6455
  * Returns all registered module descriptors as an ordered array.
@@ -6503,9 +6476,6 @@ class ModulesConfigurator {
6503
6476
  /**
6504
6477
  * Registers a single module configurator.
6505
6478
  *
6506
- * If a module with the same `name` was already registered, the previous
6507
- * registration is replaced so the last added module wins.
6508
- *
6509
6479
  * Adds the module to the known module set and registers the optional
6510
6480
  * `configure`, `afterConfig`, and `afterInit` callbacks into their
6511
6481
  * respective lifecycle phase arrays.
@@ -6516,26 +6486,7 @@ class ModulesConfigurator {
6516
6486
  */
6517
6487
  addConfig(config) {
6518
6488
  const { module, afterConfig, afterInit, configure } = config;
6519
- // Find an existing descriptor so re-registering a name can replace all of its lifecycle hooks.
6520
- const existingModule = Array.from(this._modules).find((m) => m.name === module.name);
6521
- // Only handle replacement/dedupe when a descriptor is already registered under this name.
6522
- if (existingModule) {
6523
- // Only a genuinely different descriptor for this name is a replacement that must
6524
- // discard the old callbacks. Re-registering the SAME descriptor object (as helpers
6525
- // like `configureHttpClient`/`useFrameworkServiceClient` do on every call, since they
6526
- // all share one module singleton) must stay additive so multiple calls can register
6527
- // multiple named clients without clobbering each other.
6528
- if (existingModule !== module) {
6529
- this._removeModuleCallbacks(module.name);
6530
- const modules = Array.from(this._modules)
6531
- // Preserve every descriptor while substituting the newly registered module.
6532
- .map((m) => (m.name === module.name ? module : m));
6533
- this._modules = new Set(modules);
6534
- }
6535
- }
6536
- else {
6537
- this._modules.add(module);
6538
- }
6489
+ this._modules.add(module);
6539
6490
  this._registerEvent({
6540
6491
  level: ModuleEventLevel.Debug,
6541
6492
  name: ModuleConfiguratorEventName.ModuleConfigAdded,
@@ -6548,26 +6499,15 @@ class ModulesConfigurator {
6548
6499
  afterInit: !!afterInit,
6549
6500
  },
6550
6501
  });
6551
- // Register each optional callback into its corresponding lifecycle phase array.
6552
- // When the same module name is re-registered, previous callbacks are removed
6553
- // so the latest configuration wins.
6554
- if (configure) {
6555
- const callback = ((cfg, ref) => configure(cfg[module.name], ref));
6556
- callback.moduleName = module.name;
6557
- this._configs.push(callback);
6558
- }
6559
- // Register the afterConfig callback, if provided.
6560
- if (afterConfig) {
6561
- const callback = ((cfg) => afterConfig(cfg[module.name]));
6562
- callback.moduleName = module.name;
6563
- this._afterConfiguration.push(callback);
6564
- }
6565
- // Register the afterInit callback, if provided.
6566
- if (afterInit) {
6567
- const callback = ((instances) => afterInit(instances[module.name]));
6568
- callback.moduleName = module.name;
6569
- this._afterInit.push(callback);
6570
- }
6502
+ // Register each optional callback into its corresponding lifecycle phase array
6503
+ if (configure)
6504
+ this._configs.push((cfg, ref) => configure(cfg[module.name], ref));
6505
+ // Register the afterConfig callback, if provided
6506
+ if (afterConfig)
6507
+ this._afterConfiguration.push((cfg) => afterConfig(cfg[module.name]));
6508
+ // Register the afterInit callback, if provided
6509
+ if (afterInit)
6510
+ this._afterInit.push((instances) => afterInit(instances[module.name]));
6571
6511
  }
6572
6512
  /**
6573
6513
  * Registers a callback for the post-configure phase.
@@ -6989,49 +6929,6 @@ class HttpRequestHandler extends ProcessOperators {
6989
6929
  class HttpResponseHandler extends ProcessOperators {
6990
6930
  }
6991
6931
 
6992
- /**
6993
- * Normalizes a step's result to a `Promise`, so a middleware calling `next(...)` never has to
6994
- * branch on whether the next step short-circuited with a plain `Response` or reached all the
6995
- * way to an Observable-returning network call.
6996
- */
6997
- function toPromise(result) {
6998
- return result instanceof Response ? Promise.resolve(result) : firstValueFrom(from(result));
6999
- }
7000
- /**
7001
- * Composes registered {@link HttpMiddleware} into a single execution pipeline wrapping the
7002
- * network call, so retries, caching, telemetry, or circuit-breaking can wrap `_performFetch`
7003
- * without touching request or response payload transforms.
7004
- *
7005
- * @see {@link HttpClient}
7006
- */
7007
- class HttpMiddlewareHandler {
7008
- #middleware;
7009
- /**
7010
- * Constructs a handler, optionally cloning another handler's registered middleware.
7011
- * @param source - An existing handler to clone the registered middleware from.
7012
- */
7013
- constructor(source) {
7014
- this.#middleware = source ? [...source.middleware] : [];
7015
- }
7016
- /** @inheritdoc */
7017
- get middleware() {
7018
- return this.#middleware;
7019
- }
7020
- /** @inheritdoc */
7021
- use(middleware) {
7022
- this.#middleware.push(middleware);
7023
- return this;
7024
- }
7025
- /** @inheritdoc */
7026
- process(uri, init, terminal) {
7027
- // wrap outward-in so the first-registered middleware is outermost, matching a conventional middleware chain
7028
- const chain = this.#middleware.reduceRight((next, middleware) => (nextUri, nextInit) => middleware(nextUri, nextInit, (u, i) => toPromise(next(u, i))), terminal);
7029
- const result = chain(uri, init);
7030
- // a middleware may short-circuit with a plain Response (no ObservableInput wrapping needed)
7031
- return result instanceof Response ? of(result) : from(result);
7032
- }
7033
- }
7034
-
7035
6932
  var _a$1;
7036
6933
  /** A special constant with type `never` */
7037
6934
  const NEVER = /*@__PURE__*/ Object.freeze({
@@ -7271,7 +7168,7 @@ const allowsEval = /* @__PURE__*/ cached(() => {
7271
7168
  return false;
7272
7169
  }
7273
7170
  });
7274
- function isPlainObject$1(o) {
7171
+ function isPlainObject$2(o) {
7275
7172
  if (isObject(o) === false)
7276
7173
  return false;
7277
7174
  // modified constructor
@@ -7291,7 +7188,7 @@ function isPlainObject$1(o) {
7291
7188
  return true;
7292
7189
  }
7293
7190
  function shallowClone(o) {
7294
- if (isPlainObject$1(o))
7191
+ if (isPlainObject$2(o))
7295
7192
  return { ...o };
7296
7193
  if (Array.isArray(o))
7297
7194
  return [...o];
@@ -7497,7 +7394,7 @@ function omit(schema, mask) {
7497
7394
  return clone(schema, def);
7498
7395
  }
7499
7396
  function extend(schema, shape) {
7500
- if (!isPlainObject$1(shape)) {
7397
+ if (!isPlainObject$2(shape)) {
7501
7398
  throw new Error("Invalid input to extend: expected a plain object");
7502
7399
  }
7503
7400
  const checks = schema._zod.def.checks;
@@ -7522,7 +7419,7 @@ function extend(schema, shape) {
7522
7419
  return clone(schema, def);
7523
7420
  }
7524
7421
  function safeExtend(schema, shape) {
7525
- if (!isPlainObject$1(shape)) {
7422
+ if (!isPlainObject$2(shape)) {
7526
7423
  throw new Error("Invalid input to safeExtend: expected a plain object");
7527
7424
  }
7528
7425
  const def = mergeDefs(schema._zod.def, {
@@ -7819,7 +7716,7 @@ var util = /*#__PURE__*/Object.freeze({
7819
7716
  getSizableOrigin: getSizableOrigin,
7820
7717
  hexToUint8Array: hexToUint8Array,
7821
7718
  isObject: isObject,
7822
- isPlainObject: isPlainObject$1,
7719
+ isPlainObject: isPlainObject$2,
7823
7720
  issue: issue,
7824
7721
  joinValues: joinValues,
7825
7722
  jsonStringifyReplacer: jsonStringifyReplacer,
@@ -10151,7 +10048,7 @@ function mergeValues(a, b) {
10151
10048
  if (a instanceof Date && b instanceof Date && +a === +b) {
10152
10049
  return { valid: true, data: a };
10153
10050
  }
10154
- if (isPlainObject$1(a) && isPlainObject$1(b)) {
10051
+ if (isPlainObject$2(a) && isPlainObject$2(b)) {
10155
10052
  const bKeys = Object.keys(b);
10156
10053
  const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);
10157
10054
  const newObj = { ...a, ...b };
@@ -10357,7 +10254,7 @@ const $ZodRecord = /*@__PURE__*/ $constructor("$ZodRecord", (inst, def) => {
10357
10254
  $ZodType.init(inst, def);
10358
10255
  inst._zod.parse = (payload, ctx) => {
10359
10256
  const input = payload.value;
10360
- if (!isPlainObject$1(input)) {
10257
+ if (!isPlainObject$2(input)) {
10361
10258
  payload.issues.push({
10362
10259
  expected: "record",
10363
10260
  code: "invalid_type",
@@ -22633,8 +22530,6 @@ class HttpClientConfigurator {
22633
22530
  // validate the request object
22634
22531
  'request-validation': requestValidationOperator(),
22635
22532
  });
22636
- /** Default middleware chain cloned into each created client instance. */
22637
- defaultHttpMiddlewareHandler = new HttpMiddlewareHandler();
22638
22533
  /**
22639
22534
  * Creates a configurator with the default client constructor.
22640
22535
  * @param client - The default client constructor used when `ctor` is not configured per client.
@@ -22647,11 +22542,6 @@ class HttpClientConfigurator {
22647
22542
  return Object.keys(this._clients).includes(name);
22648
22543
  }
22649
22544
  /** @inheritdoc */
22650
- addMiddleware(middleware) {
22651
- this.defaultHttpMiddlewareHandler.use(middleware);
22652
- return this;
22653
- }
22654
- /** @inheritdoc */
22655
22545
  configureClient(name, args) {
22656
22546
  const argFn = typeof args === 'string' ? { baseUri: args } : args;
22657
22547
  const options = typeof argFn === 'function' ? { onCreate: argFn } : argFn;
@@ -22666,7 +22556,7 @@ class HttpClientConfigurator {
22666
22556
  }
22667
22557
 
22668
22558
  // Generated by genversion.
22669
- const version$6 = '8.1.0-next.0';
22559
+ const version$6 = '8.0.5';
22670
22560
 
22671
22561
  /** URL protocols accepted as valid ad-hoc base URIs. */
22672
22562
  const SUPPORTED_PROTOCOLS = ['http:', 'https:', 'ws:', 'wss:'];
@@ -22705,13 +22595,6 @@ class HttpClientProvider extends BaseModuleProvider {
22705
22595
  get defaultHttpRequestHandler() {
22706
22596
  return this.config.defaultHttpRequestHandler;
22707
22597
  }
22708
- /**
22709
- * Gets the default middleware chain for the HTTP client provider.
22710
- * @returns The default middleware chain.
22711
- */
22712
- get defaultHttpMiddlewareHandler() {
22713
- return this.config.defaultHttpMiddlewareHandler;
22714
- }
22715
22598
  /**
22716
22599
  * Creates a new `HttpClientProvider`.
22717
22600
  * @param config - The configurator providing client definitions and defaults.
@@ -22749,8 +22632,8 @@ class HttpClientProvider extends BaseModuleProvider {
22749
22632
  */
22750
22633
  createClient(keyOrConfig) {
22751
22634
  const config = this._resolveConfig(keyOrConfig);
22752
- const { baseUri, defaultScopes = [], onCreate, ctor = this.config.defaultHttpClientCtor, requestHandler = this.defaultHttpRequestHandler, responseHandler, middlewareHandler = this.defaultHttpMiddlewareHandler, } = config;
22753
- const options = { requestHandler, responseHandler, middlewareHandler };
22635
+ const { baseUri, defaultScopes = [], onCreate, ctor = this.config.defaultHttpClientCtor, requestHandler = this.defaultHttpRequestHandler, responseHandler, } = config;
22636
+ const options = { requestHandler, responseHandler };
22754
22637
  const instance = new ctor(baseUri || '', options);
22755
22638
  // attach the resolved default scopes onto the instance without overwriting other own properties
22756
22639
  Object.assign(instance, { defaultScopes });
@@ -22949,12 +22832,6 @@ class HttpClient {
22949
22832
  * This property is part of the `HttpClientCreateOptions` configuration object used to create an `HttpClient` instance.
22950
22833
  */
22951
22834
  responseHandler;
22952
- /**
22953
- * Middleware wrapping the network call, for cross-cutting concerns such as retries,
22954
- * caching, or telemetry. This property is part of the `HttpClientCreateOptions`
22955
- * configuration object used to create an `HttpClient` instance.
22956
- */
22957
- middlewareHandler;
22958
22835
  /**
22959
22836
  * A stream of requests that are about to be executed.
22960
22837
  * This property is used internally by the `HttpClient` class to manage the lifecycle of requests.
@@ -22993,7 +22870,6 @@ class HttpClient {
22993
22870
  this.uri = uri;
22994
22871
  this.requestHandler = new HttpRequestHandler(options?.requestHandler);
22995
22872
  this.responseHandler = new HttpResponseHandler(options?.responseHandler);
22996
- this.middlewareHandler = new HttpMiddlewareHandler(options?.middlewareHandler);
22997
22873
  this._init();
22998
22874
  }
22999
22875
  /**
@@ -23165,9 +23041,7 @@ class HttpClient {
23165
23041
  /**
23166
23042
  * Aborts any ongoing HTTP requests made by this `IHttpClient` instance.
23167
23043
  * This will trigger the `takeUntil` operator in the `_fetch$` method,
23168
- * causing any in-flight requests to be cancelled, and abort the
23169
- * per-request `AbortSignal` passed through to `_performFetch`, so the
23170
- * underlying network call is cancelled even behind registered middleware.
23044
+ * causing any in-flight requests to be cancelled.
23171
23045
  */
23172
23046
  abort() {
23173
23047
  this._abort$.next();
@@ -23192,26 +23066,11 @@ class HttpClient {
23192
23066
  */
23193
23067
  _fetch$(path, args) {
23194
23068
  const { selector, ...options } = args || {};
23195
- // A registered middleware's `next(...)` resolves through a `Promise` (see
23196
- // `HttpMiddlewareHandler`), which `firstValueFrom` fulfils via its own independent
23197
- // subscription to `_performFetch` — one the `takeUntil(this._abort$)` below never reaches,
23198
- // since it sits outside the subscription tree that `takeUntil` tears down. Combining this
23199
- // controller's signal into the request `init` lets `_performFetch` (`fromFetch` by default)
23200
- // abort the underlying network call directly, regardless of whether middleware severed the
23201
- // RxJS teardown chain.
23202
- const abortController = new AbortController();
23203
- // abort only fires once per request; the subscription is torn down in `finalize` below
23204
- const abort = this._abort$.pipe(take(1)).subscribe(() => abortController.abort());
23205
- const callerSignal = options.signal;
23206
- const signal = callerSignal
23207
- ? AbortSignal.any([callerSignal, abortController.signal])
23208
- : abortController.signal;
23209
23069
  // `fromFetch` yields the raw fetch `Response`, but `responseHandler.process()` (called via
23210
23070
  // `_prepareResponse`) expects the pipeline's generic `TResponse` shape — cast through
23211
23071
  // `unknown` since the two are only compatible after that processing step.
23212
23072
  const response$ = of({
23213
23073
  ...options,
23214
- signal,
23215
23074
  path,
23216
23075
  uri: this._resolveUrl(path),
23217
23076
  }).pipe(
@@ -23219,8 +23078,8 @@ class HttpClient {
23219
23078
  switchMap((x) => this._prepareRequest(x)),
23220
23079
  /** push request to event buss */
23221
23080
  tap((x) => this._request$.next(x)),
23222
- /** execute request through registered middleware, terminating at _performFetch */
23223
- switchMap(({ uri, path: _path, ...init }) => this.middlewareHandler.process(uri, init, (u, i) => this._performFetch(u, i))),
23081
+ /** execute request */
23082
+ switchMap(({ uri, path: _path, ...init }) => fromFetch(uri, init)),
23224
23083
  /** prepare response, allow extensions to modify response */
23225
23084
  switchMap((x) => this._prepareResponse(x)),
23226
23085
  /** push response to event buss */
@@ -23241,30 +23100,11 @@ class HttpClient {
23241
23100
  return of(response);
23242
23101
  }),
23243
23102
  /** cancel request on abort signal */
23244
- takeUntil(this._abort$),
23245
- /** the abort signal subscription only ever fires once; tear it down once this request settles either way */
23246
- finalize$2(() => abort.unsubscribe()));
23103
+ takeUntil(this._abort$));
23247
23104
  // The pipe above resolves to the per-call generic `T` (via the optional `selector`), but
23248
23105
  // the observable's static type tracks the class-level `TResponse` — cast to the caller's `T`.
23249
23106
  return response$;
23250
23107
  }
23251
- /**
23252
- * Performs the actual network call for a prepared request.
23253
- *
23254
- * @remarks
23255
- * Isolated from {@link _fetch$} so a test double can replace only this step —
23256
- * matching a request against registered route handlers instead of reaching
23257
- * the network — while everything around it (request preparation, the
23258
- * response pipeline, abort handling) runs unchanged. See
23259
- * `@equinor/fusion-framework-module-http/mock`.
23260
- *
23261
- * @param uri - The fully resolved URL for the request.
23262
- * @param init - The prepared `fetch` request options.
23263
- * @returns An observable of the raw `Response`, ahead of {@link _prepareResponse}.
23264
- */
23265
- _performFetch(uri, init) {
23266
- return fromFetch(uri, init);
23267
- }
23268
23108
  /**
23269
23109
  * Prepares the request by passing it through the `requestHandler.process()` method.
23270
23110
  * This method is an implementation detail of the `_fetch$()` method, and is not part of the public API.
@@ -23485,11 +23325,11 @@ var isDraft = (value) => !!value && !!value[DRAFT_STATE];
23485
23325
  function isDraftable(value) {
23486
23326
  if (!value)
23487
23327
  return false;
23488
- return isPlainObject(value) || isArray(value) || !!value[DRAFTABLE] || !!value[CONSTRUCTOR]?.[DRAFTABLE] || isMap(value) || isSet(value);
23328
+ return isPlainObject$1(value) || isArray(value) || !!value[DRAFTABLE] || !!value[CONSTRUCTOR]?.[DRAFTABLE] || isMap(value) || isSet(value);
23489
23329
  }
23490
23330
  var objectCtorString = O[PROTOTYPE][CONSTRUCTOR].toString();
23491
23331
  var cachedCtorStrings = /* @__PURE__ */ new WeakMap();
23492
- function isPlainObject(value) {
23332
+ function isPlainObject$1(value) {
23493
23333
  if (!value || !isObjectish(value))
23494
23334
  return false;
23495
23335
  const proto = getPrototypeOf(value);
@@ -23562,7 +23402,7 @@ function shallowCopy(base, strict) {
23562
23402
  }
23563
23403
  if (isArray(base))
23564
23404
  return Array[PROTOTYPE].slice.call(base);
23565
- const isPlain = isPlainObject(base);
23405
+ const isPlain = isPlainObject$1(base);
23566
23406
  if (strict === true || strict === "class_only" && !isPlain) {
23567
23407
  const descriptors = O.getOwnPropertyDescriptors(base);
23568
23408
  delete descriptors[DRAFT_STATE];
@@ -23921,7 +23761,7 @@ var objectTraps = {
23921
23761
  ) && isArrayIndex(prop)) {
23922
23762
  return value;
23923
23763
  }
23924
- if (value === peek(state.base_, prop)) {
23764
+ if (value === peek(state.base_, prop) || isRelocatedBaseRef(state, prop, value)) {
23925
23765
  prepareCopy(state);
23926
23766
  const childKey = state.type_ === 1 /* Array */ ? +prop : prop;
23927
23767
  const childDraft = createProxy(state.scope_, value, state, childKey);
@@ -23955,7 +23795,7 @@ var objectTraps = {
23955
23795
  markChanged(state);
23956
23796
  }
23957
23797
  if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'
23958
- (value !== void 0 || prop in state.copy_) || // special case: NaN
23798
+ (value !== void 0 || has(state.copy_, prop, state.type_)) || // special case: NaN
23959
23799
  Number.isNaN(value) && Number.isNaN(state.copy_[prop]))
23960
23800
  return true;
23961
23801
  state.copy_[prop] = value;
@@ -24024,6 +23864,12 @@ function peek(draft, prop) {
24024
23864
  const source = state ? latest(state) : draft;
24025
23865
  return source[prop];
24026
23866
  }
23867
+ function isRelocatedBaseRef(state, prop, value) {
23868
+ if (state.type_ !== 1 /* Array */ || !state.allIndicesReassigned_ || state.assigned_?.get(prop) || !isDraftable(value) || value[DRAFT_STATE]) {
23869
+ return false;
23870
+ }
23871
+ return state.baseRefs_.has(value);
23872
+ }
24027
23873
  function readPropFromProto(state, source, prop) {
24028
23874
  const desc = getDescriptorFromProto(source, prop);
24029
23875
  return desc ? VALUE in desc ? desc[VALUE] : (
@@ -25168,7 +25014,7 @@ class TelemetryConfigurator extends BaseConfigBuilder {
25168
25014
  }
25169
25015
 
25170
25016
  // Generated by genversion.
25171
- const version$5 = '8.0.0-next.0';
25017
+ const version$5 = '7.0.3';
25172
25018
 
25173
25019
  /**
25174
25020
  * Enum representing the severity levels of telemetry items.
@@ -26160,7 +26006,7 @@ configurator, options) => {
26160
26006
  });
26161
26007
  };
26162
26008
 
26163
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26009
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26164
26010
  /*
26165
26011
  * Copyright (c) Microsoft Corporation. All rights reserved.
26166
26012
  * Licensed under the MIT License.
@@ -26210,9 +26056,10 @@ const INSTANCE_AWARE = "instance_aware";
26210
26056
  const EAR_JWK = "ear_jwk";
26211
26057
  const EAR_JWE_CRYPTO = "ear_jwe_crypto";
26212
26058
  const RESOURCE = "resource";
26213
- const CLI_DATA = "clidata";
26059
+ const CLI_DATA = "clidata";
26060
+ const ATTRIBUTE_TOKENS = "attribute_tokens";
26214
26061
 
26215
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26062
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26216
26063
  /*
26217
26064
  * Copyright (c) Microsoft Corporation. All rights reserved.
26218
26065
  * Licensed under the MIT License.
@@ -26443,7 +26290,7 @@ const JsonWebTokenTypes = {
26443
26290
  // Token renewal offset default in seconds
26444
26291
  const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;
26445
26292
 
26446
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26293
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26447
26294
  /*
26448
26295
  * Copyright (c) Microsoft Corporation. All rights reserved.
26449
26296
  * Licensed under the MIT License.
@@ -26472,7 +26319,7 @@ function createAuthError(code, correlationId, additionalMessage) {
26472
26319
  return new AuthError(code, correlationId, additionalMessage || getDefaultErrorMessage$1(code));
26473
26320
  }
26474
26321
 
26475
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26322
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26476
26323
 
26477
26324
  /*
26478
26325
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -26495,7 +26342,7 @@ function createClientAuthError(errorCode, correlationId, additionalMessage) {
26495
26342
  return new ClientAuthError(errorCode, correlationId, additionalMessage);
26496
26343
  }
26497
26344
 
26498
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26345
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26499
26346
  /*
26500
26347
  * Copyright (c) Microsoft Corporation. All rights reserved.
26501
26348
  * Licensed under the MIT License.
@@ -26532,7 +26379,7 @@ const methodNotImplemented = "method_not_implemented";
26532
26379
  const resourceParameterRequired = "resource_parameter_required";
26533
26380
  const misplacedResourceParam = "misplaced_resource_parameter";
26534
26381
 
26535
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26382
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26536
26383
 
26537
26384
  /*
26538
26385
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -26570,7 +26417,7 @@ function buildClientInfoFromHomeAccountId(homeAccountId) {
26570
26417
  };
26571
26418
  }
26572
26419
 
26573
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26420
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26574
26421
 
26575
26422
  /*
26576
26423
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -26636,7 +26483,7 @@ function getJWSPayload(authToken, correlationId) {
26636
26483
  return matches[2];
26637
26484
  }
26638
26485
 
26639
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26486
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26640
26487
 
26641
26488
  /*
26642
26489
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -26724,7 +26571,7 @@ function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenC
26724
26571
  return updatedAccountInfo;
26725
26572
  }
26726
26573
 
26727
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26574
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26728
26575
  /*
26729
26576
  * Copyright (c) Microsoft Corporation. All rights reserved.
26730
26577
  * Licensed under the MIT License.
@@ -26739,7 +26586,7 @@ const AuthorityType = {
26739
26586
  Ciam: 3,
26740
26587
  };
26741
26588
 
26742
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26589
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26743
26590
  /*
26744
26591
  * Copyright (c) Microsoft Corporation. All rights reserved.
26745
26592
  * Licensed under the MIT License.
@@ -26761,7 +26608,7 @@ function getTenantIdFromIdTokenClaims(idTokenClaims) {
26761
26608
  return null;
26762
26609
  }
26763
26610
 
26764
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26611
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26765
26612
  /*
26766
26613
  * Copyright (c) Microsoft Corporation. All rights reserved.
26767
26614
  * Licensed under the MIT License.
@@ -26785,7 +26632,7 @@ const ProtocolMode = {
26785
26632
  EAR: "EAR",
26786
26633
  };
26787
26634
 
26788
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26635
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26789
26636
  /**
26790
26637
  * Returns the AccountInfo interface for this account.
26791
26638
  * @internal
@@ -26974,7 +26821,7 @@ function isAccountEntity(entity) {
26974
26821
  entity.hasOwnProperty("authorityType"));
26975
26822
  }
26976
26823
 
26977
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26824
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26978
26825
  /*
26979
26826
  * Copyright (c) Microsoft Corporation. All rights reserved.
26980
26827
  * Licensed under the MIT License.
@@ -26984,7 +26831,7 @@ function isAccountEntity(entity) {
26984
26831
  */
26985
26832
  const unexpectedError = "unexpected_error";
26986
26833
 
26987
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26834
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
26988
26835
 
26989
26836
  /*
26990
26837
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -27004,7 +26851,7 @@ function createClientConfigurationError(errorCode, correlationId) {
27004
26851
  return new ClientConfigurationError(errorCode, correlationId);
27005
26852
  }
27006
26853
 
27007
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26854
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27008
26855
  /*
27009
26856
  * Copyright (c) Microsoft Corporation. All rights reserved.
27010
26857
  * Licensed under the MIT License.
@@ -27030,7 +26877,7 @@ const invalidRequestMethodForEAR = "invalid_request_method_for_EAR";
27030
26877
  const invalidPlatformBrokerConfiguration = "invalid_platform_broker_configuration";
27031
26878
  const issuerValidationFailed = "issuer_validation_failed";
27032
26879
 
27033
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26880
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27034
26881
  /*
27035
26882
  * Copyright (c) Microsoft Corporation. All rights reserved.
27036
26883
  * Licensed under the MIT License.
@@ -27042,7 +26889,7 @@ function isOpenIdConfigResponse(response) {
27042
26889
  response.hasOwnProperty("jwks_uri"));
27043
26890
  }
27044
26891
 
27045
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26892
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27046
26893
  /*
27047
26894
  * Copyright (c) Microsoft Corporation. All rights reserved.
27048
26895
  * Licensed under the MIT License.
@@ -27122,7 +26969,7 @@ class StringUtils {
27122
26969
  }
27123
26970
  }
27124
26971
 
27125
- /*! @azure/msal-common v16.11.3 2026-07-29 */
26972
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27126
26973
 
27127
26974
  /*
27128
26975
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -27280,7 +27127,7 @@ class UrlString {
27280
27127
  }
27281
27128
  }
27282
27129
 
27283
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27130
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27284
27131
 
27285
27132
  /*
27286
27133
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -27446,7 +27293,7 @@ function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {
27446
27293
  return null;
27447
27294
  }
27448
27295
 
27449
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27296
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27450
27297
  /*
27451
27298
  * Copyright (c) Microsoft Corporation. All rights reserved.
27452
27299
  * Licensed under the MIT License.
@@ -27455,7 +27302,7 @@ const AzureCloudInstance = {
27455
27302
  // AzureCloudInstance is not specified.
27456
27303
  None: "none"};
27457
27304
 
27458
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27305
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27459
27306
  /*
27460
27307
  * Copyright (c) Microsoft Corporation. All rights reserved.
27461
27308
  * Licensed under the MIT License.
@@ -27465,7 +27312,7 @@ function isCloudInstanceDiscoveryResponse(response) {
27465
27312
  response.hasOwnProperty("metadata"));
27466
27313
  }
27467
27314
 
27468
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27315
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27469
27316
  /*
27470
27317
  * Copyright (c) Microsoft Corporation. All rights reserved.
27471
27318
  * Licensed under the MIT License.
@@ -27475,7 +27322,7 @@ function isCloudInstanceDiscoveryErrorResponse(response) {
27475
27322
  response.hasOwnProperty("error_description"));
27476
27323
  }
27477
27324
 
27478
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27325
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27479
27326
  /*
27480
27327
  * Copyright (c) Microsoft Corporation. All rights reserved.
27481
27328
  * Licensed under the MIT License.
@@ -27546,7 +27393,7 @@ const RegionDiscoveryGetCurrentVersion = "regionDiscoveryGetCurrentVersion";
27546
27393
  const CacheManagerGetRefreshToken = "cacheManagerGetRefreshToken";
27547
27394
  const SetUserData = "setUserData";
27548
27395
 
27549
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27396
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27550
27397
  /*
27551
27398
  * Copyright (c) Microsoft Corporation. All rights reserved.
27552
27399
  * Licensed under the MIT License.
@@ -27639,7 +27486,7 @@ const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId
27639
27486
  };
27640
27487
  };
27641
27488
 
27642
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27489
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27643
27490
 
27644
27491
  /*
27645
27492
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -27750,7 +27597,7 @@ RegionDiscovery.IMDS_OPTIONS = {
27750
27597
  },
27751
27598
  };
27752
27599
 
27753
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27600
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27754
27601
  /*
27755
27602
  * Copyright (c) Microsoft Corporation. All rights reserved.
27756
27603
  * Licensed under the MIT License.
@@ -27815,7 +27662,7 @@ function wasClockTurnedBack(cachedAt) {
27815
27662
  return cachedAtSec > nowSeconds();
27816
27663
  }
27817
27664
 
27818
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27665
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
27819
27666
 
27820
27667
  /*
27821
27668
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -28080,9 +27927,22 @@ function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetw
28080
27927
  */
28081
27928
  function isAuthorityMetadataExpired(metadata) {
28082
27929
  return metadata.expiresAt <= nowSeconds();
27930
+ }
27931
+ /**
27932
+ * Serialize attribute tokens synchronously (sort and join).
27933
+ * This is a sync-only operation for use at request construction time.
27934
+ * @param attributeTokens - array of tokens
27935
+ * @returns serialized partition string or undefined if no tokens
27936
+ */
27937
+ function serializeAttributeTokens(attributeTokens) {
27938
+ if (!attributeTokens || attributeTokens.length === 0) {
27939
+ return undefined;
27940
+ }
27941
+ // Serialize: sort and join tokens
27942
+ return [...attributeTokens].sort().join(" ");
28083
27943
  }
28084
27944
 
28085
- /*! @azure/msal-common v16.11.3 2026-07-29 */
27945
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
28086
27946
 
28087
27947
  /*
28088
27948
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -29052,7 +28912,7 @@ function buildStaticAuthorityOptions(authOptions) {
29052
28912
  };
29053
28913
  }
29054
28914
 
29055
- /*! @azure/msal-common v16.11.3 2026-07-29 */
28915
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
29056
28916
 
29057
28917
  /*
29058
28918
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -29086,7 +28946,7 @@ async function createDiscoveredInstance(authorityUri, networkClient, cacheManage
29086
28946
  }
29087
28947
  }
29088
28948
 
29089
- /*! @azure/msal-common v16.11.3 2026-07-29 */
28949
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
29090
28950
 
29091
28951
  /*
29092
28952
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -29282,7 +29142,7 @@ class ScopeSet {
29282
29142
  }
29283
29143
  }
29284
29144
 
29285
- /*! @azure/msal-common v16.11.3 2026-07-29 */
29145
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
29286
29146
 
29287
29147
  /*
29288
29148
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -29410,13 +29270,14 @@ function addSid(parameters, sid) {
29410
29270
  * @param claims - The claims string from the request
29411
29271
  * @param clientCapabilities - The client capabilities from configuration
29412
29272
  * @param skipBrokerClaims - When true and BROKER_CLIENT_ID is present, excludes clientCapabilities from claims
29273
+ * @param claimsToMerge - Optional client-originated claims JSON string (e.g. `claimsFromClient`) deep-merged into `claims` with precedence on conflicts
29413
29274
  */
29414
- function addClaims(parameters, correlationId, claims, clientCapabilities, skipBrokerClaims) {
29275
+ function addClaims(parameters, correlationId, claims, clientCapabilities, skipBrokerClaims, claimsToMerge) {
29415
29276
  // Skip clientCapabilities if skipBrokerClaims is set to true and this is a brokered authentication flow
29416
29277
  const configClaims = skipBrokerClaims && parameters.has(BROKER_CLIENT_ID)
29417
29278
  ? undefined
29418
29279
  : clientCapabilities;
29419
- const mergedClaims = buildMergedClaims(claims, configClaims, correlationId);
29280
+ const mergedClaims = buildMergedClaims(claims, configClaims, correlationId, claimsToMerge);
29420
29281
  parameters.set(CLAIMS, mergedClaims);
29421
29282
  }
29422
29283
  /**
@@ -29582,32 +29443,79 @@ const DEFAULT_ID_TOKEN_CLAIMS = {
29582
29443
  [ClaimsRequestKeys.LOGIN_HINT]: { essential: false },
29583
29444
  };
29584
29445
  /**
29585
- * Parses claims JSON, merges default optional idToken claims (signin_state, login_hint),
29586
- * and appends client capabilities (xms_cc) to the access_token section.
29446
+ * Parses a claims JSON string into an object, throwing a ClientConfigurationError
29447
+ * (error code `invalid_claims`) if the value is not a valid JSON object. The raw
29448
+ * claims value is never included in the error - it may contain sensitive data.
29449
+ * @param claims - Claims JSON string. Must be valid JSON representing an object.
29450
+ * @param correlationId - The request correlation id
29451
+ * @returns The parsed claims object
29452
+ */
29453
+ function parseClaims(claims, correlationId = "") {
29454
+ let parsed;
29455
+ try {
29456
+ parsed = JSON.parse(claims);
29457
+ }
29458
+ catch (e) {
29459
+ // Malformed JSON
29460
+ throw createClientConfigurationError(invalidClaims, correlationId);
29461
+ }
29462
+ if (!isPlainObject(parsed)) {
29463
+ // Valid JSON, but not an object (e.g. an array, a scalar, or the literal `null`).
29464
+ throw createClientConfigurationError(invalidClaims, correlationId);
29465
+ }
29466
+ return parsed;
29467
+ }
29468
+ /**
29469
+ * Type guard for a non-null, non-array object (a JSON "object" value).
29470
+ * @param value - The value to test
29471
+ * @returns True when value is a plain object that can be deep-merged
29472
+ */
29473
+ function isPlainObject(value) {
29474
+ return typeof value === "object" && value !== null && !Array.isArray(value);
29475
+ }
29476
+ /**
29477
+ * Recursively deep-merges two parsed claims objects. Nested objects are merged key-by-key;
29478
+ * for any other value type (arrays, scalars, null) the value from `claimsToMerge` replaces
29479
+ * the base. This mirrors the deep merge used by msal-dotnet so that, for example, a server
29480
+ * `access_token` challenge and a client-originated `access_token` claim are combined rather
29481
+ * than one clobbering the other.
29482
+ * @param baseClaims - The parsed base claims object
29483
+ * @param claimsToMerge - The parsed claims object merged in with precedence
29484
+ * @returns The deep-merged claims object
29485
+ */
29486
+ function deepMergeClaims(baseClaims, claimsToMerge) {
29487
+ const merged = { ...baseClaims };
29488
+ for (const [key, mergeInValue] of Object.entries(claimsToMerge)) {
29489
+ const baseValue = merged[key];
29490
+ if (isPlainObject(baseValue) && isPlainObject(mergeInValue)) {
29491
+ merged[key] = deepMergeClaims(baseValue, mergeInValue);
29492
+ }
29493
+ else {
29494
+ merged[key] = mergeInValue;
29495
+ }
29496
+ }
29497
+ return merged;
29498
+ }
29499
+ /**
29500
+ * Parses claims JSON, optionally deep-merges a second client-originated claims string
29501
+ * (`claimsToMerge`, e.g. `claimsFromClient`) with precedence on conflicting keys, merges
29502
+ * default optional idToken claims (signin_state, login_hint), and appends client
29503
+ * capabilities (xms_cc) to the access_token section.
29587
29504
  * Does not overwrite idToken claims already specified by the caller.
29588
29505
  * @param claims - Existing claims JSON string from the request (may be undefined)
29589
29506
  * @param clientCapabilities - Client capabilities array from configuration
29507
+ * @param correlationId - The request correlation id
29508
+ * @param claimsToMerge - Optional second claims JSON string (e.g. client-originated `claimsFromClient`)
29509
+ * deep-merged into `claims` with precedence on conflicts; parsed and validated when present. Nested
29510
+ * objects are merged recursively; arrays and scalar values are replaced.
29590
29511
  * @returns Merged claims JSON string
29591
29512
  */
29592
- function buildMergedClaims(claims, clientCapabilities, correlationId = "") {
29593
- let mergedClaims;
29513
+ function buildMergedClaims(claims, clientCapabilities, correlationId = "", claimsToMerge) {
29594
29514
  // Parse provided claims into JSON object or initialize empty object
29595
- if (!claims) {
29596
- mergedClaims = {};
29597
- }
29598
- else {
29599
- try {
29600
- const parsed = JSON.parse(claims);
29601
- if (typeof parsed !== "object" ||
29602
- parsed === null ||
29603
- Array.isArray(parsed)) {
29604
- throw new Error("Claims must be a JSON object");
29605
- }
29606
- mergedClaims = parsed;
29607
- }
29608
- catch (e) {
29609
- throw createClientConfigurationError(invalidClaims, correlationId);
29610
- }
29515
+ let mergedClaims = claims ? parseClaims(claims, correlationId) : {};
29516
+ // Deep-merge client-originated claims (e.g. `claimsFromClient`) with precedence on conflicts
29517
+ if (claimsToMerge?.trim()) {
29518
+ mergedClaims = deepMergeClaims(mergedClaims, parseClaims(claimsToMerge, correlationId));
29611
29519
  }
29612
29520
  // Add default optional idToken claims
29613
29521
  if (!Object.prototype.hasOwnProperty.call(mergedClaims, ClaimsRequestKeys.ID_TOKEN)) {
@@ -29695,9 +29603,28 @@ function addResource(parameters, resource) {
29695
29603
  if (resource) {
29696
29604
  parameters.set(RESOURCE, resource);
29697
29605
  }
29606
+ }
29607
+ /**
29608
+ * Add the `attribute_tokens` parameter to a /token request body.
29609
+ *
29610
+ * When `attributeTokens` is a non-empty array the values are sorted lexicographically and joined
29611
+ * with a single space, then written to the request body. When `attributeTokens` is an empty array
29612
+ * the parameter is deleted from the request body.
29613
+ *
29614
+ * @param parameters - request parameter map that will be serialized into the /token body
29615
+ * @param attributeTokens - caller-provided attribute token strings
29616
+ */
29617
+ function addAttributeTokens(parameters, attributeTokens) {
29618
+ const serialized = serializeAttributeTokens(attributeTokens);
29619
+ if (serialized) {
29620
+ parameters.set(ATTRIBUTE_TOKENS, serialized);
29621
+ }
29622
+ else {
29623
+ parameters.delete(ATTRIBUTE_TOKENS);
29624
+ }
29698
29625
  }
29699
29626
 
29700
- /*! @azure/msal-common v16.11.3 2026-07-29 */
29627
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
29701
29628
 
29702
29629
  /*
29703
29630
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -29819,7 +29746,7 @@ function validateUrl(url, logger, correlationId) {
29819
29746
  }
29820
29747
  }
29821
29748
 
29822
- /*! @azure/msal-common v16.11.3 2026-07-29 */
29749
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
29823
29750
 
29824
29751
  /*
29825
29752
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -29862,7 +29789,7 @@ const DEFAULT_CRYPTO_IMPLEMENTATION = {
29862
29789
  },
29863
29790
  };
29864
29791
 
29865
- /*! @azure/msal-common v16.11.3 2026-07-29 */
29792
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
29866
29793
  /*
29867
29794
  * Copyright (c) Microsoft Corporation. All rights reserved.
29868
29795
  * Licensed under the MIT License.
@@ -30137,12 +30064,12 @@ class Logger {
30137
30064
  }
30138
30065
  }
30139
30066
 
30140
- /*! @azure/msal-common v16.11.3 2026-07-29 */
30067
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
30141
30068
  /* eslint-disable header/header */
30142
30069
  const name$1 = "@azure/msal-common";
30143
- const version$4 = "16.11.3";
30070
+ const version$4 = "16.12.0";
30144
30071
 
30145
- /*! @azure/msal-common v16.11.3 2026-07-29 */
30072
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
30146
30073
  /*
30147
30074
  * Copyright (c) Microsoft Corporation. All rights reserved.
30148
30075
  * Licensed under the MIT License.
@@ -30150,7 +30077,7 @@ const version$4 = "16.11.3";
30150
30077
  const cacheQuotaExceeded = "cache_quota_exceeded";
30151
30078
  const cacheErrorUnknown = "cache_error_unknown";
30152
30079
 
30153
- /*! @azure/msal-common v16.11.3 2026-07-29 */
30080
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
30154
30081
 
30155
30082
  /*
30156
30083
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -30188,7 +30115,7 @@ function createCacheError(e) {
30188
30115
  }
30189
30116
  }
30190
30117
 
30191
- /*! @azure/msal-common v16.11.3 2026-07-29 */
30118
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
30192
30119
 
30193
30120
  /*
30194
30121
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -30415,9 +30342,17 @@ class CacheManager {
30415
30342
  }
30416
30343
  /**
30417
30344
  * saves access token credential
30418
- * @param credential
30345
+ * @param credential - the access token entity to save
30346
+ * @param correlationId - unique identifier for the request
30347
+ * @param kmsi - keep me signed in flag
30419
30348
  */
30420
30349
  async saveAccessToken(credential, correlationId, kmsi) {
30350
+ // Compute hash from components on the entity itself — no need to thread externally.
30351
+ let additionalCacheKeyHash;
30352
+ if (credential.additionalCacheKeyComponents &&
30353
+ Object.keys(credential.additionalCacheKeyComponents).length > 0) {
30354
+ additionalCacheKeyHash = await this.cryptoImpl.hashString(JSON.stringify(credential.additionalCacheKeyComponents));
30355
+ }
30421
30356
  const accessTokenFilter = {
30422
30357
  clientId: credential.clientId,
30423
30358
  credentialType: credential.credentialType,
@@ -30441,7 +30376,7 @@ class CacheManager {
30441
30376
  }
30442
30377
  }
30443
30378
  });
30444
- await this.setAccessTokenCredential(credential, correlationId, kmsi);
30379
+ await this.setAccessTokenCredential(credential, correlationId, kmsi, additionalCacheKeyHash);
30445
30380
  }
30446
30381
  /**
30447
30382
  * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache
@@ -30852,6 +30787,12 @@ class CacheManager {
30852
30787
  AuthenticationScheme.BEARER.toLowerCase()
30853
30788
  ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME
30854
30789
  : CredentialType.ACCESS_TOKEN;
30790
+ const attributeTokenPartition = serializeAttributeTokens(request.attributeTokens);
30791
+ const additionalCacheKeyComponents = attributeTokenPartition
30792
+ ? {
30793
+ attribute_tokens: attributeTokenPartition,
30794
+ }
30795
+ : undefined;
30855
30796
  const accessTokenFilter = {
30856
30797
  homeAccountId: account.homeAccountId,
30857
30798
  environment: account.environment,
@@ -30861,10 +30802,12 @@ class CacheManager {
30861
30802
  target: scopes,
30862
30803
  tokenType: authScheme,
30863
30804
  keyId: request.sshKid,
30805
+ additionalCacheKeyComponents: additionalCacheKeyComponents,
30864
30806
  };
30865
30807
  const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||
30866
30808
  this.getTokenKeys().accessToken;
30867
30809
  const accessTokens = [];
30810
+ const matchedKeys = [];
30868
30811
  accessTokenKeys.forEach((key) => {
30869
30812
  // Validate key
30870
30813
  if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {
@@ -30873,18 +30816,18 @@ class CacheManager {
30873
30816
  if (accessToken &&
30874
30817
  this.credentialMatchesFilter(accessToken, accessTokenFilter, correlationId)) {
30875
30818
  accessTokens.push(accessToken);
30819
+ matchedKeys.push(key);
30876
30820
  }
30877
30821
  }
30878
30822
  });
30879
- const numAccessTokens = accessTokens.length;
30880
- if (numAccessTokens < 1) {
30823
+ if (accessTokens.length < 1) {
30881
30824
  this.commonLogger.info("1nckna", correlationId);
30882
30825
  return null;
30883
30826
  }
30884
- else if (numAccessTokens > 1) {
30827
+ else if (accessTokens.length > 1) {
30885
30828
  this.commonLogger.info("1wkfwp", correlationId);
30886
- accessTokens.forEach((accessToken) => {
30887
- this.removeAccessToken(this.generateCredentialKey(accessToken), correlationId);
30829
+ matchedKeys.forEach((key) => {
30830
+ this.removeAccessToken(key, correlationId);
30888
30831
  });
30889
30832
  this.performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);
30890
30833
  return null;
@@ -31327,7 +31270,9 @@ class DefaultStorageClass extends CacheManager {
31327
31270
  getTokenKeys() {
31328
31271
  throw createClientAuthError(methodNotImplemented, "");
31329
31272
  }
31330
- generateCredentialKey() {
31273
+ /* eslint-disable @typescript-eslint/no-unused-vars */
31274
+ generateCredentialKey(_credential, _hash) {
31275
+ /* eslint-enable @typescript-eslint/no-unused-vars */
31331
31276
  throw createClientAuthError(methodNotImplemented, "");
31332
31277
  }
31333
31278
  generateAccountKey() {
@@ -31335,7 +31280,7 @@ class DefaultStorageClass extends CacheManager {
31335
31280
  }
31336
31281
  }
31337
31282
 
31338
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31283
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31339
31284
  /*
31340
31285
  * Copyright (c) Microsoft Corporation. All rights reserved.
31341
31286
  * Licensed under the MIT License.
@@ -31349,7 +31294,7 @@ class DefaultStorageClass extends CacheManager {
31349
31294
  const PerformanceEventStatus = {
31350
31295
  InProgress: 1};
31351
31296
 
31352
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31297
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31353
31298
 
31354
31299
  /*
31355
31300
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -31407,7 +31352,7 @@ class StubPerformanceClient {
31407
31352
  }
31408
31353
  }
31409
31354
 
31410
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31355
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31411
31356
 
31412
31357
  /*
31413
31358
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -31503,7 +31448,7 @@ function isOidcProtocolMode(config) {
31503
31448
  return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);
31504
31449
  }
31505
31450
 
31506
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31451
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31507
31452
  /*
31508
31453
  * Copyright (c) Microsoft Corporation. All rights reserved.
31509
31454
  * Licensed under the MIT License.
@@ -31530,7 +31475,7 @@ function isOidcProtocolMode(config) {
31530
31475
  }
31531
31476
  }
31532
31477
 
31533
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31478
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31534
31479
 
31535
31480
  /*
31536
31481
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -31610,7 +31555,7 @@ class PopTokenGenerator {
31610
31555
  }
31611
31556
  }
31612
31557
 
31613
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31558
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31614
31559
  /*
31615
31560
  * Copyright (c) Microsoft Corporation. All rights reserved.
31616
31561
  * Licensed under the MIT License.
@@ -31661,7 +31606,7 @@ const badToken = "bad_token";
31661
31606
  */
31662
31607
  const interruptedUser = "interrupted_user";
31663
31608
 
31664
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31609
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31665
31610
 
31666
31611
  /*
31667
31612
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -31728,7 +31673,7 @@ function createInteractionRequiredAuthError(errorCode, correlationId, errorMessa
31728
31673
  return new InteractionRequiredAuthError(errorCode, correlationId, errorMessage);
31729
31674
  }
31730
31675
 
31731
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31676
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31732
31677
 
31733
31678
  /*
31734
31679
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -31747,7 +31692,7 @@ class ServerError extends AuthError {
31747
31692
  }
31748
31693
  }
31749
31694
 
31750
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31695
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31751
31696
 
31752
31697
  /*
31753
31698
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -31818,7 +31763,7 @@ function parseRequestState(base64Decode, state, correlationId) {
31818
31763
  }
31819
31764
  }
31820
31765
 
31821
- /*! @azure/msal-common v16.11.3 2026-07-29 */
31766
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
31822
31767
 
31823
31768
  /*
31824
31769
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -31907,7 +31852,15 @@ class ResponseHandler {
31907
31852
  // Add keyId from request to serverTokenResponse if defined
31908
31853
  serverTokenResponse.key_id =
31909
31854
  serverTokenResponse.key_id || request.sshKid || undefined;
31910
- const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload, additionalCacheKeyComponents);
31855
+ // Compute components once for entity storage (fallback if hash not provided by client)
31856
+ const attributeTokenPartition = serializeAttributeTokens(request.attributeTokens);
31857
+ const cacheKeyComponents = additionalCacheKeyComponents ??
31858
+ (attributeTokenPartition
31859
+ ? {
31860
+ attribute_tokens: attributeTokenPartition,
31861
+ }
31862
+ : undefined);
31863
+ const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload, cacheKeyComponents);
31911
31864
  let cacheContext;
31912
31865
  try {
31913
31866
  if (this.persistencePlugin && this.serializableCache) {
@@ -32169,7 +32122,7 @@ function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decod
32169
32122
  return baseAccount;
32170
32123
  }
32171
32124
 
32172
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32125
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32173
32126
  /*
32174
32127
  * Copyright (c) Microsoft Corporation. All rights reserved.
32175
32128
  * Licensed under the MIT License.
@@ -32179,7 +32132,7 @@ const CcsCredentialType = {
32179
32132
  UPN: "UPN",
32180
32133
  };
32181
32134
 
32182
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32135
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32183
32136
  /*
32184
32137
  * Copyright (c) Microsoft Corporation. All rights reserved.
32185
32138
  * Licensed under the MIT License.
@@ -32198,7 +32151,8 @@ async function getClientAssertion(clientAssertion, clientId, tokenEndpoint, fmiP
32198
32151
  }
32199
32152
  }
32200
32153
 
32201
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32154
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32155
+
32202
32156
  /*
32203
32157
  * Copyright (c) Microsoft Corporation. All rights reserved.
32204
32158
  * Licensed under the MIT License.
@@ -32217,10 +32171,11 @@ function getRequestThumbprint(clientId, request, homeAccountId) {
32217
32171
  sshKid: request.sshKid,
32218
32172
  embeddedClientId: request.embeddedClientId || request.extraParameters?.clientId,
32219
32173
  resource: request.resource,
32174
+ attributeTokens: serializeAttributeTokens(request.attributeTokens),
32220
32175
  };
32221
32176
  }
32222
32177
 
32223
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32178
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32224
32179
 
32225
32180
  /*
32226
32181
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -32306,7 +32261,7 @@ class ThrottlingUtils {
32306
32261
  }
32307
32262
  }
32308
32263
 
32309
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32264
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32310
32265
 
32311
32266
  /*
32312
32267
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -32337,7 +32292,7 @@ function createNetworkError(error, httpStatus, responseHeaders, additionalError)
32337
32292
  return new NetworkError(error, httpStatus, responseHeaders);
32338
32293
  }
32339
32294
 
32340
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32295
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32341
32296
 
32342
32297
  /*
32343
32298
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -32453,7 +32408,7 @@ async function sendPostRequest(thumbprint, tokenEndpoint, options, correlationId
32453
32408
  return response;
32454
32409
  }
32455
32410
 
32456
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32411
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32457
32412
 
32458
32413
  /*
32459
32414
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -32574,6 +32529,12 @@ class AuthorizationCodeClient {
32574
32529
  // Add scope array, parameter builder will add default scopes and dedupe
32575
32530
  addScopes(parameters, request.scopes, request.correlationId, true, this.oidcDefaultScopes);
32576
32531
  addResource(parameters, request.resource);
32532
+ if (request.attributeTokens) {
32533
+ addAttributeTokens(parameters, request.attributeTokens);
32534
+ }
32535
+ this.performanceClient?.addFields({
32536
+ hasAttributeTokens: !!request.attributeTokens?.length,
32537
+ }, request.correlationId);
32577
32538
  // add code: user set, not validated
32578
32539
  addAuthorizationCode(parameters, request.code);
32579
32540
  // Add library metadata
@@ -32710,7 +32671,7 @@ class AuthorizationCodeClient {
32710
32671
  }
32711
32672
  }
32712
32673
 
32713
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32674
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32714
32675
 
32715
32676
  /*
32716
32677
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -32937,7 +32898,7 @@ function extractLoginHint(account) {
32937
32898
  return account.loginHint || account.idTokenClaims?.login_hint || null;
32938
32899
  }
32939
32900
 
32940
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32901
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32941
32902
 
32942
32903
  /*
32943
32904
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -32958,7 +32919,7 @@ function createJoseHeaderError(code, correlationId) {
32958
32919
  return new JoseHeaderError(code, correlationId);
32959
32920
  }
32960
32921
 
32961
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32922
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32962
32923
  /*
32963
32924
  * Copyright (c) Microsoft Corporation. All rights reserved.
32964
32925
  * Licensed under the MIT License.
@@ -32966,7 +32927,7 @@ function createJoseHeaderError(code, correlationId) {
32966
32927
  const missingKidError = "missing_kid_error";
32967
32928
  const missingAlgError = "missing_alg_error";
32968
32929
 
32969
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32930
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
32970
32931
 
32971
32932
  /*
32972
32933
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -33006,7 +32967,7 @@ class JoseHeader {
33006
32967
  }
33007
32968
  }
33008
32969
 
33009
- /*! @azure/msal-common v16.11.3 2026-07-29 */
32970
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
33010
32971
 
33011
32972
  /*
33012
32973
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -33167,6 +33128,12 @@ class RefreshTokenClient {
33167
33128
  addServerTelemetry(parameters, this.serverTelemetryManager);
33168
33129
  }
33169
33130
  addRefreshToken(parameters, request.refreshToken);
33131
+ if (request.attributeTokens) {
33132
+ addAttributeTokens(parameters, request.attributeTokens);
33133
+ }
33134
+ this.performanceClient?.addFields({
33135
+ hasAttributeTokens: !!request.attributeTokens?.length,
33136
+ }, request.correlationId);
33170
33137
  if (this.config.clientCredentials.clientSecret) {
33171
33138
  addClientSecret(parameters, this.config.clientCredentials.clientSecret);
33172
33139
  }
@@ -33227,7 +33194,7 @@ class RefreshTokenClient {
33227
33194
  }
33228
33195
  }
33229
33196
 
33230
- /*! @azure/msal-common v16.11.3 2026-07-29 */
33197
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
33231
33198
 
33232
33199
  /*
33233
33200
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -33520,7 +33487,7 @@ class StubServerTelemetryManager extends ServerTelemetryManager {
33520
33487
  clearNativeBrokerErrorCode() { }
33521
33488
  }
33522
33489
 
33523
- /*! @azure/msal-common v16.11.3 2026-07-29 */
33490
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
33524
33491
 
33525
33492
  /*
33526
33493
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -33628,7 +33595,7 @@ class SilentFlowClient {
33628
33595
  }
33629
33596
  }
33630
33597
 
33631
- /*! @azure/msal-common v16.11.3 2026-07-29 */
33598
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
33632
33599
 
33633
33600
  /*
33634
33601
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -33644,7 +33611,7 @@ const StubbedNetworkModule = {
33644
33611
  },
33645
33612
  };
33646
33613
 
33647
- /*! @azure/msal-common v16.11.3 2026-07-29 */
33614
+ /*! @azure/msal-common v16.12.0 2026-08-04 */
33648
33615
 
33649
33616
  /*
33650
33617
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -33677,7 +33644,7 @@ function containsResourceParam(params) {
33677
33644
  return Object.prototype.hasOwnProperty.call(params, "resource");
33678
33645
  }
33679
33646
 
33680
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
33647
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
33681
33648
  /*
33682
33649
  * Copyright (c) Microsoft Corporation. All rights reserved.
33683
33650
  * Licensed under the MIT License.
@@ -33804,7 +33771,7 @@ const DecryptEarResponse = "decryptEarResponse";
33804
33771
  */
33805
33772
  const WaitForBridgeLateResponse = "waitForBridgeLateResponse";
33806
33773
 
33807
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
33774
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
33808
33775
 
33809
33776
  /*
33810
33777
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -33827,7 +33794,7 @@ function createBrowserAuthError(errorCode, correlationId, subError) {
33827
33794
  return new BrowserAuthError(errorCode, correlationId, subError);
33828
33795
  }
33829
33796
 
33830
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
33797
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
33831
33798
  /*
33832
33799
  * Copyright (c) Microsoft Corporation. All rights reserved.
33833
33800
  * Licensed under the MIT License.
@@ -33882,7 +33849,7 @@ const failedToDecryptEarResponse = "failed_to_decrypt_ear_response";
33882
33849
  const timedOut = "timed_out";
33883
33850
  const emptyResponse = "empty_response";
33884
33851
 
33885
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
33852
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
33886
33853
 
33887
33854
  /*
33888
33855
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -33921,7 +33888,7 @@ function base64DecToArr(base64String) {
33921
33888
  return Uint8Array.from(binString, (m) => m.codePointAt(0) || 0);
33922
33889
  }
33923
33890
 
33924
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
33891
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
33925
33892
 
33926
33893
  /*
33927
33894
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -34107,7 +34074,7 @@ const iFrameRenewalPolicies = [
34107
34074
  CacheLookupPolicy.RefreshTokenAndNetwork,
34108
34075
  ];
34109
34076
 
34110
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
34077
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
34111
34078
  /*
34112
34079
  * Copyright (c) Microsoft Corporation. All rights reserved.
34113
34080
  * Licensed under the MIT License.
@@ -34152,7 +34119,7 @@ function base64EncArr(aBytes) {
34152
34119
  return btoa(binString);
34153
34120
  }
34154
34121
 
34155
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
34122
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
34156
34123
 
34157
34124
  /*
34158
34125
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -34499,7 +34466,7 @@ async function computeJwkThumbprint(publicJwk) {
34499
34466
  return hashString(thumbprintJson);
34500
34467
  }
34501
34468
 
34502
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
34469
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
34503
34470
 
34504
34471
  /*
34505
34472
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -34519,7 +34486,7 @@ function createBrowserConfigurationAuthError(errorCode, correlationId) {
34519
34486
  return new BrowserConfigurationAuthError(errorCode, correlationId, getDefaultErrorMessage(errorCode));
34520
34487
  }
34521
34488
 
34522
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
34489
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
34523
34490
  /*
34524
34491
  * Copyright (c) Microsoft Corporation. All rights reserved.
34525
34492
  * Licensed under the MIT License.
@@ -34527,7 +34494,7 @@ function createBrowserConfigurationAuthError(errorCode, correlationId) {
34527
34494
  const storageNotSupported = "storage_not_supported";
34528
34495
  const inMemRedirectUnavailable = "in_mem_redirect_unavailable";
34529
34496
 
34530
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
34497
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
34531
34498
 
34532
34499
  /*
34533
34500
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -34868,7 +34835,7 @@ function createGuid() {
34868
34835
  return createNewGuid();
34869
34836
  }
34870
34837
 
34871
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
34838
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
34872
34839
 
34873
34840
  /*
34874
34841
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -35071,7 +35038,7 @@ class DatabaseStorage {
35071
35038
  }
35072
35039
  }
35073
35040
 
35074
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35041
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35075
35042
  /*
35076
35043
  * Copyright (c) Microsoft Corporation. All rights reserved.
35077
35044
  * Licensed under the MIT License.
@@ -35117,7 +35084,7 @@ class MemoryStorage {
35117
35084
  }
35118
35085
  }
35119
35086
 
35120
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35087
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35121
35088
 
35122
35089
  /*
35123
35090
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -35258,7 +35225,7 @@ class AsyncMemoryStorage {
35258
35225
  }
35259
35226
  }
35260
35227
 
35261
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35228
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35262
35229
 
35263
35230
  /*
35264
35231
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -35435,7 +35402,7 @@ function getSortedObjectString(obj) {
35435
35402
  return JSON.stringify(obj, Object.keys(obj).sort());
35436
35403
  }
35437
35404
 
35438
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35405
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35439
35406
  /*
35440
35407
  * Copyright (c) Microsoft Corporation. All rights reserved.
35441
35408
  * Licensed under the MIT License.
@@ -35482,7 +35449,7 @@ const LocalStorageUpdated = "localStorageUpdated";
35482
35449
  */
35483
35450
  const SsoCapable = "ssoCapable";
35484
35451
 
35485
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35452
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35486
35453
  /*
35487
35454
  * Copyright (c) Microsoft Corporation. All rights reserved.
35488
35455
  * Licensed under the MIT License.
@@ -35511,7 +35478,7 @@ function getTokenKeysCacheKey(clientId, schema = CREDENTIAL_SCHEMA_VERSION) {
35511
35478
  return `${PREFIX}.${schema}.${TOKEN_KEYS}.${clientId}`;
35512
35479
  }
35513
35480
 
35514
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35481
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35515
35482
 
35516
35483
  /*
35517
35484
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -35602,7 +35569,7 @@ function getCookieExpirationTime(cookieLifeDays) {
35602
35569
  return expr.toUTCString();
35603
35570
  }
35604
35571
 
35605
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35572
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35606
35573
 
35607
35574
  /*
35608
35575
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -35644,7 +35611,7 @@ function getTokenKeys(clientId, storage, schemaVersion) {
35644
35611
  };
35645
35612
  }
35646
35613
 
35647
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35614
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35648
35615
  /*
35649
35616
  * Copyright (c) Microsoft Corporation. All rights reserved.
35650
35617
  * Licensed under the MIT License.
@@ -35655,7 +35622,7 @@ function isEncrypted(data) {
35655
35622
  data.hasOwnProperty("data"));
35656
35623
  }
35657
35624
 
35658
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35625
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35659
35626
 
35660
35627
  /*
35661
35628
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -35947,7 +35914,7 @@ class LocalStorage {
35947
35914
  }
35948
35915
  }
35949
35916
 
35950
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35917
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35951
35918
 
35952
35919
  /*
35953
35920
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -35989,7 +35956,7 @@ class SessionStorage {
35989
35956
  }
35990
35957
  }
35991
35958
 
35992
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35959
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
35993
35960
  /*
35994
35961
  * Copyright (c) Microsoft Corporation. All rights reserved.
35995
35962
  * Licensed under the MIT License.
@@ -36017,12 +35984,12 @@ const EventType = {
36017
35984
  BROKER_CONNECTION_ESTABLISHED: "msal:brokerConnectionEstablished",
36018
35985
  };
36019
35986
 
36020
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35987
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
36021
35988
  /* eslint-disable header/header */
36022
35989
  const name = "@azure/msal-browser";
36023
- const version$3 = "5.17.3";
35990
+ const version$3 = "5.18.0";
36024
35991
 
36025
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
35992
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
36026
35993
  /*
36027
35994
  * Copyright (c) Microsoft Corporation. All rights reserved.
36028
35995
  * Licensed under the MIT License.
@@ -36039,7 +36006,7 @@ function removeElementFromArray(array, element) {
36039
36006
  }
36040
36007
  }
36041
36008
 
36042
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
36009
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
36043
36010
 
36044
36011
  /*
36045
36012
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -36916,12 +36883,12 @@ class BrowserCacheManager extends CacheManager {
36916
36883
  return parsedAccessToken;
36917
36884
  }
36918
36885
  /**
36919
- * set accessToken credential to the platform cache
36920
- * @param accessToken
36886
+ * Set accessToken credential to the platform cache
36887
+ * @param accessToken - the access token entity to cache
36921
36888
  */
36922
- async setAccessTokenCredential(accessToken, correlationId, kmsi) {
36889
+ async setAccessTokenCredential(accessToken, correlationId, kmsi, additionalCacheKeyHash) {
36923
36890
  this.logger.trace("1pondb", correlationId);
36924
- const accessTokenKey = this.generateCredentialKey(accessToken);
36891
+ const accessTokenKey = this.generateCredentialKey(accessToken, additionalCacheKeyHash);
36925
36892
  const timestamp = Date.now().toString();
36926
36893
  accessToken.lastUpdatedAt = timestamp;
36927
36894
  await this.setUserData(accessTokenKey, JSON.stringify(accessToken), correlationId, timestamp, kmsi);
@@ -37231,11 +37198,13 @@ class BrowserCacheManager extends CacheManager {
37231
37198
  }
37232
37199
  /**
37233
37200
  * Generate Credential Key. All changes to the key REQUIRE a schema version update.
37234
- * Cache Key: msal.<schema_version>|<home_account_id>|<environment>|<credential_type>|<client_id or familyId>|<realm>|<scopes>|<scheme>
37201
+ * Cache Key: msal.<schema_version>|<home_account_id>|<environment>|<credential_type>|<client_id or familyId>|<realm>|<scopes>|<scheme>|<additional_cache_key_components_hash>
37202
+ *
37235
37203
  * @param credentialEntity
37204
+ * @param hash - optional precomputed hash of additionalCacheKeyComponents
37236
37205
  * @returns
37237
37206
  */
37238
- generateCredentialKey(credential) {
37207
+ generateCredentialKey(credential, additionalCacheKeyHash) {
37239
37208
  const familyId = (credential.credentialType ===
37240
37209
  CredentialType.REFRESH_TOKEN &&
37241
37210
  credential.familyId) ||
@@ -37255,6 +37224,12 @@ class BrowserCacheManager extends CacheManager {
37255
37224
  credential.target || "",
37256
37225
  scheme,
37257
37226
  ];
37227
+ // Append precomputed component-hash segment.
37228
+ if (credential.additionalCacheKeyComponents &&
37229
+ Object.keys(credential.additionalCacheKeyComponents).length > 0 &&
37230
+ additionalCacheKeyHash) {
37231
+ credentialKey.push(additionalCacheKeyHash);
37232
+ }
37258
37233
  return credentialKey.join(CACHE_KEY_SEPARATOR).toLowerCase();
37259
37234
  }
37260
37235
  /**
@@ -37477,7 +37452,7 @@ const DEFAULT_BROWSER_CACHE_MANAGER = (clientId, logger, performanceClient, even
37477
37452
  return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger, performanceClient, eventHandler);
37478
37453
  };
37479
37454
 
37480
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
37455
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
37481
37456
  /*
37482
37457
  * Copyright (c) Microsoft Corporation. All rights reserved.
37483
37458
  * Licensed under the MIT License.
@@ -37524,7 +37499,7 @@ function getActiveAccount(browserStorage, correlationId) {
37524
37499
  return browserStorage.getActiveAccount(correlationId);
37525
37500
  }
37526
37501
 
37527
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
37502
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
37528
37503
 
37529
37504
  /*
37530
37505
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -37628,7 +37603,7 @@ class EventHandler {
37628
37603
  }
37629
37604
  }
37630
37605
 
37631
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
37606
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
37632
37607
 
37633
37608
  /*
37634
37609
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -37768,7 +37743,7 @@ async function clearCacheOnLogout(browserStorage, browserCrypto, logger, correla
37768
37743
  }
37769
37744
  }
37770
37745
 
37771
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
37746
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
37772
37747
 
37773
37748
  /*
37774
37749
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -37846,7 +37821,7 @@ function validateRequestMethod(interactionRequest, protocolMode) {
37846
37821
  return httpMethod;
37847
37822
  }
37848
37823
 
37849
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
37824
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
37850
37825
 
37851
37826
  /*
37852
37827
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -38052,7 +38027,7 @@ async function initializeAuthorizationRequest(request, interactionType, config,
38052
38027
  return validatedRequest;
38053
38028
  }
38054
38029
 
38055
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38030
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38056
38031
  /*
38057
38032
  * Copyright (c) Microsoft Corporation. All rights reserved.
38058
38033
  * Licensed under the MIT License.
@@ -38070,7 +38045,7 @@ async function initializeAuthorizationRequest(request, interactionType, config,
38070
38045
  */
38071
38046
  const POPUP_RELAY_RESPONSE_TYPE = "msal:popup-relay-response:v1";
38072
38047
 
38073
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38048
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38074
38049
 
38075
38050
  /*
38076
38051
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -38176,7 +38151,7 @@ async function waitForPopupRelayResponse(timeoutMs, logger, request, popupWindow
38176
38151
  });
38177
38152
  }
38178
38153
 
38179
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38154
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38180
38155
 
38181
38156
  /*
38182
38157
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -38200,7 +38175,7 @@ function extractBrowserRequestState(browserCrypto, state, correlationId) {
38200
38175
  }
38201
38176
  }
38202
38177
 
38203
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38178
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38204
38179
 
38205
38180
  /*
38206
38181
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -38239,7 +38214,7 @@ function validateInteractionType(response, browserCrypto, interactionType, corre
38239
38214
  }
38240
38215
  }
38241
38216
 
38242
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38217
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38243
38218
 
38244
38219
  /*
38245
38220
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -38328,7 +38303,7 @@ class InteractionHandler {
38328
38303
  }
38329
38304
  }
38330
38305
 
38331
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38306
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38332
38307
  /*
38333
38308
  * Copyright (c) Microsoft Corporation. All rights reserved.
38334
38309
  * Licensed under the MIT License.
@@ -38337,7 +38312,7 @@ const contentError = "ContentError";
38337
38312
  const pageException = "PageException";
38338
38313
  const userSwitch = "user_switch";
38339
38314
 
38340
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38315
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38341
38316
  /*
38342
38317
  * Copyright (c) Microsoft Corporation. All rights reserved.
38343
38318
  * Licensed under the MIT License.
@@ -38350,7 +38325,7 @@ const DISABLED = "DISABLED";
38350
38325
  const ACCOUNT_UNAVAILABLE = "ACCOUNT_UNAVAILABLE";
38351
38326
  const UI_NOT_ALLOWED = "UI_NOT_ALLOWED";
38352
38327
 
38353
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38328
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38354
38329
 
38355
38330
  /*
38356
38331
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -38422,7 +38397,7 @@ function createNativeAuthError(code, correlationId, description, ext) {
38422
38397
  return error;
38423
38398
  }
38424
38399
 
38425
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38400
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38426
38401
 
38427
38402
  /*
38428
38403
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -38471,7 +38446,7 @@ class SilentCacheClient extends StandardInteractionClient {
38471
38446
  }
38472
38447
  }
38473
38448
 
38474
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
38449
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
38475
38450
 
38476
38451
  /*
38477
38452
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -38608,13 +38583,18 @@ class PlatformAuthInteractionClient extends BaseInteractionClient {
38608
38583
  * @returns CommonSilentFlowRequest
38609
38584
  */
38610
38585
  createSilentCacheRequest(request, cachedAccount) {
38611
- return {
38586
+ const silentRequest = {
38612
38587
  authority: request.authority,
38613
38588
  correlationId: this.correlationId,
38614
38589
  scopes: ScopeSet.fromString(request.scope, this.correlationId).asArray(),
38615
38590
  account: cachedAccount,
38616
38591
  forceRefresh: false,
38617
38592
  };
38593
+ // Preserve FMI partition semantics for silent cache filtering.
38594
+ if (request.attributeTokens) {
38595
+ silentRequest.attributeTokens = request.attributeTokens.split(" ");
38596
+ }
38597
+ return silentRequest;
38618
38598
  }
38619
38599
  /**
38620
38600
  * Fetches the tokens from the cache if un-expired
@@ -38940,7 +38920,12 @@ class PlatformAuthInteractionClient extends BaseInteractionClient {
38940
38920
  : response.expires_in) || 0;
38941
38921
  const tokenExpirationSeconds = reqTimestamp + expiresIn;
38942
38922
  const responseScopes = this.generateScopes(response.scope, request.scope);
38943
- const cachedAccessToken = createAccessTokenEntity(homeAccountIdentifier, environment, response.access_token, request.clientId, idTokenClaims.tid || tenantId, responseScopes.printScopes(), tokenExpirationSeconds, 0, base64Decode, request.correlationId, undefined, request.tokenType, undefined, request.keyId);
38923
+ const additionalCacheKeyComponents = request.attributeTokens
38924
+ ? {
38925
+ attribute_tokens: request.attributeTokens,
38926
+ }
38927
+ : undefined;
38928
+ const cachedAccessToken = createAccessTokenEntity(homeAccountIdentifier, environment, response.access_token, request.clientId, idTokenClaims.tid || tenantId, responseScopes.printScopes(), tokenExpirationSeconds, 0, base64Decode, request.correlationId, undefined, request.tokenType, undefined, request.keyId, additionalCacheKeyComponents);
38944
38929
  // save idtoken credential in configured browser storage
38945
38930
  if (!!cachedIdToken && storeInCache?.idToken !== false) {
38946
38931
  await this.browserStorage.setIdTokenCredential(cachedIdToken, this.correlationId, isKmsi(idTokenClaims));
@@ -39021,11 +39006,18 @@ class PlatformAuthInteractionClient extends BaseInteractionClient {
39021
39006
  const configClaims = request.skipBrokerClaims && !!request.embeddedClientId
39022
39007
  ? undefined
39023
39008
  : this.config.auth.clientCapabilities;
39024
- // scopes are expected to be received by the native broker as "scope" and will be added to the request below. 'resource' is added in extraParameters for MCP scenarios.
39009
+ /*
39010
+ * scopes are expected to be received by the native broker as "scope" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here.
39011
+ * attributeTokens is destructured out because PlatformAuthRequest represents it as a pre-serialized string, not the caller-provided Array<string>.
39012
+ */
39025
39013
  const { scopes, claims } = request;
39026
39014
  const scopeSet = new ScopeSet(scopes || [], this.correlationId);
39027
39015
  scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);
39028
39016
  const mergedClaims = buildMergedClaims(claims, configClaims?.length ? configClaims : undefined);
39017
+ const hasAttributeTokens = !!request.attributeTokens?.length;
39018
+ this.performanceClient?.addFields({
39019
+ hasAttributeTokens,
39020
+ }, this.correlationId);
39029
39021
  const validatedRequest = {
39030
39022
  claims: mergedClaims,
39031
39023
  accountId: this.accountId,
@@ -39052,6 +39044,10 @@ class PlatformAuthInteractionClient extends BaseInteractionClient {
39052
39044
  shrClaims: request.shrClaims,
39053
39045
  shrNonce: request.shrNonce,
39054
39046
  };
39047
+ if (hasAttributeTokens) {
39048
+ validatedRequest.attributeTokens =
39049
+ serializeAttributeTokens(request.attributeTokens);
39050
+ }
39055
39051
  // Check for PoP token requests: signPopToken should only be set to true if popKid is not set
39056
39052
  if (validatedRequest.signPopToken && !!request.popKid) {
39057
39053
  throw createBrowserAuthError(invalidPopTokenRequest, this.correlationId);
@@ -39170,7 +39166,7 @@ class PlatformAuthInteractionClient extends BaseInteractionClient {
39170
39166
  }
39171
39167
  }
39172
39168
 
39173
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
39169
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
39174
39170
 
39175
39171
  /*
39176
39172
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -39488,7 +39484,7 @@ async function handleResponseEAR(request, response, apiId, config, authority, br
39488
39484
  return (await invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), HandleServerTokenResponse, logger, performanceClient, request.correlationId)(decryptedData, authority, nowSeconds(), request, apiId, additionalData, undefined, undefined, undefined, undefined));
39489
39485
  }
39490
39486
 
39491
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
39487
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
39492
39488
 
39493
39489
  /*
39494
39490
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -39543,7 +39539,7 @@ async function generateCodeChallengeFromVerifier(pkceCodeVerifier, performanceCl
39543
39539
  }
39544
39540
  }
39545
39541
 
39546
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
39542
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
39547
39543
 
39548
39544
  /*
39549
39545
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -39586,7 +39582,7 @@ class NavigationClient {
39586
39582
  }
39587
39583
  }
39588
39584
 
39589
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
39585
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
39590
39586
 
39591
39587
  /*
39592
39588
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -39733,7 +39729,7 @@ function getHeaderDict(headers) {
39733
39729
  }
39734
39730
  }
39735
39731
 
39736
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
39732
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
39737
39733
 
39738
39734
  /*
39739
39735
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -39864,7 +39860,7 @@ function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system
39864
39860
  return overlayedConfig;
39865
39861
  }
39866
39862
 
39867
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
39863
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
39868
39864
 
39869
39865
  /*
39870
39866
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -40125,7 +40121,7 @@ class PlatformAuthExtensionHandler {
40125
40121
  }
40126
40122
  }
40127
40123
 
40128
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
40124
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
40129
40125
 
40130
40126
  /*
40131
40127
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -40273,7 +40269,7 @@ class PlatformAuthDOMHandler {
40273
40269
  }
40274
40270
  }
40275
40271
 
40276
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
40272
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
40277
40273
  async function getPlatformAuthProvider(logger, performanceClient, correlationId, nativeBrokerHandshakeTimeout, enablePlatformBrokerDOMSupport) {
40278
40274
  logger.trace("134j0v", correlationId);
40279
40275
  logger.trace(`04c81g ${enablePlatformBrokerDOMSupport}`, correlationId);
@@ -40338,7 +40334,7 @@ function isPlatformAuthAllowed(config, logger, correlationId, platformAuthProvid
40338
40334
  return true;
40339
40335
  }
40340
40336
 
40341
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
40337
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
40342
40338
 
40343
40339
  /*
40344
40340
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -40843,7 +40839,7 @@ class PopupClient extends StandardInteractionClient {
40843
40839
  }
40844
40840
  }
40845
40841
 
40846
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
40842
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
40847
40843
 
40848
40844
  /*
40849
40845
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -41286,7 +41282,7 @@ class RedirectClient extends StandardInteractionClient {
41286
41282
  }
41287
41283
  }
41288
41284
 
41289
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
41285
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
41290
41286
 
41291
41287
  /*
41292
41288
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -41352,7 +41348,7 @@ function removeHiddenIframe(iframe) {
41352
41348
  }
41353
41349
  }
41354
41350
 
41355
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
41351
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
41356
41352
 
41357
41353
  /*
41358
41354
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -41588,7 +41584,7 @@ class SilentIframeClient extends StandardInteractionClient {
41588
41584
  }
41589
41585
  }
41590
41586
 
41591
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
41587
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
41592
41588
 
41593
41589
  /*
41594
41590
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -41653,7 +41649,7 @@ class SilentRefreshClient extends StandardInteractionClient {
41653
41649
  }
41654
41650
  }
41655
41651
 
41656
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
41652
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
41657
41653
 
41658
41654
  /*
41659
41655
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -41666,7 +41662,7 @@ class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {
41666
41662
  }
41667
41663
  }
41668
41664
 
41669
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
41665
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
41670
41666
 
41671
41667
  /*
41672
41668
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -41737,7 +41733,7 @@ class SilentAuthCodeClient extends StandardInteractionClient {
41737
41733
  }
41738
41734
  }
41739
41735
 
41740
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
41736
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
41741
41737
  function collectInstanceStats(currentClientId, performanceEvent, logger, correlationId) {
41742
41738
  const frameInstances =
41743
41739
  // @ts-ignore
@@ -41753,7 +41749,7 @@ function collectInstanceStats(currentClientId, performanceEvent, logger, correla
41753
41749
  });
41754
41750
  }
41755
41751
 
41756
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
41752
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
41757
41753
 
41758
41754
  /*
41759
41755
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -42692,21 +42688,32 @@ class StandardController {
42692
42688
  // Create idToken entity and store in browser storage
42693
42689
  const idTokenEntity = createIdTokenEntity(result.account.homeAccountId, result.account.environment, result.idToken, this.config.auth.clientId, result.tenantId);
42694
42690
  // Create accessToken entity and store in native internal storage
42691
+ const attributeTokenPartition = serializeAttributeTokens(request.attributeTokens);
42692
+ const additionalCacheKeyComponents = attributeTokenPartition
42693
+ ? {
42694
+ attribute_tokens: attributeTokenPartition,
42695
+ }
42696
+ : undefined;
42695
42697
  const accessTokenEntity = createAccessTokenEntity(result.account.homeAccountId, result.account.environment, result.accessToken, this.config.auth.clientId, result.tenantId, result.scopes.join(" "), result.expiresOn
42696
42698
  ? toSecondsFromDate(result.expiresOn)
42697
42699
  : 0, result.extExpiresOn
42698
42700
  ? toSecondsFromDate(result.extExpiresOn)
42699
42701
  : 0, base64Decode, request.correlationId || "", undefined, // refreshOn
42700
42702
  result.tokenType, undefined, // userAssertionHash
42701
- request.sshKid);
42703
+ request.sshKid, additionalCacheKeyComponents);
42702
42704
  if (request.resource) {
42703
42705
  accessTokenEntity.resource = request.resource;
42704
42706
  }
42707
+ // Get attribute token partition hash for cache key isolation
42708
+ const components = additionalCacheKeyComponents;
42709
+ const additionalCacheKeyHash = components
42710
+ ? await this.browserCrypto.hashString(JSON.stringify(components))
42711
+ : undefined;
42705
42712
  const kmsi = isKmsi(result.idTokenClaims);
42706
42713
  // Store idToken in browser storage
42707
42714
  await this.browserStorage.setIdTokenCredential(idTokenEntity, result.correlationId, kmsi);
42708
42715
  // Store accessToken in native internal storage
42709
- await this.nativeInternalStorage.setAccessTokenCredential(accessTokenEntity, result.correlationId, kmsi);
42716
+ await this.nativeInternalStorage.setAccessTokenCredential(accessTokenEntity, result.correlationId, kmsi, additionalCacheKeyHash);
42710
42717
  }
42711
42718
  else {
42712
42719
  return this.browserStorage.hydrateCache(result, request);
@@ -43237,7 +43244,7 @@ function checkIfRefreshTokenErrorCanBeResolvedSilently(refreshTokenError, cacheL
43237
43244
  return isSilentlyResolvable && tryIframeRenewal;
43238
43245
  }
43239
43246
 
43240
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
43247
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
43241
43248
 
43242
43249
  /*
43243
43250
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -43342,7 +43349,7 @@ class BaseOperatingContext {
43342
43349
  }
43343
43350
  }
43344
43351
 
43345
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
43352
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
43346
43353
 
43347
43354
  /*
43348
43355
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -43389,7 +43396,7 @@ StandardOperatingContext.MODULE_NAME = "";
43389
43396
  */
43390
43397
  StandardOperatingContext.ID = "StandardOperatingContext";
43391
43398
 
43392
- /*! @azure/msal-browser v5.17.3 2026-07-29 */
43399
+ /*! @azure/msal-browser v5.18.0 2026-08-04 */
43393
43400
 
43394
43401
  /*
43395
43402
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -44021,7 +44028,7 @@ const createClientLogCallback = (provider, metadata, scope) => {
44021
44028
  };
44022
44029
 
44023
44030
  // Generated by genversion.
44024
- const version$2 = '11.0.0-next.0';
44031
+ const version$2 = '10.0.2';
44025
44032
 
44026
44033
  /**
44027
44034
  * Zod schema for telemetry configuration validation.
@@ -44036,15 +44043,10 @@ const TelemetryConfigSchema = z.object({
44036
44043
  }),
44037
44044
  scope: z.array(z.string()).optional().default(['framework', 'authentication']),
44038
44045
  });
44039
-
44040
44046
  /**
44041
44047
  * Zod schema for MSAL module configuration validation.
44042
44048
  *
44043
- * @remarks
44044
- * Kept in its own module so the configuration can be extended at its source.
44045
- * The schema itself describes what reaches `MsalProvider` and strips anything
44046
- * else; keys a variant of this module needs only while the configuration is
44047
- * being built are declared on {@link MsalConfigExtension} instead.
44049
+ * @internal
44048
44050
  */
44049
44051
  const MsalConfigSchema = z.object({
44050
44052
  client: z.custom().optional(),
@@ -44057,19 +44059,9 @@ const MsalConfigSchema = z.object({
44057
44059
  .custom((val) => typeof val === 'number' &&
44058
44060
  Object.values(CacheLookupPolicy).includes(val))
44059
44061
  .optional(),
44060
- version: z.string().transform((value, ctx) => {
44061
- const coerced = semver.coerce(value);
44062
- // `semver.coerce` returns `null` for an unparseable version; without this guard it
44063
- // would silently become the literal string "null" instead of failing validation.
44064
- if (!coerced) {
44065
- ctx.addIssue({ code: z.ZodIssueCode.custom, message: 'Invalid MSAL module version' });
44066
- return z.NEVER;
44067
- }
44068
- return coerced.version;
44069
- }),
44062
+ version: z.string().transform((x) => String(semver.coerce(x))),
44070
44063
  telemetry: TelemetryConfigSchema,
44071
44064
  });
44072
-
44073
44065
  /**
44074
44066
  * Configuration builder for MSAL v4 authentication module.
44075
44067
  *
@@ -44085,7 +44077,6 @@ const MsalConfigSchema = z.object({
44085
44077
  */
44086
44078
  class MsalConfigurator extends BaseConfigBuilder {
44087
44079
  #msalConfig;
44088
- #client;
44089
44080
  /**
44090
44081
  * The MSAL module version being configured.
44091
44082
  *
@@ -44112,9 +44103,6 @@ class MsalConfigurator extends BaseConfigBuilder {
44112
44103
  return telemetry;
44113
44104
  }
44114
44105
  });
44115
- // Always resolve the configured client instance through the builder.
44116
- // This keeps the client getter live and avoids re-registering the same config key.
44117
- this._set('client', async () => this.#client);
44118
44106
  // Default cache lookup policy to AccessTokenAndRefreshToken to avoid iframe fallback delays
44119
44107
  this._set('cacheLookupPolicy', async () => CacheLookupPolicy.AccessTokenAndRefreshToken);
44120
44108
  }
@@ -44142,22 +44130,6 @@ class MsalConfigurator extends BaseConfigBuilder {
44142
44130
  this.#msalConfig = config;
44143
44131
  return this;
44144
44132
  }
44145
- /**
44146
- * Returns the client configuration declared through
44147
- * {@link MsalConfigurator.setClientConfig | setClientConfig}, if any.
44148
- *
44149
- * @remarks
44150
- * This is the configuration as declared, not the resolved one a client is
44151
- * built from — see
44152
- * {@link MsalConfigurator._createClientConfig | _createClientConfig} for that.
44153
- * Reading it is how a subclass can tell "nothing was declared" apart from
44154
- * "declared, and here it is", without re-deriving that from a resolved value.
44155
- *
44156
- * @returns The declared client configuration, or `undefined` when none was declared.
44157
- */
44158
- getClientConfig() {
44159
- return this.#msalConfig;
44160
- }
44161
44133
  /**
44162
44134
  * Sets the cache lookup policy used for every silent token acquisition.
44163
44135
  *
@@ -44291,21 +44263,9 @@ class MsalConfigurator extends BaseConfigBuilder {
44291
44263
  * ```
44292
44264
  */
44293
44265
  setClient(client) {
44294
- this.#client = client;
44266
+ this._set('client', async () => client);
44295
44267
  return this;
44296
44268
  }
44297
- /**
44298
- * Returns the currently configured MSAL client, if one has been set.
44299
- *
44300
- * @remarks
44301
- * This is useful in tests when a mock client has been provided and the test
44302
- * wants to adjust its state after it has been assigned to the configurator.
44303
- *
44304
- * @returns The configured client, or `undefined` when none has been set.
44305
- */
44306
- getClient() {
44307
- return this.#client;
44308
- }
44309
44269
  /**
44310
44270
  * Sets telemetry provider for MSAL authentication events.
44311
44271
  *
@@ -44353,151 +44313,64 @@ class MsalConfigurator extends BaseConfigBuilder {
44353
44313
  /**
44354
44314
  * Processes and validates the configuration.
44355
44315
  *
44356
- * @param rawConfig - Raw configuration object
44357
- * @param init - The builder arguments, carrying the host reference when hoisted
44316
+ * @param config - Raw configuration object
44358
44317
  * @returns Processed and validated configuration
44359
44318
  */
44360
- async _processConfig(rawConfig, init) {
44319
+ async _processConfig(rawConfig) {
44361
44320
  // Validate and coerce configuration using Zod schema
44362
44321
  const config = await MsalConfigSchema.parseAsync(rawConfig);
44363
- // Auto-create client if no client instance was supplied
44322
+ // Auto-create client if config provided but no client instance
44364
44323
  // This allows users to provide configuration without manually instantiating the client
44365
- // A hoisted module authenticates through the host's provider, so any client built here
44366
- // would be discarded — gate it here rather than in `_createClient`, so a substituted
44367
- // client (see `MsalMockConfigurator`) cannot shadow the host's signed-in user
44368
- if (!config.client && !this._isHoisted(init)) {
44369
- config.client = await this._createClient(config, init);
44370
- }
44371
- return config;
44372
- }
44373
- /**
44374
- * Creates the client to authenticate through, when none was supplied.
44375
- *
44376
- * @remarks
44377
- * Called by {@link MsalConfigurator._processConfig | _processConfig} only when
44378
- * no client was set, so a client supplied through
44379
- * {@link MsalConfigurator.setClient | setClient} always wins. It is likewise
44380
- * not called when the module is hoisted onto a host application's provider —
44381
- * see {@link MsalConfigurator._isHoisted | _isHoisted}.
44382
- *
44383
- * This is the seam for authenticating through something other than Entra ID.
44384
- * Overriding it replaces only the client, leaving the builder, the schema
44385
- * validation and `MsalProvider` untouched — which is how
44386
- * `MsalMockConfigurator` substitutes an in-process client for tests.
44387
- *
44388
- * An override normally builds from
44389
- * {@link MsalConfigurator._createClientConfig | _createClientConfig}, so it
44390
- * receives the same fully-resolved {@link MsalClientConfig} the real client is
44391
- * built from rather than re-deriving it.
44392
- *
44393
- * Returning `undefined` is legitimate and means "there is nothing to build a
44394
- * client from", which leaves the module without one.
44395
- *
44396
- * @param config - The validated configuration the client is built from.
44397
- * @param init - The builder arguments, carrying the host reference when hoisted.
44398
- * @returns The client, or `undefined` when there is nothing to build one from.
44399
- */
44400
- async _createClient(config, _init) {
44401
- const clientConfig = this._createClientConfig(config);
44402
- // A client can be omitted for a hoisted module or an intentionally incomplete setup.
44403
- if (!clientConfig) {
44404
- return undefined;
44405
- }
44406
- // Instantiate MSAL client with fully configured options
44407
- return new MsalClient(clientConfig);
44408
- }
44409
- /**
44410
- * Whether this module is hoisted onto a host application's authentication.
44411
- *
44412
- * @remarks
44413
- * When an application runs inside a host — a portal loading an app, or an app
44414
- * loading a widget — the module initializer returns a proxy of the host's
44415
- * provider instead of building its own (see the host-provider branch of the
44416
- * module initializer). A client built during configuration would therefore be
44417
- * constructed and immediately discarded.
44418
- *
44419
- * Detecting this during configuration lets the configurator skip building a
44420
- * client entirely, which matters most for substituted clients: a mock client
44421
- * built here would otherwise silently shadow the host's real signed-in user.
44422
- *
44423
- * @param init - The builder arguments, carrying the host reference when hoisted.
44424
- * @returns `true` when a host provider will be used instead of a locally built client.
44425
- */
44426
- _isHoisted(init) {
44427
- return !!init?.ref?.auth;
44428
- }
44429
- /**
44430
- * Resolves the full MSAL client configuration to build a client from.
44431
- *
44432
- * @remarks
44433
- * Applies the defaults a client is expected to be built with — authority
44434
- * derived from the tenant, cache location, telemetry-backed logging and the
44435
- * configured cache lookup policy.
44436
- *
44437
- * Kept separate from {@link MsalConfigurator._createClient | _createClient} so
44438
- * that substituting the client does not also mean re-implementing this
44439
- * resolution. `MsalMockConfigurator` relies on it to hand its mock client the
44440
- * very same configuration the real client would have received.
44441
- *
44442
- * @param config - The validated configuration.
44443
- * @returns The client configuration, or `undefined` when none was declared.
44444
- */
44445
- _createClientConfig(config) {
44446
- const declared = this.#msalConfig;
44447
- // Do not construct a client when configuration has not supplied client settings.
44448
- if (!declared) {
44449
- return undefined;
44450
- }
44451
- config.telemetry.provider?.trackEvent({
44452
- name: 'module-msal.configurator._processConfig.creating-client',
44453
- level: TelemetryLevel.Debug,
44454
- scope: config.telemetry.scope,
44455
- metadata: { ...config.telemetry.metadata, clientConfig: declared },
44456
- });
44457
- // Copied rather than enriched in place, so the object a caller passed to
44458
- // `setClientConfig` is never rewritten behind its back — a caller may well
44459
- // be reusing or asserting on it
44460
- const clientConfig = {
44461
- ...declared,
44462
- auth: { ...declared.auth },
44463
- // Default to localStorage: MSAL supports sessionStorage too, but
44464
- // localStorage is the standard for persistent auth in browsers
44465
- cache: declared.cache ?? { cacheLocation: 'localStorage' },
44466
- };
44467
- // Auto-generate authority URL from tenant ID if not explicitly provided
44468
- // This simplifies configuration for most common cases
44469
- if (!clientConfig.auth.authority && clientConfig.auth.tenantId) {
44470
- clientConfig.auth.authority = `https://login.microsoftonline.com/${clientConfig.auth.tenantId}`;
44471
- }
44472
- // Integrate framework telemetry with MSAL logging system
44473
- // This allows MSAL events to flow through the framework's telemetry pipeline
44474
- if (!clientConfig.system?.loggerOptions && config.telemetry?.provider) {
44475
- const { provider, metadata, scope } = config.telemetry;
44476
- provider.trackEvent({
44477
- name: 'module-msal.configurator._processConfig.client-telemetry-connected',
44324
+ if (!config.client && this.#msalConfig) {
44325
+ const clientConfig = this.#msalConfig;
44326
+ config.telemetry.provider?.trackEvent({
44327
+ name: 'module-msal.configurator._processConfig.creating-client',
44478
44328
  level: TelemetryLevel.Debug,
44479
- scope,
44480
- metadata,
44329
+ scope: config.telemetry.scope,
44330
+ metadata: { ...config.telemetry.metadata, clientConfig },
44481
44331
  });
44482
- clientConfig.system = {
44483
- ...clientConfig.system,
44484
- loggerOptions: {
44485
- // Only log PII in development to protect user privacy in production
44486
- piiLoggingEnabled: process.env.NODE_ENV === 'development',
44487
- // Bridge MSAL log events to framework telemetry system
44488
- loggerCallback: createClientLogCallback(provider, metadata, [...scope, '3rd-party']),
44489
- // Use Warning level by default - captures errors and warnings without being verbose
44490
- logLevel: LogLevel.Warning,
44491
- // Preserve any user-provided logger options (allows customization)
44492
- ...clientConfig.system?.loggerOptions,
44493
- },
44494
- };
44495
- }
44496
- // Apply silent cache lookup policy if configured
44497
- if (config.cacheLookupPolicy !== undefined) {
44498
- clientConfig.cacheLookupPolicy = config.cacheLookupPolicy;
44332
+ // Auto-generate authority URL from tenant ID if not explicitly provided
44333
+ // This simplifies configuration for most common cases
44334
+ if (!clientConfig.auth.authority && clientConfig.auth.tenantId) {
44335
+ clientConfig.auth.authority = `https://login.microsoftonline.com/${clientConfig.auth.tenantId}`;
44336
+ }
44337
+ // Set default cache location to localStorage for browser environments
44338
+ // MSAL supports sessionStorage as well, but localStorage is the standard for persistent auth
44339
+ if (!clientConfig.cache) {
44340
+ clientConfig.cache = { cacheLocation: 'localStorage' };
44341
+ }
44342
+ // Integrate framework telemetry with MSAL logging system
44343
+ // This allows MSAL events to flow through the framework's telemetry pipeline
44344
+ if (!clientConfig.system?.loggerOptions && config.telemetry?.provider) {
44345
+ const { provider, metadata, scope } = config.telemetry;
44346
+ provider.trackEvent({
44347
+ name: 'module-msal.configurator._processConfig.client-telemetry-connected',
44348
+ level: TelemetryLevel.Debug,
44349
+ scope,
44350
+ metadata,
44351
+ });
44352
+ clientConfig.system = {
44353
+ ...clientConfig.system,
44354
+ loggerOptions: {
44355
+ // Only log PII in development to protect user privacy in production
44356
+ piiLoggingEnabled: process.env.NODE_ENV === 'development',
44357
+ // Bridge MSAL log events to framework telemetry system
44358
+ loggerCallback: createClientLogCallback(provider, metadata, [...scope, '3rd-party']),
44359
+ // Use Warning level by default - captures errors and warnings without being verbose
44360
+ logLevel: LogLevel.Warning,
44361
+ // Preserve any user-provided logger options (allows customization)
44362
+ ...clientConfig.system?.loggerOptions,
44363
+ },
44364
+ };
44365
+ }
44366
+ // Apply silent cache lookup policy if configured
44367
+ if (config.cacheLookupPolicy !== undefined) {
44368
+ clientConfig.cacheLookupPolicy = config.cacheLookupPolicy;
44369
+ }
44370
+ // Instantiate MSAL client with fully configured options
44371
+ config.client = new MsalClient(clientConfig);
44499
44372
  }
44500
- return clientConfig;
44373
+ return config;
44501
44374
  }
44502
44375
  }
44503
44376
 
@@ -44615,6 +44488,7 @@ class VersionError extends Error {
44615
44488
  * ```
44616
44489
  */
44617
44490
  function mapVersionToEnumVersion(version) {
44491
+ console.log('Resolving version:', version);
44618
44492
  const coercedVersion = semver.coerce(version);
44619
44493
  // An uncoercible version string cannot be mapped to a module version
44620
44494
  if (!coercedVersion) {
@@ -48501,7 +48375,7 @@ class ServiceDiscoveryConfigurator extends BaseConfigBuilder {
48501
48375
  }
48502
48376
 
48503
48377
  // Generated by genversion.
48504
- const version$1 = '10.1.0-next.0';
48378
+ const version$1 = '10.0.2';
48505
48379
 
48506
48380
  /**
48507
48381
  * Default implementation of {@link IServiceDiscoveryProvider}.
@@ -48525,10 +48399,6 @@ class ServiceDiscoveryProvider extends BaseModuleProvider {
48525
48399
  this.config = config;
48526
48400
  this._http = _http;
48527
48401
  }
48528
- /** {@inheritDoc IServiceDiscoveryProvider.client} */
48529
- get client() {
48530
- return this.config.discoveryClient;
48531
- }
48532
48402
  /** {@inheritDoc IServiceDiscoveryProvider.resolveServices} */
48533
48403
  resolveServices() {
48534
48404
  return this.config.discoveryClient.resolveServices();
@@ -48643,9 +48513,8 @@ const configureServiceDiscovery = (callback) => ({
48643
48513
  *
48644
48514
  * @param configurator - The modules configurator to register the module on.
48645
48515
  * Must already include {@link HttpModule}.
48646
- * @param callback - Optional callback receiving a
48647
- * {@link ServiceDiscoveryConfigurator} for advanced setup. May be synchronous
48648
- * or asynchronous.
48516
+ * @param callback - Optional async callback receiving a
48517
+ * {@link ServiceDiscoveryConfigurator} for advanced setup.
48649
48518
  *
48650
48519
  * @example
48651
48520
  * ```typescript
@@ -49140,7 +49009,7 @@ async function registerServiceWorker(framework) {
49140
49009
  }
49141
49010
 
49142
49011
  // Generated by genversion.
49143
- const version = '4.0.17-next.0';
49012
+ const version = '4.0.17';
49144
49013
 
49145
49014
  // Allow dynamic import without vite
49146
49015
  const importWithoutVite = (path) => import(/* @vite-ignore */ path);