@carbon/ibmdotcom-web-components 2.54.0 → 2.54.1

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.
Files changed (35) hide show
  1. package/dist/dotcom-shell.js +2 -2
  2. package/dist/dotcom-shell.min.js +1 -1
  3. package/dist/ibmdotcom-web-components-dotcom-shell.js +2 -2
  4. package/dist/ibmdotcom-web-components-dotcom-shell.min.js +1 -1
  5. package/dist/{index-cc6fa5f4.js → index-bdb17ed8.js} +324 -324
  6. package/dist/{index-211859d7.js → index-c8ddcb60.js} +489 -111
  7. package/dist/{left-nav-menu-d3a8261d.js → left-nav-menu-176b604c.js} +1 -1
  8. package/dist/{left-nav-menu-a1676975.js → left-nav-menu-9a0606ac.js} +2 -2
  9. package/dist/{left-nav-menu-category-heading-3180761b.js → left-nav-menu-category-heading-23532213.js} +2 -2
  10. package/dist/{left-nav-menu-category-heading-4eb433d1.js → left-nav-menu-category-heading-a357e1cc.js} +1 -1
  11. package/dist/{left-nav-menu-item-15dc12df.js → left-nav-menu-item-9998263b.js} +1 -1
  12. package/dist/{left-nav-menu-item-0aa13b09.js → left-nav-menu-item-c756756f.js} +2 -2
  13. package/dist/{left-nav-menu-section-bcb78866.js → left-nav-menu-section-453e5a41.js} +1 -1
  14. package/dist/{left-nav-menu-section-d02d9946.js → left-nav-menu-section-93da9dad.js} +2 -2
  15. package/dist/{left-nav-overlay-8714a8d1.js → left-nav-overlay-8e27d7f1.js} +1 -1
  16. package/dist/{left-nav-overlay-b164eaf3.js → left-nav-overlay-8f5bcf92.js} +2 -2
  17. package/dist/{megamenu-category-group-c1b819f8.js → megamenu-category-group-6005a5d5.js} +2 -2
  18. package/dist/{megamenu-category-group-copy-bd2b1693.js → megamenu-category-group-copy-5d3d3b46.js} +2 -2
  19. package/dist/{megamenu-category-group-copy-90211953.js → megamenu-category-group-copy-9aa88ab8.js} +1 -1
  20. package/dist/{megamenu-category-group-d967ea13.js → megamenu-category-group-daa7ee4d.js} +1 -1
  21. package/dist/{megamenu-category-heading-3a55642b.js → megamenu-category-heading-0fe0c38e.js} +2 -2
  22. package/dist/{megamenu-category-heading-80214eb4.js → megamenu-category-heading-696dcefb.js} +1 -1
  23. package/dist/{megamenu-category-link-58d60af3.js → megamenu-category-link-4617a58f.js} +1 -1
  24. package/dist/{megamenu-category-link-15ba610e.js → megamenu-category-link-62e40529.js} +2 -2
  25. package/dist/{megamenu-category-link-group-705d5e8c.js → megamenu-category-link-group-ae3da141.js} +1 -1
  26. package/dist/{megamenu-category-link-group-20ba8bd3.js → megamenu-category-link-group-c5d6f6d5.js} +2 -2
  27. package/dist/{megamenu-left-navigation-69859447.js → megamenu-left-navigation-2f8681ba.js} +2 -2
  28. package/dist/{megamenu-left-navigation-31a73000.js → megamenu-left-navigation-b8b23af6.js} +1 -1
  29. package/dist/{megamenu-overlay-0d050917.js → megamenu-overlay-130aa276.js} +2 -2
  30. package/dist/{megamenu-overlay-7a872950.js → megamenu-overlay-a8b95cf1.js} +1 -1
  31. package/dist/{megamenu-tab-13ae3cfb.js → megamenu-tab-3fe0134f.js} +2 -2
  32. package/dist/{megamenu-tab-5fb993a6.js → megamenu-tab-708ee052.js} +1 -1
  33. package/es/internal/vendor/@carbon/ibmdotcom-services/services/KalturaPlayerV7/KalturaPlayer.js +13 -6
  34. package/lib/internal/vendor/@carbon/ibmdotcom-services/services/KalturaPlayerV7/KalturaPlayer.js +13 -6
  35. package/package.json +7 -7
@@ -80,8 +80,8 @@
80
80
  * https://www.npmjs.com/package/redux
81
81
  * https://www.npmjs.com/package/lodash-es
82
82
  * https://www.npmjs.com/package/window-or-global
83
- * https://www.npmjs.com/package/redux-thunk
84
83
  * https://www.npmjs.com/package/redux-logger
84
+ * https://www.npmjs.com/package/redux-thunk
85
85
  * https://www.npmjs.com/package/axios
86
86
  * https://www.npmjs.com/package/isomorphic-dompurify
87
87
  * https://www.npmjs.com/package/striptags
@@ -3075,7 +3075,7 @@ function stubArray() {
3075
3075
  var objectProto$8 = Object.prototype;
3076
3076
 
3077
3077
  /** Built-in value references. */
3078
- var propertyIsEnumerable$1 = objectProto$8.propertyIsEnumerable;
3078
+ var propertyIsEnumerable$2 = objectProto$8.propertyIsEnumerable;
3079
3079
 
3080
3080
  /* Built-in method references for those with the same name as other `lodash` methods. */
3081
3081
  var nativeGetSymbols$1 = Object.getOwnPropertySymbols;
@@ -3093,7 +3093,7 @@ var getSymbols = !nativeGetSymbols$1 ? stubArray : function(object) {
3093
3093
  }
3094
3094
  object = Object(object);
3095
3095
  return arrayFilter(nativeGetSymbols$1(object), function(symbol) {
3096
- return propertyIsEnumerable$1.call(object, symbol);
3096
+ return propertyIsEnumerable$2.call(object, symbol);
3097
3097
  });
3098
3098
  };
3099
3099
 
@@ -3167,7 +3167,7 @@ var objectProto$7 = Object.prototype;
3167
3167
  var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
3168
3168
 
3169
3169
  /** Built-in value references. */
3170
- var propertyIsEnumerable = objectProto$7.propertyIsEnumerable;
3170
+ var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
3171
3171
 
3172
3172
  /**
3173
3173
  * Checks if `value` is likely an `arguments` object.
@@ -3189,7 +3189,7 @@ var propertyIsEnumerable = objectProto$7.propertyIsEnumerable;
3189
3189
  */
3190
3190
  var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
3191
3191
  return isObjectLike(value) && hasOwnProperty$7.call(value, 'callee') &&
3192
- !propertyIsEnumerable.call(value, 'callee');
3192
+ !propertyIsEnumerable$1.call(value, 'callee');
3193
3193
  };
3194
3194
 
3195
3195
  var isArguments$1 = isArguments;
@@ -5270,6 +5270,57 @@ const { toString } = Object.prototype;
5270
5270
  const { getPrototypeOf } = Object;
5271
5271
  const { iterator, toStringTag } = Symbol;
5272
5272
 
5273
+ /* Creating a function that will check if an object has a property. */
5274
+ const hasOwnProperty = (
5275
+ ({ hasOwnProperty }) =>
5276
+ (obj, prop) =>
5277
+ hasOwnProperty.call(obj, prop)
5278
+ )(Object.prototype);
5279
+
5280
+ /**
5281
+ * Walk the prototype chain (excluding the shared Object.prototype) looking for
5282
+ * an own `prop`. This distinguishes genuine own/inherited members — including
5283
+ * class accessors and template prototypes — from members injected via
5284
+ * Object.prototype pollution (e.g. `Object.prototype.username = '...'`), which
5285
+ * live on Object.prototype itself and are therefore never matched.
5286
+ *
5287
+ * @param {*} thing The value whose chain to inspect
5288
+ * @param {string|symbol} prop The property key to look for
5289
+ *
5290
+ * @returns {boolean} True when `prop` is owned below Object.prototype
5291
+ */
5292
+ const hasOwnInPrototypeChain = (thing, prop) => {
5293
+ let obj = thing;
5294
+ const seen = [];
5295
+
5296
+ while (obj != null && obj !== Object.prototype) {
5297
+ if (seen.indexOf(obj) !== -1) {
5298
+ return false;
5299
+ }
5300
+ seen.push(obj);
5301
+
5302
+ if (hasOwnProperty(obj, prop)) {
5303
+ return true;
5304
+ }
5305
+ obj = getPrototypeOf(obj);
5306
+ }
5307
+ return false;
5308
+ };
5309
+
5310
+ /**
5311
+ * Read `obj[prop]` only when it is safe from Object.prototype pollution. Own
5312
+ * properties and members inherited from a non-Object.prototype source (a class
5313
+ * instance or template object) are honored; a value reachable only through a
5314
+ * polluted Object.prototype is ignored and `undefined` is returned.
5315
+ *
5316
+ * @param {*} obj The source object
5317
+ * @param {string|symbol} prop The property key to read
5318
+ *
5319
+ * @returns {*} The resolved value, or undefined when unsafe/absent
5320
+ */
5321
+ const getSafeProp = (obj, prop) =>
5322
+ obj != null && hasOwnInPrototypeChain(obj, prop) ? obj[prop] : undefined;
5323
+
5273
5324
  const kindOf = ((cache) => (thing) => {
5274
5325
  const str = toString.call(thing);
5275
5326
  return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
@@ -5395,7 +5446,7 @@ const isBoolean = (thing) => thing === true || thing === false;
5395
5446
  * @returns {boolean} True if value is a plain Object, otherwise false
5396
5447
  */
5397
5448
  const isPlainObject = (val) => {
5398
- if (kindOf(val) !== 'object') {
5449
+ if (!isObject(val)) {
5399
5450
  return false;
5400
5451
  }
5401
5452
 
@@ -5403,9 +5454,12 @@ const isPlainObject = (val) => {
5403
5454
  return (
5404
5455
  (prototype === null ||
5405
5456
  prototype === Object.prototype ||
5406
- Object.getPrototypeOf(prototype) === null) &&
5407
- !(toStringTag in val) &&
5408
- !(iterator in val)
5457
+ getPrototypeOf(prototype) === null) &&
5458
+ // Treat any genuine (non-Object.prototype-polluted) Symbol.toStringTag or
5459
+ // Symbol.iterator as evidence the value is a tagged/iterable type rather
5460
+ // than a plain object, while ignoring keys injected onto Object.prototype.
5461
+ !hasOwnInPrototypeChain(val, toStringTag) &&
5462
+ !hasOwnInPrototypeChain(val, iterator)
5409
5463
  );
5410
5464
  };
5411
5465
 
@@ -5674,7 +5728,9 @@ function merge(...objs) {
5674
5728
  return;
5675
5729
  }
5676
5730
 
5677
- const targetKey = (caseless && findKey(result, key)) || key;
5731
+ // findKey lowercases the key, so caseless lookup only applies to strings —
5732
+ // symbol keys are identity-matched.
5733
+ const targetKey = (caseless && typeof key === 'string' && findKey(result, key)) || key;
5678
5734
  // Read via own-prop only — a bare `result[targetKey]` walks the prototype
5679
5735
  // chain, so a polluted Object.prototype value could surface here and get
5680
5736
  // copied into the merged result.
@@ -5691,7 +5747,24 @@ function merge(...objs) {
5691
5747
  };
5692
5748
 
5693
5749
  for (let i = 0, l = objs.length; i < l; i++) {
5694
- objs[i] && forEach$2(objs[i], assignValue);
5750
+ const source = objs[i];
5751
+ if (!source || isBuffer(source)) {
5752
+ continue;
5753
+ }
5754
+
5755
+ forEach$2(source, assignValue);
5756
+
5757
+ if (typeof source !== 'object' || isArray(source)) {
5758
+ continue;
5759
+ }
5760
+
5761
+ const symbols = Object.getOwnPropertySymbols(source);
5762
+ for (let j = 0; j < symbols.length; j++) {
5763
+ const symbol = symbols[j];
5764
+ if (propertyIsEnumerable.call(source, symbol)) {
5765
+ assignValue(source[symbol], symbol);
5766
+ }
5767
+ }
5695
5768
  }
5696
5769
  return result;
5697
5770
  }
@@ -5913,12 +5986,7 @@ const toCamelCase = (str) => {
5913
5986
  });
5914
5987
  };
5915
5988
 
5916
- /* Creating a function that will check if an object has a property. */
5917
- const hasOwnProperty = (
5918
- ({ hasOwnProperty }) =>
5919
- (obj, prop) =>
5920
- hasOwnProperty.call(obj, prop)
5921
- )(Object.prototype);
5989
+ const { propertyIsEnumerable } = Object.prototype;
5922
5990
 
5923
5991
  /**
5924
5992
  * Determine if a value is a RegExp object
@@ -6131,6 +6199,20 @@ const asap =
6131
6199
 
6132
6200
  const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]);
6133
6201
 
6202
+ /**
6203
+ * Determine if a value is iterable via an iterator that is NOT sourced solely
6204
+ * from a polluted Object.prototype. Use this instead of `isIterable` whenever
6205
+ * the iterable comes from untrusted input (e.g. user-supplied header sources),
6206
+ * so `Object.prototype[Symbol.iterator] = ...` cannot turn an ordinary object
6207
+ * into an attacker-controlled entries iterator.
6208
+ *
6209
+ * @param {*} thing The value to test
6210
+ *
6211
+ * @returns {boolean} True if value has a non-polluted iterator
6212
+ */
6213
+ const isSafeIterable = (thing) =>
6214
+ thing != null && hasOwnInPrototypeChain(thing, iterator) && isIterable(thing);
6215
+
6134
6216
  var utils$1 = {
6135
6217
  isArray,
6136
6218
  isArrayBuffer,
@@ -6175,6 +6257,8 @@ var utils$1 = {
6175
6257
  isHTMLForm,
6176
6258
  hasOwnProperty,
6177
6259
  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
6260
+ hasOwnInPrototypeChain,
6261
+ getSafeProp,
6178
6262
  reduceDescriptors,
6179
6263
  freezeMethods,
6180
6264
  toObjectSet,
@@ -6191,6 +6275,7 @@ var utils$1 = {
6191
6275
  setImmediate: _setImmediate,
6192
6276
  asap,
6193
6277
  isIterable,
6278
+ isSafeIterable,
6194
6279
  };
6195
6280
 
6196
6281
  // RawAxiosHeaders whose duplicates are ignored by node
@@ -6401,7 +6486,7 @@ class AxiosHeaders {
6401
6486
  const lHeader = normalizeHeader(_header);
6402
6487
 
6403
6488
  if (!lHeader) {
6404
- throw new Error('header name must be a non-empty string');
6489
+ return;
6405
6490
  }
6406
6491
 
6407
6492
  const key = utils$1.findKey(self, lHeader);
@@ -6423,20 +6508,23 @@ class AxiosHeaders {
6423
6508
  setHeaders(header, valueOrRewrite);
6424
6509
  } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
6425
6510
  setHeaders(parseHeaders(header), valueOrRewrite);
6426
- } else if (utils$1.isObject(header) && utils$1.isIterable(header)) {
6427
- let obj = {},
6511
+ } else if (utils$1.isObject(header) && utils$1.isSafeIterable(header)) {
6512
+ let obj = Object.create(null),
6428
6513
  dest,
6429
6514
  key;
6430
6515
  for (const entry of header) {
6431
6516
  if (!utils$1.isArray(entry)) {
6432
- throw TypeError('Object iterator must return a key-value pair');
6517
+ throw new TypeError('Object iterator must return a key-value pair');
6433
6518
  }
6434
6519
 
6435
- obj[(key = entry[0])] = (dest = obj[key])
6436
- ? utils$1.isArray(dest)
6437
- ? [...dest, entry[1]]
6438
- : [dest, entry[1]]
6439
- : entry[1];
6520
+ key = entry[0];
6521
+
6522
+ if (utils$1.hasOwnProp(obj, key)) {
6523
+ dest = obj[key];
6524
+ obj[key] = utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]];
6525
+ } else {
6526
+ obj[key] = entry[1];
6527
+ }
6440
6528
  }
6441
6529
 
6442
6530
  setHeaders(obj, valueOrRewrite);
@@ -6834,6 +6922,10 @@ var AxiosError$1 = AxiosError;
6834
6922
  // eslint-disable-next-line strict
6835
6923
  var httpAdapter = null;
6836
6924
 
6925
+ // Default nesting limit shared with the inverse transform (formDataToJSON) so
6926
+ // the FormData <-> JSON round-trip stays symmetric.
6927
+ const DEFAULT_FORM_DATA_MAX_DEPTH = 100;
6928
+
6837
6929
  /**
6838
6930
  * Determines if the given thing is a array or js object.
6839
6931
  *
@@ -6944,8 +7036,9 @@ function toFormData(obj, formData, options) {
6944
7036
  const dots = options.dots;
6945
7037
  const indexes = options.indexes;
6946
7038
  const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);
6947
- const maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;
7039
+ const maxDepth = options.maxDepth === undefined ? DEFAULT_FORM_DATA_MAX_DEPTH : options.maxDepth;
6948
7040
  const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
7041
+ const stack = [];
6949
7042
 
6950
7043
  if (!utils$1.isFunction(visitor)) {
6951
7044
  throw new TypeError('visitor must be a function');
@@ -6973,6 +7066,38 @@ function toFormData(obj, formData, options) {
6973
7066
  return value;
6974
7067
  }
6975
7068
 
7069
+ function throwIfMaxDepthExceeded(depth) {
7070
+ if (depth > maxDepth) {
7071
+ throw new AxiosError$1(
7072
+ 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,
7073
+ AxiosError$1.ERR_FORM_DATA_DEPTH_EXCEEDED
7074
+ );
7075
+ }
7076
+ }
7077
+
7078
+ function stringifyWithDepthLimit(value, depth) {
7079
+ if (maxDepth === Infinity) {
7080
+ return JSON.stringify(value);
7081
+ }
7082
+
7083
+ const ancestors = [];
7084
+
7085
+ return JSON.stringify(value, function limitDepth(_key, currentValue) {
7086
+ if (!utils$1.isObject(currentValue)) {
7087
+ return currentValue;
7088
+ }
7089
+
7090
+ while (ancestors.length && ancestors[ancestors.length - 1] !== this) {
7091
+ ancestors.pop();
7092
+ }
7093
+
7094
+ ancestors.push(currentValue);
7095
+ throwIfMaxDepthExceeded(depth + ancestors.length - 1);
7096
+
7097
+ return currentValue;
7098
+ });
7099
+ }
7100
+
6976
7101
  /**
6977
7102
  * Default visitor.
6978
7103
  *
@@ -6996,7 +7121,7 @@ function toFormData(obj, formData, options) {
6996
7121
  // eslint-disable-next-line no-param-reassign
6997
7122
  key = metaTokens ? key : key.slice(0, -2);
6998
7123
  // eslint-disable-next-line no-param-reassign
6999
- value = JSON.stringify(value);
7124
+ value = stringifyWithDepthLimit(value, 1);
7000
7125
  } else if (
7001
7126
  (utils$1.isArray(value) && isFlatArray(value)) ||
7002
7127
  ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)))
@@ -7029,8 +7154,6 @@ function toFormData(obj, formData, options) {
7029
7154
  return false;
7030
7155
  }
7031
7156
 
7032
- const stack = [];
7033
-
7034
7157
  const exposedHelpers = Object.assign(predicates, {
7035
7158
  defaultVisitor,
7036
7159
  convertValue,
@@ -7040,15 +7163,10 @@ function toFormData(obj, formData, options) {
7040
7163
  function build(value, path, depth = 0) {
7041
7164
  if (utils$1.isUndefined(value)) return;
7042
7165
 
7043
- if (depth > maxDepth) {
7044
- throw new AxiosError$1(
7045
- 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,
7046
- AxiosError$1.ERR_FORM_DATA_DEPTH_EXCEEDED
7047
- );
7048
- }
7166
+ throwIfMaxDepthExceeded(depth);
7049
7167
 
7050
7168
  if (stack.indexOf(value) !== -1) {
7051
- throw Error('Circular reference detected in ' + path.join('.'));
7169
+ throw new Error('Circular reference detected in ' + path.join('.'));
7052
7170
  }
7053
7171
 
7054
7172
  stack.push(value);
@@ -7161,15 +7279,17 @@ function buildURL(url, params, options) {
7161
7279
  return url;
7162
7280
  }
7163
7281
 
7164
- const _encode = (options && options.encode) || encode;
7165
-
7166
7282
  const _options = utils$1.isFunction(options)
7167
7283
  ? {
7168
7284
  serialize: options,
7169
7285
  }
7170
7286
  : options;
7171
7287
 
7172
- const serializeFn = _options && _options.serialize;
7288
+ // Read serializer options pollution-safely: own properties and methods on a
7289
+ // class/template prototype are honored, but values injected onto a polluted
7290
+ // Object.prototype are ignored.
7291
+ const _encode = utils$1.getSafeProp(_options, 'encode') || encode;
7292
+ const serializeFn = utils$1.getSafeProp(_options, 'serialize');
7173
7293
 
7174
7294
  let serializedParams;
7175
7295
 
@@ -7267,6 +7387,8 @@ var transitionalDefaults = {
7267
7387
  forcedJSONParsing: true,
7268
7388
  clarifyTimeoutError: false,
7269
7389
  legacyInterceptorReqResOrdering: true,
7390
+ advertiseZstdAcceptEncoding: false,
7391
+ validateStatusUndefinedResolves: true,
7270
7392
  };
7271
7393
 
7272
7394
  var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;
@@ -7358,6 +7480,17 @@ function toURLEncodedForm(data, options) {
7358
7480
  });
7359
7481
  }
7360
7482
 
7483
+ const MAX_DEPTH = DEFAULT_FORM_DATA_MAX_DEPTH;
7484
+
7485
+ function throwIfDepthExceeded(index) {
7486
+ if (index > MAX_DEPTH) {
7487
+ throw new AxiosError$1(
7488
+ 'FormData field is too deeply nested (' + index + ' levels). Max depth: ' + MAX_DEPTH,
7489
+ AxiosError$1.ERR_FORM_DATA_DEPTH_EXCEEDED
7490
+ );
7491
+ }
7492
+ }
7493
+
7361
7494
  /**
7362
7495
  * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']
7363
7496
  *
@@ -7370,9 +7503,16 @@ function parsePropPath(name) {
7370
7503
  // foo.x.y.z
7371
7504
  // foo-x-y-z
7372
7505
  // foo x y z
7373
- return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => {
7374
- return match[0] === '[]' ? '' : match[1] || match[0];
7375
- });
7506
+ const path = [];
7507
+ const pattern = /\w+|\[(\w*)]/g;
7508
+ let match;
7509
+
7510
+ while ((match = pattern.exec(name)) !== null) {
7511
+ throwIfDepthExceeded(path.length);
7512
+ path.push(match[0] === '[]' ? '' : match[1] || match[0]);
7513
+ }
7514
+
7515
+ return path;
7376
7516
  }
7377
7517
 
7378
7518
  /**
@@ -7404,6 +7544,8 @@ function arrayToObject(arr) {
7404
7544
  */
7405
7545
  function formDataToJSON(formData) {
7406
7546
  function buildPath(path, value, target, index) {
7547
+ throwIfDepthExceeded(index);
7548
+
7407
7549
  let name = path[index++];
7408
7550
 
7409
7551
  if (name === '__proto__') return true;
@@ -7944,6 +8086,31 @@ function combineURLs(baseURL, relativeURL) {
7944
8086
  : baseURL;
7945
8087
  }
7946
8088
 
8089
+ const malformedHttpProtocol = /^https?:(?!\/\/)/i;
8090
+ const httpProtocolControlCharacters = /[\t\n\r]/g;
8091
+
8092
+ function stripLeadingC0ControlOrSpace(url) {
8093
+ let i = 0;
8094
+ while (i < url.length && url.charCodeAt(i) <= 0x20) {
8095
+ i++;
8096
+ }
8097
+ return url.slice(i);
8098
+ }
8099
+
8100
+ function normalizeURLForProtocolCheck(url) {
8101
+ return stripLeadingC0ControlOrSpace(url).replace(httpProtocolControlCharacters, '');
8102
+ }
8103
+
8104
+ function assertValidHttpProtocolURL(url, config) {
8105
+ if (typeof url === 'string' && malformedHttpProtocol.test(normalizeURLForProtocolCheck(url))) {
8106
+ throw new AxiosError$1(
8107
+ 'Invalid URL: missing "//" after protocol',
8108
+ AxiosError$1.ERR_INVALID_URL,
8109
+ config
8110
+ );
8111
+ }
8112
+ }
8113
+
7947
8114
  /**
7948
8115
  * Creates a new URL by combining the baseURL with the requestedURL,
7949
8116
  * only when the requestedURL is not already an absolute URL.
@@ -7954,9 +8121,11 @@ function combineURLs(baseURL, relativeURL) {
7954
8121
  *
7955
8122
  * @returns {string} The combined full path
7956
8123
  */
7957
- function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
8124
+ function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls, config) {
8125
+ assertValidHttpProtocolURL(requestedURL, config);
7958
8126
  let isRelativeUrl = !isAbsoluteURL(requestedURL);
7959
8127
  if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {
8128
+ assertValidHttpProtocolURL(baseURL, config);
7960
8129
  return combineURLs(baseURL, requestedURL);
7961
8130
  }
7962
8131
  return requestedURL;
@@ -8027,6 +8196,28 @@ function mergeConfig(config1, config2) {
8027
8196
  }
8028
8197
  }
8029
8198
 
8199
+ function getMergedTransitionalOption(prop) {
8200
+ const transitional2 = utils$1.hasOwnProp(config2, 'transitional') ? config2.transitional : undefined;
8201
+
8202
+ if (!utils$1.isUndefined(transitional2)) {
8203
+ if (utils$1.isPlainObject(transitional2)) {
8204
+ if (utils$1.hasOwnProp(transitional2, prop)) {
8205
+ return transitional2[prop];
8206
+ }
8207
+ } else {
8208
+ return undefined;
8209
+ }
8210
+ }
8211
+
8212
+ const transitional1 = utils$1.hasOwnProp(config1, 'transitional') ? config1.transitional : undefined;
8213
+
8214
+ if (utils$1.isPlainObject(transitional1) && utils$1.hasOwnProp(transitional1, prop)) {
8215
+ return transitional1[prop];
8216
+ }
8217
+
8218
+ return undefined;
8219
+ }
8220
+
8030
8221
  // eslint-disable-next-line consistent-return
8031
8222
  function mergeDirectKeys(a, b, prop) {
8032
8223
  if (utils$1.hasOwnProp(config2, prop)) {
@@ -8079,6 +8270,18 @@ function mergeConfig(config1, config2) {
8079
8270
  (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
8080
8271
  });
8081
8272
 
8273
+ if (
8274
+ utils$1.hasOwnProp(config2, 'validateStatus') &&
8275
+ utils$1.isUndefined(config2.validateStatus) &&
8276
+ getMergedTransitionalOption('validateStatusUndefinedResolves') === false
8277
+ ) {
8278
+ if (utils$1.hasOwnProp(config1, 'validateStatus')) {
8279
+ config.validateStatus = getMergedValue(undefined, config1.validateStatus);
8280
+ } else {
8281
+ delete config.validateStatus;
8282
+ }
8283
+ }
8284
+
8082
8285
  return config;
8083
8286
  }
8084
8287
 
@@ -8105,12 +8308,12 @@ function setFormDataHeaders(headers, formHeaders, policy) {
8105
8308
  *
8106
8309
  * @returns {string} UTF-8 bytes as a Latin-1 string
8107
8310
  */
8108
- const encodeUTF8 = (str) =>
8311
+ const encodeUTF8$1 = (str) =>
8109
8312
  encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>
8110
8313
  String.fromCharCode(parseInt(hex, 16))
8111
8314
  );
8112
8315
 
8113
- var resolveConfig = (config) => {
8316
+ function resolveConfig(config) {
8114
8317
  const newConfig = mergeConfig({}, config);
8115
8318
 
8116
8319
  // Read only own properties to prevent prototype pollution gadgets
@@ -8130,23 +8333,29 @@ var resolveConfig = (config) => {
8130
8333
  newConfig.headers = headers = AxiosHeaders$1.from(headers);
8131
8334
 
8132
8335
  newConfig.url = buildURL(
8133
- buildFullPath(baseURL, url, allowAbsoluteUrls),
8134
- config.params,
8135
- config.paramsSerializer
8336
+ buildFullPath(baseURL, url, allowAbsoluteUrls, newConfig),
8337
+ own('params'),
8338
+ own('paramsSerializer')
8136
8339
  );
8137
8340
 
8138
8341
  // HTTP basic authentication
8139
8342
  if (auth) {
8343
+ const username = utils$1.getSafeProp(auth, 'username') || '';
8344
+ const password = utils$1.getSafeProp(auth, 'password') || '';
8345
+
8140
8346
  headers.set(
8141
8347
  'Authorization',
8142
- 'Basic ' +
8143
- btoa((auth.username || '') + ':' + (auth.password ? encodeUTF8(auth.password) : ''))
8348
+ 'Basic ' + btoa(username + ':' + (password ? encodeUTF8$1(password) : ''))
8144
8349
  );
8145
8350
  }
8146
8351
 
8147
8352
  if (utils$1.isFormData(data)) {
8148
- if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
8149
- headers.setContentType(undefined); // browser handles it
8353
+ if (
8354
+ platform.hasStandardBrowserEnv ||
8355
+ platform.hasStandardBrowserWebWorkerEnv ||
8356
+ utils$1.isReactNative(data)
8357
+ ) {
8358
+ headers.setContentType(undefined); // browser/web worker/RN handles it
8150
8359
  } else if (utils$1.isFunction(data.getHeaders)) {
8151
8360
  // Node.js FormData (like form-data package)
8152
8361
  setFormDataHeaders(headers, data.getHeaders(), own('formDataHeaderPolicy'));
@@ -8178,7 +8387,7 @@ var resolveConfig = (config) => {
8178
8387
  }
8179
8388
 
8180
8389
  return newConfig;
8181
- };
8390
+ }
8182
8391
 
8183
8392
  const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
8184
8393
 
@@ -8544,11 +8753,19 @@ const trackStream = (stream, chunkSize, onProgress, onFinish) => {
8544
8753
  * Estimate decoded byte length of a data:// URL *without* allocating large buffers.
8545
8754
  * - For base64: compute exact decoded size using length and padding;
8546
8755
  * handle %XX at the character-count level (no string allocation).
8547
- * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound.
8756
+ * - For non-base64: compute the exact percent-decoded UTF-8 byte length.
8548
8757
  *
8549
8758
  * @param {string} url
8550
8759
  * @returns {number}
8551
8760
  */
8761
+ const isHexDigit = (charCode) =>
8762
+ (charCode >= 48 && charCode <= 57) ||
8763
+ (charCode >= 65 && charCode <= 70) ||
8764
+ (charCode >= 97 && charCode <= 102);
8765
+
8766
+ const isPercentEncodedByte = (str, i, len) =>
8767
+ i + 2 < len && isHexDigit(str.charCodeAt(i + 1)) && isHexDigit(str.charCodeAt(i + 2));
8768
+
8552
8769
  function estimateDataURLDecodedBytes(url) {
8553
8770
  if (!url || typeof url !== 'string') return 0;
8554
8771
  if (!url.startsWith('data:')) return 0;
@@ -8568,9 +8785,7 @@ function estimateDataURLDecodedBytes(url) {
8568
8785
  if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) {
8569
8786
  const a = body.charCodeAt(i + 1);
8570
8787
  const b = body.charCodeAt(i + 2);
8571
- const isHex =
8572
- ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) &&
8573
- ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102));
8788
+ const isHex = isHexDigit(a) && isHexDigit(b);
8574
8789
 
8575
8790
  if (isHex) {
8576
8791
  effectiveLen -= 2;
@@ -8611,18 +8826,17 @@ function estimateDataURLDecodedBytes(url) {
8611
8826
  return bytes > 0 ? bytes : 0;
8612
8827
  }
8613
8828
 
8614
- if (typeof Buffer !== 'undefined' && typeof Buffer.byteLength === 'function') {
8615
- return Buffer.byteLength(body, 'utf8');
8616
- }
8617
-
8618
8829
  // Compute UTF-8 byte length directly from UTF-16 code units without allocating
8619
8830
  // a byte buffer (TextEncoder.encode would defeat the DoS guard on large bodies).
8620
- // Using body.length here would undercount non-ASCII (e.g. '€' is 1 code unit
8621
- // but 3 UTF-8 bytes).
8831
+ // Valid %XX triplets count as one decoded byte; this matches the bytes that
8832
+ // decodeURIComponent(body) would produce before Buffer re-encodes the string.
8622
8833
  let bytes = 0;
8623
8834
  for (let i = 0, len = body.length; i < len; i++) {
8624
8835
  const c = body.charCodeAt(i);
8625
- if (c < 0x80) {
8836
+ if (c === 37 /* '%' */ && isPercentEncodedByte(body, i, len)) {
8837
+ bytes += 1;
8838
+ i += 2;
8839
+ } else if (c < 0x80) {
8626
8840
  bytes += 1;
8627
8841
  } else if (c < 0x800) {
8628
8842
  bytes += 2;
@@ -8641,12 +8855,41 @@ function estimateDataURLDecodedBytes(url) {
8641
8855
  return bytes;
8642
8856
  }
8643
8857
 
8644
- const VERSION = "1.16.1";
8858
+ const VERSION = "1.18.0";
8645
8859
 
8646
8860
  const DEFAULT_CHUNK_SIZE = 64 * 1024;
8647
8861
 
8648
8862
  const { isFunction } = utils$1;
8649
8863
 
8864
+ /**
8865
+ * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().
8866
+ * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.
8867
+ *
8868
+ * @param {string} str The string to encode
8869
+ *
8870
+ * @returns {string} UTF-8 bytes as a Latin-1 string
8871
+ */
8872
+ const encodeUTF8 = (str) =>
8873
+ encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>
8874
+ String.fromCharCode(parseInt(hex, 16))
8875
+ );
8876
+
8877
+ // Node's WHATWG URL parser returns `username` and `password` percent-encoded.
8878
+ // Decode before composing the `auth` option so credentials such as
8879
+ // `my%40email.com:pass` are sent as `my@email.com:pass`. Falls back to the
8880
+ // original value for malformed input so a bad encoding never throws.
8881
+ const decodeURIComponentSafe = (value) => {
8882
+ if (!utils$1.isString(value)) {
8883
+ return value;
8884
+ }
8885
+
8886
+ try {
8887
+ return decodeURIComponent(value);
8888
+ } catch (error) {
8889
+ return value;
8890
+ }
8891
+ };
8892
+
8650
8893
  const test = (fn, ...args) => {
8651
8894
  try {
8652
8895
  return !!fn(...args);
@@ -8655,6 +8898,15 @@ const test = (fn, ...args) => {
8655
8898
  }
8656
8899
  };
8657
8900
 
8901
+ const maybeWithAuthCredentials = (url) => {
8902
+ const protocolIndex = url.indexOf('://');
8903
+ let urlToCheck = url;
8904
+ if (protocolIndex !== -1) {
8905
+ urlToCheck = urlToCheck.slice(protocolIndex + 3);
8906
+ }
8907
+ return urlToCheck.includes('@') || urlToCheck.includes(':');
8908
+ };
8909
+
8658
8910
  const factory = (env) => {
8659
8911
  const globalObject =
8660
8912
  utils$1.global !== undefined && utils$1.global !== null
@@ -8802,6 +9054,7 @@ const factory = (env) => {
8802
9054
 
8803
9055
  const hasMaxContentLength = utils$1.isNumber(maxContentLength) && maxContentLength > -1;
8804
9056
  const hasMaxBodyLength = utils$1.isNumber(maxBodyLength) && maxBodyLength > -1;
9057
+ const own = (key) => (utils$1.hasOwnProp(config, key) ? config[key] : undefined);
8805
9058
 
8806
9059
  let _fetch = envFetch || fetch;
8807
9060
 
@@ -8823,7 +9076,61 @@ const factory = (env) => {
8823
9076
 
8824
9077
  let requestContentLength;
8825
9078
 
9079
+ // AxiosError we raise while the request body is being streamed. Captured
9080
+ // by identity so the catch block can surface it directly, regardless of
9081
+ // how the runtime wraps the resulting fetch rejection (undici exposes it
9082
+ // as `err.cause`; some browsers drop the original error entirely).
9083
+ let pendingBodyError = null;
9084
+
9085
+ const maxBodyLengthError = () =>
9086
+ new AxiosError$1(
9087
+ 'Request body larger than maxBodyLength limit',
9088
+ AxiosError$1.ERR_BAD_REQUEST,
9089
+ config,
9090
+ request
9091
+ );
9092
+
8826
9093
  try {
9094
+ // HTTP basic authentication
9095
+ let auth = undefined;
9096
+ const configAuth = own('auth');
9097
+
9098
+ if (configAuth) {
9099
+ const username = utils$1.getSafeProp(configAuth, 'username') || '';
9100
+ const password = utils$1.getSafeProp(configAuth, 'password') || '';
9101
+ auth = {
9102
+ username,
9103
+ password
9104
+ };
9105
+ }
9106
+
9107
+ if (maybeWithAuthCredentials(url)) {
9108
+ const parsedURL = new URL(url, platform.origin);
9109
+
9110
+ if (!auth && (parsedURL.username || parsedURL.password)) {
9111
+ const urlUsername = decodeURIComponentSafe(parsedURL.username);
9112
+ const urlPassword = decodeURIComponentSafe(parsedURL.password);
9113
+ auth = {
9114
+ username: urlUsername,
9115
+ password: urlPassword
9116
+ };
9117
+ }
9118
+
9119
+ if (parsedURL.username || parsedURL.password) {
9120
+ parsedURL.username = '';
9121
+ parsedURL.password = '';
9122
+ url = parsedURL.href;
9123
+ }
9124
+ }
9125
+
9126
+ if (auth) {
9127
+ headers.delete('authorization');
9128
+ headers.set(
9129
+ 'Authorization',
9130
+ 'Basic ' + btoa(encodeUTF8((auth.username || '') + ':' + (auth.password || '')))
9131
+ );
9132
+ }
9133
+
8827
9134
  // Enforce maxContentLength for data: URLs up-front so we never materialize
8828
9135
  // an oversized payload. The HTTP adapter applies the same check (see http.js
8829
9136
  // "if (protocol === 'data:')" branch).
@@ -8839,53 +9146,96 @@ const factory = (env) => {
8839
9146
  }
8840
9147
  }
8841
9148
 
8842
- // Enforce maxBodyLength against the outbound request body before dispatch.
8843
- // Mirrors http.js behavior (ERR_BAD_REQUEST / 'Request body larger than
8844
- // maxBodyLength limit'). Skip when the body length cannot be determined
8845
- // (e.g. a live ReadableStream supplied by the caller).
9149
+ // Enforce maxBodyLength against known-size bodies before dispatch using
9150
+ // the body's *actual* size never a caller-declared Content-Length,
9151
+ // which could under-report to slip an oversized body past the check.
9152
+ // Unknown-size streams return undefined here and are counted per-chunk
9153
+ // below as fetch consumes them.
8846
9154
  if (hasMaxBodyLength && method !== 'get' && method !== 'head') {
8847
- const outboundLength = await resolveBodyLength(headers, data);
8848
- if (
8849
- typeof outboundLength === 'number' &&
8850
- isFinite(outboundLength) &&
8851
- outboundLength > maxBodyLength
8852
- ) {
8853
- throw new AxiosError$1(
8854
- 'Request body larger than maxBodyLength limit',
8855
- AxiosError$1.ERR_BAD_REQUEST,
8856
- config,
8857
- request
8858
- );
9155
+ const outboundLength = await getBodyLength(data);
9156
+ if (typeof outboundLength === 'number' && isFinite(outboundLength)) {
9157
+ requestContentLength = outboundLength;
9158
+ if (outboundLength > maxBodyLength) {
9159
+ throw maxBodyLengthError();
9160
+ }
8859
9161
  }
8860
9162
  }
8861
9163
 
9164
+ // A streamed body under maxBodyLength must be counted as fetch consumes
9165
+ // it; its size is never trusted from a caller-declared Content-Length.
9166
+ const mustEnforceStreamBody =
9167
+ hasMaxBodyLength && (utils$1.isReadableStream(data) || utils$1.isStream(data));
9168
+
9169
+ const trackRequestStream = (stream, onProgress, flush) =>
9170
+ trackStream(
9171
+ stream,
9172
+ DEFAULT_CHUNK_SIZE,
9173
+ (loadedBytes) => {
9174
+ if (hasMaxBodyLength && loadedBytes > maxBodyLength) {
9175
+ throw (pendingBodyError = maxBodyLengthError());
9176
+ }
9177
+ onProgress && onProgress(loadedBytes);
9178
+ },
9179
+ flush
9180
+ );
9181
+
8862
9182
  if (
8863
- onUploadProgress &&
8864
9183
  supportsRequestStream &&
8865
9184
  method !== 'get' &&
8866
9185
  method !== 'head' &&
8867
- (requestContentLength = await resolveBodyLength(headers, data)) !== 0
9186
+ (onUploadProgress || mustEnforceStreamBody)
8868
9187
  ) {
8869
- let _request = new Request(url, {
8870
- method: 'POST',
8871
- body: data,
8872
- duplex: 'half',
8873
- });
9188
+ requestContentLength =
9189
+ requestContentLength == null ? await resolveBodyLength(headers, data) : requestContentLength;
9190
+
9191
+ // A declared length of 0 is only trusted to skip the wrap when we are
9192
+ // not enforcing a stream limit (which must not rely on that header).
9193
+ if (requestContentLength !== 0 || mustEnforceStreamBody) {
9194
+ let _request = new Request(url, {
9195
+ method: 'POST',
9196
+ body: data,
9197
+ duplex: 'half',
9198
+ });
8874
9199
 
8875
- let contentTypeHeader;
9200
+ let contentTypeHeader;
8876
9201
 
8877
- if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
8878
- headers.setContentType(contentTypeHeader);
8879
- }
9202
+ if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
9203
+ headers.setContentType(contentTypeHeader);
9204
+ }
8880
9205
 
8881
- if (_request.body) {
8882
- const [onProgress, flush] = progressEventDecorator(
8883
- requestContentLength,
8884
- progressEventReducer(asyncDecorator(onUploadProgress))
8885
- );
9206
+ if (_request.body) {
9207
+ const [onProgress, flush] =
9208
+ (onUploadProgress &&
9209
+ progressEventDecorator(
9210
+ requestContentLength,
9211
+ progressEventReducer(asyncDecorator(onUploadProgress))
9212
+ )) ||
9213
+ [];
8886
9214
 
8887
- data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
9215
+ data = trackRequestStream(_request.body, onProgress, flush);
9216
+ }
8888
9217
  }
9218
+ } else if (
9219
+ mustEnforceStreamBody &&
9220
+ !isRequestSupported &&
9221
+ isReadableStreamSupported &&
9222
+ method !== 'get' &&
9223
+ method !== 'head'
9224
+ ) {
9225
+ data = trackRequestStream(data);
9226
+ } else if (
9227
+ mustEnforceStreamBody &&
9228
+ isRequestSupported &&
9229
+ !supportsRequestStream &&
9230
+ method !== 'get' &&
9231
+ method !== 'head'
9232
+ ) {
9233
+ throw new AxiosError$1(
9234
+ 'Stream request bodies are not supported by the current fetch implementation',
9235
+ AxiosError$1.ERR_NOT_SUPPORT,
9236
+ config,
9237
+ request
9238
+ );
8889
9239
  }
8890
9240
 
8891
9241
  if (!utils$1.isString(withCredentials)) {
@@ -8928,10 +9278,12 @@ const factory = (env) => {
8928
9278
  ? _fetch(request, fetchOptions)
8929
9279
  : _fetch(url, resolvedOptions));
8930
9280
 
9281
+ const responseHeaders = AxiosHeaders$1.from(response.headers);
9282
+
8931
9283
  // Cheap pre-check: if the server honestly declares a content-length that
8932
9284
  // already exceeds the cap, reject before we start streaming.
8933
9285
  if (hasMaxContentLength) {
8934
- const declaredLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
9286
+ const declaredLength = utils$1.toFiniteNumber(responseHeaders.getContentLength());
8935
9287
  if (declaredLength != null && declaredLength > maxContentLength) {
8936
9288
  throw new AxiosError$1(
8937
9289
  'maxContentLength size of ' + maxContentLength + ' exceeded',
@@ -8956,7 +9308,7 @@ const factory = (env) => {
8956
9308
  options[prop] = response[prop];
8957
9309
  });
8958
9310
 
8959
- const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
9311
+ const responseContentLength = utils$1.toFiniteNumber(responseHeaders.getContentLength());
8960
9312
 
8961
9313
  const [onProgress, flush] =
8962
9314
  (onDownloadProgress &&
@@ -9051,6 +9403,23 @@ const factory = (env) => {
9051
9403
  throw canceledError;
9052
9404
  }
9053
9405
 
9406
+ // Surface a maxBodyLength violation we raised while the request body was
9407
+ // being streamed. Matching by identity (rather than reading
9408
+ // `err.cause.isAxiosError`) keeps the error deterministic across runtimes
9409
+ // and avoids both prototype-pollution reads and mis-attributing a foreign
9410
+ // AxiosError that merely happened to land in `err.cause`.
9411
+ if (pendingBodyError) {
9412
+ request && !pendingBodyError.request && (pendingBodyError.request = request);
9413
+ throw pendingBodyError;
9414
+ }
9415
+
9416
+ // Re-throw AxiosErrors we raised synchronously (data: URL / content-length
9417
+ // pre-checks, response size enforcement) without re-wrapping them.
9418
+ if (err instanceof AxiosError$1) {
9419
+ request && !err.request && (err.request = request);
9420
+ throw err;
9421
+ }
9422
+
9054
9423
  if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {
9055
9424
  throw Object.assign(
9056
9425
  new AxiosError$1(
@@ -9505,6 +9874,8 @@ class Axios {
9505
9874
  forcedJSONParsing: validators.transitional(validators.boolean),
9506
9875
  clarifyTimeoutError: validators.transitional(validators.boolean),
9507
9876
  legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),
9877
+ advertiseZstdAcceptEncoding: validators.transitional(validators.boolean),
9878
+ validateStatusUndefinedResolves: validators.transitional(validators.boolean),
9508
9879
  },
9509
9880
  false
9510
9881
  );
@@ -9634,7 +10005,7 @@ class Axios {
9634
10005
 
9635
10006
  getUri(config) {
9636
10007
  config = mergeConfig(this.defaults, config);
9637
- const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
10008
+ const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls, config);
9638
10009
  return buildURL(fullPath, config.params, config.paramsSerializer);
9639
10010
  }
9640
10011
  }
@@ -9647,7 +10018,7 @@ utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoDa
9647
10018
  mergeConfig(config || {}, {
9648
10019
  method,
9649
10020
  url,
9650
- data: (config || {}).data,
10021
+ data: config && utils$1.hasOwnProp(config, 'data') ? config.data : undefined,
9651
10022
  })
9652
10023
  );
9653
10024
  };
@@ -17101,7 +17472,7 @@ var _ibmScriptUrl = function _ibmScriptUrl() {
17101
17472
  */
17102
17473
  function _loadScript() {
17103
17474
  var environment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ibmEnvironment;
17104
- _scriptLoading = true;
17475
+ lib._ibmKalturaScriptLoading = true;
17105
17476
  var script = document.createElement('script');
17106
17477
  script.src = _ibmScriptUrl(environment);
17107
17478
  script.async = true;
@@ -17117,12 +17488,19 @@ function _loadScript() {
17117
17488
  var _timeoutRetries = 50;
17118
17489
 
17119
17490
  /**
17120
- * Tracks the script status
17491
+ * Tracks the script loading status. Stored on `root` (window) so the value
17492
+ * persists when this module is executed more than once in the same page
17493
+ * (e.g. once as an async page script and again as a deferred Adobe Target
17494
+ * Experience Fragment script). Without this, a second execution resets the
17495
+ * flag to false and causes _loadScript() to inject loader.js a second time,
17496
+ * creating a race condition that leaves embedMedia() pending indefinitely.
17121
17497
  *
17122
- * @type {boolean} _scriptLoading to track the script loading or not
17498
+ * @type {boolean}
17123
17499
  * @private
17124
17500
  */
17125
- var _scriptLoading = false;
17501
+ if (lib._ibmKalturaScriptLoading === undefined) {
17502
+ lib._ibmKalturaScriptLoading = false;
17503
+ }
17126
17504
 
17127
17505
  /**
17128
17506
  * Serializes concurrent embed calls. The IBM Mediacenter player.embed() does
@@ -17151,9 +17529,9 @@ function _scriptReady(resolve, reject) {
17151
17529
  * @param {object} root?.IBM.Mediacenter.player if exists then resolve
17152
17530
  */
17153
17531
  if (lib !== null && lib !== void 0 && (_root$IBM = lib.IBM) !== null && _root$IBM !== void 0 && (_root$IBM = _root$IBM.Mediacenter) !== null && _root$IBM !== void 0 && _root$IBM.player) {
17154
- _scriptLoading = false;
17532
+ lib._ibmKalturaScriptLoading = false;
17155
17533
  resolve();
17156
- } else if (_scriptLoading) {
17534
+ } else if (lib._ibmKalturaScriptLoading) {
17157
17535
  if (attempt < _timeoutRetries) {
17158
17536
  setTimeout(function () {
17159
17537
  _scriptReady(resolve, reject, environment, attempt + 1);
@@ -33411,7 +33789,7 @@ let C4DMegaMenuTopNavMenu = _decorate$s([carbonElement(`${c4dPrefix$s}-megamenu-
33411
33789
  var _this$parentElement;
33412
33790
  // Import needed subcomponents on first expansion
33413
33791
  if (!((_this$parentElement = this.parentElement) !== null && _this$parentElement !== void 0 && _this$parentElement.importedMegamenu)) {
33414
- await Promise.all([import('./megamenu-left-navigation-69859447.js'), import('./megamenu-category-link-15ba610e.js'), import('./megamenu-category-link-group-20ba8bd3.js'), import('./megamenu-category-group-c1b819f8.js'), import('./megamenu-category-group-copy-bd2b1693.js'), import('./megamenu-category-heading-3a55642b.js'), Promise.resolve().then(function () { return megamenuLinkWithIcon; }), import('./megamenu-overlay-0d050917.js'), import('./megamenu-tab-13ae3cfb.js'), Promise.resolve().then(function () { return megamenuTabs; })]);
33792
+ await Promise.all([import('./megamenu-left-navigation-2f8681ba.js'), import('./megamenu-category-link-62e40529.js'), import('./megamenu-category-link-group-c5d6f6d5.js'), import('./megamenu-category-group-6005a5d5.js'), import('./megamenu-category-group-copy-5d3d3b46.js'), import('./megamenu-category-heading-0fe0c38e.js'), Promise.resolve().then(function () { return megamenuLinkWithIcon; }), import('./megamenu-overlay-130aa276.js'), import('./megamenu-tab-3fe0134f.js'), Promise.resolve().then(function () { return megamenuTabs; })]);
33415
33793
  this.parentElement.importedMegamenu = true;
33416
33794
  }
33417
33795
 
@@ -39489,7 +39867,7 @@ let C4DLeftNav = _decorate$b([carbonElement(`${c4dPrefix$b}-left-nav`)], functio
39489
39867
  value() {
39490
39868
  return async event => {
39491
39869
  if (!this._importedSideNav) {
39492
- await Promise.all([Promise.resolve().then(function () { return leftNavName; }), import('./left-nav-menu-a1676975.js'), import('./left-nav-menu-section-d02d9946.js'), import('./left-nav-menu-item-0aa13b09.js'), import('./left-nav-menu-category-heading-3180761b.js'), import('./left-nav-overlay-b164eaf3.js')]);
39870
+ await Promise.all([Promise.resolve().then(function () { return leftNavName; }), import('./left-nav-menu-9a0606ac.js'), import('./left-nav-menu-section-93da9dad.js'), import('./left-nav-menu-item-c756756f.js'), import('./left-nav-menu-category-heading-23532213.js'), import('./left-nav-overlay-8f5bcf92.js')]);
39493
39871
  this._importedSideNav = true;
39494
39872
  }
39495
39873
  this.expanded = event.detail.active;