react-server-dom-webpack 19.0.2 → 19.0.4

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.
@@ -1458,6 +1458,13 @@
1458
1458
  value
1459
1459
  ) {
1460
1460
  task.model = value;
1461
+ parentPropertyName === __PROTO__$1 &&
1462
+ callWithDebugContextInDEV(request, task, function () {
1463
+ console.error(
1464
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
1465
+ describeObjectForErrorMessage(parent, parentPropertyName)
1466
+ );
1467
+ });
1461
1468
  if (value === REACT_ELEMENT_TYPE) return "$";
1462
1469
  if (null === value) return null;
1463
1470
  if ("object" === typeof value) {
@@ -1628,7 +1635,7 @@
1628
1635
  if (value instanceof Date) return "$D" + value.toJSON();
1629
1636
  elementReference = getPrototypeOf(value);
1630
1637
  if (
1631
- elementReference !== ObjectPrototype &&
1638
+ elementReference !== ObjectPrototype$1 &&
1632
1639
  (null === elementReference ||
1633
1640
  null !== getPrototypeOf(elementReference))
1634
1641
  )
@@ -2515,12 +2522,12 @@
2515
2522
  this.value = value;
2516
2523
  this.reason = reason;
2517
2524
  }
2518
- function wakeChunk(response, listeners, value) {
2525
+ function wakeChunk(response, listeners, value, chunk) {
2519
2526
  for (var i = 0; i < listeners.length; i++) {
2520
2527
  var listener = listeners[i];
2521
2528
  "function" === typeof listener
2522
2529
  ? listener(value)
2523
- : fulfillReference(response, listener, value);
2530
+ : fulfillReference(response, listener, value, chunk.reason);
2524
2531
  }
2525
2532
  }
2526
2533
  function rejectChunk(response, listeners, error) {
@@ -2531,27 +2538,6 @@
2531
2538
  : rejectReference(response, listener.handler, error);
2532
2539
  }
2533
2540
  }
2534
- function resolveBlockedCycle(resolvedChunk, reference) {
2535
- var referencedChunk = reference.handler.chunk;
2536
- if (null === referencedChunk) return null;
2537
- if (referencedChunk === resolvedChunk) return reference.handler;
2538
- reference = referencedChunk.value;
2539
- if (null !== reference)
2540
- for (
2541
- referencedChunk = 0;
2542
- referencedChunk < reference.length;
2543
- referencedChunk++
2544
- ) {
2545
- var listener = reference[referencedChunk];
2546
- if (
2547
- "function" !== typeof listener &&
2548
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2549
- null !== listener)
2550
- )
2551
- return listener;
2552
- }
2553
- return null;
2554
- }
2555
2541
  function triggerErrorOnChunk(response, chunk, error) {
2556
2542
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2557
2543
  chunk.reason.error(error);
@@ -2575,57 +2561,25 @@
2575
2561
  chunk.value = value;
2576
2562
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
2577
2563
  if (null !== resolveListeners)
2578
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2564
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2579
2565
  case "fulfilled":
2580
- wakeChunk(response, resolveListeners, chunk.value);
2566
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2581
2567
  break;
2582
2568
  case "blocked":
2583
- for (value = 0; value < resolveListeners.length; value++)
2584
- if (
2585
- ((id = resolveListeners[value]), "function" !== typeof id)
2586
- ) {
2587
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2588
- if (null !== cyclicHandler)
2589
- switch (
2590
- (fulfillReference(response, id, cyclicHandler.value),
2591
- resolveListeners.splice(value, 1),
2592
- value--,
2593
- null !== rejectListeners &&
2594
- ((id = rejectListeners.indexOf(id)),
2595
- -1 !== id && rejectListeners.splice(id, 1)),
2596
- chunk.status)
2597
- ) {
2598
- case "fulfilled":
2599
- wakeChunk(response, resolveListeners, chunk.value);
2600
- break a;
2601
- case "rejected":
2602
- null !== rejectListeners &&
2603
- rejectChunk(response, rejectListeners, chunk.reason);
2604
- break a;
2605
- }
2606
- }
2607
2569
  case "pending":
2608
2570
  if (chunk.value)
2609
- for (
2610
- response = 0;
2611
- response < resolveListeners.length;
2612
- response++
2613
- )
2614
- chunk.value.push(resolveListeners[response]);
2571
+ for (value = 0; value < resolveListeners.length; value++)
2572
+ chunk.value.push(resolveListeners[value]);
2615
2573
  else chunk.value = resolveListeners;
2616
2574
  if (chunk.reason) {
2617
2575
  if (rejectListeners)
2618
- for (
2619
- resolveListeners = 0;
2620
- resolveListeners < rejectListeners.length;
2621
- resolveListeners++
2622
- )
2623
- chunk.reason.push(rejectListeners[resolveListeners]);
2576
+ for (value = 0; value < rejectListeners.length; value++)
2577
+ chunk.reason.push(rejectListeners[value]);
2624
2578
  } else chunk.reason = rejectListeners;
2625
2579
  break;
2626
2580
  case "rejected":
2627
2581
  rejectListeners &&
2628
- wakeChunk(response, rejectListeners, chunk.reason);
2582
+ rejectChunk(response, rejectListeners, chunk.reason);
2629
2583
  }
2630
2584
  }
2631
2585
  }
@@ -2649,15 +2603,51 @@
2649
2603
  );
2650
2604
  }
2651
2605
  function loadServerReference$1(response, metaData, parentObject, key) {
2606
+ function reject(error) {
2607
+ var rejectListeners = blockedPromise.reason,
2608
+ erroredPromise = blockedPromise;
2609
+ erroredPromise.status = "rejected";
2610
+ erroredPromise.value = null;
2611
+ erroredPromise.reason = error;
2612
+ null !== rejectListeners &&
2613
+ rejectChunk(response, rejectListeners, error);
2614
+ rejectReference(response, handler, error);
2615
+ }
2652
2616
  var id = metaData.id;
2653
2617
  if ("string" !== typeof id || "then" === key) return null;
2618
+ var cachedPromise = metaData.$$promise;
2619
+ if (void 0 !== cachedPromise) {
2620
+ if ("fulfilled" === cachedPromise.status)
2621
+ return (
2622
+ (cachedPromise = cachedPromise.value),
2623
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2624
+ );
2625
+ initializingHandler
2626
+ ? ((id = initializingHandler), id.deps++)
2627
+ : (id = initializingHandler =
2628
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2629
+ cachedPromise.then(
2630
+ resolveReference.bind(null, response, id, parentObject, key),
2631
+ rejectReference.bind(null, response, id)
2632
+ );
2633
+ return null;
2634
+ }
2635
+ var blockedPromise = new ReactPromise("blocked", null, null);
2636
+ metaData.$$promise = blockedPromise;
2654
2637
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2655
- id = metaData.bound;
2656
- var promise = preloadModule(serverReference);
2657
- if (promise)
2658
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2659
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2660
- else return requireModule(serverReference);
2638
+ cachedPromise = metaData.bound;
2639
+ if ((id = preloadModule(serverReference)))
2640
+ cachedPromise instanceof ReactPromise &&
2641
+ (id = Promise.all([id, cachedPromise]));
2642
+ else if (cachedPromise instanceof ReactPromise)
2643
+ id = Promise.resolve(cachedPromise);
2644
+ else
2645
+ return (
2646
+ (cachedPromise = requireModule(serverReference)),
2647
+ (id = blockedPromise),
2648
+ (id.status = "fulfilled"),
2649
+ (id.value = cachedPromise)
2650
+ );
2661
2651
  if (initializingHandler) {
2662
2652
  var handler = initializingHandler;
2663
2653
  handler.deps++;
@@ -2669,93 +2659,107 @@
2669
2659
  deps: 1,
2670
2660
  errored: !1
2671
2661
  };
2672
- promise.then(
2673
- function () {
2674
- var resolvedValue = requireModule(serverReference);
2675
- if (metaData.bound) {
2676
- var promiseValue = metaData.bound.value;
2677
- promiseValue = Array.isArray(promiseValue)
2678
- ? promiseValue.slice(0)
2679
- : [];
2680
- promiseValue.unshift(null);
2681
- resolvedValue = resolvedValue.bind.apply(
2682
- resolvedValue,
2683
- promiseValue
2662
+ id.then(function () {
2663
+ var resolvedValue = requireModule(serverReference);
2664
+ if (metaData.bound) {
2665
+ var promiseValue = metaData.bound.value;
2666
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2667
+ if (promiseValue.length > MAX_BOUND_ARGS) {
2668
+ reject(
2669
+ Error(
2670
+ "Server Function has too many bound arguments. Received " +
2671
+ promiseValue.length +
2672
+ " but the limit is " +
2673
+ MAX_BOUND_ARGS +
2674
+ "."
2675
+ )
2684
2676
  );
2677
+ return;
2685
2678
  }
2686
- parentObject[key] = resolvedValue;
2687
- "" === key &&
2688
- null === handler.value &&
2689
- (handler.value = resolvedValue);
2690
- handler.deps--;
2691
- 0 === handler.deps &&
2692
- ((resolvedValue = handler.chunk),
2693
- null !== resolvedValue &&
2694
- "blocked" === resolvedValue.status &&
2695
- ((promiseValue = resolvedValue.value),
2696
- (resolvedValue.status = "fulfilled"),
2697
- (resolvedValue.value = handler.value),
2698
- (resolvedValue.reason = null),
2699
- null !== promiseValue &&
2700
- wakeChunk(response, promiseValue, handler.value)));
2701
- },
2702
- function (error) {
2703
- if (!handler.errored) {
2704
- handler.errored = !0;
2705
- handler.value = null;
2706
- handler.reason = error;
2707
- var chunk = handler.chunk;
2708
- null !== chunk &&
2709
- "blocked" === chunk.status &&
2710
- triggerErrorOnChunk(response, chunk, error);
2711
- }
2679
+ promiseValue.unshift(null);
2680
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2712
2681
  }
2713
- );
2682
+ promiseValue = blockedPromise.value;
2683
+ var initializedPromise = blockedPromise;
2684
+ initializedPromise.status = "fulfilled";
2685
+ initializedPromise.value = resolvedValue;
2686
+ initializedPromise.reason = null;
2687
+ null !== promiseValue &&
2688
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2689
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2690
+ }, reject);
2714
2691
  return null;
2715
2692
  }
2716
- function reviveModel(response, parentObj, parentKey, value, reference) {
2693
+ function reviveModel(
2694
+ response,
2695
+ parentObj,
2696
+ parentKey,
2697
+ value,
2698
+ reference,
2699
+ arrayRoot
2700
+ ) {
2717
2701
  if ("string" === typeof value)
2718
2702
  return parseModelString(
2719
2703
  response,
2720
2704
  parentObj,
2721
2705
  parentKey,
2722
2706
  value,
2723
- reference
2707
+ reference,
2708
+ arrayRoot
2724
2709
  );
2725
2710
  if ("object" === typeof value && null !== value)
2726
2711
  if (
2727
2712
  (void 0 !== reference &&
2728
2713
  void 0 !== response._temporaryReferences &&
2729
2714
  response._temporaryReferences.set(value, reference),
2730
- Array.isArray(value))
2731
- )
2732
- for (var i = 0; i < value.length; i++)
2733
- value[i] = reviveModel(
2715
+ isArrayImpl(value))
2716
+ ) {
2717
+ if (null === arrayRoot) {
2718
+ var childContext = { count: 0, fork: !1 };
2719
+ response._rootArrayContexts.set(value, childContext);
2720
+ } else childContext = arrayRoot;
2721
+ 1 < value.length && (childContext.fork = !0);
2722
+ bumpArrayCount(childContext, value.length + 1, response);
2723
+ for (parentObj = 0; parentObj < value.length; parentObj++)
2724
+ value[parentObj] = reviveModel(
2734
2725
  response,
2735
2726
  value,
2736
- "" + i,
2737
- value[i],
2738
- void 0 !== reference ? reference + ":" + i : void 0
2727
+ "" + parentObj,
2728
+ value[parentObj],
2729
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
2730
+ childContext
2739
2731
  );
2740
- else
2741
- for (i in value)
2742
- hasOwnProperty.call(value, i) &&
2743
- ((parentObj =
2744
- void 0 !== reference && -1 === i.indexOf(":")
2745
- ? reference + ":" + i
2746
- : void 0),
2747
- (parentObj = reviveModel(
2748
- response,
2749
- value,
2750
- i,
2751
- value[i],
2752
- parentObj
2753
- )),
2754
- void 0 !== parentObj || "__proto__" === i
2755
- ? (value[i] = parentObj)
2756
- : delete value[i]);
2732
+ } else
2733
+ for (childContext in value)
2734
+ hasOwnProperty.call(value, childContext) &&
2735
+ ("__proto__" === childContext
2736
+ ? delete value[childContext]
2737
+ : ((parentObj =
2738
+ void 0 !== reference && -1 === childContext.indexOf(":")
2739
+ ? reference + ":" + childContext
2740
+ : void 0),
2741
+ (parentObj = reviveModel(
2742
+ response,
2743
+ value,
2744
+ childContext,
2745
+ value[childContext],
2746
+ parentObj,
2747
+ null
2748
+ )),
2749
+ void 0 !== parentObj
2750
+ ? (value[childContext] = parentObj)
2751
+ : delete value[childContext]));
2757
2752
  return value;
2758
2753
  }
2754
+ function bumpArrayCount(arrayContext, slots, response) {
2755
+ if (
2756
+ (arrayContext.count += slots) > response._arraySizeLimit &&
2757
+ arrayContext.fork
2758
+ )
2759
+ throw Error(
2760
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
2761
+ );
2762
+ }
2759
2763
  function initializeModelChunk(chunk) {
2760
2764
  var prevHandler = initializingHandler;
2761
2765
  initializingHandler = null;
@@ -2769,13 +2773,15 @@
2769
2773
  chunk.value = null;
2770
2774
  chunk.reason = null;
2771
2775
  try {
2772
- var rawModel = JSON.parse(resolvedModel),
2773
- value = reviveModel(
2776
+ var rawModel = JSON.parse(resolvedModel);
2777
+ resolvedModel = { count: 0, fork: !1 };
2778
+ var value = reviveModel(
2774
2779
  response,
2775
2780
  { "": rawModel },
2776
2781
  "",
2777
2782
  rawModel,
2778
- _chunk$reason
2783
+ _chunk$reason,
2784
+ resolvedModel
2779
2785
  ),
2780
2786
  resolveListeners = chunk.value;
2781
2787
  if (null !== resolveListeners)
@@ -2787,19 +2793,20 @@
2787
2793
  var listener = resolveListeners[rawModel];
2788
2794
  "function" === typeof listener
2789
2795
  ? listener(value)
2790
- : fulfillReference(response, listener, value);
2796
+ : fulfillReference(response, listener, value, resolvedModel);
2791
2797
  }
2792
2798
  if (null !== initializingHandler) {
2793
2799
  if (initializingHandler.errored) throw initializingHandler.reason;
2794
2800
  if (0 < initializingHandler.deps) {
2795
2801
  initializingHandler.value = value;
2802
+ initializingHandler.reason = resolvedModel;
2796
2803
  initializingHandler.chunk = chunk;
2797
2804
  return;
2798
2805
  }
2799
2806
  }
2800
2807
  chunk.status = "fulfilled";
2801
2808
  chunk.value = value;
2802
- chunk.reason = null;
2809
+ chunk.reason = resolvedModel;
2803
2810
  } catch (error) {
2804
2811
  (chunk.status = "rejected"), (chunk.reason = error);
2805
2812
  } finally {
@@ -2812,7 +2819,8 @@
2812
2819
  ? triggerErrorOnChunk(response, chunk, error)
2813
2820
  : "fulfilled" === chunk.status &&
2814
2821
  null !== chunk.reason &&
2815
- chunk.reason.error(error);
2822
+ ((chunk = chunk.reason),
2823
+ "function" === typeof chunk.error && chunk.error(error));
2816
2824
  });
2817
2825
  }
2818
2826
  function getChunk(response, id) {
@@ -2831,40 +2839,74 @@
2831
2839
  chunks.set(id, chunk));
2832
2840
  return chunk;
2833
2841
  }
2834
- function fulfillReference(response, reference, value) {
2842
+ function fulfillReference(response, reference, value, arrayRoot) {
2835
2843
  var handler = reference.handler,
2836
2844
  parentObject = reference.parentObject,
2837
2845
  key = reference.key,
2838
2846
  map = reference.map,
2839
2847
  path = reference.path;
2840
2848
  try {
2841
- for (var i = 1; i < path.length; i++) {
2849
+ for (
2850
+ var localLength = 0,
2851
+ rootArrayContexts = response._rootArrayContexts,
2852
+ i = 1;
2853
+ i < path.length;
2854
+ i++
2855
+ ) {
2842
2856
  var name = path[i];
2843
2857
  if (
2844
2858
  "object" !== typeof value ||
2845
- !hasOwnProperty.call(value, name) ||
2846
- value instanceof Promise
2859
+ null === value ||
2860
+ (getPrototypeOf(value) !== ObjectPrototype &&
2861
+ getPrototypeOf(value) !== ArrayPrototype) ||
2862
+ !hasOwnProperty.call(value, name)
2847
2863
  )
2848
2864
  throw Error("Invalid reference.");
2849
2865
  value = value[name];
2866
+ if (isArrayImpl(value))
2867
+ (localLength = 0),
2868
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
2869
+ else if (((arrayRoot = null), "string" === typeof value))
2870
+ localLength = value.length;
2871
+ else if ("bigint" === typeof value) {
2872
+ var n = Math.abs(Number(value));
2873
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
2874
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
2850
2875
  }
2851
- var mappedValue = map(response, value, parentObject, key);
2852
- parentObject[key] = mappedValue;
2853
- "" === key && null === handler.value && (handler.value = mappedValue);
2876
+ var resolvedValue = map(response, value, parentObject, key);
2877
+ var referenceArrayRoot = reference.arrayRoot;
2878
+ null !== referenceArrayRoot &&
2879
+ (null !== arrayRoot
2880
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
2881
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
2882
+ : 0 < localLength &&
2883
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2854
2884
  } catch (error) {
2855
- rejectReference(response, reference.handler, error);
2885
+ rejectReference(response, handler, error);
2856
2886
  return;
2857
2887
  }
2888
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2889
+ }
2890
+ function resolveReference(
2891
+ response,
2892
+ handler,
2893
+ parentObject,
2894
+ key,
2895
+ resolvedValue
2896
+ ) {
2897
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
2898
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2858
2899
  handler.deps--;
2859
2900
  0 === handler.deps &&
2860
- ((reference = handler.chunk),
2861
- null !== reference &&
2862
- "blocked" === reference.status &&
2863
- ((value = reference.value),
2864
- (reference.status = "fulfilled"),
2865
- (reference.value = handler.value),
2866
- (reference.reason = handler.reason),
2867
- null !== value && wakeChunk(response, value, handler.value)));
2901
+ ((parentObject = handler.chunk),
2902
+ null !== parentObject &&
2903
+ "blocked" === parentObject.status &&
2904
+ ((key = parentObject.value),
2905
+ (parentObject.status = "fulfilled"),
2906
+ (parentObject.value = handler.value),
2907
+ (parentObject.reason = handler.reason),
2908
+ null !== key &&
2909
+ wakeChunk(response, key, handler.value, parentObject)));
2868
2910
  }
2869
2911
  function rejectReference(response, handler, error) {
2870
2912
  handler.errored ||
@@ -2876,29 +2918,66 @@
2876
2918
  "blocked" === handler.status &&
2877
2919
  triggerErrorOnChunk(response, handler, error));
2878
2920
  }
2879
- function getOutlinedModel(response, reference, parentObject, key, map) {
2921
+ function getOutlinedModel(
2922
+ response,
2923
+ reference,
2924
+ parentObject,
2925
+ key,
2926
+ referenceArrayRoot,
2927
+ map
2928
+ ) {
2880
2929
  reference = reference.split(":");
2881
- var id = parseInt(reference[0], 16);
2882
- id = getChunk(response, id);
2883
- switch (id.status) {
2930
+ var id = parseInt(reference[0], 16),
2931
+ chunk = getChunk(response, id);
2932
+ switch (chunk.status) {
2884
2933
  case "resolved_model":
2885
- initializeModelChunk(id);
2934
+ initializeModelChunk(chunk);
2886
2935
  }
2887
- switch (id.status) {
2936
+ switch (chunk.status) {
2888
2937
  case "fulfilled":
2889
- id = id.value;
2890
- for (var i = 1; i < reference.length; i++) {
2891
- var name = reference[i];
2938
+ id = chunk.value;
2939
+ chunk = chunk.reason;
2940
+ for (
2941
+ var localLength = 0,
2942
+ rootArrayContexts = response._rootArrayContexts,
2943
+ i = 1;
2944
+ i < reference.length;
2945
+ i++
2946
+ ) {
2947
+ localLength = reference[i];
2892
2948
  if (
2893
2949
  "object" !== typeof id ||
2894
- !hasOwnProperty.call(id, name) ||
2895
- id instanceof Promise
2950
+ null === id ||
2951
+ (getPrototypeOf(id) !== ObjectPrototype &&
2952
+ getPrototypeOf(id) !== ArrayPrototype) ||
2953
+ !hasOwnProperty.call(id, localLength)
2896
2954
  )
2897
2955
  throw Error("Invalid reference.");
2898
- id = id[name];
2956
+ id = id[localLength];
2957
+ isArrayImpl(id)
2958
+ ? ((localLength = 0),
2959
+ (chunk = rootArrayContexts.get(id) || chunk))
2960
+ : ((chunk = null),
2961
+ "string" === typeof id
2962
+ ? (localLength = id.length)
2963
+ : "bigint" === typeof id
2964
+ ? ((localLength = Math.abs(Number(id))),
2965
+ (localLength =
2966
+ 0 === localLength
2967
+ ? 1
2968
+ : Math.floor(Math.log10(localLength)) + 1))
2969
+ : (localLength = ArrayBuffer.isView(id)
2970
+ ? id.byteLength
2971
+ : 0));
2899
2972
  }
2900
- return map(response, id, parentObject, key);
2901
- case "pending":
2973
+ parentObject = map(response, id, parentObject, key);
2974
+ null !== referenceArrayRoot &&
2975
+ (null !== chunk
2976
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
2977
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
2978
+ : 0 < localLength &&
2979
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2980
+ return parentObject;
2902
2981
  case "blocked":
2903
2982
  return (
2904
2983
  initializingHandler
@@ -2911,31 +2990,34 @@
2911
2990
  deps: 1,
2912
2991
  errored: !1
2913
2992
  }),
2914
- (parentObject = {
2993
+ (referenceArrayRoot = {
2915
2994
  handler: response,
2916
2995
  parentObject: parentObject,
2917
2996
  key: key,
2918
2997
  map: map,
2919
- path: reference
2998
+ path: reference,
2999
+ arrayRoot: referenceArrayRoot
2920
3000
  }),
2921
- null === id.value
2922
- ? (id.value = [parentObject])
2923
- : id.value.push(parentObject),
2924
- null === id.reason
2925
- ? (id.reason = [parentObject])
2926
- : id.reason.push(parentObject),
3001
+ null === chunk.value
3002
+ ? (chunk.value = [referenceArrayRoot])
3003
+ : chunk.value.push(referenceArrayRoot),
3004
+ null === chunk.reason
3005
+ ? (chunk.reason = [referenceArrayRoot])
3006
+ : chunk.reason.push(referenceArrayRoot),
2927
3007
  null
2928
3008
  );
3009
+ case "pending":
3010
+ throw Error("Invalid forward reference.");
2929
3011
  default:
2930
3012
  return (
2931
3013
  initializingHandler
2932
3014
  ? ((initializingHandler.errored = !0),
2933
3015
  (initializingHandler.value = null),
2934
- (initializingHandler.reason = id.reason))
3016
+ (initializingHandler.reason = chunk.reason))
2935
3017
  : (initializingHandler = {
2936
3018
  chunk: null,
2937
3019
  value: null,
2938
- reason: id.reason,
3020
+ reason: chunk.reason,
2939
3021
  deps: 0,
2940
3022
  errored: !0
2941
3023
  }),
@@ -2944,13 +3026,25 @@
2944
3026
  }
2945
3027
  }
2946
3028
  function createMap(response, model) {
2947
- return new Map(model);
3029
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
3030
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
3031
+ response = new Map(model);
3032
+ model.$$consumed = !0;
3033
+ return response;
2948
3034
  }
2949
3035
  function createSet(response, model) {
2950
- return new Set(model);
3036
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
3037
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
3038
+ response = new Set(model);
3039
+ model.$$consumed = !0;
3040
+ return response;
2951
3041
  }
2952
3042
  function extractIterator(response, model) {
2953
- return model[Symbol.iterator]();
3043
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
3044
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
3045
+ response = model[Symbol.iterator]();
3046
+ model.$$consumed = !0;
3047
+ return response;
2954
3048
  }
2955
3049
  function createModel(response, model, parentObject, key) {
2956
3050
  return "then" === key && "function" === typeof model ? null : model;
@@ -2961,13 +3055,34 @@
2961
3055
  constructor,
2962
3056
  bytesPerElement,
2963
3057
  parentObject,
2964
- parentKey
3058
+ parentKey,
3059
+ referenceArrayRoot
2965
3060
  ) {
3061
+ function reject(error) {
3062
+ if (!handler.errored) {
3063
+ handler.errored = !0;
3064
+ handler.value = null;
3065
+ handler.reason = error;
3066
+ var chunk = handler.chunk;
3067
+ null !== chunk &&
3068
+ "blocked" === chunk.status &&
3069
+ triggerErrorOnChunk(response, chunk, error);
3070
+ }
3071
+ }
2966
3072
  reference = parseInt(reference.slice(2), 16);
2967
- bytesPerElement = response._prefix + reference;
2968
- if (response._chunks.has(reference))
3073
+ var key = response._prefix + reference;
3074
+ bytesPerElement = response._chunks;
3075
+ if (bytesPerElement.has(reference))
2969
3076
  throw Error("Already initialized typed array.");
2970
- reference = response._formData.get(bytesPerElement).arrayBuffer();
3077
+ bytesPerElement.set(
3078
+ reference,
3079
+ new ReactPromise(
3080
+ "rejected",
3081
+ null,
3082
+ Error("Already initialized typed array.")
3083
+ )
3084
+ );
3085
+ reference = response._formData.get(key).arrayBuffer();
2971
3086
  if (initializingHandler) {
2972
3087
  var handler = initializingHandler;
2973
3088
  handler.deps++;
@@ -2979,40 +3094,32 @@
2979
3094
  deps: 1,
2980
3095
  errored: !1
2981
3096
  };
2982
- reference.then(
2983
- function (buffer) {
2984
- buffer =
3097
+ reference.then(function (buffer) {
3098
+ try {
3099
+ null !== referenceArrayRoot &&
3100
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
3101
+ var resolvedValue =
2985
3102
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
2986
- parentObject[parentKey] = buffer;
3103
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
2987
3104
  "" === parentKey &&
2988
3105
  null === handler.value &&
2989
- (handler.value = buffer);
2990
- handler.deps--;
2991
- if (
2992
- 0 === handler.deps &&
2993
- ((buffer = handler.chunk),
2994
- null !== buffer && "blocked" === buffer.status)
2995
- ) {
2996
- var resolveListeners = buffer.value;
2997
- buffer.status = "fulfilled";
2998
- buffer.value = handler.value;
2999
- buffer.reason = null;
3000
- null !== resolveListeners &&
3001
- wakeChunk(response, resolveListeners, handler.value);
3002
- }
3003
- },
3004
- function (error) {
3005
- if (!handler.errored) {
3006
- handler.errored = !0;
3007
- handler.value = null;
3008
- handler.reason = error;
3009
- var chunk = handler.chunk;
3010
- null !== chunk &&
3011
- "blocked" === chunk.status &&
3012
- triggerErrorOnChunk(response, chunk, error);
3013
- }
3106
+ (handler.value = resolvedValue);
3107
+ } catch (x) {
3108
+ reject(x);
3109
+ return;
3014
3110
  }
3015
- );
3111
+ handler.deps--;
3112
+ 0 === handler.deps &&
3113
+ ((buffer = handler.chunk),
3114
+ null !== buffer &&
3115
+ "blocked" === buffer.status &&
3116
+ ((resolvedValue = buffer.value),
3117
+ (buffer.status = "fulfilled"),
3118
+ (buffer.value = handler.value),
3119
+ (buffer.reason = null),
3120
+ null !== resolvedValue &&
3121
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
3122
+ }, reject);
3016
3123
  return null;
3017
3124
  }
3018
3125
  function resolveStream(response, id, stream, controller) {
@@ -3030,90 +3137,78 @@
3030
3137
  : controller.enqueueModel(chunks));
3031
3138
  }
3032
3139
  function parseReadableStream(response, reference, type) {
3140
+ function enqueue(value) {
3141
+ "bytes" !== type || ArrayBuffer.isView(value)
3142
+ ? controller.enqueue(value)
3143
+ : flightController.error(Error("Invalid data for bytes stream."));
3144
+ }
3033
3145
  reference = parseInt(reference.slice(2), 16);
3034
3146
  if (response._chunks.has(reference))
3035
3147
  throw Error("Already initialized stream.");
3036
3148
  var controller = null,
3037
- closed = !1;
3038
- type = new ReadableStream({
3039
- type: type,
3040
- start: function (c) {
3041
- controller = c;
3042
- }
3043
- });
3044
- var previousBlockedChunk = null;
3045
- resolveStream(response, reference, type, {
3046
- enqueueModel: function (json) {
3047
- if (null === previousBlockedChunk) {
3048
- var chunk = new ReactPromise(
3049
- "resolved_model",
3050
- json,
3051
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3052
- );
3053
- initializeModelChunk(chunk);
3054
- "fulfilled" === chunk.status
3055
- ? controller.enqueue(chunk.value)
3056
- : (chunk.then(
3057
- function (v) {
3058
- return controller.enqueue(v);
3059
- },
3060
- function (e) {
3061
- return controller.error(e);
3062
- }
3063
- ),
3064
- (previousBlockedChunk = chunk));
3065
- } else {
3066
- chunk = previousBlockedChunk;
3067
- var _chunk = new ReactPromise("pending", null, null);
3068
- _chunk.then(
3069
- function (v) {
3070
- return controller.enqueue(v);
3071
- },
3072
- function (e) {
3073
- return controller.error(e);
3074
- }
3075
- );
3076
- previousBlockedChunk = _chunk;
3077
- chunk.then(function () {
3078
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
3079
- resolveModelChunk(response, _chunk, json, -1);
3080
- });
3149
+ closed = !1,
3150
+ stream = new ReadableStream({
3151
+ type: type,
3152
+ start: function (c) {
3153
+ controller = c;
3081
3154
  }
3082
- },
3083
- close: function () {
3084
- if (!closed)
3085
- if (((closed = !0), null === previousBlockedChunk))
3086
- controller.close();
3087
- else {
3088
- var blockedChunk = previousBlockedChunk;
3089
- previousBlockedChunk = null;
3090
- blockedChunk.then(function () {
3091
- return controller.close();
3092
- });
3093
- }
3094
- },
3095
- error: function (error) {
3096
- if (!closed)
3097
- if (((closed = !0), null === previousBlockedChunk))
3098
- controller.error(error);
3099
- else {
3100
- var blockedChunk = previousBlockedChunk;
3101
- previousBlockedChunk = null;
3102
- blockedChunk.then(function () {
3103
- return controller.error(error);
3155
+ }),
3156
+ previousBlockedChunk = null,
3157
+ flightController = {
3158
+ enqueueModel: function (json) {
3159
+ if (null === previousBlockedChunk) {
3160
+ var chunk = new ReactPromise(
3161
+ "resolved_model",
3162
+ json,
3163
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3164
+ );
3165
+ initializeModelChunk(chunk);
3166
+ "fulfilled" === chunk.status
3167
+ ? enqueue(chunk.value)
3168
+ : (chunk.then(enqueue, flightController.error),
3169
+ (previousBlockedChunk = chunk));
3170
+ } else {
3171
+ chunk = previousBlockedChunk;
3172
+ var _chunk = new ReactPromise("pending", null, null);
3173
+ _chunk.then(enqueue, flightController.error);
3174
+ previousBlockedChunk = _chunk;
3175
+ chunk.then(function () {
3176
+ previousBlockedChunk === _chunk &&
3177
+ (previousBlockedChunk = null);
3178
+ resolveModelChunk(response, _chunk, json, -1);
3104
3179
  });
3105
3180
  }
3106
- }
3107
- });
3108
- return type;
3109
- }
3110
- function asyncIterator() {
3111
- return this;
3181
+ },
3182
+ close: function () {
3183
+ if (!closed)
3184
+ if (((closed = !0), null === previousBlockedChunk))
3185
+ controller.close();
3186
+ else {
3187
+ var blockedChunk = previousBlockedChunk;
3188
+ previousBlockedChunk = null;
3189
+ blockedChunk.then(function () {
3190
+ return controller.close();
3191
+ });
3192
+ }
3193
+ },
3194
+ error: function (error) {
3195
+ if (!closed)
3196
+ if (((closed = !0), null === previousBlockedChunk))
3197
+ controller.error(error);
3198
+ else {
3199
+ var blockedChunk = previousBlockedChunk;
3200
+ previousBlockedChunk = null;
3201
+ blockedChunk.then(function () {
3202
+ return controller.error(error);
3203
+ });
3204
+ }
3205
+ }
3206
+ };
3207
+ resolveStream(response, reference, stream, flightController);
3208
+ return stream;
3112
3209
  }
3113
- function createIterator(next) {
3114
- next = { next: next };
3115
- next[ASYNC_ITERATOR] = asyncIterator;
3116
- return next;
3210
+ function FlightIterator(next) {
3211
+ this.next = next;
3117
3212
  }
3118
3213
  function parseAsyncIterable(response, reference, iterator) {
3119
3214
  reference = parseInt(reference.slice(2), 16);
@@ -3124,7 +3219,7 @@
3124
3219
  nextWriteIndex = 0,
3125
3220
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
3126
3221
  var nextReadIndex = 0;
3127
- return createIterator(function (arg) {
3222
+ return new FlightIterator(function (arg) {
3128
3223
  if (void 0 !== arg)
3129
3224
  throw Error(
3130
3225
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -3203,19 +3298,30 @@
3203
3298
  });
3204
3299
  return iterator;
3205
3300
  }
3206
- function parseModelString(response, obj, key, value, reference) {
3301
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
3207
3302
  if ("$" === value[0]) {
3208
3303
  switch (value[1]) {
3209
3304
  case "$":
3210
- return value.slice(1);
3305
+ return (
3306
+ null !== arrayRoot &&
3307
+ bumpArrayCount(arrayRoot, value.length - 1, response),
3308
+ value.slice(1)
3309
+ );
3211
3310
  case "@":
3212
3311
  return (
3213
3312
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
3214
3313
  );
3215
3314
  case "h":
3216
3315
  return (
3217
- (value = value.slice(2)),
3218
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
3316
+ (arrayRoot = value.slice(2)),
3317
+ getOutlinedModel(
3318
+ response,
3319
+ arrayRoot,
3320
+ obj,
3321
+ key,
3322
+ null,
3323
+ loadServerReference$1
3324
+ )
3219
3325
  );
3220
3326
  case "T":
3221
3327
  if (
@@ -3231,27 +3337,44 @@
3231
3337
  );
3232
3338
  case "Q":
3233
3339
  return (
3234
- (value = value.slice(2)),
3235
- getOutlinedModel(response, value, obj, key, createMap)
3340
+ (arrayRoot = value.slice(2)),
3341
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
3236
3342
  );
3237
3343
  case "W":
3238
3344
  return (
3239
- (value = value.slice(2)),
3240
- getOutlinedModel(response, value, obj, key, createSet)
3345
+ (arrayRoot = value.slice(2)),
3346
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
3241
3347
  );
3242
3348
  case "K":
3243
3349
  obj = value.slice(2);
3244
- var formPrefix = response._prefix + obj + "_",
3245
- data = new FormData();
3246
- response._formData.forEach(function (entry, entryKey) {
3247
- entryKey.startsWith(formPrefix) &&
3248
- data.append(entryKey.slice(formPrefix.length), entry);
3249
- });
3250
- return data;
3350
+ obj = response._prefix + obj + "_";
3351
+ key = new FormData();
3352
+ response = response._formData;
3353
+ arrayRoot = Array.from(response.keys());
3354
+ for (value = 0; value < arrayRoot.length; value++)
3355
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
3356
+ for (
3357
+ var entries = response.getAll(reference),
3358
+ newKey = reference.slice(obj.length),
3359
+ j = 0;
3360
+ j < entries.length;
3361
+ j++
3362
+ )
3363
+ key.append(newKey, entries[j]);
3364
+ response.delete(reference);
3365
+ }
3366
+ return key;
3251
3367
  case "i":
3252
3368
  return (
3253
- (value = value.slice(2)),
3254
- getOutlinedModel(response, value, obj, key, extractIterator)
3369
+ (arrayRoot = value.slice(2)),
3370
+ getOutlinedModel(
3371
+ response,
3372
+ arrayRoot,
3373
+ obj,
3374
+ key,
3375
+ null,
3376
+ extractIterator
3377
+ )
3255
3378
  );
3256
3379
  case "I":
3257
3380
  return Infinity;
@@ -3264,15 +3387,50 @@
3264
3387
  case "D":
3265
3388
  return new Date(Date.parse(value.slice(2)));
3266
3389
  case "n":
3267
- return BigInt(value.slice(2));
3390
+ obj = value.slice(2);
3391
+ if (obj.length > MAX_BIGINT_DIGITS)
3392
+ throw Error(
3393
+ "BigInt is too large. Received " +
3394
+ obj.length +
3395
+ " digits but the limit is " +
3396
+ MAX_BIGINT_DIGITS +
3397
+ "."
3398
+ );
3399
+ null !== arrayRoot &&
3400
+ bumpArrayCount(arrayRoot, obj.length, response);
3401
+ return BigInt(obj);
3268
3402
  }
3269
3403
  switch (value[1]) {
3270
3404
  case "A":
3271
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
3405
+ return parseTypedArray(
3406
+ response,
3407
+ value,
3408
+ ArrayBuffer,
3409
+ 1,
3410
+ obj,
3411
+ key,
3412
+ arrayRoot
3413
+ );
3272
3414
  case "O":
3273
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
3415
+ return parseTypedArray(
3416
+ response,
3417
+ value,
3418
+ Int8Array,
3419
+ 1,
3420
+ obj,
3421
+ key,
3422
+ arrayRoot
3423
+ );
3274
3424
  case "o":
3275
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
3425
+ return parseTypedArray(
3426
+ response,
3427
+ value,
3428
+ Uint8Array,
3429
+ 1,
3430
+ obj,
3431
+ key,
3432
+ arrayRoot
3433
+ );
3276
3434
  case "U":
3277
3435
  return parseTypedArray(
3278
3436
  response,
@@ -3280,22 +3438,79 @@
3280
3438
  Uint8ClampedArray,
3281
3439
  1,
3282
3440
  obj,
3283
- key
3441
+ key,
3442
+ arrayRoot
3284
3443
  );
3285
3444
  case "S":
3286
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
3445
+ return parseTypedArray(
3446
+ response,
3447
+ value,
3448
+ Int16Array,
3449
+ 2,
3450
+ obj,
3451
+ key,
3452
+ arrayRoot
3453
+ );
3287
3454
  case "s":
3288
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3455
+ return parseTypedArray(
3456
+ response,
3457
+ value,
3458
+ Uint16Array,
3459
+ 2,
3460
+ obj,
3461
+ key,
3462
+ arrayRoot
3463
+ );
3289
3464
  case "L":
3290
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3465
+ return parseTypedArray(
3466
+ response,
3467
+ value,
3468
+ Int32Array,
3469
+ 4,
3470
+ obj,
3471
+ key,
3472
+ arrayRoot
3473
+ );
3291
3474
  case "l":
3292
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3475
+ return parseTypedArray(
3476
+ response,
3477
+ value,
3478
+ Uint32Array,
3479
+ 4,
3480
+ obj,
3481
+ key,
3482
+ arrayRoot
3483
+ );
3293
3484
  case "G":
3294
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3485
+ return parseTypedArray(
3486
+ response,
3487
+ value,
3488
+ Float32Array,
3489
+ 4,
3490
+ obj,
3491
+ key,
3492
+ arrayRoot
3493
+ );
3295
3494
  case "g":
3296
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3495
+ return parseTypedArray(
3496
+ response,
3497
+ value,
3498
+ Float64Array,
3499
+ 8,
3500
+ obj,
3501
+ key,
3502
+ arrayRoot
3503
+ );
3297
3504
  case "M":
3298
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3505
+ return parseTypedArray(
3506
+ response,
3507
+ value,
3508
+ BigInt64Array,
3509
+ 8,
3510
+ obj,
3511
+ key,
3512
+ arrayRoot
3513
+ );
3299
3514
  case "m":
3300
3515
  return parseTypedArray(
3301
3516
  response,
@@ -3303,10 +3518,19 @@
3303
3518
  BigUint64Array,
3304
3519
  8,
3305
3520
  obj,
3306
- key
3521
+ key,
3522
+ arrayRoot
3307
3523
  );
3308
3524
  case "V":
3309
- return parseTypedArray(response, value, DataView, 1, obj, key);
3525
+ return parseTypedArray(
3526
+ response,
3527
+ value,
3528
+ DataView,
3529
+ 1,
3530
+ obj,
3531
+ key,
3532
+ arrayRoot
3533
+ );
3310
3534
  case "B":
3311
3535
  return (
3312
3536
  (obj = parseInt(value.slice(2), 16)),
@@ -3324,8 +3548,16 @@
3324
3548
  return parseAsyncIterable(response, value, !0);
3325
3549
  }
3326
3550
  value = value.slice(1);
3327
- return getOutlinedModel(response, value, obj, key, createModel);
3551
+ return getOutlinedModel(
3552
+ response,
3553
+ value,
3554
+ obj,
3555
+ key,
3556
+ arrayRoot,
3557
+ createModel
3558
+ );
3328
3559
  }
3560
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
3329
3561
  return value;
3330
3562
  }
3331
3563
  function createResponse(
@@ -3337,25 +3569,40 @@
3337
3569
  3 < arguments.length && void 0 !== arguments[3]
3338
3570
  ? arguments[3]
3339
3571
  : new FormData(),
3572
+ arraySizeLimit =
3573
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
3340
3574
  chunks = new Map();
3341
3575
  return {
3342
3576
  _bundlerConfig: bundlerConfig,
3343
3577
  _prefix: formFieldPrefix,
3344
3578
  _formData: backingFormData,
3345
3579
  _chunks: chunks,
3346
- _temporaryReferences: temporaryReferences
3580
+ _temporaryReferences: temporaryReferences,
3581
+ _rootArrayContexts: new WeakMap(),
3582
+ _arraySizeLimit: arraySizeLimit
3347
3583
  };
3348
3584
  }
3349
3585
  function close(response) {
3350
3586
  reportGlobalError(response, Error("Connection closed."));
3351
3587
  }
3352
- function loadServerReference(bundlerConfig, id, bound) {
3588
+ function loadServerReference(bundlerConfig, metaData) {
3589
+ var id = metaData.id;
3590
+ if ("string" !== typeof id) return null;
3353
3591
  var serverReference = resolveServerReference(bundlerConfig, id);
3354
3592
  bundlerConfig = preloadModule(serverReference);
3355
- return bound
3356
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3593
+ metaData = metaData.bound;
3594
+ return metaData instanceof Promise
3595
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
3357
3596
  _ref = _ref[0];
3358
3597
  var fn = requireModule(serverReference);
3598
+ if (_ref.length > MAX_BOUND_ARGS)
3599
+ throw Error(
3600
+ "Server Function has too many bound arguments. Received " +
3601
+ _ref.length +
3602
+ " but the limit is " +
3603
+ MAX_BOUND_ARGS +
3604
+ "."
3605
+ );
3359
3606
  return fn.bind.apply(fn, [null].concat(_ref));
3360
3607
  })
3361
3608
  : bundlerConfig
@@ -3364,8 +3611,19 @@
3364
3611
  })
3365
3612
  : Promise.resolve(requireModule(serverReference));
3366
3613
  }
3367
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
3368
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3614
+ function decodeBoundActionMetaData(
3615
+ body,
3616
+ serverManifest,
3617
+ formFieldPrefix,
3618
+ arraySizeLimit
3619
+ ) {
3620
+ body = createResponse(
3621
+ serverManifest,
3622
+ formFieldPrefix,
3623
+ void 0,
3624
+ body,
3625
+ arraySizeLimit
3626
+ );
3369
3627
  close(body);
3370
3628
  body = getChunk(body, 0);
3371
3629
  body.then(function () {});
@@ -3791,13 +4049,14 @@
3791
4049
  patchConsole(console, "table"),
3792
4050
  patchConsole(console, "trace"),
3793
4051
  patchConsole(console, "warn"));
3794
- var ObjectPrototype = Object.prototype,
4052
+ var ObjectPrototype$1 = Object.prototype,
3795
4053
  stringify = JSON.stringify,
3796
4054
  PENDING$1 = 0,
3797
4055
  COMPLETED = 1,
3798
4056
  ABORTED = 3,
3799
4057
  ERRORED$1 = 4,
3800
4058
  RENDERING = 5,
4059
+ __PROTO__$1 = "__proto__",
3801
4060
  OPENING = 10,
3802
4061
  ABORTING = 12,
3803
4062
  CLOSING = 13,
@@ -3828,15 +4087,23 @@
3828
4087
  case "fulfilled":
3829
4088
  if ("function" === typeof resolve) {
3830
4089
  for (
3831
- var inspectedValue = this.value;
4090
+ var inspectedValue = this.value,
4091
+ cycleProtection = 0,
4092
+ visited = new Set();
3832
4093
  inspectedValue instanceof ReactPromise;
3833
4094
 
3834
4095
  ) {
3835
- if (inspectedValue === this) {
4096
+ cycleProtection++;
4097
+ if (
4098
+ inspectedValue === this ||
4099
+ visited.has(inspectedValue) ||
4100
+ 1e3 < cycleProtection
4101
+ ) {
3836
4102
  "function" === typeof reject &&
3837
4103
  reject(Error("Cannot have cyclic thenables."));
3838
4104
  return;
3839
4105
  }
4106
+ visited.add(inspectedValue);
3840
4107
  if ("fulfilled" === inspectedValue.status)
3841
4108
  inspectedValue = inspectedValue.value;
3842
4109
  else break;
@@ -3857,7 +4124,15 @@
3857
4124
  "function" === typeof reject && reject(this.reason);
3858
4125
  }
3859
4126
  };
3860
- var initializingHandler = null;
4127
+ var ObjectPrototype = Object.prototype,
4128
+ ArrayPrototype = Array.prototype,
4129
+ initializingHandler = null;
4130
+ FlightIterator.prototype = {};
4131
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
4132
+ return this;
4133
+ };
4134
+ var MAX_BIGINT_DIGITS = 300,
4135
+ MAX_BOUND_ARGS = 1e3;
3861
4136
  exports.createClientModuleProxy = function (moduleId) {
3862
4137
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
3863
4138
  return new Proxy(moduleId, proxyHandlers$1);
@@ -3867,20 +4142,24 @@
3867
4142
  };
3868
4143
  exports.decodeAction = function (body, serverManifest) {
3869
4144
  var formData = new FormData(),
3870
- action = null;
4145
+ action = null,
4146
+ seenActions = new Set();
3871
4147
  body.forEach(function (value, key) {
3872
4148
  key.startsWith("$ACTION_")
3873
4149
  ? key.startsWith("$ACTION_REF_")
3874
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
4150
+ ? seenActions.has(key) ||
4151
+ (seenActions.add(key),
4152
+ (value = "$ACTION_" + key.slice(12) + ":"),
3875
4153
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
3876
- (action = loadServerReference(
3877
- serverManifest,
3878
- value.id,
3879
- value.bound
3880
- )))
4154
+ (action = loadServerReference(serverManifest, value)))
3881
4155
  : key.startsWith("$ACTION_ID_") &&
3882
- ((value = key.slice(11)),
3883
- (action = loadServerReference(serverManifest, value, null)))
4156
+ !seenActions.has(key) &&
4157
+ (seenActions.add(key),
4158
+ (value = key.slice(11)),
4159
+ (action = loadServerReference(serverManifest, {
4160
+ id: value,
4161
+ bound: null
4162
+ })))
3884
4163
  : formData.append(key, value);
3885
4164
  });
3886
4165
  return null === action
@@ -3916,7 +4195,8 @@
3916
4195
  webpackMap,
3917
4196
  "",
3918
4197
  options ? options.temporaryReferences : void 0,
3919
- body
4198
+ body,
4199
+ options ? options.arraySizeLimit : void 0
3920
4200
  );
3921
4201
  webpackMap = getChunk(body, 0);
3922
4202
  close(body);