react-server-dom-turbopack 19.0.3 → 19.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1481,6 +1481,13 @@
1481
1481
  value
1482
1482
  ) {
1483
1483
  task.model = value;
1484
+ parentPropertyName === __PROTO__$1 &&
1485
+ callWithDebugContextInDEV(request, task, function () {
1486
+ console.error(
1487
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
1488
+ describeObjectForErrorMessage(parent, parentPropertyName)
1489
+ );
1490
+ });
1484
1491
  if (value === REACT_ELEMENT_TYPE) return "$";
1485
1492
  if (null === value) return null;
1486
1493
  if ("object" === typeof value) {
@@ -1651,7 +1658,7 @@
1651
1658
  if (value instanceof Date) return "$D" + value.toJSON();
1652
1659
  elementReference = getPrototypeOf(value);
1653
1660
  if (
1654
- elementReference !== ObjectPrototype &&
1661
+ elementReference !== ObjectPrototype$1 &&
1655
1662
  (null === elementReference ||
1656
1663
  null !== getPrototypeOf(elementReference))
1657
1664
  )
@@ -2546,12 +2553,12 @@
2546
2553
  this.value = value;
2547
2554
  this.reason = reason;
2548
2555
  }
2549
- function wakeChunk(response, listeners, value) {
2556
+ function wakeChunk(response, listeners, value, chunk) {
2550
2557
  for (var i = 0; i < listeners.length; i++) {
2551
2558
  var listener = listeners[i];
2552
2559
  "function" === typeof listener
2553
2560
  ? listener(value)
2554
- : fulfillReference(response, listener, value);
2561
+ : fulfillReference(response, listener, value, chunk.reason);
2555
2562
  }
2556
2563
  }
2557
2564
  function rejectChunk(response, listeners, error) {
@@ -2562,27 +2569,6 @@
2562
2569
  : rejectReference(response, listener.handler, error);
2563
2570
  }
2564
2571
  }
2565
- function resolveBlockedCycle(resolvedChunk, reference) {
2566
- var referencedChunk = reference.handler.chunk;
2567
- if (null === referencedChunk) return null;
2568
- if (referencedChunk === resolvedChunk) return reference.handler;
2569
- reference = referencedChunk.value;
2570
- if (null !== reference)
2571
- for (
2572
- referencedChunk = 0;
2573
- referencedChunk < reference.length;
2574
- referencedChunk++
2575
- ) {
2576
- var listener = reference[referencedChunk];
2577
- if (
2578
- "function" !== typeof listener &&
2579
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2580
- null !== listener)
2581
- )
2582
- return listener;
2583
- }
2584
- return null;
2585
- }
2586
2572
  function triggerErrorOnChunk(response, chunk, error) {
2587
2573
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2588
2574
  chunk.reason.error(error);
@@ -2606,57 +2592,25 @@
2606
2592
  chunk.value = value;
2607
2593
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
2608
2594
  if (null !== resolveListeners)
2609
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2595
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2610
2596
  case "fulfilled":
2611
- wakeChunk(response, resolveListeners, chunk.value);
2597
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2612
2598
  break;
2613
2599
  case "blocked":
2614
- for (value = 0; value < resolveListeners.length; value++)
2615
- if (
2616
- ((id = resolveListeners[value]), "function" !== typeof id)
2617
- ) {
2618
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2619
- if (null !== cyclicHandler)
2620
- switch (
2621
- (fulfillReference(response, id, cyclicHandler.value),
2622
- resolveListeners.splice(value, 1),
2623
- value--,
2624
- null !== rejectListeners &&
2625
- ((id = rejectListeners.indexOf(id)),
2626
- -1 !== id && rejectListeners.splice(id, 1)),
2627
- chunk.status)
2628
- ) {
2629
- case "fulfilled":
2630
- wakeChunk(response, resolveListeners, chunk.value);
2631
- break a;
2632
- case "rejected":
2633
- null !== rejectListeners &&
2634
- rejectChunk(response, rejectListeners, chunk.reason);
2635
- break a;
2636
- }
2637
- }
2638
2600
  case "pending":
2639
2601
  if (chunk.value)
2640
- for (
2641
- response = 0;
2642
- response < resolveListeners.length;
2643
- response++
2644
- )
2645
- chunk.value.push(resolveListeners[response]);
2602
+ for (value = 0; value < resolveListeners.length; value++)
2603
+ chunk.value.push(resolveListeners[value]);
2646
2604
  else chunk.value = resolveListeners;
2647
2605
  if (chunk.reason) {
2648
2606
  if (rejectListeners)
2649
- for (
2650
- resolveListeners = 0;
2651
- resolveListeners < rejectListeners.length;
2652
- resolveListeners++
2653
- )
2654
- chunk.reason.push(rejectListeners[resolveListeners]);
2607
+ for (value = 0; value < rejectListeners.length; value++)
2608
+ chunk.reason.push(rejectListeners[value]);
2655
2609
  } else chunk.reason = rejectListeners;
2656
2610
  break;
2657
2611
  case "rejected":
2658
2612
  rejectListeners &&
2659
- wakeChunk(response, rejectListeners, chunk.reason);
2613
+ rejectChunk(response, rejectListeners, chunk.reason);
2660
2614
  }
2661
2615
  }
2662
2616
  }
@@ -2680,15 +2634,51 @@
2680
2634
  );
2681
2635
  }
2682
2636
  function loadServerReference$1(response, metaData, parentObject, key) {
2637
+ function reject(error) {
2638
+ var rejectListeners = blockedPromise.reason,
2639
+ erroredPromise = blockedPromise;
2640
+ erroredPromise.status = "rejected";
2641
+ erroredPromise.value = null;
2642
+ erroredPromise.reason = error;
2643
+ null !== rejectListeners &&
2644
+ rejectChunk(response, rejectListeners, error);
2645
+ rejectReference(response, handler, error);
2646
+ }
2683
2647
  var id = metaData.id;
2684
2648
  if ("string" !== typeof id || "then" === key) return null;
2649
+ var cachedPromise = metaData.$$promise;
2650
+ if (void 0 !== cachedPromise) {
2651
+ if ("fulfilled" === cachedPromise.status)
2652
+ return (
2653
+ (cachedPromise = cachedPromise.value),
2654
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2655
+ );
2656
+ initializingHandler
2657
+ ? ((id = initializingHandler), id.deps++)
2658
+ : (id = initializingHandler =
2659
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2660
+ cachedPromise.then(
2661
+ resolveReference.bind(null, response, id, parentObject, key),
2662
+ rejectReference.bind(null, response, id)
2663
+ );
2664
+ return null;
2665
+ }
2666
+ var blockedPromise = new ReactPromise("blocked", null, null);
2667
+ metaData.$$promise = blockedPromise;
2685
2668
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2686
- id = metaData.bound;
2687
- var promise = preloadModule(serverReference);
2688
- if (promise)
2689
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2690
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2691
- else return requireModule(serverReference);
2669
+ cachedPromise = metaData.bound;
2670
+ if ((id = preloadModule(serverReference)))
2671
+ cachedPromise instanceof ReactPromise &&
2672
+ (id = Promise.all([id, cachedPromise]));
2673
+ else if (cachedPromise instanceof ReactPromise)
2674
+ id = Promise.resolve(cachedPromise);
2675
+ else
2676
+ return (
2677
+ (cachedPromise = requireModule(serverReference)),
2678
+ (id = blockedPromise),
2679
+ (id.status = "fulfilled"),
2680
+ (id.value = cachedPromise)
2681
+ );
2692
2682
  if (initializingHandler) {
2693
2683
  var handler = initializingHandler;
2694
2684
  handler.deps++;
@@ -2700,93 +2690,107 @@
2700
2690
  deps: 1,
2701
2691
  errored: !1
2702
2692
  };
2703
- promise.then(
2704
- function () {
2705
- var resolvedValue = requireModule(serverReference);
2706
- if (metaData.bound) {
2707
- var promiseValue = metaData.bound.value;
2708
- promiseValue = Array.isArray(promiseValue)
2709
- ? promiseValue.slice(0)
2710
- : [];
2711
- promiseValue.unshift(null);
2712
- resolvedValue = resolvedValue.bind.apply(
2713
- resolvedValue,
2714
- promiseValue
2693
+ id.then(function () {
2694
+ var resolvedValue = requireModule(serverReference);
2695
+ if (metaData.bound) {
2696
+ var promiseValue = metaData.bound.value;
2697
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2698
+ if (promiseValue.length > MAX_BOUND_ARGS) {
2699
+ reject(
2700
+ Error(
2701
+ "Server Function has too many bound arguments. Received " +
2702
+ promiseValue.length +
2703
+ " but the limit is " +
2704
+ MAX_BOUND_ARGS +
2705
+ "."
2706
+ )
2715
2707
  );
2708
+ return;
2716
2709
  }
2717
- parentObject[key] = resolvedValue;
2718
- "" === key &&
2719
- null === handler.value &&
2720
- (handler.value = resolvedValue);
2721
- handler.deps--;
2722
- 0 === handler.deps &&
2723
- ((resolvedValue = handler.chunk),
2724
- null !== resolvedValue &&
2725
- "blocked" === resolvedValue.status &&
2726
- ((promiseValue = resolvedValue.value),
2727
- (resolvedValue.status = "fulfilled"),
2728
- (resolvedValue.value = handler.value),
2729
- (resolvedValue.reason = null),
2730
- null !== promiseValue &&
2731
- wakeChunk(response, promiseValue, handler.value)));
2732
- },
2733
- function (error) {
2734
- if (!handler.errored) {
2735
- handler.errored = !0;
2736
- handler.value = null;
2737
- handler.reason = error;
2738
- var chunk = handler.chunk;
2739
- null !== chunk &&
2740
- "blocked" === chunk.status &&
2741
- triggerErrorOnChunk(response, chunk, error);
2742
- }
2710
+ promiseValue.unshift(null);
2711
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2743
2712
  }
2744
- );
2713
+ promiseValue = blockedPromise.value;
2714
+ var initializedPromise = blockedPromise;
2715
+ initializedPromise.status = "fulfilled";
2716
+ initializedPromise.value = resolvedValue;
2717
+ initializedPromise.reason = null;
2718
+ null !== promiseValue &&
2719
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2720
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2721
+ }, reject);
2745
2722
  return null;
2746
2723
  }
2747
- function reviveModel(response, parentObj, parentKey, value, reference) {
2724
+ function reviveModel(
2725
+ response,
2726
+ parentObj,
2727
+ parentKey,
2728
+ value,
2729
+ reference,
2730
+ arrayRoot
2731
+ ) {
2748
2732
  if ("string" === typeof value)
2749
2733
  return parseModelString(
2750
2734
  response,
2751
2735
  parentObj,
2752
2736
  parentKey,
2753
2737
  value,
2754
- reference
2738
+ reference,
2739
+ arrayRoot
2755
2740
  );
2756
2741
  if ("object" === typeof value && null !== value)
2757
2742
  if (
2758
2743
  (void 0 !== reference &&
2759
2744
  void 0 !== response._temporaryReferences &&
2760
2745
  response._temporaryReferences.set(value, reference),
2761
- Array.isArray(value))
2762
- )
2763
- for (var i = 0; i < value.length; i++)
2764
- value[i] = reviveModel(
2746
+ isArrayImpl(value))
2747
+ ) {
2748
+ if (null === arrayRoot) {
2749
+ var childContext = { count: 0, fork: !1 };
2750
+ response._rootArrayContexts.set(value, childContext);
2751
+ } else childContext = arrayRoot;
2752
+ 1 < value.length && (childContext.fork = !0);
2753
+ bumpArrayCount(childContext, value.length + 1, response);
2754
+ for (parentObj = 0; parentObj < value.length; parentObj++)
2755
+ value[parentObj] = reviveModel(
2765
2756
  response,
2766
2757
  value,
2767
- "" + i,
2768
- value[i],
2769
- void 0 !== reference ? reference + ":" + i : void 0
2758
+ "" + parentObj,
2759
+ value[parentObj],
2760
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
2761
+ childContext
2770
2762
  );
2771
- else
2772
- for (i in value)
2773
- hasOwnProperty.call(value, i) &&
2774
- ((parentObj =
2775
- void 0 !== reference && -1 === i.indexOf(":")
2776
- ? reference + ":" + i
2777
- : void 0),
2778
- (parentObj = reviveModel(
2779
- response,
2780
- value,
2781
- i,
2782
- value[i],
2783
- parentObj
2784
- )),
2785
- void 0 !== parentObj || "__proto__" === i
2786
- ? (value[i] = parentObj)
2787
- : delete value[i]);
2763
+ } else
2764
+ for (childContext in value)
2765
+ hasOwnProperty.call(value, childContext) &&
2766
+ ("__proto__" === childContext
2767
+ ? delete value[childContext]
2768
+ : ((parentObj =
2769
+ void 0 !== reference && -1 === childContext.indexOf(":")
2770
+ ? reference + ":" + childContext
2771
+ : void 0),
2772
+ (parentObj = reviveModel(
2773
+ response,
2774
+ value,
2775
+ childContext,
2776
+ value[childContext],
2777
+ parentObj,
2778
+ null
2779
+ )),
2780
+ void 0 !== parentObj
2781
+ ? (value[childContext] = parentObj)
2782
+ : delete value[childContext]));
2788
2783
  return value;
2789
2784
  }
2785
+ function bumpArrayCount(arrayContext, slots, response) {
2786
+ if (
2787
+ (arrayContext.count += slots) > response._arraySizeLimit &&
2788
+ arrayContext.fork
2789
+ )
2790
+ throw Error(
2791
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
2792
+ );
2793
+ }
2790
2794
  function initializeModelChunk(chunk) {
2791
2795
  var prevHandler = initializingHandler;
2792
2796
  initializingHandler = null;
@@ -2800,13 +2804,15 @@
2800
2804
  chunk.value = null;
2801
2805
  chunk.reason = null;
2802
2806
  try {
2803
- var rawModel = JSON.parse(resolvedModel),
2804
- value = reviveModel(
2807
+ var rawModel = JSON.parse(resolvedModel);
2808
+ resolvedModel = { count: 0, fork: !1 };
2809
+ var value = reviveModel(
2805
2810
  response,
2806
2811
  { "": rawModel },
2807
2812
  "",
2808
2813
  rawModel,
2809
- _chunk$reason
2814
+ _chunk$reason,
2815
+ resolvedModel
2810
2816
  ),
2811
2817
  resolveListeners = chunk.value;
2812
2818
  if (null !== resolveListeners)
@@ -2818,19 +2824,20 @@
2818
2824
  var listener = resolveListeners[rawModel];
2819
2825
  "function" === typeof listener
2820
2826
  ? listener(value)
2821
- : fulfillReference(response, listener, value);
2827
+ : fulfillReference(response, listener, value, resolvedModel);
2822
2828
  }
2823
2829
  if (null !== initializingHandler) {
2824
2830
  if (initializingHandler.errored) throw initializingHandler.reason;
2825
2831
  if (0 < initializingHandler.deps) {
2826
2832
  initializingHandler.value = value;
2833
+ initializingHandler.reason = resolvedModel;
2827
2834
  initializingHandler.chunk = chunk;
2828
2835
  return;
2829
2836
  }
2830
2837
  }
2831
2838
  chunk.status = "fulfilled";
2832
2839
  chunk.value = value;
2833
- chunk.reason = null;
2840
+ chunk.reason = resolvedModel;
2834
2841
  } catch (error) {
2835
2842
  (chunk.status = "rejected"), (chunk.reason = error);
2836
2843
  } finally {
@@ -2843,7 +2850,8 @@
2843
2850
  ? triggerErrorOnChunk(response, chunk, error)
2844
2851
  : "fulfilled" === chunk.status &&
2845
2852
  null !== chunk.reason &&
2846
- chunk.reason.error(error);
2853
+ ((chunk = chunk.reason),
2854
+ "function" === typeof chunk.error && chunk.error(error));
2847
2855
  });
2848
2856
  }
2849
2857
  function getChunk(response, id) {
@@ -2862,40 +2870,74 @@
2862
2870
  chunks.set(id, chunk));
2863
2871
  return chunk;
2864
2872
  }
2865
- function fulfillReference(response, reference, value) {
2873
+ function fulfillReference(response, reference, value, arrayRoot) {
2866
2874
  var handler = reference.handler,
2867
2875
  parentObject = reference.parentObject,
2868
2876
  key = reference.key,
2869
2877
  map = reference.map,
2870
2878
  path = reference.path;
2871
2879
  try {
2872
- for (var i = 1; i < path.length; i++) {
2880
+ for (
2881
+ var localLength = 0,
2882
+ rootArrayContexts = response._rootArrayContexts,
2883
+ i = 1;
2884
+ i < path.length;
2885
+ i++
2886
+ ) {
2873
2887
  var name = path[i];
2874
2888
  if (
2875
2889
  "object" !== typeof value ||
2876
- !hasOwnProperty.call(value, name) ||
2877
- value instanceof Promise
2890
+ null === value ||
2891
+ (getPrototypeOf(value) !== ObjectPrototype &&
2892
+ getPrototypeOf(value) !== ArrayPrototype) ||
2893
+ !hasOwnProperty.call(value, name)
2878
2894
  )
2879
2895
  throw Error("Invalid reference.");
2880
2896
  value = value[name];
2897
+ if (isArrayImpl(value))
2898
+ (localLength = 0),
2899
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
2900
+ else if (((arrayRoot = null), "string" === typeof value))
2901
+ localLength = value.length;
2902
+ else if ("bigint" === typeof value) {
2903
+ var n = Math.abs(Number(value));
2904
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
2905
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
2881
2906
  }
2882
- var mappedValue = map(response, value, parentObject, key);
2883
- parentObject[key] = mappedValue;
2884
- "" === key && null === handler.value && (handler.value = mappedValue);
2907
+ var resolvedValue = map(response, value, parentObject, key);
2908
+ var referenceArrayRoot = reference.arrayRoot;
2909
+ null !== referenceArrayRoot &&
2910
+ (null !== arrayRoot
2911
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
2912
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
2913
+ : 0 < localLength &&
2914
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2885
2915
  } catch (error) {
2886
- rejectReference(response, reference.handler, error);
2916
+ rejectReference(response, handler, error);
2887
2917
  return;
2888
2918
  }
2919
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2920
+ }
2921
+ function resolveReference(
2922
+ response,
2923
+ handler,
2924
+ parentObject,
2925
+ key,
2926
+ resolvedValue
2927
+ ) {
2928
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
2929
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2889
2930
  handler.deps--;
2890
2931
  0 === handler.deps &&
2891
- ((reference = handler.chunk),
2892
- null !== reference &&
2893
- "blocked" === reference.status &&
2894
- ((value = reference.value),
2895
- (reference.status = "fulfilled"),
2896
- (reference.value = handler.value),
2897
- (reference.reason = handler.reason),
2898
- null !== value && wakeChunk(response, value, handler.value)));
2932
+ ((parentObject = handler.chunk),
2933
+ null !== parentObject &&
2934
+ "blocked" === parentObject.status &&
2935
+ ((key = parentObject.value),
2936
+ (parentObject.status = "fulfilled"),
2937
+ (parentObject.value = handler.value),
2938
+ (parentObject.reason = handler.reason),
2939
+ null !== key &&
2940
+ wakeChunk(response, key, handler.value, parentObject)));
2899
2941
  }
2900
2942
  function rejectReference(response, handler, error) {
2901
2943
  handler.errored ||
@@ -2907,29 +2949,66 @@
2907
2949
  "blocked" === handler.status &&
2908
2950
  triggerErrorOnChunk(response, handler, error));
2909
2951
  }
2910
- function getOutlinedModel(response, reference, parentObject, key, map) {
2952
+ function getOutlinedModel(
2953
+ response,
2954
+ reference,
2955
+ parentObject,
2956
+ key,
2957
+ referenceArrayRoot,
2958
+ map
2959
+ ) {
2911
2960
  reference = reference.split(":");
2912
- var id = parseInt(reference[0], 16);
2913
- id = getChunk(response, id);
2914
- switch (id.status) {
2961
+ var id = parseInt(reference[0], 16),
2962
+ chunk = getChunk(response, id);
2963
+ switch (chunk.status) {
2915
2964
  case "resolved_model":
2916
- initializeModelChunk(id);
2965
+ initializeModelChunk(chunk);
2917
2966
  }
2918
- switch (id.status) {
2967
+ switch (chunk.status) {
2919
2968
  case "fulfilled":
2920
- id = id.value;
2921
- for (var i = 1; i < reference.length; i++) {
2922
- var name = reference[i];
2969
+ id = chunk.value;
2970
+ chunk = chunk.reason;
2971
+ for (
2972
+ var localLength = 0,
2973
+ rootArrayContexts = response._rootArrayContexts,
2974
+ i = 1;
2975
+ i < reference.length;
2976
+ i++
2977
+ ) {
2978
+ localLength = reference[i];
2923
2979
  if (
2924
2980
  "object" !== typeof id ||
2925
- !hasOwnProperty.call(id, name) ||
2926
- id instanceof Promise
2981
+ null === id ||
2982
+ (getPrototypeOf(id) !== ObjectPrototype &&
2983
+ getPrototypeOf(id) !== ArrayPrototype) ||
2984
+ !hasOwnProperty.call(id, localLength)
2927
2985
  )
2928
2986
  throw Error("Invalid reference.");
2929
- id = id[name];
2987
+ id = id[localLength];
2988
+ isArrayImpl(id)
2989
+ ? ((localLength = 0),
2990
+ (chunk = rootArrayContexts.get(id) || chunk))
2991
+ : ((chunk = null),
2992
+ "string" === typeof id
2993
+ ? (localLength = id.length)
2994
+ : "bigint" === typeof id
2995
+ ? ((localLength = Math.abs(Number(id))),
2996
+ (localLength =
2997
+ 0 === localLength
2998
+ ? 1
2999
+ : Math.floor(Math.log10(localLength)) + 1))
3000
+ : (localLength = ArrayBuffer.isView(id)
3001
+ ? id.byteLength
3002
+ : 0));
2930
3003
  }
2931
- return map(response, id, parentObject, key);
2932
- case "pending":
3004
+ parentObject = map(response, id, parentObject, key);
3005
+ null !== referenceArrayRoot &&
3006
+ (null !== chunk
3007
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
3008
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
3009
+ : 0 < localLength &&
3010
+ bumpArrayCount(referenceArrayRoot, localLength, response));
3011
+ return parentObject;
2933
3012
  case "blocked":
2934
3013
  return (
2935
3014
  initializingHandler
@@ -2942,31 +3021,34 @@
2942
3021
  deps: 1,
2943
3022
  errored: !1
2944
3023
  }),
2945
- (parentObject = {
3024
+ (referenceArrayRoot = {
2946
3025
  handler: response,
2947
3026
  parentObject: parentObject,
2948
3027
  key: key,
2949
3028
  map: map,
2950
- path: reference
3029
+ path: reference,
3030
+ arrayRoot: referenceArrayRoot
2951
3031
  }),
2952
- null === id.value
2953
- ? (id.value = [parentObject])
2954
- : id.value.push(parentObject),
2955
- null === id.reason
2956
- ? (id.reason = [parentObject])
2957
- : id.reason.push(parentObject),
3032
+ null === chunk.value
3033
+ ? (chunk.value = [referenceArrayRoot])
3034
+ : chunk.value.push(referenceArrayRoot),
3035
+ null === chunk.reason
3036
+ ? (chunk.reason = [referenceArrayRoot])
3037
+ : chunk.reason.push(referenceArrayRoot),
2958
3038
  null
2959
3039
  );
3040
+ case "pending":
3041
+ throw Error("Invalid forward reference.");
2960
3042
  default:
2961
3043
  return (
2962
3044
  initializingHandler
2963
3045
  ? ((initializingHandler.errored = !0),
2964
3046
  (initializingHandler.value = null),
2965
- (initializingHandler.reason = id.reason))
3047
+ (initializingHandler.reason = chunk.reason))
2966
3048
  : (initializingHandler = {
2967
3049
  chunk: null,
2968
3050
  value: null,
2969
- reason: id.reason,
3051
+ reason: chunk.reason,
2970
3052
  deps: 0,
2971
3053
  errored: !0
2972
3054
  }),
@@ -2975,12 +3057,21 @@
2975
3057
  }
2976
3058
  }
2977
3059
  function createMap(response, model) {
3060
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
3061
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
3062
+ model.$$consumed = !0;
2978
3063
  return new Map(model);
2979
3064
  }
2980
3065
  function createSet(response, model) {
3066
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
3067
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
3068
+ model.$$consumed = !0;
2981
3069
  return new Set(model);
2982
3070
  }
2983
3071
  function extractIterator(response, model) {
3072
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
3073
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
3074
+ model.$$consumed = !0;
2984
3075
  return model[Symbol.iterator]();
2985
3076
  }
2986
3077
  function createModel(response, model, parentObject, key) {
@@ -2992,13 +3083,34 @@
2992
3083
  constructor,
2993
3084
  bytesPerElement,
2994
3085
  parentObject,
2995
- parentKey
3086
+ parentKey,
3087
+ referenceArrayRoot
2996
3088
  ) {
3089
+ function reject(error) {
3090
+ if (!handler.errored) {
3091
+ handler.errored = !0;
3092
+ handler.value = null;
3093
+ handler.reason = error;
3094
+ var chunk = handler.chunk;
3095
+ null !== chunk &&
3096
+ "blocked" === chunk.status &&
3097
+ triggerErrorOnChunk(response, chunk, error);
3098
+ }
3099
+ }
2997
3100
  reference = parseInt(reference.slice(2), 16);
2998
- bytesPerElement = response._prefix + reference;
2999
- if (response._chunks.has(reference))
3101
+ var key = response._prefix + reference;
3102
+ bytesPerElement = response._chunks;
3103
+ if (bytesPerElement.has(reference))
3000
3104
  throw Error("Already initialized typed array.");
3001
- reference = response._formData.get(bytesPerElement).arrayBuffer();
3105
+ bytesPerElement.set(
3106
+ reference,
3107
+ new ReactPromise(
3108
+ "rejected",
3109
+ null,
3110
+ Error("Already initialized typed array.")
3111
+ )
3112
+ );
3113
+ reference = response._formData.get(key).arrayBuffer();
3002
3114
  if (initializingHandler) {
3003
3115
  var handler = initializingHandler;
3004
3116
  handler.deps++;
@@ -3010,40 +3122,32 @@
3010
3122
  deps: 1,
3011
3123
  errored: !1
3012
3124
  };
3013
- reference.then(
3014
- function (buffer) {
3015
- buffer =
3125
+ reference.then(function (buffer) {
3126
+ try {
3127
+ null !== referenceArrayRoot &&
3128
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
3129
+ var resolvedValue =
3016
3130
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
3017
- parentObject[parentKey] = buffer;
3131
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
3018
3132
  "" === parentKey &&
3019
3133
  null === handler.value &&
3020
- (handler.value = buffer);
3021
- handler.deps--;
3022
- if (
3023
- 0 === handler.deps &&
3024
- ((buffer = handler.chunk),
3025
- null !== buffer && "blocked" === buffer.status)
3026
- ) {
3027
- var resolveListeners = buffer.value;
3028
- buffer.status = "fulfilled";
3029
- buffer.value = handler.value;
3030
- buffer.reason = null;
3031
- null !== resolveListeners &&
3032
- wakeChunk(response, resolveListeners, handler.value);
3033
- }
3034
- },
3035
- function (error) {
3036
- if (!handler.errored) {
3037
- handler.errored = !0;
3038
- handler.value = null;
3039
- handler.reason = error;
3040
- var chunk = handler.chunk;
3041
- null !== chunk &&
3042
- "blocked" === chunk.status &&
3043
- triggerErrorOnChunk(response, chunk, error);
3044
- }
3134
+ (handler.value = resolvedValue);
3135
+ } catch (x) {
3136
+ reject(x);
3137
+ return;
3045
3138
  }
3046
- );
3139
+ handler.deps--;
3140
+ 0 === handler.deps &&
3141
+ ((buffer = handler.chunk),
3142
+ null !== buffer &&
3143
+ "blocked" === buffer.status &&
3144
+ ((resolvedValue = buffer.value),
3145
+ (buffer.status = "fulfilled"),
3146
+ (buffer.value = handler.value),
3147
+ (buffer.reason = null),
3148
+ null !== resolvedValue &&
3149
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
3150
+ }, reject);
3047
3151
  return null;
3048
3152
  }
3049
3153
  function resolveStream(response, id, stream, controller) {
@@ -3061,90 +3165,78 @@
3061
3165
  : controller.enqueueModel(chunks));
3062
3166
  }
3063
3167
  function parseReadableStream(response, reference, type) {
3168
+ function enqueue(value) {
3169
+ "bytes" !== type || ArrayBuffer.isView(value)
3170
+ ? controller.enqueue(value)
3171
+ : flightController.error(Error("Invalid data for bytes stream."));
3172
+ }
3064
3173
  reference = parseInt(reference.slice(2), 16);
3065
3174
  if (response._chunks.has(reference))
3066
3175
  throw Error("Already initialized stream.");
3067
3176
  var controller = null,
3068
- closed = !1;
3069
- type = new ReadableStream({
3070
- type: type,
3071
- start: function (c) {
3072
- controller = c;
3073
- }
3074
- });
3075
- var previousBlockedChunk = null;
3076
- resolveStream(response, reference, type, {
3077
- enqueueModel: function (json) {
3078
- if (null === previousBlockedChunk) {
3079
- var chunk = new ReactPromise(
3080
- "resolved_model",
3081
- json,
3082
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3083
- );
3084
- initializeModelChunk(chunk);
3085
- "fulfilled" === chunk.status
3086
- ? controller.enqueue(chunk.value)
3087
- : (chunk.then(
3088
- function (v) {
3089
- return controller.enqueue(v);
3090
- },
3091
- function (e) {
3092
- return controller.error(e);
3093
- }
3094
- ),
3095
- (previousBlockedChunk = chunk));
3096
- } else {
3097
- chunk = previousBlockedChunk;
3098
- var _chunk = new ReactPromise("pending", null, null);
3099
- _chunk.then(
3100
- function (v) {
3101
- return controller.enqueue(v);
3102
- },
3103
- function (e) {
3104
- return controller.error(e);
3105
- }
3106
- );
3107
- previousBlockedChunk = _chunk;
3108
- chunk.then(function () {
3109
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
3110
- resolveModelChunk(response, _chunk, json, -1);
3111
- });
3177
+ closed = !1,
3178
+ stream = new ReadableStream({
3179
+ type: type,
3180
+ start: function (c) {
3181
+ controller = c;
3112
3182
  }
3113
- },
3114
- close: function () {
3115
- if (!closed)
3116
- if (((closed = !0), null === previousBlockedChunk))
3117
- controller.close();
3118
- else {
3119
- var blockedChunk = previousBlockedChunk;
3120
- previousBlockedChunk = null;
3121
- blockedChunk.then(function () {
3122
- return controller.close();
3123
- });
3124
- }
3125
- },
3126
- error: function (error) {
3127
- if (!closed)
3128
- if (((closed = !0), null === previousBlockedChunk))
3129
- controller.error(error);
3130
- else {
3131
- var blockedChunk = previousBlockedChunk;
3132
- previousBlockedChunk = null;
3133
- blockedChunk.then(function () {
3134
- return controller.error(error);
3183
+ }),
3184
+ previousBlockedChunk = null,
3185
+ flightController = {
3186
+ enqueueModel: function (json) {
3187
+ if (null === previousBlockedChunk) {
3188
+ var chunk = new ReactPromise(
3189
+ "resolved_model",
3190
+ json,
3191
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3192
+ );
3193
+ initializeModelChunk(chunk);
3194
+ "fulfilled" === chunk.status
3195
+ ? enqueue(chunk.value)
3196
+ : (chunk.then(enqueue, flightController.error),
3197
+ (previousBlockedChunk = chunk));
3198
+ } else {
3199
+ chunk = previousBlockedChunk;
3200
+ var _chunk = new ReactPromise("pending", null, null);
3201
+ _chunk.then(enqueue, flightController.error);
3202
+ previousBlockedChunk = _chunk;
3203
+ chunk.then(function () {
3204
+ previousBlockedChunk === _chunk &&
3205
+ (previousBlockedChunk = null);
3206
+ resolveModelChunk(response, _chunk, json, -1);
3135
3207
  });
3136
3208
  }
3137
- }
3138
- });
3139
- return type;
3140
- }
3141
- function asyncIterator() {
3142
- return this;
3209
+ },
3210
+ close: function () {
3211
+ if (!closed)
3212
+ if (((closed = !0), null === previousBlockedChunk))
3213
+ controller.close();
3214
+ else {
3215
+ var blockedChunk = previousBlockedChunk;
3216
+ previousBlockedChunk = null;
3217
+ blockedChunk.then(function () {
3218
+ return controller.close();
3219
+ });
3220
+ }
3221
+ },
3222
+ error: function (error) {
3223
+ if (!closed)
3224
+ if (((closed = !0), null === previousBlockedChunk))
3225
+ controller.error(error);
3226
+ else {
3227
+ var blockedChunk = previousBlockedChunk;
3228
+ previousBlockedChunk = null;
3229
+ blockedChunk.then(function () {
3230
+ return controller.error(error);
3231
+ });
3232
+ }
3233
+ }
3234
+ };
3235
+ resolveStream(response, reference, stream, flightController);
3236
+ return stream;
3143
3237
  }
3144
- function createIterator(next) {
3145
- next = { next: next };
3146
- next[ASYNC_ITERATOR] = asyncIterator;
3147
- return next;
3238
+ function FlightIterator(next) {
3239
+ this.next = next;
3148
3240
  }
3149
3241
  function parseAsyncIterable(response, reference, iterator) {
3150
3242
  reference = parseInt(reference.slice(2), 16);
@@ -3155,7 +3247,7 @@
3155
3247
  nextWriteIndex = 0,
3156
3248
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
3157
3249
  var nextReadIndex = 0;
3158
- return createIterator(function (arg) {
3250
+ return new FlightIterator(function (arg) {
3159
3251
  if (void 0 !== arg)
3160
3252
  throw Error(
3161
3253
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -3234,19 +3326,30 @@
3234
3326
  });
3235
3327
  return iterator;
3236
3328
  }
3237
- function parseModelString(response, obj, key, value, reference) {
3329
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
3238
3330
  if ("$" === value[0]) {
3239
3331
  switch (value[1]) {
3240
3332
  case "$":
3241
- return value.slice(1);
3333
+ return (
3334
+ null !== arrayRoot &&
3335
+ bumpArrayCount(arrayRoot, value.length - 1, response),
3336
+ value.slice(1)
3337
+ );
3242
3338
  case "@":
3243
3339
  return (
3244
3340
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
3245
3341
  );
3246
3342
  case "h":
3247
3343
  return (
3248
- (value = value.slice(2)),
3249
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
3344
+ (arrayRoot = value.slice(2)),
3345
+ getOutlinedModel(
3346
+ response,
3347
+ arrayRoot,
3348
+ obj,
3349
+ key,
3350
+ null,
3351
+ loadServerReference$1
3352
+ )
3250
3353
  );
3251
3354
  case "T":
3252
3355
  if (
@@ -3262,27 +3365,44 @@
3262
3365
  );
3263
3366
  case "Q":
3264
3367
  return (
3265
- (value = value.slice(2)),
3266
- getOutlinedModel(response, value, obj, key, createMap)
3368
+ (arrayRoot = value.slice(2)),
3369
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
3267
3370
  );
3268
3371
  case "W":
3269
3372
  return (
3270
- (value = value.slice(2)),
3271
- getOutlinedModel(response, value, obj, key, createSet)
3373
+ (arrayRoot = value.slice(2)),
3374
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
3272
3375
  );
3273
3376
  case "K":
3274
3377
  obj = value.slice(2);
3275
- var formPrefix = response._prefix + obj + "_",
3276
- data = new FormData();
3277
- response._formData.forEach(function (entry, entryKey) {
3278
- entryKey.startsWith(formPrefix) &&
3279
- data.append(entryKey.slice(formPrefix.length), entry);
3280
- });
3281
- return data;
3378
+ obj = response._prefix + obj + "_";
3379
+ key = new FormData();
3380
+ response = response._formData;
3381
+ arrayRoot = Array.from(response.keys());
3382
+ for (value = 0; value < arrayRoot.length; value++)
3383
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
3384
+ for (
3385
+ var entries = response.getAll(reference),
3386
+ newKey = reference.slice(obj.length),
3387
+ j = 0;
3388
+ j < entries.length;
3389
+ j++
3390
+ )
3391
+ key.append(newKey, entries[j]);
3392
+ response.delete(reference);
3393
+ }
3394
+ return key;
3282
3395
  case "i":
3283
3396
  return (
3284
- (value = value.slice(2)),
3285
- getOutlinedModel(response, value, obj, key, extractIterator)
3397
+ (arrayRoot = value.slice(2)),
3398
+ getOutlinedModel(
3399
+ response,
3400
+ arrayRoot,
3401
+ obj,
3402
+ key,
3403
+ null,
3404
+ extractIterator
3405
+ )
3286
3406
  );
3287
3407
  case "I":
3288
3408
  return Infinity;
@@ -3295,15 +3415,50 @@
3295
3415
  case "D":
3296
3416
  return new Date(Date.parse(value.slice(2)));
3297
3417
  case "n":
3298
- return BigInt(value.slice(2));
3418
+ obj = value.slice(2);
3419
+ if (obj.length > MAX_BIGINT_DIGITS)
3420
+ throw Error(
3421
+ "BigInt is too large. Received " +
3422
+ obj.length +
3423
+ " digits but the limit is " +
3424
+ MAX_BIGINT_DIGITS +
3425
+ "."
3426
+ );
3427
+ null !== arrayRoot &&
3428
+ bumpArrayCount(arrayRoot, obj.length, response);
3429
+ return BigInt(obj);
3299
3430
  }
3300
3431
  switch (value[1]) {
3301
3432
  case "A":
3302
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
3433
+ return parseTypedArray(
3434
+ response,
3435
+ value,
3436
+ ArrayBuffer,
3437
+ 1,
3438
+ obj,
3439
+ key,
3440
+ arrayRoot
3441
+ );
3303
3442
  case "O":
3304
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
3443
+ return parseTypedArray(
3444
+ response,
3445
+ value,
3446
+ Int8Array,
3447
+ 1,
3448
+ obj,
3449
+ key,
3450
+ arrayRoot
3451
+ );
3305
3452
  case "o":
3306
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
3453
+ return parseTypedArray(
3454
+ response,
3455
+ value,
3456
+ Uint8Array,
3457
+ 1,
3458
+ obj,
3459
+ key,
3460
+ arrayRoot
3461
+ );
3307
3462
  case "U":
3308
3463
  return parseTypedArray(
3309
3464
  response,
@@ -3311,22 +3466,79 @@
3311
3466
  Uint8ClampedArray,
3312
3467
  1,
3313
3468
  obj,
3314
- key
3469
+ key,
3470
+ arrayRoot
3315
3471
  );
3316
3472
  case "S":
3317
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
3473
+ return parseTypedArray(
3474
+ response,
3475
+ value,
3476
+ Int16Array,
3477
+ 2,
3478
+ obj,
3479
+ key,
3480
+ arrayRoot
3481
+ );
3318
3482
  case "s":
3319
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3483
+ return parseTypedArray(
3484
+ response,
3485
+ value,
3486
+ Uint16Array,
3487
+ 2,
3488
+ obj,
3489
+ key,
3490
+ arrayRoot
3491
+ );
3320
3492
  case "L":
3321
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3493
+ return parseTypedArray(
3494
+ response,
3495
+ value,
3496
+ Int32Array,
3497
+ 4,
3498
+ obj,
3499
+ key,
3500
+ arrayRoot
3501
+ );
3322
3502
  case "l":
3323
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3503
+ return parseTypedArray(
3504
+ response,
3505
+ value,
3506
+ Uint32Array,
3507
+ 4,
3508
+ obj,
3509
+ key,
3510
+ arrayRoot
3511
+ );
3324
3512
  case "G":
3325
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3513
+ return parseTypedArray(
3514
+ response,
3515
+ value,
3516
+ Float32Array,
3517
+ 4,
3518
+ obj,
3519
+ key,
3520
+ arrayRoot
3521
+ );
3326
3522
  case "g":
3327
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3523
+ return parseTypedArray(
3524
+ response,
3525
+ value,
3526
+ Float64Array,
3527
+ 8,
3528
+ obj,
3529
+ key,
3530
+ arrayRoot
3531
+ );
3328
3532
  case "M":
3329
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3533
+ return parseTypedArray(
3534
+ response,
3535
+ value,
3536
+ BigInt64Array,
3537
+ 8,
3538
+ obj,
3539
+ key,
3540
+ arrayRoot
3541
+ );
3330
3542
  case "m":
3331
3543
  return parseTypedArray(
3332
3544
  response,
@@ -3334,10 +3546,19 @@
3334
3546
  BigUint64Array,
3335
3547
  8,
3336
3548
  obj,
3337
- key
3549
+ key,
3550
+ arrayRoot
3338
3551
  );
3339
3552
  case "V":
3340
- return parseTypedArray(response, value, DataView, 1, obj, key);
3553
+ return parseTypedArray(
3554
+ response,
3555
+ value,
3556
+ DataView,
3557
+ 1,
3558
+ obj,
3559
+ key,
3560
+ arrayRoot
3561
+ );
3341
3562
  case "B":
3342
3563
  return (
3343
3564
  (obj = parseInt(value.slice(2), 16)),
@@ -3355,8 +3576,16 @@
3355
3576
  return parseAsyncIterable(response, value, !0);
3356
3577
  }
3357
3578
  value = value.slice(1);
3358
- return getOutlinedModel(response, value, obj, key, createModel);
3579
+ return getOutlinedModel(
3580
+ response,
3581
+ value,
3582
+ obj,
3583
+ key,
3584
+ arrayRoot,
3585
+ createModel
3586
+ );
3359
3587
  }
3588
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
3360
3589
  return value;
3361
3590
  }
3362
3591
  function createResponse(
@@ -3368,25 +3597,40 @@
3368
3597
  3 < arguments.length && void 0 !== arguments[3]
3369
3598
  ? arguments[3]
3370
3599
  : new FormData(),
3600
+ arraySizeLimit =
3601
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
3371
3602
  chunks = new Map();
3372
3603
  return {
3373
3604
  _bundlerConfig: bundlerConfig,
3374
3605
  _prefix: formFieldPrefix,
3375
3606
  _formData: backingFormData,
3376
3607
  _chunks: chunks,
3377
- _temporaryReferences: temporaryReferences
3608
+ _temporaryReferences: temporaryReferences,
3609
+ _rootArrayContexts: new WeakMap(),
3610
+ _arraySizeLimit: arraySizeLimit
3378
3611
  };
3379
3612
  }
3380
3613
  function close(response) {
3381
3614
  reportGlobalError(response, Error("Connection closed."));
3382
3615
  }
3383
- function loadServerReference(bundlerConfig, id, bound) {
3616
+ function loadServerReference(bundlerConfig, metaData) {
3617
+ var id = metaData.id;
3618
+ if ("string" !== typeof id) return null;
3384
3619
  var serverReference = resolveServerReference(bundlerConfig, id);
3385
3620
  bundlerConfig = preloadModule(serverReference);
3386
- return bound
3387
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3621
+ metaData = metaData.bound;
3622
+ return metaData instanceof Promise
3623
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
3388
3624
  _ref = _ref[0];
3389
3625
  var fn = requireModule(serverReference);
3626
+ if (_ref.length > MAX_BOUND_ARGS)
3627
+ throw Error(
3628
+ "Server Function has too many bound arguments. Received " +
3629
+ _ref.length +
3630
+ " but the limit is " +
3631
+ MAX_BOUND_ARGS +
3632
+ "."
3633
+ );
3390
3634
  return fn.bind.apply(fn, [null].concat(_ref));
3391
3635
  })
3392
3636
  : bundlerConfig
@@ -3395,8 +3639,19 @@
3395
3639
  })
3396
3640
  : Promise.resolve(requireModule(serverReference));
3397
3641
  }
3398
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
3399
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3642
+ function decodeBoundActionMetaData(
3643
+ body,
3644
+ serverManifest,
3645
+ formFieldPrefix,
3646
+ arraySizeLimit
3647
+ ) {
3648
+ body = createResponse(
3649
+ serverManifest,
3650
+ formFieldPrefix,
3651
+ void 0,
3652
+ body,
3653
+ arraySizeLimit
3654
+ );
3400
3655
  close(body);
3401
3656
  body = getChunk(body, 0);
3402
3657
  body.then(function () {});
@@ -3826,13 +4081,14 @@
3826
4081
  patchConsole(console, "table"),
3827
4082
  patchConsole(console, "trace"),
3828
4083
  patchConsole(console, "warn"));
3829
- var ObjectPrototype = Object.prototype,
4084
+ var ObjectPrototype$1 = Object.prototype,
3830
4085
  stringify = JSON.stringify,
3831
4086
  PENDING$1 = 0,
3832
4087
  COMPLETED = 1,
3833
4088
  ABORTED = 3,
3834
4089
  ERRORED$1 = 4,
3835
4090
  RENDERING = 5,
4091
+ __PROTO__$1 = "__proto__",
3836
4092
  OPENING = 10,
3837
4093
  ABORTING = 12,
3838
4094
  CLOSING = 13,
@@ -3855,16 +4111,23 @@
3855
4111
  case "fulfilled":
3856
4112
  if ("function" === typeof resolve) {
3857
4113
  for (
3858
- var inspectedValue = this.value, cycleProtection = 0;
4114
+ var inspectedValue = this.value,
4115
+ cycleProtection = 0,
4116
+ visited = new Set();
3859
4117
  inspectedValue instanceof ReactPromise;
3860
4118
 
3861
4119
  ) {
3862
4120
  cycleProtection++;
3863
- if (inspectedValue === this || 1e3 < cycleProtection) {
4121
+ if (
4122
+ inspectedValue === this ||
4123
+ visited.has(inspectedValue) ||
4124
+ 1e3 < cycleProtection
4125
+ ) {
3864
4126
  "function" === typeof reject &&
3865
4127
  reject(Error("Cannot have cyclic thenables."));
3866
4128
  return;
3867
4129
  }
4130
+ visited.add(inspectedValue);
3868
4131
  if ("fulfilled" === inspectedValue.status)
3869
4132
  inspectedValue = inspectedValue.value;
3870
4133
  else break;
@@ -3885,7 +4148,15 @@
3885
4148
  "function" === typeof reject && reject(this.reason);
3886
4149
  }
3887
4150
  };
3888
- var initializingHandler = null;
4151
+ var ObjectPrototype = Object.prototype,
4152
+ ArrayPrototype = Array.prototype,
4153
+ initializingHandler = null;
4154
+ FlightIterator.prototype = {};
4155
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
4156
+ return this;
4157
+ };
4158
+ var MAX_BIGINT_DIGITS = 300,
4159
+ MAX_BOUND_ARGS = 1e3;
3889
4160
  exports.createClientModuleProxy = function (moduleId) {
3890
4161
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
3891
4162
  return new Proxy(moduleId, proxyHandlers$1);
@@ -3895,20 +4166,24 @@
3895
4166
  };
3896
4167
  exports.decodeAction = function (body, serverManifest) {
3897
4168
  var formData = new FormData(),
3898
- action = null;
4169
+ action = null,
4170
+ seenActions = new Set();
3899
4171
  body.forEach(function (value, key) {
3900
4172
  key.startsWith("$ACTION_")
3901
4173
  ? key.startsWith("$ACTION_REF_")
3902
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
4174
+ ? seenActions.has(key) ||
4175
+ (seenActions.add(key),
4176
+ (value = "$ACTION_" + key.slice(12) + ":"),
3903
4177
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
3904
- (action = loadServerReference(
3905
- serverManifest,
3906
- value.id,
3907
- value.bound
3908
- )))
4178
+ (action = loadServerReference(serverManifest, value)))
3909
4179
  : key.startsWith("$ACTION_ID_") &&
3910
- ((value = key.slice(11)),
3911
- (action = loadServerReference(serverManifest, value, null)))
4180
+ !seenActions.has(key) &&
4181
+ (seenActions.add(key),
4182
+ (value = key.slice(11)),
4183
+ (action = loadServerReference(serverManifest, {
4184
+ id: value,
4185
+ bound: null
4186
+ })))
3912
4187
  : formData.append(key, value);
3913
4188
  });
3914
4189
  return null === action
@@ -3944,7 +4219,8 @@
3944
4219
  turbopackMap,
3945
4220
  "",
3946
4221
  options ? options.temporaryReferences : void 0,
3947
- body
4222
+ body,
4223
+ options ? options.arraySizeLimit : void 0
3948
4224
  );
3949
4225
  turbopackMap = getChunk(body, 0);
3950
4226
  close(body);