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.
@@ -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
  )
@@ -2508,12 +2515,12 @@
2508
2515
  this.value = value;
2509
2516
  this.reason = reason;
2510
2517
  }
2511
- function wakeChunk(response, listeners, value) {
2518
+ function wakeChunk(response, listeners, value, chunk) {
2512
2519
  for (var i = 0; i < listeners.length; i++) {
2513
2520
  var listener = listeners[i];
2514
2521
  "function" === typeof listener
2515
2522
  ? listener(value)
2516
- : fulfillReference(response, listener, value);
2523
+ : fulfillReference(response, listener, value, chunk.reason);
2517
2524
  }
2518
2525
  }
2519
2526
  function rejectChunk(response, listeners, error) {
@@ -2524,27 +2531,6 @@
2524
2531
  : rejectReference(response, listener.handler, error);
2525
2532
  }
2526
2533
  }
2527
- function resolveBlockedCycle(resolvedChunk, reference) {
2528
- var referencedChunk = reference.handler.chunk;
2529
- if (null === referencedChunk) return null;
2530
- if (referencedChunk === resolvedChunk) return reference.handler;
2531
- reference = referencedChunk.value;
2532
- if (null !== reference)
2533
- for (
2534
- referencedChunk = 0;
2535
- referencedChunk < reference.length;
2536
- referencedChunk++
2537
- ) {
2538
- var listener = reference[referencedChunk];
2539
- if (
2540
- "function" !== typeof listener &&
2541
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2542
- null !== listener)
2543
- )
2544
- return listener;
2545
- }
2546
- return null;
2547
- }
2548
2534
  function triggerErrorOnChunk(response, chunk, error) {
2549
2535
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2550
2536
  chunk.reason.error(error);
@@ -2568,57 +2554,25 @@
2568
2554
  chunk.value = value;
2569
2555
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
2570
2556
  if (null !== resolveListeners)
2571
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2557
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2572
2558
  case "fulfilled":
2573
- wakeChunk(response, resolveListeners, chunk.value);
2559
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2574
2560
  break;
2575
2561
  case "blocked":
2576
- for (value = 0; value < resolveListeners.length; value++)
2577
- if (
2578
- ((id = resolveListeners[value]), "function" !== typeof id)
2579
- ) {
2580
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2581
- if (null !== cyclicHandler)
2582
- switch (
2583
- (fulfillReference(response, id, cyclicHandler.value),
2584
- resolveListeners.splice(value, 1),
2585
- value--,
2586
- null !== rejectListeners &&
2587
- ((id = rejectListeners.indexOf(id)),
2588
- -1 !== id && rejectListeners.splice(id, 1)),
2589
- chunk.status)
2590
- ) {
2591
- case "fulfilled":
2592
- wakeChunk(response, resolveListeners, chunk.value);
2593
- break a;
2594
- case "rejected":
2595
- null !== rejectListeners &&
2596
- rejectChunk(response, rejectListeners, chunk.reason);
2597
- break a;
2598
- }
2599
- }
2600
2562
  case "pending":
2601
2563
  if (chunk.value)
2602
- for (
2603
- response = 0;
2604
- response < resolveListeners.length;
2605
- response++
2606
- )
2607
- chunk.value.push(resolveListeners[response]);
2564
+ for (value = 0; value < resolveListeners.length; value++)
2565
+ chunk.value.push(resolveListeners[value]);
2608
2566
  else chunk.value = resolveListeners;
2609
2567
  if (chunk.reason) {
2610
2568
  if (rejectListeners)
2611
- for (
2612
- resolveListeners = 0;
2613
- resolveListeners < rejectListeners.length;
2614
- resolveListeners++
2615
- )
2616
- chunk.reason.push(rejectListeners[resolveListeners]);
2569
+ for (value = 0; value < rejectListeners.length; value++)
2570
+ chunk.reason.push(rejectListeners[value]);
2617
2571
  } else chunk.reason = rejectListeners;
2618
2572
  break;
2619
2573
  case "rejected":
2620
2574
  rejectListeners &&
2621
- wakeChunk(response, rejectListeners, chunk.reason);
2575
+ rejectChunk(response, rejectListeners, chunk.reason);
2622
2576
  }
2623
2577
  }
2624
2578
  }
@@ -2642,15 +2596,51 @@
2642
2596
  );
2643
2597
  }
2644
2598
  function loadServerReference$1(response, metaData, parentObject, key) {
2599
+ function reject(error) {
2600
+ var rejectListeners = blockedPromise.reason,
2601
+ erroredPromise = blockedPromise;
2602
+ erroredPromise.status = "rejected";
2603
+ erroredPromise.value = null;
2604
+ erroredPromise.reason = error;
2605
+ null !== rejectListeners &&
2606
+ rejectChunk(response, rejectListeners, error);
2607
+ rejectReference(response, handler, error);
2608
+ }
2645
2609
  var id = metaData.id;
2646
2610
  if ("string" !== typeof id || "then" === key) return null;
2611
+ var cachedPromise = metaData.$$promise;
2612
+ if (void 0 !== cachedPromise) {
2613
+ if ("fulfilled" === cachedPromise.status)
2614
+ return (
2615
+ (cachedPromise = cachedPromise.value),
2616
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2617
+ );
2618
+ initializingHandler
2619
+ ? ((id = initializingHandler), id.deps++)
2620
+ : (id = initializingHandler =
2621
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2622
+ cachedPromise.then(
2623
+ resolveReference.bind(null, response, id, parentObject, key),
2624
+ rejectReference.bind(null, response, id)
2625
+ );
2626
+ return null;
2627
+ }
2628
+ var blockedPromise = new ReactPromise("blocked", null, null);
2629
+ metaData.$$promise = blockedPromise;
2647
2630
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2648
- id = metaData.bound;
2649
- var promise = preloadModule(serverReference);
2650
- if (promise)
2651
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2652
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2653
- else return requireModule(serverReference);
2631
+ cachedPromise = metaData.bound;
2632
+ if ((id = preloadModule(serverReference)))
2633
+ cachedPromise instanceof ReactPromise &&
2634
+ (id = Promise.all([id, cachedPromise]));
2635
+ else if (cachedPromise instanceof ReactPromise)
2636
+ id = Promise.resolve(cachedPromise);
2637
+ else
2638
+ return (
2639
+ (cachedPromise = requireModule(serverReference)),
2640
+ (id = blockedPromise),
2641
+ (id.status = "fulfilled"),
2642
+ (id.value = cachedPromise)
2643
+ );
2654
2644
  if (initializingHandler) {
2655
2645
  var handler = initializingHandler;
2656
2646
  handler.deps++;
@@ -2662,93 +2652,107 @@
2662
2652
  deps: 1,
2663
2653
  errored: !1
2664
2654
  };
2665
- promise.then(
2666
- function () {
2667
- var resolvedValue = requireModule(serverReference);
2668
- if (metaData.bound) {
2669
- var promiseValue = metaData.bound.value;
2670
- promiseValue = Array.isArray(promiseValue)
2671
- ? promiseValue.slice(0)
2672
- : [];
2673
- promiseValue.unshift(null);
2674
- resolvedValue = resolvedValue.bind.apply(
2675
- resolvedValue,
2676
- promiseValue
2655
+ id.then(function () {
2656
+ var resolvedValue = requireModule(serverReference);
2657
+ if (metaData.bound) {
2658
+ var promiseValue = metaData.bound.value;
2659
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2660
+ if (promiseValue.length > MAX_BOUND_ARGS) {
2661
+ reject(
2662
+ Error(
2663
+ "Server Function has too many bound arguments. Received " +
2664
+ promiseValue.length +
2665
+ " but the limit is " +
2666
+ MAX_BOUND_ARGS +
2667
+ "."
2668
+ )
2677
2669
  );
2670
+ return;
2678
2671
  }
2679
- parentObject[key] = resolvedValue;
2680
- "" === key &&
2681
- null === handler.value &&
2682
- (handler.value = resolvedValue);
2683
- handler.deps--;
2684
- 0 === handler.deps &&
2685
- ((resolvedValue = handler.chunk),
2686
- null !== resolvedValue &&
2687
- "blocked" === resolvedValue.status &&
2688
- ((promiseValue = resolvedValue.value),
2689
- (resolvedValue.status = "fulfilled"),
2690
- (resolvedValue.value = handler.value),
2691
- (resolvedValue.reason = null),
2692
- null !== promiseValue &&
2693
- wakeChunk(response, promiseValue, handler.value)));
2694
- },
2695
- function (error) {
2696
- if (!handler.errored) {
2697
- handler.errored = !0;
2698
- handler.value = null;
2699
- handler.reason = error;
2700
- var chunk = handler.chunk;
2701
- null !== chunk &&
2702
- "blocked" === chunk.status &&
2703
- triggerErrorOnChunk(response, chunk, error);
2704
- }
2672
+ promiseValue.unshift(null);
2673
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2705
2674
  }
2706
- );
2675
+ promiseValue = blockedPromise.value;
2676
+ var initializedPromise = blockedPromise;
2677
+ initializedPromise.status = "fulfilled";
2678
+ initializedPromise.value = resolvedValue;
2679
+ initializedPromise.reason = null;
2680
+ null !== promiseValue &&
2681
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2682
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2683
+ }, reject);
2707
2684
  return null;
2708
2685
  }
2709
- function reviveModel(response, parentObj, parentKey, value, reference) {
2686
+ function reviveModel(
2687
+ response,
2688
+ parentObj,
2689
+ parentKey,
2690
+ value,
2691
+ reference,
2692
+ arrayRoot
2693
+ ) {
2710
2694
  if ("string" === typeof value)
2711
2695
  return parseModelString(
2712
2696
  response,
2713
2697
  parentObj,
2714
2698
  parentKey,
2715
2699
  value,
2716
- reference
2700
+ reference,
2701
+ arrayRoot
2717
2702
  );
2718
2703
  if ("object" === typeof value && null !== value)
2719
2704
  if (
2720
2705
  (void 0 !== reference &&
2721
2706
  void 0 !== response._temporaryReferences &&
2722
2707
  response._temporaryReferences.set(value, reference),
2723
- Array.isArray(value))
2724
- )
2725
- for (var i = 0; i < value.length; i++)
2726
- value[i] = reviveModel(
2708
+ isArrayImpl(value))
2709
+ ) {
2710
+ if (null === arrayRoot) {
2711
+ var childContext = { count: 0, fork: !1 };
2712
+ response._rootArrayContexts.set(value, childContext);
2713
+ } else childContext = arrayRoot;
2714
+ 1 < value.length && (childContext.fork = !0);
2715
+ bumpArrayCount(childContext, value.length + 1, response);
2716
+ for (parentObj = 0; parentObj < value.length; parentObj++)
2717
+ value[parentObj] = reviveModel(
2727
2718
  response,
2728
2719
  value,
2729
- "" + i,
2730
- value[i],
2731
- void 0 !== reference ? reference + ":" + i : void 0
2720
+ "" + parentObj,
2721
+ value[parentObj],
2722
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
2723
+ childContext
2732
2724
  );
2733
- else
2734
- for (i in value)
2735
- hasOwnProperty.call(value, i) &&
2736
- ((parentObj =
2737
- void 0 !== reference && -1 === i.indexOf(":")
2738
- ? reference + ":" + i
2739
- : void 0),
2740
- (parentObj = reviveModel(
2741
- response,
2742
- value,
2743
- i,
2744
- value[i],
2745
- parentObj
2746
- )),
2747
- void 0 !== parentObj || "__proto__" === i
2748
- ? (value[i] = parentObj)
2749
- : delete value[i]);
2725
+ } else
2726
+ for (childContext in value)
2727
+ hasOwnProperty.call(value, childContext) &&
2728
+ ("__proto__" === childContext
2729
+ ? delete value[childContext]
2730
+ : ((parentObj =
2731
+ void 0 !== reference && -1 === childContext.indexOf(":")
2732
+ ? reference + ":" + childContext
2733
+ : void 0),
2734
+ (parentObj = reviveModel(
2735
+ response,
2736
+ value,
2737
+ childContext,
2738
+ value[childContext],
2739
+ parentObj,
2740
+ null
2741
+ )),
2742
+ void 0 !== parentObj
2743
+ ? (value[childContext] = parentObj)
2744
+ : delete value[childContext]));
2750
2745
  return value;
2751
2746
  }
2747
+ function bumpArrayCount(arrayContext, slots, response) {
2748
+ if (
2749
+ (arrayContext.count += slots) > response._arraySizeLimit &&
2750
+ arrayContext.fork
2751
+ )
2752
+ throw Error(
2753
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
2754
+ );
2755
+ }
2752
2756
  function initializeModelChunk(chunk) {
2753
2757
  var prevHandler = initializingHandler;
2754
2758
  initializingHandler = null;
@@ -2762,13 +2766,15 @@
2762
2766
  chunk.value = null;
2763
2767
  chunk.reason = null;
2764
2768
  try {
2765
- var rawModel = JSON.parse(resolvedModel),
2766
- value = reviveModel(
2769
+ var rawModel = JSON.parse(resolvedModel);
2770
+ resolvedModel = { count: 0, fork: !1 };
2771
+ var value = reviveModel(
2767
2772
  response,
2768
2773
  { "": rawModel },
2769
2774
  "",
2770
2775
  rawModel,
2771
- _chunk$reason
2776
+ _chunk$reason,
2777
+ resolvedModel
2772
2778
  ),
2773
2779
  resolveListeners = chunk.value;
2774
2780
  if (null !== resolveListeners)
@@ -2780,19 +2786,20 @@
2780
2786
  var listener = resolveListeners[rawModel];
2781
2787
  "function" === typeof listener
2782
2788
  ? listener(value)
2783
- : fulfillReference(response, listener, value);
2789
+ : fulfillReference(response, listener, value, resolvedModel);
2784
2790
  }
2785
2791
  if (null !== initializingHandler) {
2786
2792
  if (initializingHandler.errored) throw initializingHandler.reason;
2787
2793
  if (0 < initializingHandler.deps) {
2788
2794
  initializingHandler.value = value;
2795
+ initializingHandler.reason = resolvedModel;
2789
2796
  initializingHandler.chunk = chunk;
2790
2797
  return;
2791
2798
  }
2792
2799
  }
2793
2800
  chunk.status = "fulfilled";
2794
2801
  chunk.value = value;
2795
- chunk.reason = null;
2802
+ chunk.reason = resolvedModel;
2796
2803
  } catch (error) {
2797
2804
  (chunk.status = "rejected"), (chunk.reason = error);
2798
2805
  } finally {
@@ -2805,7 +2812,8 @@
2805
2812
  ? triggerErrorOnChunk(response, chunk, error)
2806
2813
  : "fulfilled" === chunk.status &&
2807
2814
  null !== chunk.reason &&
2808
- chunk.reason.error(error);
2815
+ ((chunk = chunk.reason),
2816
+ "function" === typeof chunk.error && chunk.error(error));
2809
2817
  });
2810
2818
  }
2811
2819
  function getChunk(response, id) {
@@ -2824,40 +2832,74 @@
2824
2832
  chunks.set(id, chunk));
2825
2833
  return chunk;
2826
2834
  }
2827
- function fulfillReference(response, reference, value) {
2835
+ function fulfillReference(response, reference, value, arrayRoot) {
2828
2836
  var handler = reference.handler,
2829
2837
  parentObject = reference.parentObject,
2830
2838
  key = reference.key,
2831
2839
  map = reference.map,
2832
2840
  path = reference.path;
2833
2841
  try {
2834
- for (var i = 1; i < path.length; i++) {
2842
+ for (
2843
+ var localLength = 0,
2844
+ rootArrayContexts = response._rootArrayContexts,
2845
+ i = 1;
2846
+ i < path.length;
2847
+ i++
2848
+ ) {
2835
2849
  var name = path[i];
2836
2850
  if (
2837
2851
  "object" !== typeof value ||
2838
- !hasOwnProperty.call(value, name) ||
2839
- value instanceof Promise
2852
+ null === value ||
2853
+ (getPrototypeOf(value) !== ObjectPrototype &&
2854
+ getPrototypeOf(value) !== ArrayPrototype) ||
2855
+ !hasOwnProperty.call(value, name)
2840
2856
  )
2841
2857
  throw Error("Invalid reference.");
2842
2858
  value = value[name];
2859
+ if (isArrayImpl(value))
2860
+ (localLength = 0),
2861
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
2862
+ else if (((arrayRoot = null), "string" === typeof value))
2863
+ localLength = value.length;
2864
+ else if ("bigint" === typeof value) {
2865
+ var n = Math.abs(Number(value));
2866
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
2867
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
2843
2868
  }
2844
- var mappedValue = map(response, value, parentObject, key);
2845
- parentObject[key] = mappedValue;
2846
- "" === key && null === handler.value && (handler.value = mappedValue);
2869
+ var resolvedValue = map(response, value, parentObject, key);
2870
+ var referenceArrayRoot = reference.arrayRoot;
2871
+ null !== referenceArrayRoot &&
2872
+ (null !== arrayRoot
2873
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
2874
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
2875
+ : 0 < localLength &&
2876
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2847
2877
  } catch (error) {
2848
- rejectReference(response, reference.handler, error);
2878
+ rejectReference(response, handler, error);
2849
2879
  return;
2850
2880
  }
2881
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2882
+ }
2883
+ function resolveReference(
2884
+ response,
2885
+ handler,
2886
+ parentObject,
2887
+ key,
2888
+ resolvedValue
2889
+ ) {
2890
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
2891
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2851
2892
  handler.deps--;
2852
2893
  0 === handler.deps &&
2853
- ((reference = handler.chunk),
2854
- null !== reference &&
2855
- "blocked" === reference.status &&
2856
- ((value = reference.value),
2857
- (reference.status = "fulfilled"),
2858
- (reference.value = handler.value),
2859
- (reference.reason = handler.reason),
2860
- null !== value && wakeChunk(response, value, handler.value)));
2894
+ ((parentObject = handler.chunk),
2895
+ null !== parentObject &&
2896
+ "blocked" === parentObject.status &&
2897
+ ((key = parentObject.value),
2898
+ (parentObject.status = "fulfilled"),
2899
+ (parentObject.value = handler.value),
2900
+ (parentObject.reason = handler.reason),
2901
+ null !== key &&
2902
+ wakeChunk(response, key, handler.value, parentObject)));
2861
2903
  }
2862
2904
  function rejectReference(response, handler, error) {
2863
2905
  handler.errored ||
@@ -2869,29 +2911,66 @@
2869
2911
  "blocked" === handler.status &&
2870
2912
  triggerErrorOnChunk(response, handler, error));
2871
2913
  }
2872
- function getOutlinedModel(response, reference, parentObject, key, map) {
2914
+ function getOutlinedModel(
2915
+ response,
2916
+ reference,
2917
+ parentObject,
2918
+ key,
2919
+ referenceArrayRoot,
2920
+ map
2921
+ ) {
2873
2922
  reference = reference.split(":");
2874
- var id = parseInt(reference[0], 16);
2875
- id = getChunk(response, id);
2876
- switch (id.status) {
2923
+ var id = parseInt(reference[0], 16),
2924
+ chunk = getChunk(response, id);
2925
+ switch (chunk.status) {
2877
2926
  case "resolved_model":
2878
- initializeModelChunk(id);
2927
+ initializeModelChunk(chunk);
2879
2928
  }
2880
- switch (id.status) {
2929
+ switch (chunk.status) {
2881
2930
  case "fulfilled":
2882
- id = id.value;
2883
- for (var i = 1; i < reference.length; i++) {
2884
- var name = reference[i];
2931
+ id = chunk.value;
2932
+ chunk = chunk.reason;
2933
+ for (
2934
+ var localLength = 0,
2935
+ rootArrayContexts = response._rootArrayContexts,
2936
+ i = 1;
2937
+ i < reference.length;
2938
+ i++
2939
+ ) {
2940
+ localLength = reference[i];
2885
2941
  if (
2886
2942
  "object" !== typeof id ||
2887
- !hasOwnProperty.call(id, name) ||
2888
- id instanceof Promise
2943
+ null === id ||
2944
+ (getPrototypeOf(id) !== ObjectPrototype &&
2945
+ getPrototypeOf(id) !== ArrayPrototype) ||
2946
+ !hasOwnProperty.call(id, localLength)
2889
2947
  )
2890
2948
  throw Error("Invalid reference.");
2891
- id = id[name];
2949
+ id = id[localLength];
2950
+ isArrayImpl(id)
2951
+ ? ((localLength = 0),
2952
+ (chunk = rootArrayContexts.get(id) || chunk))
2953
+ : ((chunk = null),
2954
+ "string" === typeof id
2955
+ ? (localLength = id.length)
2956
+ : "bigint" === typeof id
2957
+ ? ((localLength = Math.abs(Number(id))),
2958
+ (localLength =
2959
+ 0 === localLength
2960
+ ? 1
2961
+ : Math.floor(Math.log10(localLength)) + 1))
2962
+ : (localLength = ArrayBuffer.isView(id)
2963
+ ? id.byteLength
2964
+ : 0));
2892
2965
  }
2893
- return map(response, id, parentObject, key);
2894
- case "pending":
2966
+ parentObject = map(response, id, parentObject, key);
2967
+ null !== referenceArrayRoot &&
2968
+ (null !== chunk
2969
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
2970
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
2971
+ : 0 < localLength &&
2972
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2973
+ return parentObject;
2895
2974
  case "blocked":
2896
2975
  return (
2897
2976
  initializingHandler
@@ -2904,31 +2983,34 @@
2904
2983
  deps: 1,
2905
2984
  errored: !1
2906
2985
  }),
2907
- (parentObject = {
2986
+ (referenceArrayRoot = {
2908
2987
  handler: response,
2909
2988
  parentObject: parentObject,
2910
2989
  key: key,
2911
2990
  map: map,
2912
- path: reference
2991
+ path: reference,
2992
+ arrayRoot: referenceArrayRoot
2913
2993
  }),
2914
- null === id.value
2915
- ? (id.value = [parentObject])
2916
- : id.value.push(parentObject),
2917
- null === id.reason
2918
- ? (id.reason = [parentObject])
2919
- : id.reason.push(parentObject),
2994
+ null === chunk.value
2995
+ ? (chunk.value = [referenceArrayRoot])
2996
+ : chunk.value.push(referenceArrayRoot),
2997
+ null === chunk.reason
2998
+ ? (chunk.reason = [referenceArrayRoot])
2999
+ : chunk.reason.push(referenceArrayRoot),
2920
3000
  null
2921
3001
  );
3002
+ case "pending":
3003
+ throw Error("Invalid forward reference.");
2922
3004
  default:
2923
3005
  return (
2924
3006
  initializingHandler
2925
3007
  ? ((initializingHandler.errored = !0),
2926
3008
  (initializingHandler.value = null),
2927
- (initializingHandler.reason = id.reason))
3009
+ (initializingHandler.reason = chunk.reason))
2928
3010
  : (initializingHandler = {
2929
3011
  chunk: null,
2930
3012
  value: null,
2931
- reason: id.reason,
3013
+ reason: chunk.reason,
2932
3014
  deps: 0,
2933
3015
  errored: !0
2934
3016
  }),
@@ -2937,12 +3019,21 @@
2937
3019
  }
2938
3020
  }
2939
3021
  function createMap(response, model) {
3022
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
3023
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
3024
+ model.$$consumed = !0;
2940
3025
  return new Map(model);
2941
3026
  }
2942
3027
  function createSet(response, model) {
3028
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
3029
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
3030
+ model.$$consumed = !0;
2943
3031
  return new Set(model);
2944
3032
  }
2945
3033
  function extractIterator(response, model) {
3034
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
3035
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
3036
+ model.$$consumed = !0;
2946
3037
  return model[Symbol.iterator]();
2947
3038
  }
2948
3039
  function createModel(response, model, parentObject, key) {
@@ -2954,13 +3045,34 @@
2954
3045
  constructor,
2955
3046
  bytesPerElement,
2956
3047
  parentObject,
2957
- parentKey
3048
+ parentKey,
3049
+ referenceArrayRoot
2958
3050
  ) {
3051
+ function reject(error) {
3052
+ if (!handler.errored) {
3053
+ handler.errored = !0;
3054
+ handler.value = null;
3055
+ handler.reason = error;
3056
+ var chunk = handler.chunk;
3057
+ null !== chunk &&
3058
+ "blocked" === chunk.status &&
3059
+ triggerErrorOnChunk(response, chunk, error);
3060
+ }
3061
+ }
2959
3062
  reference = parseInt(reference.slice(2), 16);
2960
- bytesPerElement = response._prefix + reference;
2961
- if (response._chunks.has(reference))
3063
+ var key = response._prefix + reference;
3064
+ bytesPerElement = response._chunks;
3065
+ if (bytesPerElement.has(reference))
2962
3066
  throw Error("Already initialized typed array.");
2963
- reference = response._formData.get(bytesPerElement).arrayBuffer();
3067
+ bytesPerElement.set(
3068
+ reference,
3069
+ new ReactPromise(
3070
+ "rejected",
3071
+ null,
3072
+ Error("Already initialized typed array.")
3073
+ )
3074
+ );
3075
+ reference = response._formData.get(key).arrayBuffer();
2964
3076
  if (initializingHandler) {
2965
3077
  var handler = initializingHandler;
2966
3078
  handler.deps++;
@@ -2972,40 +3084,32 @@
2972
3084
  deps: 1,
2973
3085
  errored: !1
2974
3086
  };
2975
- reference.then(
2976
- function (buffer) {
2977
- buffer =
3087
+ reference.then(function (buffer) {
3088
+ try {
3089
+ null !== referenceArrayRoot &&
3090
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
3091
+ var resolvedValue =
2978
3092
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
2979
- parentObject[parentKey] = buffer;
3093
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
2980
3094
  "" === parentKey &&
2981
3095
  null === handler.value &&
2982
- (handler.value = buffer);
2983
- handler.deps--;
2984
- if (
2985
- 0 === handler.deps &&
2986
- ((buffer = handler.chunk),
2987
- null !== buffer && "blocked" === buffer.status)
2988
- ) {
2989
- var resolveListeners = buffer.value;
2990
- buffer.status = "fulfilled";
2991
- buffer.value = handler.value;
2992
- buffer.reason = null;
2993
- null !== resolveListeners &&
2994
- wakeChunk(response, resolveListeners, handler.value);
2995
- }
2996
- },
2997
- function (error) {
2998
- if (!handler.errored) {
2999
- handler.errored = !0;
3000
- handler.value = null;
3001
- handler.reason = error;
3002
- var chunk = handler.chunk;
3003
- null !== chunk &&
3004
- "blocked" === chunk.status &&
3005
- triggerErrorOnChunk(response, chunk, error);
3006
- }
3096
+ (handler.value = resolvedValue);
3097
+ } catch (x) {
3098
+ reject(x);
3099
+ return;
3007
3100
  }
3008
- );
3101
+ handler.deps--;
3102
+ 0 === handler.deps &&
3103
+ ((buffer = handler.chunk),
3104
+ null !== buffer &&
3105
+ "blocked" === buffer.status &&
3106
+ ((resolvedValue = buffer.value),
3107
+ (buffer.status = "fulfilled"),
3108
+ (buffer.value = handler.value),
3109
+ (buffer.reason = null),
3110
+ null !== resolvedValue &&
3111
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
3112
+ }, reject);
3009
3113
  return null;
3010
3114
  }
3011
3115
  function resolveStream(response, id, stream, controller) {
@@ -3023,90 +3127,78 @@
3023
3127
  : controller.enqueueModel(chunks));
3024
3128
  }
3025
3129
  function parseReadableStream(response, reference, type) {
3130
+ function enqueue(value) {
3131
+ "bytes" !== type || ArrayBuffer.isView(value)
3132
+ ? controller.enqueue(value)
3133
+ : flightController.error(Error("Invalid data for bytes stream."));
3134
+ }
3026
3135
  reference = parseInt(reference.slice(2), 16);
3027
3136
  if (response._chunks.has(reference))
3028
3137
  throw Error("Already initialized stream.");
3029
3138
  var controller = null,
3030
- closed = !1;
3031
- type = new ReadableStream({
3032
- type: type,
3033
- start: function (c) {
3034
- controller = c;
3035
- }
3036
- });
3037
- var previousBlockedChunk = null;
3038
- resolveStream(response, reference, type, {
3039
- enqueueModel: function (json) {
3040
- if (null === previousBlockedChunk) {
3041
- var chunk = new ReactPromise(
3042
- "resolved_model",
3043
- json,
3044
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3045
- );
3046
- initializeModelChunk(chunk);
3047
- "fulfilled" === chunk.status
3048
- ? controller.enqueue(chunk.value)
3049
- : (chunk.then(
3050
- function (v) {
3051
- return controller.enqueue(v);
3052
- },
3053
- function (e) {
3054
- return controller.error(e);
3055
- }
3056
- ),
3057
- (previousBlockedChunk = chunk));
3058
- } else {
3059
- chunk = previousBlockedChunk;
3060
- var _chunk = new ReactPromise("pending", null, null);
3061
- _chunk.then(
3062
- function (v) {
3063
- return controller.enqueue(v);
3064
- },
3065
- function (e) {
3066
- return controller.error(e);
3067
- }
3068
- );
3069
- previousBlockedChunk = _chunk;
3070
- chunk.then(function () {
3071
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
3072
- resolveModelChunk(response, _chunk, json, -1);
3073
- });
3139
+ closed = !1,
3140
+ stream = new ReadableStream({
3141
+ type: type,
3142
+ start: function (c) {
3143
+ controller = c;
3074
3144
  }
3075
- },
3076
- close: function () {
3077
- if (!closed)
3078
- if (((closed = !0), null === previousBlockedChunk))
3079
- controller.close();
3080
- else {
3081
- var blockedChunk = previousBlockedChunk;
3082
- previousBlockedChunk = null;
3083
- blockedChunk.then(function () {
3084
- return controller.close();
3085
- });
3086
- }
3087
- },
3088
- error: function (error) {
3089
- if (!closed)
3090
- if (((closed = !0), null === previousBlockedChunk))
3091
- controller.error(error);
3092
- else {
3093
- var blockedChunk = previousBlockedChunk;
3094
- previousBlockedChunk = null;
3095
- blockedChunk.then(function () {
3096
- return controller.error(error);
3145
+ }),
3146
+ previousBlockedChunk = null,
3147
+ flightController = {
3148
+ enqueueModel: function (json) {
3149
+ if (null === previousBlockedChunk) {
3150
+ var chunk = new ReactPromise(
3151
+ "resolved_model",
3152
+ json,
3153
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3154
+ );
3155
+ initializeModelChunk(chunk);
3156
+ "fulfilled" === chunk.status
3157
+ ? enqueue(chunk.value)
3158
+ : (chunk.then(enqueue, flightController.error),
3159
+ (previousBlockedChunk = chunk));
3160
+ } else {
3161
+ chunk = previousBlockedChunk;
3162
+ var _chunk = new ReactPromise("pending", null, null);
3163
+ _chunk.then(enqueue, flightController.error);
3164
+ previousBlockedChunk = _chunk;
3165
+ chunk.then(function () {
3166
+ previousBlockedChunk === _chunk &&
3167
+ (previousBlockedChunk = null);
3168
+ resolveModelChunk(response, _chunk, json, -1);
3097
3169
  });
3098
3170
  }
3099
- }
3100
- });
3101
- return type;
3102
- }
3103
- function asyncIterator() {
3104
- return this;
3171
+ },
3172
+ close: function () {
3173
+ if (!closed)
3174
+ if (((closed = !0), null === previousBlockedChunk))
3175
+ controller.close();
3176
+ else {
3177
+ var blockedChunk = previousBlockedChunk;
3178
+ previousBlockedChunk = null;
3179
+ blockedChunk.then(function () {
3180
+ return controller.close();
3181
+ });
3182
+ }
3183
+ },
3184
+ error: function (error) {
3185
+ if (!closed)
3186
+ if (((closed = !0), null === previousBlockedChunk))
3187
+ controller.error(error);
3188
+ else {
3189
+ var blockedChunk = previousBlockedChunk;
3190
+ previousBlockedChunk = null;
3191
+ blockedChunk.then(function () {
3192
+ return controller.error(error);
3193
+ });
3194
+ }
3195
+ }
3196
+ };
3197
+ resolveStream(response, reference, stream, flightController);
3198
+ return stream;
3105
3199
  }
3106
- function createIterator(next) {
3107
- next = { next: next };
3108
- next[ASYNC_ITERATOR] = asyncIterator;
3109
- return next;
3200
+ function FlightIterator(next) {
3201
+ this.next = next;
3110
3202
  }
3111
3203
  function parseAsyncIterable(response, reference, iterator) {
3112
3204
  reference = parseInt(reference.slice(2), 16);
@@ -3117,7 +3209,7 @@
3117
3209
  nextWriteIndex = 0,
3118
3210
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
3119
3211
  var nextReadIndex = 0;
3120
- return createIterator(function (arg) {
3212
+ return new FlightIterator(function (arg) {
3121
3213
  if (void 0 !== arg)
3122
3214
  throw Error(
3123
3215
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -3196,19 +3288,30 @@
3196
3288
  });
3197
3289
  return iterator;
3198
3290
  }
3199
- function parseModelString(response, obj, key, value, reference) {
3291
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
3200
3292
  if ("$" === value[0]) {
3201
3293
  switch (value[1]) {
3202
3294
  case "$":
3203
- return value.slice(1);
3295
+ return (
3296
+ null !== arrayRoot &&
3297
+ bumpArrayCount(arrayRoot, value.length - 1, response),
3298
+ value.slice(1)
3299
+ );
3204
3300
  case "@":
3205
3301
  return (
3206
3302
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
3207
3303
  );
3208
3304
  case "h":
3209
3305
  return (
3210
- (value = value.slice(2)),
3211
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
3306
+ (arrayRoot = value.slice(2)),
3307
+ getOutlinedModel(
3308
+ response,
3309
+ arrayRoot,
3310
+ obj,
3311
+ key,
3312
+ null,
3313
+ loadServerReference$1
3314
+ )
3212
3315
  );
3213
3316
  case "T":
3214
3317
  if (
@@ -3224,27 +3327,44 @@
3224
3327
  );
3225
3328
  case "Q":
3226
3329
  return (
3227
- (value = value.slice(2)),
3228
- getOutlinedModel(response, value, obj, key, createMap)
3330
+ (arrayRoot = value.slice(2)),
3331
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
3229
3332
  );
3230
3333
  case "W":
3231
3334
  return (
3232
- (value = value.slice(2)),
3233
- getOutlinedModel(response, value, obj, key, createSet)
3335
+ (arrayRoot = value.slice(2)),
3336
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
3234
3337
  );
3235
3338
  case "K":
3236
3339
  obj = value.slice(2);
3237
- var formPrefix = response._prefix + obj + "_",
3238
- data = new FormData();
3239
- response._formData.forEach(function (entry, entryKey) {
3240
- entryKey.startsWith(formPrefix) &&
3241
- data.append(entryKey.slice(formPrefix.length), entry);
3242
- });
3243
- return data;
3340
+ obj = response._prefix + obj + "_";
3341
+ key = new FormData();
3342
+ response = response._formData;
3343
+ arrayRoot = Array.from(response.keys());
3344
+ for (value = 0; value < arrayRoot.length; value++)
3345
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
3346
+ for (
3347
+ var entries = response.getAll(reference),
3348
+ newKey = reference.slice(obj.length),
3349
+ j = 0;
3350
+ j < entries.length;
3351
+ j++
3352
+ )
3353
+ key.append(newKey, entries[j]);
3354
+ response.delete(reference);
3355
+ }
3356
+ return key;
3244
3357
  case "i":
3245
3358
  return (
3246
- (value = value.slice(2)),
3247
- getOutlinedModel(response, value, obj, key, extractIterator)
3359
+ (arrayRoot = value.slice(2)),
3360
+ getOutlinedModel(
3361
+ response,
3362
+ arrayRoot,
3363
+ obj,
3364
+ key,
3365
+ null,
3366
+ extractIterator
3367
+ )
3248
3368
  );
3249
3369
  case "I":
3250
3370
  return Infinity;
@@ -3257,15 +3377,50 @@
3257
3377
  case "D":
3258
3378
  return new Date(Date.parse(value.slice(2)));
3259
3379
  case "n":
3260
- return BigInt(value.slice(2));
3380
+ obj = value.slice(2);
3381
+ if (obj.length > MAX_BIGINT_DIGITS)
3382
+ throw Error(
3383
+ "BigInt is too large. Received " +
3384
+ obj.length +
3385
+ " digits but the limit is " +
3386
+ MAX_BIGINT_DIGITS +
3387
+ "."
3388
+ );
3389
+ null !== arrayRoot &&
3390
+ bumpArrayCount(arrayRoot, obj.length, response);
3391
+ return BigInt(obj);
3261
3392
  }
3262
3393
  switch (value[1]) {
3263
3394
  case "A":
3264
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
3395
+ return parseTypedArray(
3396
+ response,
3397
+ value,
3398
+ ArrayBuffer,
3399
+ 1,
3400
+ obj,
3401
+ key,
3402
+ arrayRoot
3403
+ );
3265
3404
  case "O":
3266
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
3405
+ return parseTypedArray(
3406
+ response,
3407
+ value,
3408
+ Int8Array,
3409
+ 1,
3410
+ obj,
3411
+ key,
3412
+ arrayRoot
3413
+ );
3267
3414
  case "o":
3268
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
3415
+ return parseTypedArray(
3416
+ response,
3417
+ value,
3418
+ Uint8Array,
3419
+ 1,
3420
+ obj,
3421
+ key,
3422
+ arrayRoot
3423
+ );
3269
3424
  case "U":
3270
3425
  return parseTypedArray(
3271
3426
  response,
@@ -3273,22 +3428,79 @@
3273
3428
  Uint8ClampedArray,
3274
3429
  1,
3275
3430
  obj,
3276
- key
3431
+ key,
3432
+ arrayRoot
3277
3433
  );
3278
3434
  case "S":
3279
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
3435
+ return parseTypedArray(
3436
+ response,
3437
+ value,
3438
+ Int16Array,
3439
+ 2,
3440
+ obj,
3441
+ key,
3442
+ arrayRoot
3443
+ );
3280
3444
  case "s":
3281
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3445
+ return parseTypedArray(
3446
+ response,
3447
+ value,
3448
+ Uint16Array,
3449
+ 2,
3450
+ obj,
3451
+ key,
3452
+ arrayRoot
3453
+ );
3282
3454
  case "L":
3283
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3455
+ return parseTypedArray(
3456
+ response,
3457
+ value,
3458
+ Int32Array,
3459
+ 4,
3460
+ obj,
3461
+ key,
3462
+ arrayRoot
3463
+ );
3284
3464
  case "l":
3285
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3465
+ return parseTypedArray(
3466
+ response,
3467
+ value,
3468
+ Uint32Array,
3469
+ 4,
3470
+ obj,
3471
+ key,
3472
+ arrayRoot
3473
+ );
3286
3474
  case "G":
3287
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3475
+ return parseTypedArray(
3476
+ response,
3477
+ value,
3478
+ Float32Array,
3479
+ 4,
3480
+ obj,
3481
+ key,
3482
+ arrayRoot
3483
+ );
3288
3484
  case "g":
3289
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3485
+ return parseTypedArray(
3486
+ response,
3487
+ value,
3488
+ Float64Array,
3489
+ 8,
3490
+ obj,
3491
+ key,
3492
+ arrayRoot
3493
+ );
3290
3494
  case "M":
3291
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3495
+ return parseTypedArray(
3496
+ response,
3497
+ value,
3498
+ BigInt64Array,
3499
+ 8,
3500
+ obj,
3501
+ key,
3502
+ arrayRoot
3503
+ );
3292
3504
  case "m":
3293
3505
  return parseTypedArray(
3294
3506
  response,
@@ -3296,10 +3508,19 @@
3296
3508
  BigUint64Array,
3297
3509
  8,
3298
3510
  obj,
3299
- key
3511
+ key,
3512
+ arrayRoot
3300
3513
  );
3301
3514
  case "V":
3302
- return parseTypedArray(response, value, DataView, 1, obj, key);
3515
+ return parseTypedArray(
3516
+ response,
3517
+ value,
3518
+ DataView,
3519
+ 1,
3520
+ obj,
3521
+ key,
3522
+ arrayRoot
3523
+ );
3303
3524
  case "B":
3304
3525
  return (
3305
3526
  (obj = parseInt(value.slice(2), 16)),
@@ -3317,8 +3538,16 @@
3317
3538
  return parseAsyncIterable(response, value, !0);
3318
3539
  }
3319
3540
  value = value.slice(1);
3320
- return getOutlinedModel(response, value, obj, key, createModel);
3541
+ return getOutlinedModel(
3542
+ response,
3543
+ value,
3544
+ obj,
3545
+ key,
3546
+ arrayRoot,
3547
+ createModel
3548
+ );
3321
3549
  }
3550
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
3322
3551
  return value;
3323
3552
  }
3324
3553
  function createResponse(
@@ -3330,25 +3559,40 @@
3330
3559
  3 < arguments.length && void 0 !== arguments[3]
3331
3560
  ? arguments[3]
3332
3561
  : new FormData(),
3562
+ arraySizeLimit =
3563
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
3333
3564
  chunks = new Map();
3334
3565
  return {
3335
3566
  _bundlerConfig: bundlerConfig,
3336
3567
  _prefix: formFieldPrefix,
3337
3568
  _formData: backingFormData,
3338
3569
  _chunks: chunks,
3339
- _temporaryReferences: temporaryReferences
3570
+ _temporaryReferences: temporaryReferences,
3571
+ _rootArrayContexts: new WeakMap(),
3572
+ _arraySizeLimit: arraySizeLimit
3340
3573
  };
3341
3574
  }
3342
3575
  function close(response) {
3343
3576
  reportGlobalError(response, Error("Connection closed."));
3344
3577
  }
3345
- function loadServerReference(bundlerConfig, id, bound) {
3578
+ function loadServerReference(bundlerConfig, metaData) {
3579
+ var id = metaData.id;
3580
+ if ("string" !== typeof id) return null;
3346
3581
  var serverReference = resolveServerReference(bundlerConfig, id);
3347
3582
  bundlerConfig = preloadModule(serverReference);
3348
- return bound
3349
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3583
+ metaData = metaData.bound;
3584
+ return metaData instanceof Promise
3585
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
3350
3586
  _ref = _ref[0];
3351
3587
  var fn = requireModule(serverReference);
3588
+ if (_ref.length > MAX_BOUND_ARGS)
3589
+ throw Error(
3590
+ "Server Function has too many bound arguments. Received " +
3591
+ _ref.length +
3592
+ " but the limit is " +
3593
+ MAX_BOUND_ARGS +
3594
+ "."
3595
+ );
3352
3596
  return fn.bind.apply(fn, [null].concat(_ref));
3353
3597
  })
3354
3598
  : bundlerConfig
@@ -3357,8 +3601,19 @@
3357
3601
  })
3358
3602
  : Promise.resolve(requireModule(serverReference));
3359
3603
  }
3360
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
3361
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3604
+ function decodeBoundActionMetaData(
3605
+ body,
3606
+ serverManifest,
3607
+ formFieldPrefix,
3608
+ arraySizeLimit
3609
+ ) {
3610
+ body = createResponse(
3611
+ serverManifest,
3612
+ formFieldPrefix,
3613
+ void 0,
3614
+ body,
3615
+ arraySizeLimit
3616
+ );
3362
3617
  close(body);
3363
3618
  body = getChunk(body, 0);
3364
3619
  body.then(function () {});
@@ -3784,13 +4039,14 @@
3784
4039
  patchConsole(console, "table"),
3785
4040
  patchConsole(console, "trace"),
3786
4041
  patchConsole(console, "warn"));
3787
- var ObjectPrototype = Object.prototype,
4042
+ var ObjectPrototype$1 = Object.prototype,
3788
4043
  stringify = JSON.stringify,
3789
4044
  PENDING$1 = 0,
3790
4045
  COMPLETED = 1,
3791
4046
  ABORTED = 3,
3792
4047
  ERRORED$1 = 4,
3793
4048
  RENDERING = 5,
4049
+ __PROTO__$1 = "__proto__",
3794
4050
  OPENING = 10,
3795
4051
  ABORTING = 12,
3796
4052
  CLOSING = 13,
@@ -3813,16 +4069,23 @@
3813
4069
  case "fulfilled":
3814
4070
  if ("function" === typeof resolve) {
3815
4071
  for (
3816
- var inspectedValue = this.value, cycleProtection = 0;
4072
+ var inspectedValue = this.value,
4073
+ cycleProtection = 0,
4074
+ visited = new Set();
3817
4075
  inspectedValue instanceof ReactPromise;
3818
4076
 
3819
4077
  ) {
3820
4078
  cycleProtection++;
3821
- if (inspectedValue === this || 1e3 < cycleProtection) {
4079
+ if (
4080
+ inspectedValue === this ||
4081
+ visited.has(inspectedValue) ||
4082
+ 1e3 < cycleProtection
4083
+ ) {
3822
4084
  "function" === typeof reject &&
3823
4085
  reject(Error("Cannot have cyclic thenables."));
3824
4086
  return;
3825
4087
  }
4088
+ visited.add(inspectedValue);
3826
4089
  if ("fulfilled" === inspectedValue.status)
3827
4090
  inspectedValue = inspectedValue.value;
3828
4091
  else break;
@@ -3843,7 +4106,15 @@
3843
4106
  "function" === typeof reject && reject(this.reason);
3844
4107
  }
3845
4108
  };
3846
- var initializingHandler = null;
4109
+ var ObjectPrototype = Object.prototype,
4110
+ ArrayPrototype = Array.prototype,
4111
+ initializingHandler = null;
4112
+ FlightIterator.prototype = {};
4113
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
4114
+ return this;
4115
+ };
4116
+ var MAX_BIGINT_DIGITS = 300,
4117
+ MAX_BOUND_ARGS = 1e3;
3847
4118
  exports.createClientModuleProxy = function (moduleId) {
3848
4119
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
3849
4120
  return new Proxy(moduleId, proxyHandlers$1);
@@ -3853,20 +4124,24 @@
3853
4124
  };
3854
4125
  exports.decodeAction = function (body, serverManifest) {
3855
4126
  var formData = new FormData(),
3856
- action = null;
4127
+ action = null,
4128
+ seenActions = new Set();
3857
4129
  body.forEach(function (value, key) {
3858
4130
  key.startsWith("$ACTION_")
3859
4131
  ? key.startsWith("$ACTION_REF_")
3860
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
4132
+ ? seenActions.has(key) ||
4133
+ (seenActions.add(key),
4134
+ (value = "$ACTION_" + key.slice(12) + ":"),
3861
4135
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
3862
- (action = loadServerReference(
3863
- serverManifest,
3864
- value.id,
3865
- value.bound
3866
- )))
4136
+ (action = loadServerReference(serverManifest, value)))
3867
4137
  : key.startsWith("$ACTION_ID_") &&
3868
- ((value = key.slice(11)),
3869
- (action = loadServerReference(serverManifest, value, null)))
4138
+ !seenActions.has(key) &&
4139
+ (seenActions.add(key),
4140
+ (value = key.slice(11)),
4141
+ (action = loadServerReference(serverManifest, {
4142
+ id: value,
4143
+ bound: null
4144
+ })))
3870
4145
  : formData.append(key, value);
3871
4146
  });
3872
4147
  return null === action
@@ -3902,7 +4177,8 @@
3902
4177
  turbopackMap,
3903
4178
  "",
3904
4179
  options ? options.temporaryReferences : void 0,
3905
- body
4180
+ body,
4181
+ options ? options.arraySizeLimit : void 0
3906
4182
  );
3907
4183
  turbopackMap = getChunk(body, 0);
3908
4184
  close(body);