@speclynx/apidom-overlay 4.9.1 → 4.10.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.
@@ -519,6 +519,300 @@ class TraceBuilder {
519
519
 
520
520
  /***/ },
521
521
 
522
+ /***/ 15145
523
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
524
+
525
+ "use strict";
526
+ __webpack_require__.r(__webpack_exports__);
527
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
528
+ /* harmony export */ diff: () => (/* binding */ diff)
529
+ /* harmony export */ });
530
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25162);
531
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28121);
532
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(52560);
533
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97601);
534
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97071);
535
+ /* harmony import */ var _speclynx_apidom_json_path__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(84637);
536
+ /* harmony import */ var _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(35937);
537
+ /* harmony import */ var _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(39505);
538
+ /* harmony import */ var _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(18436);
539
+
540
+
541
+
542
+
543
+
544
+ /**
545
+ * @public
546
+ */
547
+
548
+ const defaultDiffOptions = {
549
+ overlay: '1.1.0',
550
+ info: {
551
+ title: 'API diff',
552
+ version: '0.0.0'
553
+ }
554
+ };
555
+ const createUpdateAction = (segments, value) => {
556
+ const action = new _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_6__.ActionElement();
557
+ action.target = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"](_speclynx_apidom_json_path__WEBPACK_IMPORTED_MODULE_5__.NormalizedPath.from(segments));
558
+ action.update = value;
559
+ return action;
560
+ };
561
+ const createRemoveAction = segments => {
562
+ const action = new _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_6__.ActionElement();
563
+ action.target = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"](_speclynx_apidom_json_path__WEBPACK_IMPORTED_MODULE_5__.NormalizedPath.from(segments));
564
+ action.removeField = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](true);
565
+ return action;
566
+ };
567
+ const diffElements = (left, right, segments, actions) => {
568
+ if (left.equals(right)) return;
569
+ const leftKind = left.primitive();
570
+ const rightKind = right.primitive();
571
+ if (leftKind !== rightKind) {
572
+ if (segments.length === 0) {
573
+ throw new _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_8__["default"]('Cannot diff documents with incompatible root types');
574
+ }
575
+ // structural type change: remove old, re-add new via parent update.
576
+ // only reachable from diffObjects — segments tail is always a string key
577
+ actions.push(createRemoveAction(segments));
578
+ const key = segments[segments.length - 1];
579
+ const wrapper = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"]();
580
+ wrapper.set(key, right);
581
+ actions.push(createUpdateAction(segments.slice(0, -1), wrapper));
582
+ return;
583
+ }
584
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isObjectElement)(left) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isObjectElement)(right)) {
585
+ diffObjects(left, right, segments, actions);
586
+ return;
587
+ }
588
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isArrayElement)(left) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isArrayElement)(right)) {
589
+ diffArrays(left, right, segments, actions);
590
+ return;
591
+ }
592
+
593
+ // primitive value changed
594
+ actions.push(createUpdateAction(segments, right));
595
+ };
596
+ const diffObjects = (left, right, segments, actions) => {
597
+ const leftKeys = new Set(left.keys());
598
+ const rightKeys = new Set(right.keys());
599
+
600
+ // removed keys
601
+ for (const key of leftKeys) {
602
+ if (!rightKeys.has(key)) {
603
+ actions.push(createRemoveAction([...segments, key]));
604
+ }
605
+ }
606
+
607
+ // added keys — batched into a single parent update to minimize action count
608
+ const added = [];
609
+ for (const key of rightKeys) {
610
+ if (!leftKeys.has(key)) added.push(key);
611
+ }
612
+ if (added.length > 0) {
613
+ const patch = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"]();
614
+ for (const key of added) {
615
+ patch.set(key, right.get(key));
616
+ }
617
+ actions.push(createUpdateAction(segments, patch));
618
+ }
619
+
620
+ // common keys — recurse into changed values
621
+ for (const key of leftKeys) {
622
+ if (!rightKeys.has(key)) continue;
623
+ diffElements(left.get(key), right.get(key), [...segments, key], actions);
624
+ }
625
+ };
626
+ const diffArrays = (left, right, segments, actions) => {
627
+ const leftLen = left.length;
628
+ const rightLen = right.length;
629
+ const minLen = Math.min(leftLen, rightLen);
630
+ for (let i = 0; i < minLen; i++) {
631
+ const leftItem = left.get(i);
632
+ const rightItem = right.get(i);
633
+ if (leftItem.equals(rightItem)) continue;
634
+ if (leftItem.primitive() !== rightItem.primitive()) {
635
+ // structural type change at index i — reconstruct tail:
636
+ // remove from end down to i (reverse order preserves index stability),
637
+ // then batch-append right[i..] as a single ArrayElement (Overlay concat semantics)
638
+ for (let j = leftLen - 1; j >= i; j--) {
639
+ actions.push(createRemoveAction([...segments, j]));
640
+ }
641
+ const tail = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"]();
642
+ for (let j = i; j < rightLen; j++) {
643
+ tail.push(right.get(j));
644
+ }
645
+ actions.push(createUpdateAction(segments, tail));
646
+ return;
647
+ }
648
+ diffElements(leftItem, rightItem, [...segments, i], actions);
649
+ }
650
+
651
+ // right is longer — batch all new items into a single ArrayElement update.
652
+ // wrapping is required: applyUpdateAction uses deepmerge(array, array) for array targets,
653
+ // so the update value must be an ArrayElement to trigger concat semantics.
654
+ if (leftLen < rightLen) {
655
+ const tail = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"]();
656
+ for (let i = leftLen; i < rightLen; i++) {
657
+ tail.push(right.get(i));
658
+ }
659
+ actions.push(createUpdateAction(segments, tail));
660
+ }
661
+
662
+ // left is longer — remove trailing items in reverse order for index stability
663
+ for (let i = leftLen - 1; i >= rightLen; i--) {
664
+ actions.push(createRemoveAction([...segments, i]));
665
+ }
666
+ };
667
+
668
+ /**
669
+ * Produces an {@link Overlay1Element} that, when applied to `leftElement`, yields `rightElement`.
670
+ *
671
+ * Known limitations:
672
+ * - Identical documents produce an overlay with an empty `actions` array. Overlay 1.1.0 §3
673
+ * requires `actions` to be non-empty; callers should guard against the no-diff case.
674
+ * - Root-level structural type change (e.g. object root → array root) throws {@link OverlayError}
675
+ * because Overlay has no mechanism to replace the root node.
676
+ * - Array insert-at-position is not supported by Overlay 1.x; positional diffing cascades
677
+ * replaces and appends, which is always correct but may be verbose for large reorderings.
678
+ * - Array items with a structural type change are handled via tail-reconstruct
679
+ * (remove tail + re-append from right), producing more actions than a minimal diff.
680
+ * - The overlay carries no "before" value, so it cannot be reversed without the original document.
681
+ * - Action `update` values reference elements from `rightElement` directly. Mutating `rightElement`
682
+ * after calling `diff` will affect the returned overlay.
683
+ *
684
+ * @public
685
+ */
686
+ const diff = (leftElement, rightElement, options = {}) => {
687
+ const overlayVersion = options.overlay ?? defaultDiffOptions.overlay;
688
+ const infoTitle = options.info?.title ?? defaultDiffOptions.info.title;
689
+ const infoVersion = options.info?.version ?? defaultDiffOptions.info.version;
690
+ const infoDescription = options.info?.description;
691
+ const actions = [];
692
+ diffElements(leftElement, rightElement, [], actions);
693
+ if (actions.length === 0 && options.onEmptyDiff === 'throw') {
694
+ throw new _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_8__["default"]('Diff produced no actions: documents are identical');
695
+ }
696
+ const overlay = new _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_6__.Overlay1Element();
697
+ overlay.overlay = new _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_6__.OverlayElement(overlayVersion);
698
+ const info = new _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_6__.InfoElement();
699
+ info.title = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"](infoTitle);
700
+ info.version = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"](infoVersion);
701
+ if (infoDescription !== undefined) {
702
+ info.description = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"](infoDescription);
703
+ }
704
+ overlay.info = info;
705
+ if (options.extends !== undefined) {
706
+ overlay.extends = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"](options.extends);
707
+ }
708
+ overlay.actions = new _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_7__["default"](actions);
709
+ return overlay;
710
+ };
711
+
712
+ /***/ },
713
+
714
+ /***/ 72587
715
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
716
+
717
+ "use strict";
718
+ __webpack_require__.r(__webpack_exports__);
719
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
720
+ /* harmony export */ diff: () => (/* binding */ diff)
721
+ /* harmony export */ });
722
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10404);
723
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44673);
724
+ /* harmony import */ var _apidom_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15145);
725
+
726
+
727
+
728
+
729
+ /**
730
+ * Computes the diff between two plain JavaScript objects and returns an Overlay document
731
+ * as a plain JavaScript object.
732
+ *
733
+ * @public
734
+ */
735
+ const diff = (left, right, options) => (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_1__["default"])((0,_apidom_ts__WEBPACK_IMPORTED_MODULE_2__.diff)((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.refract)(left), (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.refract)(right), options));
736
+
737
+ /***/ },
738
+
739
+ /***/ 8423
740
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
741
+
742
+ "use strict";
743
+ __webpack_require__.r(__webpack_exports__);
744
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
745
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
746
+ /* harmony export */ defaultOptions: () => (/* binding */ defaultOptions)
747
+ /* harmony export */ });
748
+ /* harmony import */ var _speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29807);
749
+ /* harmony import */ var _apidom_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15145);
750
+ /* harmony import */ var _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18436);
751
+
752
+
753
+
754
+
755
+ /**
756
+ * @public
757
+ */
758
+
759
+ // intentionally omits overlay-json-1/overlay-yaml-1 parser opts present in apply/realms/uri.ts
760
+ // because diff inputs are regular API documents, not overlay documents
761
+ const defaultReferenceOptions = {
762
+ parse: {
763
+ parserOpts: {
764
+ strict: false
765
+ }
766
+ },
767
+ resolve: {
768
+ resolverOpts: {
769
+ fileAllowList: ['*']
770
+ }
771
+ }
772
+ };
773
+
774
+ /**
775
+ * @public
776
+ */
777
+ const defaultOptions = {
778
+ reference: defaultReferenceOptions
779
+ };
780
+
781
+ /**
782
+ * Computes the diff between two API documents identified by URIs and returns
783
+ * an {@link Overlay1Element} that, when applied to the left document, yields the right.
784
+ *
785
+ * When `options.extends` is not provided, it is automatically set to `leftURI`
786
+ * so the generated overlay can be applied back to the original document.
787
+ *
788
+ * @param leftURI - URI to the base (source) document
789
+ * @param rightURI - URI to the target (changed) document
790
+ * @param options - diff options; reference options live under `options.reference`
791
+ * @returns Overlay1Element representing the diff
792
+ *
793
+ * @public
794
+ */
795
+ const diff = async (leftURI, rightURI, options = defaultOptions) => {
796
+ const mergedRefOptions = (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_0__.mergeOptions)(defaultReferenceOptions, options.reference ?? {});
797
+ const [leftParseResult, rightParseResult] = await Promise.all([(0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_0__.parse)(leftURI, mergedRefOptions), (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_0__.parse)(rightURI, mergedRefOptions)]);
798
+ const leftElement = leftParseResult.api;
799
+ const rightElement = rightParseResult.api;
800
+ if (leftElement == null) {
801
+ throw new _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_2__["default"](`Failed to parse document "${leftURI}"`);
802
+ }
803
+ if (rightElement == null) {
804
+ throw new _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_2__["default"](`Failed to parse document "${rightURI}"`);
805
+ }
806
+ const diffOptions = {
807
+ ...options,
808
+ extends: options.extends ?? leftURI
809
+ };
810
+ return (0,_apidom_ts__WEBPACK_IMPORTED_MODULE_1__.diff)(leftElement, rightElement, diffOptions);
811
+ };
812
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (diff);
813
+
814
+ /***/ },
815
+
522
816
  /***/ 18436
523
817
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
524
818
 
@@ -25770,8 +26064,10 @@ class Composer {
25770
26064
  }
25771
26065
  }
25772
26066
  if (afterDoc) {
25773
- Array.prototype.push.apply(doc.errors, this.errors);
25774
- Array.prototype.push.apply(doc.warnings, this.warnings);
26067
+ for (let i = 0; i < this.errors.length; ++i)
26068
+ doc.errors.push(this.errors[i]);
26069
+ for (let i = 0; i < this.warnings.length; ++i)
26070
+ doc.warnings.push(this.warnings[i]);
25775
26071
  }
25776
26072
  else {
25777
26073
  doc.errors = this.errors;
@@ -26733,7 +27029,7 @@ function doubleQuotedValue(source, onError) {
26733
27029
  next = source[++i + 1];
26734
27030
  }
26735
27031
  else if (next === 'x' || next === 'u' || next === 'U') {
26736
- const length = { x: 2, u: 4, U: 8 }[next];
27032
+ const length = next === 'x' ? 2 : next === 'u' ? 4 : 8;
26737
27033
  res += parseCharCode(source, i + 1, length, onError);
26738
27034
  i += length;
26739
27035
  }
@@ -26803,12 +27099,14 @@ function parseCharCode(source, offset, length, onError) {
26803
27099
  const cc = source.substr(offset, length);
26804
27100
  const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
26805
27101
  const code = ok ? parseInt(cc, 16) : NaN;
26806
- if (isNaN(code)) {
27102
+ try {
27103
+ return String.fromCodePoint(code);
27104
+ }
27105
+ catch {
26807
27106
  const raw = source.substr(offset - 2, length + 2);
26808
27107
  onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);
26809
27108
  return raw;
26810
27109
  }
26811
- return String.fromCodePoint(code);
26812
27110
  }
26813
27111
 
26814
27112
 
@@ -28121,6 +28419,8 @@ class Alias extends _Node_js__WEBPACK_IMPORTED_MODULE_3__.NodeBase {
28121
28419
  * instance of the `source` anchor before this node.
28122
28420
  */
28123
28421
  resolve(doc, ctx) {
28422
+ if (ctx?.maxAliasCount === 0)
28423
+ throw new ReferenceError('Alias resolution is disabled');
28124
28424
  let nodes;
28125
28425
  if (ctx?.aliasResolveCache) {
28126
28426
  nodes = ctx.aliasResolveCache;
@@ -29875,7 +30175,7 @@ class Lexer {
29875
30175
  const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));
29876
30176
  this.indentNext = this.indentValue + 1;
29877
30177
  this.indentValue += n;
29878
- return yield* this.parseBlockStart();
30178
+ return 'block-start';
29879
30179
  }
29880
30180
  return 'doc';
29881
30181
  }
@@ -30196,32 +30496,36 @@ class Lexer {
30196
30496
  return 0;
30197
30497
  }
30198
30498
  *pushIndicators() {
30199
- switch (this.charAt(0)) {
30200
- case '!':
30201
- return ((yield* this.pushTag()) +
30202
- (yield* this.pushSpaces(true)) +
30203
- (yield* this.pushIndicators()));
30204
- case '&':
30205
- return ((yield* this.pushUntil(isNotAnchorChar)) +
30206
- (yield* this.pushSpaces(true)) +
30207
- (yield* this.pushIndicators()));
30208
- case '-': // this is an error
30209
- case '?': // this is an error outside flow collections
30210
- case ':': {
30211
- const inFlow = this.flowLevel > 0;
30212
- const ch1 = this.charAt(1);
30213
- if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {
30214
- if (!inFlow)
30215
- this.indentNext = this.indentValue + 1;
30216
- else if (this.flowKey)
30217
- this.flowKey = false;
30218
- return ((yield* this.pushCount(1)) +
30219
- (yield* this.pushSpaces(true)) +
30220
- (yield* this.pushIndicators()));
30499
+ let n = 0;
30500
+ loop: while (true) {
30501
+ switch (this.charAt(0)) {
30502
+ case '!':
30503
+ n += yield* this.pushTag();
30504
+ n += yield* this.pushSpaces(true);
30505
+ continue loop;
30506
+ case '&':
30507
+ n += yield* this.pushUntil(isNotAnchorChar);
30508
+ n += yield* this.pushSpaces(true);
30509
+ continue loop;
30510
+ case '-': // this is an error
30511
+ case '?': // this is an error outside flow collections
30512
+ case ':': {
30513
+ const inFlow = this.flowLevel > 0;
30514
+ const ch1 = this.charAt(1);
30515
+ if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {
30516
+ if (!inFlow)
30517
+ this.indentNext = this.indentValue + 1;
30518
+ else if (this.flowKey)
30519
+ this.flowKey = false;
30520
+ n += yield* this.pushCount(1);
30521
+ n += yield* this.pushSpaces(true);
30522
+ continue loop;
30523
+ }
30221
30524
  }
30222
30525
  }
30526
+ break loop;
30223
30527
  }
30224
- return 0;
30528
+ return n;
30225
30529
  }
30226
30530
  *pushTag() {
30227
30531
  if (this.charAt(1) === '<') {
@@ -30414,6 +30718,14 @@ function getFirstKeyStartProps(prev) {
30414
30718
  }
30415
30719
  return prev.splice(i, prev.length);
30416
30720
  }
30721
+ function arrayPushArray(target, source) {
30722
+ // May exhaust call stack with large `source` array
30723
+ if (source.length < 1e5)
30724
+ Array.prototype.push.apply(target, source);
30725
+ else
30726
+ for (let i = 0; i < source.length; ++i)
30727
+ target.push(source[i]);
30728
+ }
30417
30729
  function fixFlowSeqItems(fc) {
30418
30730
  if (fc.start.type === 'flow-seq-start') {
30419
30731
  for (const it of fc.items) {
@@ -30426,12 +30738,12 @@ function fixFlowSeqItems(fc) {
30426
30738
  delete it.key;
30427
30739
  if (isFlowToken(it.value)) {
30428
30740
  if (it.value.end)
30429
- Array.prototype.push.apply(it.value.end, it.sep);
30741
+ arrayPushArray(it.value.end, it.sep);
30430
30742
  else
30431
30743
  it.value.end = it.sep;
30432
30744
  }
30433
30745
  else
30434
- Array.prototype.push.apply(it.start, it.sep);
30746
+ arrayPushArray(it.start, it.sep);
30435
30747
  delete it.sep;
30436
30748
  }
30437
30749
  }
@@ -30849,7 +31161,7 @@ class Parser {
30849
31161
  const prev = map.items[map.items.length - 2];
30850
31162
  const end = prev?.value?.end;
30851
31163
  if (Array.isArray(end)) {
30852
- Array.prototype.push.apply(end, it.start);
31164
+ arrayPushArray(end, it.start);
30853
31165
  end.push(this.sourceToken);
30854
31166
  map.items.pop();
30855
31167
  return;
@@ -31064,7 +31376,7 @@ class Parser {
31064
31376
  const prev = seq.items[seq.items.length - 2];
31065
31377
  const end = prev?.value?.end;
31066
31378
  if (Array.isArray(end)) {
31067
- Array.prototype.push.apply(end, it.start);
31379
+ arrayPushArray(end, it.start);
31068
31380
  end.push(this.sourceToken);
31069
31381
  seq.items.pop();
31070
31382
  return;
@@ -32300,18 +32612,18 @@ const isMergeKey = (ctx, key) => (merge.identify(key) ||
32300
32612
  merge.identify(key.value))) &&
32301
32613
  ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);
32302
32614
  function addMergeToJSMap(ctx, map, value) {
32303
- value = ctx && (0,_nodes_identity_js__WEBPACK_IMPORTED_MODULE_0__.isAlias)(value) ? value.resolve(ctx.doc) : value;
32304
- if ((0,_nodes_identity_js__WEBPACK_IMPORTED_MODULE_0__.isSeq)(value))
32305
- for (const it of value.items)
32615
+ const source = resolveAliasValue(ctx, value);
32616
+ if ((0,_nodes_identity_js__WEBPACK_IMPORTED_MODULE_0__.isSeq)(source))
32617
+ for (const it of source.items)
32306
32618
  mergeValue(ctx, map, it);
32307
- else if (Array.isArray(value))
32308
- for (const it of value)
32619
+ else if (Array.isArray(source))
32620
+ for (const it of source)
32309
32621
  mergeValue(ctx, map, it);
32310
32622
  else
32311
- mergeValue(ctx, map, value);
32623
+ mergeValue(ctx, map, source);
32312
32624
  }
32313
32625
  function mergeValue(ctx, map, value) {
32314
- const source = ctx && (0,_nodes_identity_js__WEBPACK_IMPORTED_MODULE_0__.isAlias)(value) ? value.resolve(ctx.doc) : value;
32626
+ const source = resolveAliasValue(ctx, value);
32315
32627
  if (!(0,_nodes_identity_js__WEBPACK_IMPORTED_MODULE_0__.isMap)(source))
32316
32628
  throw new Error('Merge sources must be maps or map aliases');
32317
32629
  const srcMap = source.toJSON(null, ctx, Map);
@@ -32334,6 +32646,9 @@ function mergeValue(ctx, map, value) {
32334
32646
  }
32335
32647
  return map;
32336
32648
  }
32649
+ function resolveAliasValue(ctx, value) {
32650
+ return ctx && (0,_nodes_identity_js__WEBPACK_IMPORTED_MODULE_0__.isAlias)(value) ? value.resolve(ctx.doc, ctx) : value;
32651
+ }
32337
32652
 
32338
32653
 
32339
32654
 
@@ -33444,7 +33759,8 @@ function stringifyNumber({ format, minFractionDigits, tag, value }) {
33444
33759
  if (!format &&
33445
33760
  minFractionDigits &&
33446
33761
  (!tag || tag === 'tag:yaml.org,2002:float') &&
33447
- /^\d/.test(n)) {
33762
+ /^-?\d/.test(n) &&
33763
+ !n.includes('e')) {
33448
33764
  let i = n.indexOf('.');
33449
33765
  if (i < 0) {
33450
33766
  i = n.length;
@@ -79735,6 +80051,65 @@ const refractAction = (value, options = {}) => refract(value, {
79735
80051
  });
79736
80052
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (refract);
79737
80053
 
80054
+ /***/ },
80055
+
80056
+ /***/ 35937
80057
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
80058
+
80059
+ "use strict";
80060
+ __webpack_require__.r(__webpack_exports__);
80061
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
80062
+ /* harmony export */ ActionElement: () => (/* reexport safe */ _elements_Action_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]),
80063
+ /* harmony export */ InfoElement: () => (/* reexport safe */ _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]),
80064
+ /* harmony export */ Overlay1Element: () => (/* reexport safe */ _elements_Overlay1_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]),
80065
+ /* harmony export */ OverlayElement: () => (/* reexport safe */ _elements_Overlay_mjs__WEBPACK_IMPORTED_MODULE_2__["default"])
80066
+ /* harmony export */ });
80067
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60572);
80068
+ /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34606);
80069
+ /* harmony import */ var _elements_Overlay_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79100);
80070
+ /* harmony import */ var _elements_Overlay1_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68913);
80071
+ /* harmony import */ var _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41012);
80072
+ /* harmony import */ var _elements_Action_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(19642);
80073
+ /* harmony import */ var _specification_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18730);
80074
+
80075
+
80076
+
80077
+
80078
+
80079
+
80080
+
80081
+ /**
80082
+ * @public
80083
+ */
80084
+ const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__.resolveSpecification)(_specification_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]);
80085
+ const getFixedFields = fixedFieldsSpec => {
80086
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
80087
+ if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__["default"])(fieldSpec)) {
80088
+ return {
80089
+ name,
80090
+ ...fieldSpec
80091
+ };
80092
+ }
80093
+ return {
80094
+ name,
80095
+ $visitor: fieldSpec
80096
+ };
80097
+ });
80098
+ };
80099
+ Object.defineProperty(_elements_Overlay1_mjs__WEBPACK_IMPORTED_MODULE_3__["default"], 'fixedFields', {
80100
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Overlay.fixedFields),
80101
+ enumerable: true
80102
+ });
80103
+ Object.defineProperty(_elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], 'fixedFields', {
80104
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
80105
+ enumerable: true
80106
+ });
80107
+ Object.defineProperty(_elements_Action_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], 'fixedFields', {
80108
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Action.fixedFields),
80109
+ enumerable: true
80110
+ });
80111
+
80112
+
79738
80113
  /***/ },
79739
80114
 
79740
80115
  /***/ 21461
@@ -85003,11 +85378,13 @@ const knownAdapters = {
85003
85378
  _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(knownAdapters, (fn, value) => {
85004
85379
  if (fn) {
85005
85380
  try {
85006
- Object.defineProperty(fn, 'name', { value });
85381
+ // Null-proto descriptors so a polluted Object.prototype.get cannot turn
85382
+ // these data descriptors into accessor descriptors on the way in.
85383
+ Object.defineProperty(fn, 'name', { __proto__: null, value });
85007
85384
  } catch (e) {
85008
85385
  // eslint-disable-next-line no-empty
85009
85386
  }
85010
- Object.defineProperty(fn, 'adapterName', { value });
85387
+ Object.defineProperty(fn, 'adapterName', { __proto__: null, value });
85011
85388
  }
85012
85389
  });
85013
85390
 
@@ -85128,6 +85505,9 @@ __webpack_require__.r(__webpack_exports__);
85128
85505
  /* harmony import */ var _helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42970);
85129
85506
  /* harmony import */ var _helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(38691);
85130
85507
  /* harmony import */ var _core_settle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(61812);
85508
+ /* harmony import */ var _helpers_estimateDataURLDecodedBytes_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(15663);
85509
+ /* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(84087);
85510
+ /* harmony import */ var _helpers_sanitizeHeaderValue_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(17706);
85131
85511
 
85132
85512
 
85133
85513
 
@@ -85138,16 +85518,12 @@ __webpack_require__.r(__webpack_exports__);
85138
85518
 
85139
85519
 
85140
85520
 
85141
- const DEFAULT_CHUNK_SIZE = 64 * 1024;
85142
85521
 
85143
- const { isFunction } = _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"];
85144
85522
 
85145
- const globalFetchAPI = (({ Request, Response }) => ({
85146
- Request,
85147
- Response,
85148
- }))(_utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].global);
85149
85523
 
85150
- const { ReadableStream, TextEncoder } = _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].global;
85524
+ const DEFAULT_CHUNK_SIZE = 64 * 1024;
85525
+
85526
+ const { isFunction } = _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"];
85151
85527
 
85152
85528
  const test = (fn, ...args) => {
85153
85529
  try {
@@ -85158,11 +85534,20 @@ const test = (fn, ...args) => {
85158
85534
  };
85159
85535
 
85160
85536
  const factory = (env) => {
85537
+ const globalObject =
85538
+ _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].global !== undefined && _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].global !== null
85539
+ ? _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].global
85540
+ : globalThis;
85541
+ const { ReadableStream, TextEncoder } = globalObject;
85542
+
85161
85543
  env = _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].merge.call(
85162
85544
  {
85163
85545
  skipUndefined: true,
85164
85546
  },
85165
- globalFetchAPI,
85547
+ {
85548
+ Request: globalObject.Request,
85549
+ Response: globalObject.Response,
85550
+ },
85166
85551
  env
85167
85552
  );
85168
85553
 
@@ -85289,8 +85674,13 @@ const factory = (env) => {
85289
85674
  headers,
85290
85675
  withCredentials = 'same-origin',
85291
85676
  fetchOptions,
85677
+ maxContentLength,
85678
+ maxBodyLength,
85292
85679
  } = (0,_helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_7__["default"])(config);
85293
85680
 
85681
+ const hasMaxContentLength = _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].isNumber(maxContentLength) && maxContentLength > -1;
85682
+ const hasMaxBodyLength = _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].isNumber(maxBodyLength) && maxBodyLength > -1;
85683
+
85294
85684
  let _fetch = envFetch || fetch;
85295
85685
 
85296
85686
  responseType = responseType ? (responseType + '').toLowerCase() : 'text';
@@ -85312,6 +85702,41 @@ const factory = (env) => {
85312
85702
  let requestContentLength;
85313
85703
 
85314
85704
  try {
85705
+ // Enforce maxContentLength for data: URLs up-front so we never materialize
85706
+ // an oversized payload. The HTTP adapter applies the same check (see http.js
85707
+ // "if (protocol === 'data:')" branch).
85708
+ if (hasMaxContentLength && typeof url === 'string' && url.startsWith('data:')) {
85709
+ const estimated = (0,_helpers_estimateDataURLDecodedBytes_js__WEBPACK_IMPORTED_MODULE_9__["default"])(url);
85710
+ if (estimated > maxContentLength) {
85711
+ throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"](
85712
+ 'maxContentLength size of ' + maxContentLength + ' exceeded',
85713
+ _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"].ERR_BAD_RESPONSE,
85714
+ config,
85715
+ request
85716
+ );
85717
+ }
85718
+ }
85719
+
85720
+ // Enforce maxBodyLength against the outbound request body before dispatch.
85721
+ // Mirrors http.js behavior (ERR_BAD_REQUEST / 'Request body larger than
85722
+ // maxBodyLength limit'). Skip when the body length cannot be determined
85723
+ // (e.g. a live ReadableStream supplied by the caller).
85724
+ if (hasMaxBodyLength && method !== 'get' && method !== 'head') {
85725
+ const outboundLength = await resolveBodyLength(headers, data);
85726
+ if (
85727
+ typeof outboundLength === 'number' &&
85728
+ isFinite(outboundLength) &&
85729
+ outboundLength > maxBodyLength
85730
+ ) {
85731
+ throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"](
85732
+ 'Request body larger than maxBodyLength limit',
85733
+ _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"].ERR_BAD_REQUEST,
85734
+ config,
85735
+ request
85736
+ );
85737
+ }
85738
+ }
85739
+
85315
85740
  if (
85316
85741
  onUploadProgress &&
85317
85742
  supportsRequestStream &&
@@ -85362,11 +85787,14 @@ const factory = (env) => {
85362
85787
  }
85363
85788
  }
85364
85789
 
85790
+ // Set User-Agent header if not already set (fetch defaults to 'node' in Node.js)
85791
+ headers.set('User-Agent', 'axios/' + _env_data_js__WEBPACK_IMPORTED_MODULE_10__.VERSION, false);
85792
+
85365
85793
  const resolvedOptions = {
85366
85794
  ...fetchOptions,
85367
85795
  signal: composedSignal,
85368
85796
  method: method.toUpperCase(),
85369
- headers: headers.normalize().toJSON(),
85797
+ headers: (0,_helpers_sanitizeHeaderValue_js__WEBPACK_IMPORTED_MODULE_11__.toByteStringHeaderObject)(headers.normalize()),
85370
85798
  body: data,
85371
85799
  duplex: 'half',
85372
85800
  credentials: isCredentialsSupported ? withCredentials : undefined,
@@ -85378,10 +85806,28 @@ const factory = (env) => {
85378
85806
  ? _fetch(request, fetchOptions)
85379
85807
  : _fetch(url, resolvedOptions));
85380
85808
 
85809
+ // Cheap pre-check: if the server honestly declares a content-length that
85810
+ // already exceeds the cap, reject before we start streaming.
85811
+ if (hasMaxContentLength) {
85812
+ const declaredLength = _utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].toFiniteNumber(response.headers.get('content-length'));
85813
+ if (declaredLength != null && declaredLength > maxContentLength) {
85814
+ throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"](
85815
+ 'maxContentLength size of ' + maxContentLength + ' exceeded',
85816
+ _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"].ERR_BAD_RESPONSE,
85817
+ config,
85818
+ request
85819
+ );
85820
+ }
85821
+ }
85822
+
85381
85823
  const isStreamResponse =
85382
85824
  supportsResponseStream && (responseType === 'stream' || responseType === 'response');
85383
85825
 
85384
- if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {
85826
+ if (
85827
+ supportsResponseStream &&
85828
+ response.body &&
85829
+ (onDownloadProgress || hasMaxContentLength || (isStreamResponse && unsubscribe))
85830
+ ) {
85385
85831
  const options = {};
85386
85832
 
85387
85833
  ['status', 'statusText', 'headers'].forEach((prop) => {
@@ -85398,8 +85844,24 @@ const factory = (env) => {
85398
85844
  )) ||
85399
85845
  [];
85400
85846
 
85847
+ let bytesRead = 0;
85848
+ const onChunkProgress = (loadedBytes) => {
85849
+ if (hasMaxContentLength) {
85850
+ bytesRead = loadedBytes;
85851
+ if (bytesRead > maxContentLength) {
85852
+ throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"](
85853
+ 'maxContentLength size of ' + maxContentLength + ' exceeded',
85854
+ _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"].ERR_BAD_RESPONSE,
85855
+ config,
85856
+ request
85857
+ );
85858
+ }
85859
+ }
85860
+ onProgress && onProgress(loadedBytes);
85861
+ };
85862
+
85401
85863
  response = new Response(
85402
- (0,_helpers_trackStream_js__WEBPACK_IMPORTED_MODULE_4__.trackStream)(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
85864
+ (0,_helpers_trackStream_js__WEBPACK_IMPORTED_MODULE_4__.trackStream)(response.body, DEFAULT_CHUNK_SIZE, onChunkProgress, () => {
85403
85865
  flush && flush();
85404
85866
  unsubscribe && unsubscribe();
85405
85867
  }),
@@ -85414,6 +85876,33 @@ const factory = (env) => {
85414
85876
  config
85415
85877
  );
85416
85878
 
85879
+ // Fallback enforcement for environments without ReadableStream support
85880
+ // (legacy runtimes). Detect materialized size from typed output; skip
85881
+ // streams/Response passthrough since the user will read those themselves.
85882
+ if (hasMaxContentLength && !supportsResponseStream && !isStreamResponse) {
85883
+ let materializedSize;
85884
+ if (responseData != null) {
85885
+ if (typeof responseData.byteLength === 'number') {
85886
+ materializedSize = responseData.byteLength;
85887
+ } else if (typeof responseData.size === 'number') {
85888
+ materializedSize = responseData.size;
85889
+ } else if (typeof responseData === 'string') {
85890
+ materializedSize =
85891
+ typeof TextEncoder === 'function'
85892
+ ? new TextEncoder().encode(responseData).byteLength
85893
+ : responseData.length;
85894
+ }
85895
+ }
85896
+ if (typeof materializedSize === 'number' && materializedSize > maxContentLength) {
85897
+ throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"](
85898
+ 'maxContentLength size of ' + maxContentLength + ' exceeded',
85899
+ _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"].ERR_BAD_RESPONSE,
85900
+ config,
85901
+ request
85902
+ );
85903
+ }
85904
+ }
85905
+
85417
85906
  !isStreamResponse && unsubscribe && unsubscribe();
85418
85907
 
85419
85908
  return await new Promise((resolve, reject) => {
@@ -85429,6 +85918,17 @@ const factory = (env) => {
85429
85918
  } catch (err) {
85430
85919
  unsubscribe && unsubscribe();
85431
85920
 
85921
+ // Safari can surface fetch aborts as a DOMException-like object whose
85922
+ // branded getters throw. Prefer our composed signal reason before reading
85923
+ // the caught error, preserving timeout vs cancellation semantics.
85924
+ if (composedSignal && composedSignal.aborted && composedSignal.reason instanceof _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"]) {
85925
+ const canceledError = composedSignal.reason;
85926
+ canceledError.config = config;
85927
+ request && (canceledError.request = request);
85928
+ err !== canceledError && (canceledError.cause = err);
85929
+ throw canceledError;
85930
+ }
85931
+
85432
85932
  if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {
85433
85933
  throw Object.assign(
85434
85934
  new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__["default"](
@@ -85499,6 +85999,8 @@ __webpack_require__.r(__webpack_exports__);
85499
85999
  /* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(11495);
85500
86000
  /* harmony import */ var _helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(42970);
85501
86001
  /* harmony import */ var _helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(38691);
86002
+ /* harmony import */ var _helpers_sanitizeHeaderValue_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(17706);
86003
+
85502
86004
 
85503
86005
 
85504
86006
 
@@ -85592,7 +86094,7 @@ const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
85592
86094
  // will return status as 0 even though it's a successful request
85593
86095
  if (
85594
86096
  request.status === 0 &&
85595
- !(request.responseURL && request.responseURL.indexOf('file:') === 0)
86097
+ !(request.responseURL && request.responseURL.startsWith('file:'))
85596
86098
  ) {
85597
86099
  return;
85598
86100
  }
@@ -85609,6 +86111,7 @@ const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
85609
86111
  }
85610
86112
 
85611
86113
  reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__["default"]('Request aborted', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__["default"].ECONNABORTED, config, request));
86114
+ done();
85612
86115
 
85613
86116
  // Clean up request
85614
86117
  request = null;
@@ -85624,6 +86127,7 @@ const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
85624
86127
  // attach the underlying event for consumers who want details
85625
86128
  err.event = event || null;
85626
86129
  reject(err);
86130
+ done();
85627
86131
  request = null;
85628
86132
  };
85629
86133
 
@@ -85644,6 +86148,7 @@ const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
85644
86148
  request
85645
86149
  )
85646
86150
  );
86151
+ done();
85647
86152
 
85648
86153
  // Clean up request
85649
86154
  request = null;
@@ -85654,7 +86159,7 @@ const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
85654
86159
 
85655
86160
  // Add headers to the request
85656
86161
  if ('setRequestHeader' in request) {
85657
- _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
86162
+ _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach((0,_helpers_sanitizeHeaderValue_js__WEBPACK_IMPORTED_MODULE_10__.toByteStringHeaderObject)(requestHeaders), function setRequestHeader(val, key) {
85658
86163
  request.setRequestHeader(key, val);
85659
86164
  });
85660
86165
  }
@@ -85693,6 +86198,7 @@ const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
85693
86198
  }
85694
86199
  reject(!cancel || cancel.type ? new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_4__["default"](null, config, request) : cancel);
85695
86200
  request.abort();
86201
+ done();
85696
86202
  request = null;
85697
86203
  };
85698
86204
 
@@ -85706,7 +86212,7 @@ const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
85706
86212
 
85707
86213
  const protocol = (0,_helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_config.url);
85708
86214
 
85709
- if (protocol && _platform_index_js__WEBPACK_IMPORTED_MODULE_6__["default"].protocols.indexOf(protocol) === -1) {
86215
+ if (protocol && !_platform_index_js__WEBPACK_IMPORTED_MODULE_6__["default"].protocols.includes(protocol)) {
85710
86216
  reject(
85711
86217
  new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__["default"](
85712
86218
  'Unsupported protocol ' + protocol + ':',
@@ -86210,7 +86716,7 @@ class Axios {
86210
86716
  let contextHeaders = headers && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge(headers.common, headers[config.method]);
86211
86717
 
86212
86718
  headers &&
86213
- _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {
86719
+ _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'query', 'common'], (method) => {
86214
86720
  delete headers[method];
86215
86721
  });
86216
86722
 
@@ -86313,7 +86819,7 @@ _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'hea
86313
86819
  };
86314
86820
  });
86315
86821
 
86316
- _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
86822
+ _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['post', 'put', 'patch', 'query'], function forEachMethodWithData(method) {
86317
86823
  function generateHTTPMethod(isForm) {
86318
86824
  return function httpMethod(url, data, config) {
86319
86825
  return this.request(
@@ -86333,7 +86839,11 @@ _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['post', 'put', 'patch
86333
86839
 
86334
86840
  Axios.prototype[method] = generateHTTPMethod();
86335
86841
 
86336
- Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
86842
+ // QUERY is a safe/idempotent read method; multipart form bodies don't fit
86843
+ // its semantics, so no queryForm shorthand is generated.
86844
+ if (method !== 'query') {
86845
+ Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
86846
+ }
86337
86847
  });
86338
86848
 
86339
86849
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Axios);
@@ -86350,9 +86860,80 @@ __webpack_require__.r(__webpack_exports__);
86350
86860
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
86351
86861
  /* harmony export */ });
86352
86862
  /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56398);
86863
+ /* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11495);
86864
+
86865
+
86866
+
86867
+
86868
+
86869
+ const REDACTED = '[REDACTED ****]';
86870
+
86871
+ function hasOwnOrPrototypeToJSON(source) {
86872
+ if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProp(source, 'toJSON')) {
86873
+ return true;
86874
+ }
86875
+
86876
+ let prototype = Object.getPrototypeOf(source);
86877
+
86878
+ while (prototype && prototype !== Object.prototype) {
86879
+ if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProp(prototype, 'toJSON')) {
86880
+ return true;
86881
+ }
86882
+
86883
+ prototype = Object.getPrototypeOf(prototype);
86884
+ }
86885
+
86886
+ return false;
86887
+ }
86888
+
86889
+ // Build a plain-object snapshot of `config` and replace the value of any key
86890
+ // (case-insensitive) listed in `redactKeys` with REDACTED. Walks through arrays
86891
+ // and AxiosHeaders, and short-circuits on circular references.
86892
+ function redactConfig(config, redactKeys) {
86893
+ const lowerKeys = new Set(redactKeys.map((k) => String(k).toLowerCase()));
86894
+ const seen = [];
86895
+
86896
+ const visit = (source) => {
86897
+ if (source === null || typeof source !== 'object') return source;
86898
+ if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBuffer(source)) return source;
86899
+ if (seen.indexOf(source) !== -1) return undefined;
86900
+
86901
+ if (source instanceof _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__["default"]) {
86902
+ source = source.toJSON();
86903
+ }
86904
+
86905
+ seen.push(source);
86906
+
86907
+ let result;
86908
+ if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(source)) {
86909
+ result = [];
86910
+ source.forEach((v, i) => {
86911
+ const reducedValue = visit(v);
86912
+ if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(reducedValue)) {
86913
+ result[i] = reducedValue;
86914
+ }
86915
+ });
86916
+ } else {
86917
+ if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(source) && hasOwnOrPrototypeToJSON(source)) {
86918
+ seen.pop();
86919
+ return source;
86920
+ }
86353
86921
 
86922
+ result = Object.create(null);
86923
+ for (const [key, value] of Object.entries(source)) {
86924
+ const reducedValue = lowerKeys.has(key.toLowerCase()) ? REDACTED : visit(value);
86925
+ if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(reducedValue)) {
86926
+ result[key] = reducedValue;
86927
+ }
86928
+ }
86929
+ }
86354
86930
 
86931
+ seen.pop();
86932
+ return result;
86933
+ };
86355
86934
 
86935
+ return visit(config);
86936
+ }
86356
86937
 
86357
86938
  class AxiosError extends Error {
86358
86939
  static from(error, code, config, request, response, customProps) {
@@ -86387,6 +86968,9 @@ class AxiosError extends Error {
86387
86968
  // The native Error constructor sets message as non-enumerable,
86388
86969
  // but axios < v1.13.3 had it as enumerable
86389
86970
  Object.defineProperty(this, 'message', {
86971
+ // Null-proto descriptor so a polluted Object.prototype.get cannot turn
86972
+ // this data descriptor into an accessor descriptor on the way in.
86973
+ __proto__: null,
86390
86974
  value: message,
86391
86975
  enumerable: true,
86392
86976
  writable: true,
@@ -86405,6 +86989,17 @@ class AxiosError extends Error {
86405
86989
  }
86406
86990
 
86407
86991
  toJSON() {
86992
+ // Opt-in redaction: when the request config carries a `redact` array, the
86993
+ // value of any matching key (case-insensitive, at any depth) is replaced
86994
+ // with REDACTED in the serialized snapshot. Undefined or empty leaves the
86995
+ // existing serialization behavior unchanged.
86996
+ const config = this.config;
86997
+ const redactKeys = config && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProp(config, 'redact') ? config.redact : undefined;
86998
+ const serializedConfig =
86999
+ _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(redactKeys) && redactKeys.length > 0
87000
+ ? redactConfig(config, redactKeys)
87001
+ : _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toJSONObject(config);
87002
+
86408
87003
  return {
86409
87004
  // Standard
86410
87005
  message: this.message,
@@ -86418,7 +87013,7 @@ class AxiosError extends Error {
86418
87013
  columnNumber: this.columnNumber,
86419
87014
  stack: this.stack,
86420
87015
  // Axios
86421
- config: _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toJSONObject(this.config),
87016
+ config: serializedConfig,
86422
87017
  code: this.code,
86423
87018
  status: this.status,
86424
87019
  };
@@ -86430,6 +87025,7 @@ AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';
86430
87025
  AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';
86431
87026
  AxiosError.ECONNABORTED = 'ECONNABORTED';
86432
87027
  AxiosError.ETIMEDOUT = 'ETIMEDOUT';
87028
+ AxiosError.ECONNREFUSED = 'ECONNREFUSED';
86433
87029
  AxiosError.ERR_NETWORK = 'ERR_NETWORK';
86434
87030
  AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';
86435
87031
  AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';
@@ -86455,56 +87051,25 @@ __webpack_require__.r(__webpack_exports__);
86455
87051
  /* harmony export */ });
86456
87052
  /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56398);
86457
87053
  /* harmony import */ var _helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64578);
87054
+ /* harmony import */ var _helpers_sanitizeHeaderValue_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17706);
86458
87055
 
86459
87056
 
86460
87057
 
86461
87058
 
86462
87059
 
86463
- const $internals = Symbol('internals');
86464
-
86465
- const INVALID_HEADER_VALUE_CHARS_RE = /[^\x09\x20-\x7E\x80-\xFF]/g;
86466
87060
 
86467
- function trimSPorHTAB(str) {
86468
- let start = 0;
86469
- let end = str.length;
86470
-
86471
- while (start < end) {
86472
- const code = str.charCodeAt(start);
86473
-
86474
- if (code !== 0x09 && code !== 0x20) {
86475
- break;
86476
- }
86477
-
86478
- start += 1;
86479
- }
86480
-
86481
- while (end > start) {
86482
- const code = str.charCodeAt(end - 1);
86483
-
86484
- if (code !== 0x09 && code !== 0x20) {
86485
- break;
86486
- }
86487
-
86488
- end -= 1;
86489
- }
86490
-
86491
- return start === 0 && end === str.length ? str : str.slice(start, end);
86492
- }
87061
+ const $internals = Symbol('internals');
86493
87062
 
86494
87063
  function normalizeHeader(header) {
86495
87064
  return header && String(header).trim().toLowerCase();
86496
87065
  }
86497
87066
 
86498
- function sanitizeHeaderValue(str) {
86499
- return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));
86500
- }
86501
-
86502
87067
  function normalizeValue(value) {
86503
87068
  if (value === false || value == null) {
86504
87069
  return value;
86505
87070
  }
86506
87071
 
86507
- return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(String(value));
87072
+ return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value) ? value.map(normalizeValue) : (0,_helpers_sanitizeHeaderValue_js__WEBPACK_IMPORTED_MODULE_2__.sanitizeHeaderValue)(String(value));
86508
87073
  }
86509
87074
 
86510
87075
  function parseTokens(str) {
@@ -86555,6 +87120,9 @@ function buildAccessors(obj, header) {
86555
87120
 
86556
87121
  ['get', 'set', 'has'].forEach((methodName) => {
86557
87122
  Object.defineProperty(obj, methodName + accessorName, {
87123
+ // Null-proto descriptor so a polluted Object.prototype.get cannot turn
87124
+ // this data descriptor into an accessor descriptor on the way in.
87125
+ __proto__: null,
86558
87126
  value: function (arg1, arg2, arg3) {
86559
87127
  return this[methodName].call(this, header, arg1, arg2, arg3);
86560
87128
  },
@@ -87022,8 +87590,15 @@ function dispatchRequest(config) {
87022
87590
  function onAdapterResolution(response) {
87023
87591
  throwIfCancellationRequested(config);
87024
87592
 
87025
- // Transform response data
87026
- response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(config, config.transformResponse, response);
87593
+ // Expose the current response on config so that transformResponse can
87594
+ // attach it to any AxiosError it throws (e.g. on JSON parse failure).
87595
+ // We clean it up afterwards to avoid polluting the config object.
87596
+ config.response = response;
87597
+ try {
87598
+ response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(config, config.transformResponse, response);
87599
+ } finally {
87600
+ delete config.response;
87601
+ }
87027
87602
 
87028
87603
  response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__["default"].from(response.headers);
87029
87604
 
@@ -87035,11 +87610,16 @@ function dispatchRequest(config) {
87035
87610
 
87036
87611
  // Transform response data
87037
87612
  if (reason && reason.response) {
87038
- reason.response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(
87039
- config,
87040
- config.transformResponse,
87041
- reason.response
87042
- );
87613
+ config.response = reason.response;
87614
+ try {
87615
+ reason.response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(
87616
+ config,
87617
+ config.transformResponse,
87618
+ reason.response
87619
+ );
87620
+ } finally {
87621
+ delete config.response;
87622
+ }
87043
87623
  reason.response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__["default"].from(reason.response.headers);
87044
87624
  }
87045
87625
  }
@@ -87081,7 +87661,21 @@ const headersToObject = (thing) => (thing instanceof _AxiosHeaders_js__WEBPACK_I
87081
87661
  function mergeConfig(config1, config2) {
87082
87662
  // eslint-disable-next-line no-param-reassign
87083
87663
  config2 = config2 || {};
87084
- const config = {};
87664
+
87665
+ // Use a null-prototype object so that downstream reads such as `config.auth`
87666
+ // or `config.baseURL` cannot inherit polluted values from Object.prototype.
87667
+ // `hasOwnProperty` is restored as a non-enumerable own slot to preserve
87668
+ // ergonomics for user code that relies on it.
87669
+ const config = Object.create(null);
87670
+ Object.defineProperty(config, 'hasOwnProperty', {
87671
+ // Null-proto descriptor so a polluted Object.prototype.get cannot turn
87672
+ // this data descriptor into an accessor descriptor on the way in.
87673
+ __proto__: null,
87674
+ value: Object.prototype.hasOwnProperty,
87675
+ enumerable: false,
87676
+ writable: true,
87677
+ configurable: true,
87678
+ });
87085
87679
 
87086
87680
  function getMergedValue(target, source, prop, caseless) {
87087
87681
  if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(target) && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(source)) {
@@ -87154,6 +87748,7 @@ function mergeConfig(config1, config2) {
87154
87748
  httpsAgent: defaultToConfig2,
87155
87749
  cancelToken: defaultToConfig2,
87156
87750
  socketPath: defaultToConfig2,
87751
+ allowedSocketPaths: defaultToConfig2,
87157
87752
  responseEncoding: defaultToConfig2,
87158
87753
  validateStatus: mergeDirectKeys,
87159
87754
  headers: (a, b, prop) =>
@@ -87202,17 +87797,13 @@ function settle(resolve, reject, response) {
87202
87797
  if (!response.status || !validateStatus || validateStatus(response.status)) {
87203
87798
  resolve(response);
87204
87799
  } else {
87205
- reject(
87206
- new _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"](
87207
- 'Request failed with status code ' + response.status,
87208
- [_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_BAD_REQUEST, _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_BAD_RESPONSE][
87209
- Math.floor(response.status / 100) - 4
87210
- ],
87211
- response.config,
87212
- response.request,
87213
- response
87214
- )
87215
- );
87800
+ reject(new _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"](
87801
+ 'Request failed with status code ' + response.status,
87802
+ response.status >= 400 && response.status < 500 ? _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_BAD_REQUEST : _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_BAD_RESPONSE,
87803
+ response.config,
87804
+ response.request,
87805
+ response
87806
+ ));
87216
87807
  }
87217
87808
  }
87218
87809
 
@@ -87449,7 +88040,7 @@ const defaults = {
87449
88040
  },
87450
88041
  };
87451
88042
 
87452
- _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {
88043
+ _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'query'], (method) => {
87453
88044
  defaults.headers[method] = {};
87454
88045
  });
87455
88046
 
@@ -87486,7 +88077,7 @@ __webpack_require__.r(__webpack_exports__);
87486
88077
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
87487
88078
  /* harmony export */ VERSION: () => (/* binding */ VERSION)
87488
88079
  /* harmony export */ });
87489
- const VERSION = "1.15.1";
88080
+ const VERSION = "1.16.1";
87490
88081
 
87491
88082
  /***/ },
87492
88083
 
@@ -87685,7 +88276,8 @@ function bind(fn, thisArg) {
87685
88276
  "use strict";
87686
88277
  __webpack_require__.r(__webpack_exports__);
87687
88278
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
87688
- /* harmony export */ "default": () => (/* binding */ buildURL)
88279
+ /* harmony export */ "default": () => (/* binding */ buildURL),
88280
+ /* harmony export */ encode: () => (/* binding */ encode)
87689
88281
  /* harmony export */ });
87690
88282
  /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56398);
87691
88283
  /* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34056);
@@ -87802,54 +88394,55 @@ __webpack_require__.r(__webpack_exports__);
87802
88394
 
87803
88395
 
87804
88396
  const composeSignals = (signals, timeout) => {
87805
- const { length } = (signals = signals ? signals.filter(Boolean) : []);
87806
-
87807
- if (timeout || length) {
87808
- let controller = new AbortController();
87809
-
87810
- let aborted;
87811
-
87812
- const onabort = function (reason) {
87813
- if (!aborted) {
87814
- aborted = true;
87815
- unsubscribe();
87816
- const err = reason instanceof Error ? reason : this.reason;
87817
- controller.abort(
87818
- err instanceof _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]
87819
- ? err
87820
- : new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_0__["default"](err instanceof Error ? err.message : err)
87821
- );
87822
- }
87823
- };
88397
+ signals = signals ? signals.filter(Boolean) : [];
87824
88398
 
87825
- let timer =
87826
- timeout &&
87827
- setTimeout(() => {
87828
- timer = null;
87829
- onabort(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"](`timeout of ${timeout}ms exceeded`, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ETIMEDOUT));
87830
- }, timeout);
87831
-
87832
- const unsubscribe = () => {
87833
- if (signals) {
87834
- timer && clearTimeout(timer);
87835
- timer = null;
87836
- signals.forEach((signal) => {
87837
- signal.unsubscribe
87838
- ? signal.unsubscribe(onabort)
87839
- : signal.removeEventListener('abort', onabort);
87840
- });
87841
- signals = null;
87842
- }
87843
- };
88399
+ if (!timeout && !signals.length) {
88400
+ return;
88401
+ }
87844
88402
 
87845
- signals.forEach((signal) => signal.addEventListener('abort', onabort));
88403
+ const controller = new AbortController();
87846
88404
 
87847
- const { signal } = controller;
88405
+ let aborted = false;
87848
88406
 
87849
- signal.unsubscribe = () => _utils_js__WEBPACK_IMPORTED_MODULE_2__["default"].asap(unsubscribe);
88407
+ const onabort = function (reason) {
88408
+ if (!aborted) {
88409
+ aborted = true;
88410
+ unsubscribe();
88411
+ const err = reason instanceof Error ? reason : this.reason;
88412
+ controller.abort(
88413
+ err instanceof _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]
88414
+ ? err
88415
+ : new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_0__["default"](err instanceof Error ? err.message : err)
88416
+ );
88417
+ }
88418
+ };
87850
88419
 
87851
- return signal;
87852
- }
88420
+ let timer =
88421
+ timeout &&
88422
+ setTimeout(() => {
88423
+ timer = null;
88424
+ onabort(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"](`timeout of ${timeout}ms exceeded`, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ETIMEDOUT));
88425
+ }, timeout);
88426
+
88427
+ const unsubscribe = () => {
88428
+ if (!signals) { return; }
88429
+ timer && clearTimeout(timer);
88430
+ timer = null;
88431
+ signals.forEach((signal) => {
88432
+ signal.unsubscribe
88433
+ ? signal.unsubscribe(onabort)
88434
+ : signal.removeEventListener('abort', onabort);
88435
+ });
88436
+ signals = null;
88437
+ };
88438
+
88439
+ signals.forEach((signal) => signal.addEventListener('abort', onabort));
88440
+
88441
+ const { signal } = controller;
88442
+
88443
+ signal.unsubscribe = () => _utils_js__WEBPACK_IMPORTED_MODULE_2__["default"].asap(unsubscribe);
88444
+
88445
+ return signal;
87853
88446
  };
87854
88447
 
87855
88448
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (composeSignals);
@@ -87899,8 +88492,20 @@ __webpack_require__.r(__webpack_exports__);
87899
88492
 
87900
88493
  read(name) {
87901
88494
  if (typeof document === 'undefined') return null;
87902
- const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));
87903
- return match ? decodeURIComponent(match[1]) : null;
88495
+ // Match name=value by splitting on the semicolon separator instead of building a
88496
+ // RegExp from `name` — interpolating an unescaped string into a RegExp would let
88497
+ // metacharacters (e.g. `.+?` in an attacker-influenced cookie name) cause ReDoS or
88498
+ // match the wrong cookie. Browsers may serialize cookie pairs as either ";" or
88499
+ // "; ", so ignore optional whitespace before each cookie name.
88500
+ const cookies = document.cookie.split(';');
88501
+ for (let i = 0; i < cookies.length; i++) {
88502
+ const cookie = cookies[i].replace(/^\s+/, '');
88503
+ const eq = cookie.indexOf('=');
88504
+ if (eq !== -1 && cookie.slice(0, eq) === name) {
88505
+ return decodeURIComponent(cookie.slice(eq + 1));
88506
+ }
88507
+ }
88508
+ return null;
87904
88509
  },
87905
88510
 
87906
88511
  remove(name) {
@@ -87917,6 +88522,118 @@ __webpack_require__.r(__webpack_exports__);
87917
88522
  });
87918
88523
 
87919
88524
 
88525
+ /***/ },
88526
+
88527
+ /***/ 15663
88528
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
88529
+
88530
+ "use strict";
88531
+ __webpack_require__.r(__webpack_exports__);
88532
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
88533
+ /* harmony export */ "default": () => (/* binding */ estimateDataURLDecodedBytes)
88534
+ /* harmony export */ });
88535
+ /**
88536
+ * Estimate decoded byte length of a data:// URL *without* allocating large buffers.
88537
+ * - For base64: compute exact decoded size using length and padding;
88538
+ * handle %XX at the character-count level (no string allocation).
88539
+ * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound.
88540
+ *
88541
+ * @param {string} url
88542
+ * @returns {number}
88543
+ */
88544
+ function estimateDataURLDecodedBytes(url) {
88545
+ if (!url || typeof url !== 'string') return 0;
88546
+ if (!url.startsWith('data:')) return 0;
88547
+
88548
+ const comma = url.indexOf(',');
88549
+ if (comma < 0) return 0;
88550
+
88551
+ const meta = url.slice(5, comma);
88552
+ const body = url.slice(comma + 1);
88553
+ const isBase64 = /;base64/i.test(meta);
88554
+
88555
+ if (isBase64) {
88556
+ let effectiveLen = body.length;
88557
+ const len = body.length; // cache length
88558
+
88559
+ for (let i = 0; i < len; i++) {
88560
+ if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) {
88561
+ const a = body.charCodeAt(i + 1);
88562
+ const b = body.charCodeAt(i + 2);
88563
+ const isHex =
88564
+ ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) &&
88565
+ ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102));
88566
+
88567
+ if (isHex) {
88568
+ effectiveLen -= 2;
88569
+ i += 2;
88570
+ }
88571
+ }
88572
+ }
88573
+
88574
+ let pad = 0;
88575
+ let idx = len - 1;
88576
+
88577
+ const tailIsPct3D = (j) =>
88578
+ j >= 2 &&
88579
+ body.charCodeAt(j - 2) === 37 && // '%'
88580
+ body.charCodeAt(j - 1) === 51 && // '3'
88581
+ (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd'
88582
+
88583
+ if (idx >= 0) {
88584
+ if (body.charCodeAt(idx) === 61 /* '=' */) {
88585
+ pad++;
88586
+ idx--;
88587
+ } else if (tailIsPct3D(idx)) {
88588
+ pad++;
88589
+ idx -= 3;
88590
+ }
88591
+ }
88592
+
88593
+ if (pad === 1 && idx >= 0) {
88594
+ if (body.charCodeAt(idx) === 61 /* '=' */) {
88595
+ pad++;
88596
+ } else if (tailIsPct3D(idx)) {
88597
+ pad++;
88598
+ }
88599
+ }
88600
+
88601
+ const groups = Math.floor(effectiveLen / 4);
88602
+ const bytes = groups * 3 - (pad || 0);
88603
+ return bytes > 0 ? bytes : 0;
88604
+ }
88605
+
88606
+ if (typeof Buffer !== 'undefined' && typeof Buffer.byteLength === 'function') {
88607
+ return Buffer.byteLength(body, 'utf8');
88608
+ }
88609
+
88610
+ // Compute UTF-8 byte length directly from UTF-16 code units without allocating
88611
+ // a byte buffer (TextEncoder.encode would defeat the DoS guard on large bodies).
88612
+ // Using body.length here would undercount non-ASCII (e.g. '€' is 1 code unit
88613
+ // but 3 UTF-8 bytes).
88614
+ let bytes = 0;
88615
+ for (let i = 0, len = body.length; i < len; i++) {
88616
+ const c = body.charCodeAt(i);
88617
+ if (c < 0x80) {
88618
+ bytes += 1;
88619
+ } else if (c < 0x800) {
88620
+ bytes += 2;
88621
+ } else if (c >= 0xd800 && c <= 0xdbff && i + 1 < len) {
88622
+ const next = body.charCodeAt(i + 1);
88623
+ if (next >= 0xdc00 && next <= 0xdfff) {
88624
+ bytes += 4;
88625
+ i++;
88626
+ } else {
88627
+ bytes += 3;
88628
+ }
88629
+ } else {
88630
+ bytes += 3;
88631
+ }
88632
+ }
88633
+ return bytes;
88634
+ }
88635
+
88636
+
87920
88637
  /***/ },
87921
88638
 
87922
88639
  /***/ 3120
@@ -87998,7 +88715,7 @@ function formDataToJSON(formData) {
87998
88715
  return !isNumericKey;
87999
88716
  }
88000
88717
 
88001
- if (!target[name] || !_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(target[name])) {
88718
+ if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProp(target, name) || !_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(target[name])) {
88002
88719
  target[name] = [];
88003
88720
  }
88004
88721
 
@@ -88224,7 +88941,7 @@ __webpack_require__.r(__webpack_exports__);
88224
88941
 
88225
88942
 
88226
88943
  function parseProtocol(url) {
88227
- const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
88944
+ const match = /^([-+\w]{1,25}):(?:\/\/)?/.exec(url);
88228
88945
  return (match && match[1]) || '';
88229
88946
  }
88230
88947
 
@@ -88253,6 +88970,9 @@ const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
88253
88970
  const _speedometer = (0,_speedometer_js__WEBPACK_IMPORTED_MODULE_0__["default"])(50, 250);
88254
88971
 
88255
88972
  return (0,_throttle_js__WEBPACK_IMPORTED_MODULE_1__["default"])((e) => {
88973
+ if (!e || typeof e.loaded !== 'number') {
88974
+ return;
88975
+ }
88256
88976
  const rawLoaded = e.loaded;
88257
88977
  const total = e.lengthComputable ? e.total : undefined;
88258
88978
  const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;
@@ -88324,15 +89044,55 @@ __webpack_require__.r(__webpack_exports__);
88324
89044
 
88325
89045
 
88326
89046
 
89047
+ const FORM_DATA_CONTENT_HEADERS = ['content-type', 'content-length'];
89048
+
89049
+ function setFormDataHeaders(headers, formHeaders, policy) {
89050
+ if (policy !== 'content-only') {
89051
+ headers.set(formHeaders);
89052
+ return;
89053
+ }
89054
+
89055
+ Object.entries(formHeaders).forEach(([key, val]) => {
89056
+ if (FORM_DATA_CONTENT_HEADERS.includes(key.toLowerCase())) {
89057
+ headers.set(key, val);
89058
+ }
89059
+ });
89060
+ }
89061
+
89062
+ /**
89063
+ * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().
89064
+ * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.
89065
+ *
89066
+ * @param {string} str The string to encode
89067
+ *
89068
+ * @returns {string} UTF-8 bytes as a Latin-1 string
89069
+ */
89070
+ const encodeUTF8 = (str) =>
89071
+ encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>
89072
+ String.fromCharCode(parseInt(hex, 16))
89073
+ );
89074
+
88327
89075
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((config) => {
88328
89076
  const newConfig = (0,_core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_5__["default"])({}, config);
88329
89077
 
88330
- let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;
89078
+ // Read only own properties to prevent prototype pollution gadgets
89079
+ // (e.g. Object.prototype.baseURL = 'https://evil.com').
89080
+ const own = (key) => (_utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].hasOwnProp(newConfig, key) ? newConfig[key] : undefined);
89081
+
89082
+ const data = own('data');
89083
+ let withXSRFToken = own('withXSRFToken');
89084
+ const xsrfHeaderName = own('xsrfHeaderName');
89085
+ const xsrfCookieName = own('xsrfCookieName');
89086
+ let headers = own('headers');
89087
+ const auth = own('auth');
89088
+ const baseURL = own('baseURL');
89089
+ const allowAbsoluteUrls = own('allowAbsoluteUrls');
89090
+ const url = own('url');
88331
89091
 
88332
89092
  newConfig.headers = headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_6__["default"].from(headers);
88333
89093
 
88334
89094
  newConfig.url = (0,_buildURL_js__WEBPACK_IMPORTED_MODULE_7__["default"])(
88335
- (0,_core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_4__["default"])(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),
89095
+ (0,_core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_4__["default"])(baseURL, url, allowAbsoluteUrls),
88336
89096
  config.params,
88337
89097
  config.paramsSerializer
88338
89098
  );
@@ -88342,11 +89102,7 @@ __webpack_require__.r(__webpack_exports__);
88342
89102
  headers.set(
88343
89103
  'Authorization',
88344
89104
  'Basic ' +
88345
- btoa(
88346
- (auth.username || '') +
88347
- ':' +
88348
- (auth.password ? unescape(encodeURIComponent(auth.password)) : '')
88349
- )
89105
+ btoa((auth.username || '') + ':' + (auth.password ? encodeUTF8(auth.password) : ''))
88350
89106
  );
88351
89107
  }
88352
89108
 
@@ -88355,14 +89111,7 @@ __webpack_require__.r(__webpack_exports__);
88355
89111
  headers.setContentType(undefined); // browser handles it
88356
89112
  } else if (_utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].isFunction(data.getHeaders)) {
88357
89113
  // Node.js FormData (like form-data package)
88358
- const formHeaders = data.getHeaders();
88359
- // Only set safe headers to avoid overwriting security headers
88360
- const allowedHeaders = ['content-type', 'content-length'];
88361
- Object.entries(formHeaders).forEach(([key, val]) => {
88362
- if (allowedHeaders.includes(key.toLowerCase())) {
88363
- headers.set(key, val);
88364
- }
88365
- });
89114
+ setFormDataHeaders(headers, data.getHeaders(), own('formDataHeaderPolicy'));
88366
89115
  }
88367
89116
  }
88368
89117
 
@@ -88377,10 +89126,9 @@ __webpack_require__.r(__webpack_exports__);
88377
89126
 
88378
89127
  // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)
88379
89128
  // and misconfigurations (e.g. "false") from short-circuiting the same-origin check and leaking
88380
- // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c.
89129
+ // the XSRF token cross-origin.
88381
89130
  const shouldSendXSRF =
88382
- withXSRFToken === true ||
88383
- (withXSRFToken == null && (0,_isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_2__["default"])(newConfig.url));
89131
+ withXSRFToken === true || (withXSRFToken == null && (0,_isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_2__["default"])(newConfig.url));
88384
89132
 
88385
89133
  if (shouldSendXSRF) {
88386
89134
  const xsrfValue = xsrfHeaderName && xsrfCookieName && _cookies_js__WEBPACK_IMPORTED_MODULE_3__["default"].read(xsrfCookieName);
@@ -88396,6 +89144,81 @@ __webpack_require__.r(__webpack_exports__);
88396
89144
  (Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
88397
89145
 
88398
89146
 
89147
+ /***/ },
89148
+
89149
+ /***/ 17706
89150
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
89151
+
89152
+ "use strict";
89153
+ __webpack_require__.r(__webpack_exports__);
89154
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
89155
+ /* harmony export */ sanitizeByteStringHeaderValue: () => (/* binding */ sanitizeByteStringHeaderValue),
89156
+ /* harmony export */ sanitizeHeaderValue: () => (/* binding */ sanitizeHeaderValue),
89157
+ /* harmony export */ toByteStringHeaderObject: () => (/* binding */ toByteStringHeaderObject)
89158
+ /* harmony export */ });
89159
+ /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56398);
89160
+
89161
+
89162
+
89163
+
89164
+ function trimSPorHTAB(str) {
89165
+ let start = 0;
89166
+ let end = str.length;
89167
+
89168
+ while (start < end) {
89169
+ const code = str.charCodeAt(start);
89170
+
89171
+ if (code !== 0x09 && code !== 0x20) {
89172
+ break;
89173
+ }
89174
+
89175
+ start += 1;
89176
+ }
89177
+
89178
+ while (end > start) {
89179
+ const code = str.charCodeAt(end - 1);
89180
+
89181
+ if (code !== 0x09 && code !== 0x20) {
89182
+ break;
89183
+ }
89184
+
89185
+ end -= 1;
89186
+ }
89187
+
89188
+ return start === 0 && end === str.length ? str : str.slice(start, end);
89189
+ }
89190
+
89191
+ // The control-code ranges are intentional: header sanitization strips C0/DEL bytes.
89192
+ // eslint-disable-next-line no-control-regex
89193
+ const INVALID_UNICODE_HEADER_VALUE_CHARS = new RegExp('[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+', 'g');
89194
+ // eslint-disable-next-line no-control-regex
89195
+ const INVALID_BYTE_STRING_HEADER_VALUE_CHARS = new RegExp('[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+', 'g');
89196
+
89197
+ function sanitizeValue(value, invalidChars) {
89198
+ if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value)) {
89199
+ return value.map((item) => sanitizeValue(item, invalidChars));
89200
+ }
89201
+
89202
+ return trimSPorHTAB(String(value).replace(invalidChars, ''));
89203
+ }
89204
+
89205
+ const sanitizeHeaderValue = (value) =>
89206
+ sanitizeValue(value, INVALID_UNICODE_HEADER_VALUE_CHARS);
89207
+
89208
+ const sanitizeByteStringHeaderValue = (value) =>
89209
+ sanitizeValue(value, INVALID_BYTE_STRING_HEADER_VALUE_CHARS);
89210
+
89211
+ function toByteStringHeaderObject(headers) {
89212
+ const byteStringHeaders = Object.create(null);
89213
+
89214
+ _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(headers.toJSON(), (value, header) => {
89215
+ byteStringHeaders[header] = sanitizeByteStringHeaderValue(value);
89216
+ });
89217
+
89218
+ return byteStringHeaders;
89219
+ }
89220
+
89221
+
88399
89222
  /***/ },
88400
89223
 
88401
89224
  /***/ 5484
@@ -89060,7 +89883,9 @@ function assertOptions(options, schema, allowUnknown) {
89060
89883
  let i = keys.length;
89061
89884
  while (i-- > 0) {
89062
89885
  const opt = keys[i];
89063
- const validator = schema[opt];
89886
+ // Use hasOwnProperty so a polluted Object.prototype.<opt> cannot supply
89887
+ // a non-function validator and cause a TypeError.
89888
+ const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;
89064
89889
  if (validator) {
89065
89890
  const value = options[opt];
89066
89891
  const result = value === undefined || validator(value, opt, options);
@@ -89447,21 +90272,21 @@ const isFile = kindOfTest('File');
89447
90272
  * also have a `name` and `type` attribute to specify filename and content type
89448
90273
  *
89449
90274
  * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71
89450
- *
90275
+ *
89451
90276
  * @param {*} value The value to test
89452
- *
90277
+ *
89453
90278
  * @returns {boolean} True if value is a React Native Blob, otherwise false
89454
90279
  */
89455
90280
  const isReactNativeBlob = (value) => {
89456
90281
  return !!(value && typeof value.uri !== 'undefined');
89457
- }
90282
+ };
89458
90283
 
89459
90284
  /**
89460
90285
  * Determine if environment is React Native
89461
90286
  * ReactNative `FormData` has a non-standard `getParts()` method
89462
- *
90287
+ *
89463
90288
  * @param {*} formData The formData to test
89464
- *
90289
+ *
89465
90290
  * @returns {boolean} True if environment is React Native, otherwise false
89466
90291
  */
89467
90292
  const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';
@@ -89480,7 +90305,7 @@ const isBlob = kindOfTest('Blob');
89480
90305
  *
89481
90306
  * @param {*} val The value to test
89482
90307
  *
89483
- * @returns {boolean} True if value is a File, otherwise false
90308
+ * @returns {boolean} True if value is a FileList, otherwise false
89484
90309
  */
89485
90310
  const isFileList = kindOfTest('FileList');
89486
90311
 
@@ -89514,14 +90339,16 @@ const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;
89514
90339
  const isFormData = (thing) => {
89515
90340
  if (!thing) return false;
89516
90341
  if (FormDataCtor && thing instanceof FormDataCtor) return true;
89517
- // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9).
90342
+ // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData.
89518
90343
  const proto = getPrototypeOf(thing);
89519
90344
  if (!proto || proto === Object.prototype) return false;
89520
90345
  if (!isFunction(thing.append)) return false;
89521
90346
  const kind = kindOf(thing);
89522
- return kind === 'formdata' ||
90347
+ return (
90348
+ kind === 'formdata' ||
89523
90349
  // detect form-data instance
89524
- (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]');
90350
+ (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')
90351
+ );
89525
90352
  };
89526
90353
 
89527
90354
  /**
@@ -89656,7 +90483,7 @@ const isContextDefined = (context) => !isUndefined(context) && context !== _glob
89656
90483
  *
89657
90484
  * @returns {Object} Result of all merge properties
89658
90485
  */
89659
- function merge(/* obj1, obj2, obj3, ... */) {
90486
+ function merge(...objs) {
89660
90487
  const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};
89661
90488
  const result = {};
89662
90489
  const assignValue = (val, key) => {
@@ -89666,8 +90493,12 @@ function merge(/* obj1, obj2, obj3, ... */) {
89666
90493
  }
89667
90494
 
89668
90495
  const targetKey = (caseless && findKey(result, key)) || key;
89669
- if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
89670
- result[targetKey] = merge(result[targetKey], val);
90496
+ // Read via own-prop only — a bare `result[targetKey]` walks the prototype
90497
+ // chain, so a polluted Object.prototype value could surface here and get
90498
+ // copied into the merged result.
90499
+ const existing = hasOwnProperty(result, targetKey) ? result[targetKey] : undefined;
90500
+ if (isPlainObject(existing) && isPlainObject(val)) {
90501
+ result[targetKey] = merge(existing, val);
89671
90502
  } else if (isPlainObject(val)) {
89672
90503
  result[targetKey] = merge({}, val);
89673
90504
  } else if (isArray(val)) {
@@ -89677,8 +90508,8 @@ function merge(/* obj1, obj2, obj3, ... */) {
89677
90508
  }
89678
90509
  };
89679
90510
 
89680
- for (let i = 0, l = arguments.length; i < l; i++) {
89681
- arguments[i] && forEach(arguments[i], assignValue);
90511
+ for (let i = 0, l = objs.length; i < l; i++) {
90512
+ objs[i] && forEach(objs[i], assignValue);
89682
90513
  }
89683
90514
  return result;
89684
90515
  }
@@ -89700,6 +90531,9 @@ const extend = (a, b, thisArg, { allOwnKeys } = {}) => {
89700
90531
  (val, key) => {
89701
90532
  if (thisArg && isFunction(val)) {
89702
90533
  Object.defineProperty(a, key, {
90534
+ // Null-proto descriptor so a polluted Object.prototype.get cannot
90535
+ // hijack defineProperty's accessor-vs-data resolution.
90536
+ __proto__: null,
89703
90537
  value: (0,_helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__["default"])(val, thisArg),
89704
90538
  writable: true,
89705
90539
  enumerable: true,
@@ -89707,6 +90541,7 @@ const extend = (a, b, thisArg, { allOwnKeys } = {}) => {
89707
90541
  });
89708
90542
  } else {
89709
90543
  Object.defineProperty(a, key, {
90544
+ __proto__: null,
89710
90545
  value: val,
89711
90546
  writable: true,
89712
90547
  enumerable: true,
@@ -89745,12 +90580,14 @@ const stripBOM = (content) => {
89745
90580
  const inherits = (constructor, superConstructor, props, descriptors) => {
89746
90581
  constructor.prototype = Object.create(superConstructor.prototype, descriptors);
89747
90582
  Object.defineProperty(constructor.prototype, 'constructor', {
90583
+ __proto__: null,
89748
90584
  value: constructor,
89749
90585
  writable: true,
89750
90586
  enumerable: false,
89751
90587
  configurable: true,
89752
90588
  });
89753
90589
  Object.defineProperty(constructor, 'super', {
90590
+ __proto__: null,
89754
90591
  value: superConstructor.prototype,
89755
90592
  });
89756
90593
  props && Object.assign(constructor.prototype, props);
@@ -89932,7 +90769,7 @@ const reduceDescriptors = (obj, reducer) => {
89932
90769
  const freezeMethods = (obj) => {
89933
90770
  reduceDescriptors(obj, (descriptor, name) => {
89934
90771
  // skip restricted props in strict mode
89935
- if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
90772
+ if (isFunction(obj) && ['arguments', 'caller', 'callee'].includes(name)) {
89936
90773
  return false;
89937
90774
  }
89938
90775
 
@@ -90006,11 +90843,11 @@ function isSpecCompliantForm(thing) {
90006
90843
  * @returns {Object} The JSON-compatible object.
90007
90844
  */
90008
90845
  const toJSONObject = (obj) => {
90009
- const stack = new Array(10);
90846
+ const visited = new WeakSet();
90010
90847
 
90011
- const visit = (source, i) => {
90848
+ const visit = (source) => {
90012
90849
  if (isObject(source)) {
90013
- if (stack.indexOf(source) >= 0) {
90850
+ if (visited.has(source)) {
90014
90851
  return;
90015
90852
  }
90016
90853
 
@@ -90020,15 +90857,16 @@ const toJSONObject = (obj) => {
90020
90857
  }
90021
90858
 
90022
90859
  if (!('toJSON' in source)) {
90023
- stack[i] = source;
90860
+ // add-on descent / delete-on-ascent: preserves path semantics, so DAG nodes serialise at every occurrence (see #7230).
90861
+ visited.add(source);
90024
90862
  const target = isArray(source) ? [] : {};
90025
90863
 
90026
90864
  forEach(source, (value, key) => {
90027
- const reducedValue = visit(value, i + 1);
90865
+ const reducedValue = visit(value);
90028
90866
  !isUndefined(reducedValue) && (target[key] = reducedValue);
90029
90867
  });
90030
90868
 
90031
- stack[i] = undefined;
90869
+ visited.delete(source);
90032
90870
 
90033
90871
  return target;
90034
90872
  }
@@ -90037,7 +90875,7 @@ const toJSONObject = (obj) => {
90037
90875
  return source;
90038
90876
  };
90039
90877
 
90040
- return visit(obj, 0);
90878
+ return visit(obj);
90041
90879
  };
90042
90880
 
90043
90881
  /**
@@ -101190,20 +102028,28 @@ var __webpack_exports__ = {};
101190
102028
  "use strict";
101191
102029
  __webpack_require__.r(__webpack_exports__);
101192
102030
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
101193
- /* harmony export */ OverlayError: () => (/* reexport safe */ _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_4__["default"]),
102031
+ /* harmony export */ OverlayError: () => (/* reexport safe */ _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_7__["default"]),
101194
102032
  /* harmony export */ applyActionApiDOM: () => (/* reexport safe */ _apply_realms_apidom_ts__WEBPACK_IMPORTED_MODULE_0__.applyAction),
101195
102033
  /* harmony export */ applyActionPOJO: () => (/* reexport safe */ _apply_realms_pojo_ts__WEBPACK_IMPORTED_MODULE_2__.applyAction),
101196
102034
  /* harmony export */ applyOverlay: () => (/* reexport safe */ _apply_realms_uri_ts__WEBPACK_IMPORTED_MODULE_1__["default"]),
101197
102035
  /* harmony export */ applyOverlayApiDOM: () => (/* reexport safe */ _apply_realms_apidom_ts__WEBPACK_IMPORTED_MODULE_0__.applyOverlay),
101198
102036
  /* harmony export */ applyOverlayPOJO: () => (/* reexport safe */ _apply_realms_pojo_ts__WEBPACK_IMPORTED_MODULE_2__.applyOverlay),
101199
102037
  /* harmony export */ defaultApplyOverlayOptions: () => (/* reexport safe */ _apply_realms_uri_ts__WEBPACK_IMPORTED_MODULE_1__.defaultOptions),
101200
- /* harmony export */ validateAction: () => (/* reexport safe */ _validate_ts__WEBPACK_IMPORTED_MODULE_3__.validateAction)
102038
+ /* harmony export */ defaultDiffOverlayOptions: () => (/* reexport safe */ _diff_index_ts__WEBPACK_IMPORTED_MODULE_5__.defaultOptions),
102039
+ /* harmony export */ diffApiDOM: () => (/* reexport safe */ _diff_index_ts__WEBPACK_IMPORTED_MODULE_3__.diff),
102040
+ /* harmony export */ diffOverlay: () => (/* reexport safe */ _diff_index_ts__WEBPACK_IMPORTED_MODULE_5__["default"]),
102041
+ /* harmony export */ diffPOJO: () => (/* reexport safe */ _diff_index_ts__WEBPACK_IMPORTED_MODULE_4__.diff),
102042
+ /* harmony export */ validateAction: () => (/* reexport safe */ _validate_ts__WEBPACK_IMPORTED_MODULE_6__.validateAction)
101201
102043
  /* harmony export */ });
101202
102044
  /* harmony import */ var _apply_realms_apidom_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28216);
101203
102045
  /* harmony import */ var _apply_realms_uri_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42768);
101204
102046
  /* harmony import */ var _apply_realms_pojo_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83942);
101205
- /* harmony import */ var _validate_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24338);
101206
- /* harmony import */ var _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18436);
102047
+ /* harmony import */ var _diff_index_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15145);
102048
+ /* harmony import */ var _diff_index_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(72587);
102049
+ /* harmony import */ var _diff_index_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8423);
102050
+ /* harmony import */ var _validate_ts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(24338);
102051
+ /* harmony import */ var _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(18436);
102052
+
101207
102053
 
101208
102054
 
101209
102055