react-server-dom-webpack 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.
@@ -1497,6 +1497,13 @@
1497
1497
  value
1498
1498
  ) {
1499
1499
  task.model = value;
1500
+ parentPropertyName === __PROTO__$1 &&
1501
+ callWithDebugContextInDEV(request, task, function () {
1502
+ console.error(
1503
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
1504
+ describeObjectForErrorMessage(parent, parentPropertyName)
1505
+ );
1506
+ });
1500
1507
  if (value === REACT_ELEMENT_TYPE) return "$";
1501
1508
  if (null === value) return null;
1502
1509
  if ("object" === typeof value) {
@@ -1667,7 +1674,7 @@
1667
1674
  if (value instanceof Date) return "$D" + value.toJSON();
1668
1675
  elementReference = getPrototypeOf(value);
1669
1676
  if (
1670
- elementReference !== ObjectPrototype &&
1677
+ elementReference !== ObjectPrototype$1 &&
1671
1678
  (null === elementReference ||
1672
1679
  null !== getPrototypeOf(elementReference))
1673
1680
  )
@@ -2560,12 +2567,12 @@
2560
2567
  this.value = value;
2561
2568
  this.reason = reason;
2562
2569
  }
2563
- function wakeChunk(response, listeners, value) {
2570
+ function wakeChunk(response, listeners, value, chunk) {
2564
2571
  for (var i = 0; i < listeners.length; i++) {
2565
2572
  var listener = listeners[i];
2566
2573
  "function" === typeof listener
2567
2574
  ? listener(value)
2568
- : fulfillReference(response, listener, value);
2575
+ : fulfillReference(response, listener, value, chunk.reason);
2569
2576
  }
2570
2577
  }
2571
2578
  function rejectChunk(response, listeners, error) {
@@ -2576,27 +2583,6 @@
2576
2583
  : rejectReference(response, listener.handler, error);
2577
2584
  }
2578
2585
  }
2579
- function resolveBlockedCycle(resolvedChunk, reference) {
2580
- var referencedChunk = reference.handler.chunk;
2581
- if (null === referencedChunk) return null;
2582
- if (referencedChunk === resolvedChunk) return reference.handler;
2583
- reference = referencedChunk.value;
2584
- if (null !== reference)
2585
- for (
2586
- referencedChunk = 0;
2587
- referencedChunk < reference.length;
2588
- referencedChunk++
2589
- ) {
2590
- var listener = reference[referencedChunk];
2591
- if (
2592
- "function" !== typeof listener &&
2593
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2594
- null !== listener)
2595
- )
2596
- return listener;
2597
- }
2598
- return null;
2599
- }
2600
2586
  function triggerErrorOnChunk(response, chunk, error) {
2601
2587
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2602
2588
  chunk.reason.error(error);
@@ -2620,57 +2606,25 @@
2620
2606
  chunk.value = value;
2621
2607
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
2622
2608
  if (null !== resolveListeners)
2623
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2609
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2624
2610
  case "fulfilled":
2625
- wakeChunk(response, resolveListeners, chunk.value);
2611
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2626
2612
  break;
2627
2613
  case "blocked":
2628
- for (value = 0; value < resolveListeners.length; value++)
2629
- if (
2630
- ((id = resolveListeners[value]), "function" !== typeof id)
2631
- ) {
2632
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2633
- if (null !== cyclicHandler)
2634
- switch (
2635
- (fulfillReference(response, id, cyclicHandler.value),
2636
- resolveListeners.splice(value, 1),
2637
- value--,
2638
- null !== rejectListeners &&
2639
- ((id = rejectListeners.indexOf(id)),
2640
- -1 !== id && rejectListeners.splice(id, 1)),
2641
- chunk.status)
2642
- ) {
2643
- case "fulfilled":
2644
- wakeChunk(response, resolveListeners, chunk.value);
2645
- break a;
2646
- case "rejected":
2647
- null !== rejectListeners &&
2648
- rejectChunk(response, rejectListeners, chunk.reason);
2649
- break a;
2650
- }
2651
- }
2652
2614
  case "pending":
2653
2615
  if (chunk.value)
2654
- for (
2655
- response = 0;
2656
- response < resolveListeners.length;
2657
- response++
2658
- )
2659
- chunk.value.push(resolveListeners[response]);
2616
+ for (value = 0; value < resolveListeners.length; value++)
2617
+ chunk.value.push(resolveListeners[value]);
2660
2618
  else chunk.value = resolveListeners;
2661
2619
  if (chunk.reason) {
2662
2620
  if (rejectListeners)
2663
- for (
2664
- resolveListeners = 0;
2665
- resolveListeners < rejectListeners.length;
2666
- resolveListeners++
2667
- )
2668
- chunk.reason.push(rejectListeners[resolveListeners]);
2621
+ for (value = 0; value < rejectListeners.length; value++)
2622
+ chunk.reason.push(rejectListeners[value]);
2669
2623
  } else chunk.reason = rejectListeners;
2670
2624
  break;
2671
2625
  case "rejected":
2672
2626
  rejectListeners &&
2673
- wakeChunk(response, rejectListeners, chunk.reason);
2627
+ rejectChunk(response, rejectListeners, chunk.reason);
2674
2628
  }
2675
2629
  }
2676
2630
  }
@@ -2694,15 +2648,51 @@
2694
2648
  );
2695
2649
  }
2696
2650
  function loadServerReference$1(response, metaData, parentObject, key) {
2651
+ function reject(error) {
2652
+ var rejectListeners = blockedPromise.reason,
2653
+ erroredPromise = blockedPromise;
2654
+ erroredPromise.status = "rejected";
2655
+ erroredPromise.value = null;
2656
+ erroredPromise.reason = error;
2657
+ null !== rejectListeners &&
2658
+ rejectChunk(response, rejectListeners, error);
2659
+ rejectReference(response, handler, error);
2660
+ }
2697
2661
  var id = metaData.id;
2698
2662
  if ("string" !== typeof id || "then" === key) return null;
2663
+ var cachedPromise = metaData.$$promise;
2664
+ if (void 0 !== cachedPromise) {
2665
+ if ("fulfilled" === cachedPromise.status)
2666
+ return (
2667
+ (cachedPromise = cachedPromise.value),
2668
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2669
+ );
2670
+ initializingHandler
2671
+ ? ((id = initializingHandler), id.deps++)
2672
+ : (id = initializingHandler =
2673
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2674
+ cachedPromise.then(
2675
+ resolveReference.bind(null, response, id, parentObject, key),
2676
+ rejectReference.bind(null, response, id)
2677
+ );
2678
+ return null;
2679
+ }
2680
+ var blockedPromise = new ReactPromise("blocked", null, null);
2681
+ metaData.$$promise = blockedPromise;
2699
2682
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2700
- id = metaData.bound;
2701
- var promise = preloadModule(serverReference);
2702
- if (promise)
2703
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2704
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2705
- else return requireModule(serverReference);
2683
+ cachedPromise = metaData.bound;
2684
+ if ((id = preloadModule(serverReference)))
2685
+ cachedPromise instanceof ReactPromise &&
2686
+ (id = Promise.all([id, cachedPromise]));
2687
+ else if (cachedPromise instanceof ReactPromise)
2688
+ id = Promise.resolve(cachedPromise);
2689
+ else
2690
+ return (
2691
+ (cachedPromise = requireModule(serverReference)),
2692
+ (id = blockedPromise),
2693
+ (id.status = "fulfilled"),
2694
+ (id.value = cachedPromise)
2695
+ );
2706
2696
  if (initializingHandler) {
2707
2697
  var handler = initializingHandler;
2708
2698
  handler.deps++;
@@ -2714,93 +2704,107 @@
2714
2704
  deps: 1,
2715
2705
  errored: !1
2716
2706
  };
2717
- promise.then(
2718
- function () {
2719
- var resolvedValue = requireModule(serverReference);
2720
- if (metaData.bound) {
2721
- var promiseValue = metaData.bound.value;
2722
- promiseValue = Array.isArray(promiseValue)
2723
- ? promiseValue.slice(0)
2724
- : [];
2725
- promiseValue.unshift(null);
2726
- resolvedValue = resolvedValue.bind.apply(
2727
- resolvedValue,
2728
- promiseValue
2707
+ id.then(function () {
2708
+ var resolvedValue = requireModule(serverReference);
2709
+ if (metaData.bound) {
2710
+ var promiseValue = metaData.bound.value;
2711
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2712
+ if (promiseValue.length > MAX_BOUND_ARGS) {
2713
+ reject(
2714
+ Error(
2715
+ "Server Function has too many bound arguments. Received " +
2716
+ promiseValue.length +
2717
+ " but the limit is " +
2718
+ MAX_BOUND_ARGS +
2719
+ "."
2720
+ )
2729
2721
  );
2722
+ return;
2730
2723
  }
2731
- parentObject[key] = resolvedValue;
2732
- "" === key &&
2733
- null === handler.value &&
2734
- (handler.value = resolvedValue);
2735
- handler.deps--;
2736
- 0 === handler.deps &&
2737
- ((resolvedValue = handler.chunk),
2738
- null !== resolvedValue &&
2739
- "blocked" === resolvedValue.status &&
2740
- ((promiseValue = resolvedValue.value),
2741
- (resolvedValue.status = "fulfilled"),
2742
- (resolvedValue.value = handler.value),
2743
- (resolvedValue.reason = null),
2744
- null !== promiseValue &&
2745
- wakeChunk(response, promiseValue, handler.value)));
2746
- },
2747
- function (error) {
2748
- if (!handler.errored) {
2749
- handler.errored = !0;
2750
- handler.value = null;
2751
- handler.reason = error;
2752
- var chunk = handler.chunk;
2753
- null !== chunk &&
2754
- "blocked" === chunk.status &&
2755
- triggerErrorOnChunk(response, chunk, error);
2756
- }
2724
+ promiseValue.unshift(null);
2725
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2757
2726
  }
2758
- );
2727
+ promiseValue = blockedPromise.value;
2728
+ var initializedPromise = blockedPromise;
2729
+ initializedPromise.status = "fulfilled";
2730
+ initializedPromise.value = resolvedValue;
2731
+ initializedPromise.reason = null;
2732
+ null !== promiseValue &&
2733
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2734
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2735
+ }, reject);
2759
2736
  return null;
2760
2737
  }
2761
- function reviveModel(response, parentObj, parentKey, value, reference) {
2738
+ function reviveModel(
2739
+ response,
2740
+ parentObj,
2741
+ parentKey,
2742
+ value,
2743
+ reference,
2744
+ arrayRoot
2745
+ ) {
2762
2746
  if ("string" === typeof value)
2763
2747
  return parseModelString(
2764
2748
  response,
2765
2749
  parentObj,
2766
2750
  parentKey,
2767
2751
  value,
2768
- reference
2752
+ reference,
2753
+ arrayRoot
2769
2754
  );
2770
2755
  if ("object" === typeof value && null !== value)
2771
2756
  if (
2772
2757
  (void 0 !== reference &&
2773
2758
  void 0 !== response._temporaryReferences &&
2774
2759
  response._temporaryReferences.set(value, reference),
2775
- Array.isArray(value))
2776
- )
2777
- for (var i = 0; i < value.length; i++)
2778
- value[i] = reviveModel(
2760
+ isArrayImpl(value))
2761
+ ) {
2762
+ if (null === arrayRoot) {
2763
+ var childContext = { count: 0, fork: !1 };
2764
+ response._rootArrayContexts.set(value, childContext);
2765
+ } else childContext = arrayRoot;
2766
+ 1 < value.length && (childContext.fork = !0);
2767
+ bumpArrayCount(childContext, value.length + 1, response);
2768
+ for (parentObj = 0; parentObj < value.length; parentObj++)
2769
+ value[parentObj] = reviveModel(
2779
2770
  response,
2780
2771
  value,
2781
- "" + i,
2782
- value[i],
2783
- void 0 !== reference ? reference + ":" + i : void 0
2772
+ "" + parentObj,
2773
+ value[parentObj],
2774
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
2775
+ childContext
2784
2776
  );
2785
- else
2786
- for (i in value)
2787
- hasOwnProperty.call(value, i) &&
2788
- ((parentObj =
2789
- void 0 !== reference && -1 === i.indexOf(":")
2790
- ? reference + ":" + i
2791
- : void 0),
2792
- (parentObj = reviveModel(
2793
- response,
2794
- value,
2795
- i,
2796
- value[i],
2797
- parentObj
2798
- )),
2799
- void 0 !== parentObj || "__proto__" === i
2800
- ? (value[i] = parentObj)
2801
- : delete value[i]);
2777
+ } else
2778
+ for (childContext in value)
2779
+ hasOwnProperty.call(value, childContext) &&
2780
+ ("__proto__" === childContext
2781
+ ? delete value[childContext]
2782
+ : ((parentObj =
2783
+ void 0 !== reference && -1 === childContext.indexOf(":")
2784
+ ? reference + ":" + childContext
2785
+ : void 0),
2786
+ (parentObj = reviveModel(
2787
+ response,
2788
+ value,
2789
+ childContext,
2790
+ value[childContext],
2791
+ parentObj,
2792
+ null
2793
+ )),
2794
+ void 0 !== parentObj
2795
+ ? (value[childContext] = parentObj)
2796
+ : delete value[childContext]));
2802
2797
  return value;
2803
2798
  }
2799
+ function bumpArrayCount(arrayContext, slots, response) {
2800
+ if (
2801
+ (arrayContext.count += slots) > response._arraySizeLimit &&
2802
+ arrayContext.fork
2803
+ )
2804
+ throw Error(
2805
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
2806
+ );
2807
+ }
2804
2808
  function initializeModelChunk(chunk) {
2805
2809
  var prevHandler = initializingHandler;
2806
2810
  initializingHandler = null;
@@ -2814,13 +2818,15 @@
2814
2818
  chunk.value = null;
2815
2819
  chunk.reason = null;
2816
2820
  try {
2817
- var rawModel = JSON.parse(resolvedModel),
2818
- value = reviveModel(
2821
+ var rawModel = JSON.parse(resolvedModel);
2822
+ resolvedModel = { count: 0, fork: !1 };
2823
+ var value = reviveModel(
2819
2824
  response,
2820
2825
  { "": rawModel },
2821
2826
  "",
2822
2827
  rawModel,
2823
- _chunk$reason
2828
+ _chunk$reason,
2829
+ resolvedModel
2824
2830
  ),
2825
2831
  resolveListeners = chunk.value;
2826
2832
  if (null !== resolveListeners)
@@ -2832,19 +2838,20 @@
2832
2838
  var listener = resolveListeners[rawModel];
2833
2839
  "function" === typeof listener
2834
2840
  ? listener(value)
2835
- : fulfillReference(response, listener, value);
2841
+ : fulfillReference(response, listener, value, resolvedModel);
2836
2842
  }
2837
2843
  if (null !== initializingHandler) {
2838
2844
  if (initializingHandler.errored) throw initializingHandler.reason;
2839
2845
  if (0 < initializingHandler.deps) {
2840
2846
  initializingHandler.value = value;
2847
+ initializingHandler.reason = resolvedModel;
2841
2848
  initializingHandler.chunk = chunk;
2842
2849
  return;
2843
2850
  }
2844
2851
  }
2845
2852
  chunk.status = "fulfilled";
2846
2853
  chunk.value = value;
2847
- chunk.reason = null;
2854
+ chunk.reason = resolvedModel;
2848
2855
  } catch (error) {
2849
2856
  (chunk.status = "rejected"), (chunk.reason = error);
2850
2857
  } finally {
@@ -2857,7 +2864,8 @@
2857
2864
  ? triggerErrorOnChunk(response, chunk, error)
2858
2865
  : "fulfilled" === chunk.status &&
2859
2866
  null !== chunk.reason &&
2860
- chunk.reason.error(error);
2867
+ ((chunk = chunk.reason),
2868
+ "function" === typeof chunk.error && chunk.error(error));
2861
2869
  });
2862
2870
  }
2863
2871
  function getChunk(response, id) {
@@ -2876,40 +2884,74 @@
2876
2884
  chunks.set(id, chunk));
2877
2885
  return chunk;
2878
2886
  }
2879
- function fulfillReference(response, reference, value) {
2887
+ function fulfillReference(response, reference, value, arrayRoot) {
2880
2888
  var handler = reference.handler,
2881
2889
  parentObject = reference.parentObject,
2882
2890
  key = reference.key,
2883
2891
  map = reference.map,
2884
2892
  path = reference.path;
2885
2893
  try {
2886
- for (var i = 1; i < path.length; i++) {
2894
+ for (
2895
+ var localLength = 0,
2896
+ rootArrayContexts = response._rootArrayContexts,
2897
+ i = 1;
2898
+ i < path.length;
2899
+ i++
2900
+ ) {
2887
2901
  var name = path[i];
2888
2902
  if (
2889
2903
  "object" !== typeof value ||
2890
- !hasOwnProperty.call(value, name) ||
2891
- value instanceof Promise
2904
+ null === value ||
2905
+ (getPrototypeOf(value) !== ObjectPrototype &&
2906
+ getPrototypeOf(value) !== ArrayPrototype) ||
2907
+ !hasOwnProperty.call(value, name)
2892
2908
  )
2893
2909
  throw Error("Invalid reference.");
2894
2910
  value = value[name];
2911
+ if (isArrayImpl(value))
2912
+ (localLength = 0),
2913
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
2914
+ else if (((arrayRoot = null), "string" === typeof value))
2915
+ localLength = value.length;
2916
+ else if ("bigint" === typeof value) {
2917
+ var n = Math.abs(Number(value));
2918
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
2919
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
2895
2920
  }
2896
- var mappedValue = map(response, value, parentObject, key);
2897
- parentObject[key] = mappedValue;
2898
- "" === key && null === handler.value && (handler.value = mappedValue);
2921
+ var resolvedValue = map(response, value, parentObject, key);
2922
+ var referenceArrayRoot = reference.arrayRoot;
2923
+ null !== referenceArrayRoot &&
2924
+ (null !== arrayRoot
2925
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
2926
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
2927
+ : 0 < localLength &&
2928
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2899
2929
  } catch (error) {
2900
- rejectReference(response, reference.handler, error);
2930
+ rejectReference(response, handler, error);
2901
2931
  return;
2902
2932
  }
2933
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2934
+ }
2935
+ function resolveReference(
2936
+ response,
2937
+ handler,
2938
+ parentObject,
2939
+ key,
2940
+ resolvedValue
2941
+ ) {
2942
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
2943
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2903
2944
  handler.deps--;
2904
2945
  0 === handler.deps &&
2905
- ((reference = handler.chunk),
2906
- null !== reference &&
2907
- "blocked" === reference.status &&
2908
- ((value = reference.value),
2909
- (reference.status = "fulfilled"),
2910
- (reference.value = handler.value),
2911
- (reference.reason = handler.reason),
2912
- null !== value && wakeChunk(response, value, handler.value)));
2946
+ ((parentObject = handler.chunk),
2947
+ null !== parentObject &&
2948
+ "blocked" === parentObject.status &&
2949
+ ((key = parentObject.value),
2950
+ (parentObject.status = "fulfilled"),
2951
+ (parentObject.value = handler.value),
2952
+ (parentObject.reason = handler.reason),
2953
+ null !== key &&
2954
+ wakeChunk(response, key, handler.value, parentObject)));
2913
2955
  }
2914
2956
  function rejectReference(response, handler, error) {
2915
2957
  handler.errored ||
@@ -2921,29 +2963,66 @@
2921
2963
  "blocked" === handler.status &&
2922
2964
  triggerErrorOnChunk(response, handler, error));
2923
2965
  }
2924
- function getOutlinedModel(response, reference, parentObject, key, map) {
2966
+ function getOutlinedModel(
2967
+ response,
2968
+ reference,
2969
+ parentObject,
2970
+ key,
2971
+ referenceArrayRoot,
2972
+ map
2973
+ ) {
2925
2974
  reference = reference.split(":");
2926
- var id = parseInt(reference[0], 16);
2927
- id = getChunk(response, id);
2928
- switch (id.status) {
2975
+ var id = parseInt(reference[0], 16),
2976
+ chunk = getChunk(response, id);
2977
+ switch (chunk.status) {
2929
2978
  case "resolved_model":
2930
- initializeModelChunk(id);
2979
+ initializeModelChunk(chunk);
2931
2980
  }
2932
- switch (id.status) {
2981
+ switch (chunk.status) {
2933
2982
  case "fulfilled":
2934
- id = id.value;
2935
- for (var i = 1; i < reference.length; i++) {
2936
- var name = reference[i];
2983
+ id = chunk.value;
2984
+ chunk = chunk.reason;
2985
+ for (
2986
+ var localLength = 0,
2987
+ rootArrayContexts = response._rootArrayContexts,
2988
+ i = 1;
2989
+ i < reference.length;
2990
+ i++
2991
+ ) {
2992
+ localLength = reference[i];
2937
2993
  if (
2938
2994
  "object" !== typeof id ||
2939
- !hasOwnProperty.call(id, name) ||
2940
- id instanceof Promise
2995
+ null === id ||
2996
+ (getPrototypeOf(id) !== ObjectPrototype &&
2997
+ getPrototypeOf(id) !== ArrayPrototype) ||
2998
+ !hasOwnProperty.call(id, localLength)
2941
2999
  )
2942
3000
  throw Error("Invalid reference.");
2943
- id = id[name];
3001
+ id = id[localLength];
3002
+ isArrayImpl(id)
3003
+ ? ((localLength = 0),
3004
+ (chunk = rootArrayContexts.get(id) || chunk))
3005
+ : ((chunk = null),
3006
+ "string" === typeof id
3007
+ ? (localLength = id.length)
3008
+ : "bigint" === typeof id
3009
+ ? ((localLength = Math.abs(Number(id))),
3010
+ (localLength =
3011
+ 0 === localLength
3012
+ ? 1
3013
+ : Math.floor(Math.log10(localLength)) + 1))
3014
+ : (localLength = ArrayBuffer.isView(id)
3015
+ ? id.byteLength
3016
+ : 0));
2944
3017
  }
2945
- return map(response, id, parentObject, key);
2946
- case "pending":
3018
+ parentObject = map(response, id, parentObject, key);
3019
+ null !== referenceArrayRoot &&
3020
+ (null !== chunk
3021
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
3022
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
3023
+ : 0 < localLength &&
3024
+ bumpArrayCount(referenceArrayRoot, localLength, response));
3025
+ return parentObject;
2947
3026
  case "blocked":
2948
3027
  return (
2949
3028
  initializingHandler
@@ -2956,31 +3035,34 @@
2956
3035
  deps: 1,
2957
3036
  errored: !1
2958
3037
  }),
2959
- (parentObject = {
3038
+ (referenceArrayRoot = {
2960
3039
  handler: response,
2961
3040
  parentObject: parentObject,
2962
3041
  key: key,
2963
3042
  map: map,
2964
- path: reference
3043
+ path: reference,
3044
+ arrayRoot: referenceArrayRoot
2965
3045
  }),
2966
- null === id.value
2967
- ? (id.value = [parentObject])
2968
- : id.value.push(parentObject),
2969
- null === id.reason
2970
- ? (id.reason = [parentObject])
2971
- : id.reason.push(parentObject),
3046
+ null === chunk.value
3047
+ ? (chunk.value = [referenceArrayRoot])
3048
+ : chunk.value.push(referenceArrayRoot),
3049
+ null === chunk.reason
3050
+ ? (chunk.reason = [referenceArrayRoot])
3051
+ : chunk.reason.push(referenceArrayRoot),
2972
3052
  null
2973
3053
  );
3054
+ case "pending":
3055
+ throw Error("Invalid forward reference.");
2974
3056
  default:
2975
3057
  return (
2976
3058
  initializingHandler
2977
3059
  ? ((initializingHandler.errored = !0),
2978
3060
  (initializingHandler.value = null),
2979
- (initializingHandler.reason = id.reason))
3061
+ (initializingHandler.reason = chunk.reason))
2980
3062
  : (initializingHandler = {
2981
3063
  chunk: null,
2982
3064
  value: null,
2983
- reason: id.reason,
3065
+ reason: chunk.reason,
2984
3066
  deps: 0,
2985
3067
  errored: !0
2986
3068
  }),
@@ -2989,12 +3071,21 @@
2989
3071
  }
2990
3072
  }
2991
3073
  function createMap(response, model) {
3074
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
3075
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
3076
+ model.$$consumed = !0;
2992
3077
  return new Map(model);
2993
3078
  }
2994
3079
  function createSet(response, model) {
3080
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
3081
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
3082
+ model.$$consumed = !0;
2995
3083
  return new Set(model);
2996
3084
  }
2997
3085
  function extractIterator(response, model) {
3086
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
3087
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
3088
+ model.$$consumed = !0;
2998
3089
  return model[Symbol.iterator]();
2999
3090
  }
3000
3091
  function createModel(response, model, parentObject, key) {
@@ -3006,13 +3097,34 @@
3006
3097
  constructor,
3007
3098
  bytesPerElement,
3008
3099
  parentObject,
3009
- parentKey
3100
+ parentKey,
3101
+ referenceArrayRoot
3010
3102
  ) {
3103
+ function reject(error) {
3104
+ if (!handler.errored) {
3105
+ handler.errored = !0;
3106
+ handler.value = null;
3107
+ handler.reason = error;
3108
+ var chunk = handler.chunk;
3109
+ null !== chunk &&
3110
+ "blocked" === chunk.status &&
3111
+ triggerErrorOnChunk(response, chunk, error);
3112
+ }
3113
+ }
3011
3114
  reference = parseInt(reference.slice(2), 16);
3012
- bytesPerElement = response._prefix + reference;
3013
- if (response._chunks.has(reference))
3115
+ var key = response._prefix + reference;
3116
+ bytesPerElement = response._chunks;
3117
+ if (bytesPerElement.has(reference))
3014
3118
  throw Error("Already initialized typed array.");
3015
- reference = response._formData.get(bytesPerElement).arrayBuffer();
3119
+ bytesPerElement.set(
3120
+ reference,
3121
+ new ReactPromise(
3122
+ "rejected",
3123
+ null,
3124
+ Error("Already initialized typed array.")
3125
+ )
3126
+ );
3127
+ reference = response._formData.get(key).arrayBuffer();
3016
3128
  if (initializingHandler) {
3017
3129
  var handler = initializingHandler;
3018
3130
  handler.deps++;
@@ -3024,40 +3136,32 @@
3024
3136
  deps: 1,
3025
3137
  errored: !1
3026
3138
  };
3027
- reference.then(
3028
- function (buffer) {
3029
- buffer =
3139
+ reference.then(function (buffer) {
3140
+ try {
3141
+ null !== referenceArrayRoot &&
3142
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
3143
+ var resolvedValue =
3030
3144
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
3031
- parentObject[parentKey] = buffer;
3145
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
3032
3146
  "" === parentKey &&
3033
3147
  null === handler.value &&
3034
- (handler.value = buffer);
3035
- handler.deps--;
3036
- if (
3037
- 0 === handler.deps &&
3038
- ((buffer = handler.chunk),
3039
- null !== buffer && "blocked" === buffer.status)
3040
- ) {
3041
- var resolveListeners = buffer.value;
3042
- buffer.status = "fulfilled";
3043
- buffer.value = handler.value;
3044
- buffer.reason = null;
3045
- null !== resolveListeners &&
3046
- wakeChunk(response, resolveListeners, handler.value);
3047
- }
3048
- },
3049
- function (error) {
3050
- if (!handler.errored) {
3051
- handler.errored = !0;
3052
- handler.value = null;
3053
- handler.reason = error;
3054
- var chunk = handler.chunk;
3055
- null !== chunk &&
3056
- "blocked" === chunk.status &&
3057
- triggerErrorOnChunk(response, chunk, error);
3058
- }
3148
+ (handler.value = resolvedValue);
3149
+ } catch (x) {
3150
+ reject(x);
3151
+ return;
3059
3152
  }
3060
- );
3153
+ handler.deps--;
3154
+ 0 === handler.deps &&
3155
+ ((buffer = handler.chunk),
3156
+ null !== buffer &&
3157
+ "blocked" === buffer.status &&
3158
+ ((resolvedValue = buffer.value),
3159
+ (buffer.status = "fulfilled"),
3160
+ (buffer.value = handler.value),
3161
+ (buffer.reason = null),
3162
+ null !== resolvedValue &&
3163
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
3164
+ }, reject);
3061
3165
  return null;
3062
3166
  }
3063
3167
  function resolveStream(response, id, stream, controller) {
@@ -3075,90 +3179,78 @@
3075
3179
  : controller.enqueueModel(chunks));
3076
3180
  }
3077
3181
  function parseReadableStream(response, reference, type) {
3182
+ function enqueue(value) {
3183
+ "bytes" !== type || ArrayBuffer.isView(value)
3184
+ ? controller.enqueue(value)
3185
+ : flightController.error(Error("Invalid data for bytes stream."));
3186
+ }
3078
3187
  reference = parseInt(reference.slice(2), 16);
3079
3188
  if (response._chunks.has(reference))
3080
3189
  throw Error("Already initialized stream.");
3081
3190
  var controller = null,
3082
- closed = !1;
3083
- type = new ReadableStream({
3084
- type: type,
3085
- start: function (c) {
3086
- controller = c;
3087
- }
3088
- });
3089
- var previousBlockedChunk = null;
3090
- resolveStream(response, reference, type, {
3091
- enqueueModel: function (json) {
3092
- if (null === previousBlockedChunk) {
3093
- var chunk = new ReactPromise(
3094
- "resolved_model",
3095
- json,
3096
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3097
- );
3098
- initializeModelChunk(chunk);
3099
- "fulfilled" === chunk.status
3100
- ? controller.enqueue(chunk.value)
3101
- : (chunk.then(
3102
- function (v) {
3103
- return controller.enqueue(v);
3104
- },
3105
- function (e) {
3106
- return controller.error(e);
3107
- }
3108
- ),
3109
- (previousBlockedChunk = chunk));
3110
- } else {
3111
- chunk = previousBlockedChunk;
3112
- var _chunk = new ReactPromise("pending", null, null);
3113
- _chunk.then(
3114
- function (v) {
3115
- return controller.enqueue(v);
3116
- },
3117
- function (e) {
3118
- return controller.error(e);
3119
- }
3120
- );
3121
- previousBlockedChunk = _chunk;
3122
- chunk.then(function () {
3123
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
3124
- resolveModelChunk(response, _chunk, json, -1);
3125
- });
3191
+ closed = !1,
3192
+ stream = new ReadableStream({
3193
+ type: type,
3194
+ start: function (c) {
3195
+ controller = c;
3126
3196
  }
3127
- },
3128
- close: function () {
3129
- if (!closed)
3130
- if (((closed = !0), null === previousBlockedChunk))
3131
- controller.close();
3132
- else {
3133
- var blockedChunk = previousBlockedChunk;
3134
- previousBlockedChunk = null;
3135
- blockedChunk.then(function () {
3136
- return controller.close();
3137
- });
3138
- }
3139
- },
3140
- error: function (error) {
3141
- if (!closed)
3142
- if (((closed = !0), null === previousBlockedChunk))
3143
- controller.error(error);
3144
- else {
3145
- var blockedChunk = previousBlockedChunk;
3146
- previousBlockedChunk = null;
3147
- blockedChunk.then(function () {
3148
- return controller.error(error);
3197
+ }),
3198
+ previousBlockedChunk = null,
3199
+ flightController = {
3200
+ enqueueModel: function (json) {
3201
+ if (null === previousBlockedChunk) {
3202
+ var chunk = new ReactPromise(
3203
+ "resolved_model",
3204
+ json,
3205
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3206
+ );
3207
+ initializeModelChunk(chunk);
3208
+ "fulfilled" === chunk.status
3209
+ ? enqueue(chunk.value)
3210
+ : (chunk.then(enqueue, flightController.error),
3211
+ (previousBlockedChunk = chunk));
3212
+ } else {
3213
+ chunk = previousBlockedChunk;
3214
+ var _chunk = new ReactPromise("pending", null, null);
3215
+ _chunk.then(enqueue, flightController.error);
3216
+ previousBlockedChunk = _chunk;
3217
+ chunk.then(function () {
3218
+ previousBlockedChunk === _chunk &&
3219
+ (previousBlockedChunk = null);
3220
+ resolveModelChunk(response, _chunk, json, -1);
3149
3221
  });
3150
3222
  }
3151
- }
3152
- });
3153
- return type;
3154
- }
3155
- function asyncIterator() {
3156
- return this;
3223
+ },
3224
+ close: function () {
3225
+ if (!closed)
3226
+ if (((closed = !0), null === previousBlockedChunk))
3227
+ controller.close();
3228
+ else {
3229
+ var blockedChunk = previousBlockedChunk;
3230
+ previousBlockedChunk = null;
3231
+ blockedChunk.then(function () {
3232
+ return controller.close();
3233
+ });
3234
+ }
3235
+ },
3236
+ error: function (error) {
3237
+ if (!closed)
3238
+ if (((closed = !0), null === previousBlockedChunk))
3239
+ controller.error(error);
3240
+ else {
3241
+ var blockedChunk = previousBlockedChunk;
3242
+ previousBlockedChunk = null;
3243
+ blockedChunk.then(function () {
3244
+ return controller.error(error);
3245
+ });
3246
+ }
3247
+ }
3248
+ };
3249
+ resolveStream(response, reference, stream, flightController);
3250
+ return stream;
3157
3251
  }
3158
- function createIterator(next) {
3159
- next = { next: next };
3160
- next[ASYNC_ITERATOR] = asyncIterator;
3161
- return next;
3252
+ function FlightIterator(next) {
3253
+ this.next = next;
3162
3254
  }
3163
3255
  function parseAsyncIterable(response, reference, iterator) {
3164
3256
  reference = parseInt(reference.slice(2), 16);
@@ -3169,7 +3261,7 @@
3169
3261
  nextWriteIndex = 0,
3170
3262
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
3171
3263
  var nextReadIndex = 0;
3172
- return createIterator(function (arg) {
3264
+ return new FlightIterator(function (arg) {
3173
3265
  if (void 0 !== arg)
3174
3266
  throw Error(
3175
3267
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -3248,19 +3340,30 @@
3248
3340
  });
3249
3341
  return iterator;
3250
3342
  }
3251
- function parseModelString(response, obj, key, value, reference) {
3343
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
3252
3344
  if ("$" === value[0]) {
3253
3345
  switch (value[1]) {
3254
3346
  case "$":
3255
- return value.slice(1);
3347
+ return (
3348
+ null !== arrayRoot &&
3349
+ bumpArrayCount(arrayRoot, value.length - 1, response),
3350
+ value.slice(1)
3351
+ );
3256
3352
  case "@":
3257
3353
  return (
3258
3354
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
3259
3355
  );
3260
3356
  case "h":
3261
3357
  return (
3262
- (value = value.slice(2)),
3263
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
3358
+ (arrayRoot = value.slice(2)),
3359
+ getOutlinedModel(
3360
+ response,
3361
+ arrayRoot,
3362
+ obj,
3363
+ key,
3364
+ null,
3365
+ loadServerReference$1
3366
+ )
3264
3367
  );
3265
3368
  case "T":
3266
3369
  if (
@@ -3276,27 +3379,44 @@
3276
3379
  );
3277
3380
  case "Q":
3278
3381
  return (
3279
- (value = value.slice(2)),
3280
- getOutlinedModel(response, value, obj, key, createMap)
3382
+ (arrayRoot = value.slice(2)),
3383
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
3281
3384
  );
3282
3385
  case "W":
3283
3386
  return (
3284
- (value = value.slice(2)),
3285
- getOutlinedModel(response, value, obj, key, createSet)
3387
+ (arrayRoot = value.slice(2)),
3388
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
3286
3389
  );
3287
3390
  case "K":
3288
3391
  obj = value.slice(2);
3289
- var formPrefix = response._prefix + obj + "_",
3290
- data = new FormData();
3291
- response._formData.forEach(function (entry, entryKey) {
3292
- entryKey.startsWith(formPrefix) &&
3293
- data.append(entryKey.slice(formPrefix.length), entry);
3294
- });
3295
- return data;
3392
+ obj = response._prefix + obj + "_";
3393
+ key = new FormData();
3394
+ response = response._formData;
3395
+ arrayRoot = Array.from(response.keys());
3396
+ for (value = 0; value < arrayRoot.length; value++)
3397
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
3398
+ for (
3399
+ var entries = response.getAll(reference),
3400
+ newKey = reference.slice(obj.length),
3401
+ j = 0;
3402
+ j < entries.length;
3403
+ j++
3404
+ )
3405
+ key.append(newKey, entries[j]);
3406
+ response.delete(reference);
3407
+ }
3408
+ return key;
3296
3409
  case "i":
3297
3410
  return (
3298
- (value = value.slice(2)),
3299
- getOutlinedModel(response, value, obj, key, extractIterator)
3411
+ (arrayRoot = value.slice(2)),
3412
+ getOutlinedModel(
3413
+ response,
3414
+ arrayRoot,
3415
+ obj,
3416
+ key,
3417
+ null,
3418
+ extractIterator
3419
+ )
3300
3420
  );
3301
3421
  case "I":
3302
3422
  return Infinity;
@@ -3309,15 +3429,50 @@
3309
3429
  case "D":
3310
3430
  return new Date(Date.parse(value.slice(2)));
3311
3431
  case "n":
3312
- return BigInt(value.slice(2));
3432
+ obj = value.slice(2);
3433
+ if (obj.length > MAX_BIGINT_DIGITS)
3434
+ throw Error(
3435
+ "BigInt is too large. Received " +
3436
+ obj.length +
3437
+ " digits but the limit is " +
3438
+ MAX_BIGINT_DIGITS +
3439
+ "."
3440
+ );
3441
+ null !== arrayRoot &&
3442
+ bumpArrayCount(arrayRoot, obj.length, response);
3443
+ return BigInt(obj);
3313
3444
  }
3314
3445
  switch (value[1]) {
3315
3446
  case "A":
3316
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
3447
+ return parseTypedArray(
3448
+ response,
3449
+ value,
3450
+ ArrayBuffer,
3451
+ 1,
3452
+ obj,
3453
+ key,
3454
+ arrayRoot
3455
+ );
3317
3456
  case "O":
3318
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
3457
+ return parseTypedArray(
3458
+ response,
3459
+ value,
3460
+ Int8Array,
3461
+ 1,
3462
+ obj,
3463
+ key,
3464
+ arrayRoot
3465
+ );
3319
3466
  case "o":
3320
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
3467
+ return parseTypedArray(
3468
+ response,
3469
+ value,
3470
+ Uint8Array,
3471
+ 1,
3472
+ obj,
3473
+ key,
3474
+ arrayRoot
3475
+ );
3321
3476
  case "U":
3322
3477
  return parseTypedArray(
3323
3478
  response,
@@ -3325,22 +3480,79 @@
3325
3480
  Uint8ClampedArray,
3326
3481
  1,
3327
3482
  obj,
3328
- key
3483
+ key,
3484
+ arrayRoot
3329
3485
  );
3330
3486
  case "S":
3331
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
3487
+ return parseTypedArray(
3488
+ response,
3489
+ value,
3490
+ Int16Array,
3491
+ 2,
3492
+ obj,
3493
+ key,
3494
+ arrayRoot
3495
+ );
3332
3496
  case "s":
3333
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3497
+ return parseTypedArray(
3498
+ response,
3499
+ value,
3500
+ Uint16Array,
3501
+ 2,
3502
+ obj,
3503
+ key,
3504
+ arrayRoot
3505
+ );
3334
3506
  case "L":
3335
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3507
+ return parseTypedArray(
3508
+ response,
3509
+ value,
3510
+ Int32Array,
3511
+ 4,
3512
+ obj,
3513
+ key,
3514
+ arrayRoot
3515
+ );
3336
3516
  case "l":
3337
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3517
+ return parseTypedArray(
3518
+ response,
3519
+ value,
3520
+ Uint32Array,
3521
+ 4,
3522
+ obj,
3523
+ key,
3524
+ arrayRoot
3525
+ );
3338
3526
  case "G":
3339
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3527
+ return parseTypedArray(
3528
+ response,
3529
+ value,
3530
+ Float32Array,
3531
+ 4,
3532
+ obj,
3533
+ key,
3534
+ arrayRoot
3535
+ );
3340
3536
  case "g":
3341
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3537
+ return parseTypedArray(
3538
+ response,
3539
+ value,
3540
+ Float64Array,
3541
+ 8,
3542
+ obj,
3543
+ key,
3544
+ arrayRoot
3545
+ );
3342
3546
  case "M":
3343
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3547
+ return parseTypedArray(
3548
+ response,
3549
+ value,
3550
+ BigInt64Array,
3551
+ 8,
3552
+ obj,
3553
+ key,
3554
+ arrayRoot
3555
+ );
3344
3556
  case "m":
3345
3557
  return parseTypedArray(
3346
3558
  response,
@@ -3348,10 +3560,19 @@
3348
3560
  BigUint64Array,
3349
3561
  8,
3350
3562
  obj,
3351
- key
3563
+ key,
3564
+ arrayRoot
3352
3565
  );
3353
3566
  case "V":
3354
- return parseTypedArray(response, value, DataView, 1, obj, key);
3567
+ return parseTypedArray(
3568
+ response,
3569
+ value,
3570
+ DataView,
3571
+ 1,
3572
+ obj,
3573
+ key,
3574
+ arrayRoot
3575
+ );
3355
3576
  case "B":
3356
3577
  return (
3357
3578
  (obj = parseInt(value.slice(2), 16)),
@@ -3369,8 +3590,16 @@
3369
3590
  return parseAsyncIterable(response, value, !0);
3370
3591
  }
3371
3592
  value = value.slice(1);
3372
- return getOutlinedModel(response, value, obj, key, createModel);
3593
+ return getOutlinedModel(
3594
+ response,
3595
+ value,
3596
+ obj,
3597
+ key,
3598
+ arrayRoot,
3599
+ createModel
3600
+ );
3373
3601
  }
3602
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
3374
3603
  return value;
3375
3604
  }
3376
3605
  function createResponse(
@@ -3382,13 +3611,17 @@
3382
3611
  3 < arguments.length && void 0 !== arguments[3]
3383
3612
  ? arguments[3]
3384
3613
  : new FormData(),
3614
+ arraySizeLimit =
3615
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
3385
3616
  chunks = new Map();
3386
3617
  return {
3387
3618
  _bundlerConfig: bundlerConfig,
3388
3619
  _prefix: formFieldPrefix,
3389
3620
  _formData: backingFormData,
3390
3621
  _chunks: chunks,
3391
- _temporaryReferences: temporaryReferences
3622
+ _temporaryReferences: temporaryReferences,
3623
+ _rootArrayContexts: new WeakMap(),
3624
+ _arraySizeLimit: arraySizeLimit
3392
3625
  };
3393
3626
  }
3394
3627
  function resolveField(response, key, value) {
@@ -3404,13 +3637,24 @@
3404
3637
  function close(response) {
3405
3638
  reportGlobalError(response, Error("Connection closed."));
3406
3639
  }
3407
- function loadServerReference(bundlerConfig, id, bound) {
3640
+ function loadServerReference(bundlerConfig, metaData) {
3641
+ var id = metaData.id;
3642
+ if ("string" !== typeof id) return null;
3408
3643
  var serverReference = resolveServerReference(bundlerConfig, id);
3409
3644
  bundlerConfig = preloadModule(serverReference);
3410
- return bound
3411
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3645
+ metaData = metaData.bound;
3646
+ return metaData instanceof Promise
3647
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
3412
3648
  _ref = _ref[0];
3413
3649
  var fn = requireModule(serverReference);
3650
+ if (_ref.length > MAX_BOUND_ARGS)
3651
+ throw Error(
3652
+ "Server Function has too many bound arguments. Received " +
3653
+ _ref.length +
3654
+ " but the limit is " +
3655
+ MAX_BOUND_ARGS +
3656
+ "."
3657
+ );
3414
3658
  return fn.bind.apply(fn, [null].concat(_ref));
3415
3659
  })
3416
3660
  : bundlerConfig
@@ -3419,8 +3663,19 @@
3419
3663
  })
3420
3664
  : Promise.resolve(requireModule(serverReference));
3421
3665
  }
3422
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
3423
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3666
+ function decodeBoundActionMetaData(
3667
+ body,
3668
+ serverManifest,
3669
+ formFieldPrefix,
3670
+ arraySizeLimit
3671
+ ) {
3672
+ body = createResponse(
3673
+ serverManifest,
3674
+ formFieldPrefix,
3675
+ void 0,
3676
+ body,
3677
+ arraySizeLimit
3678
+ );
3424
3679
  close(body);
3425
3680
  body = getChunk(body, 0);
3426
3681
  body.then(function () {});
@@ -3847,13 +4102,14 @@
3847
4102
  patchConsole(console, "table"),
3848
4103
  patchConsole(console, "trace"),
3849
4104
  patchConsole(console, "warn"));
3850
- var ObjectPrototype = Object.prototype,
4105
+ var ObjectPrototype$1 = Object.prototype,
3851
4106
  stringify = JSON.stringify,
3852
4107
  PENDING$1 = 0,
3853
4108
  COMPLETED = 1,
3854
4109
  ABORTED = 3,
3855
4110
  ERRORED$1 = 4,
3856
4111
  RENDERING = 5,
4112
+ __PROTO__$1 = "__proto__",
3857
4113
  OPENING = 10,
3858
4114
  ABORTING = 12,
3859
4115
  CLOSING = 13,
@@ -3876,16 +4132,23 @@
3876
4132
  case "fulfilled":
3877
4133
  if ("function" === typeof resolve) {
3878
4134
  for (
3879
- var inspectedValue = this.value, cycleProtection = 0;
4135
+ var inspectedValue = this.value,
4136
+ cycleProtection = 0,
4137
+ visited = new Set();
3880
4138
  inspectedValue instanceof ReactPromise;
3881
4139
 
3882
4140
  ) {
3883
4141
  cycleProtection++;
3884
- if (inspectedValue === this || 1e3 < cycleProtection) {
4142
+ if (
4143
+ inspectedValue === this ||
4144
+ visited.has(inspectedValue) ||
4145
+ 1e3 < cycleProtection
4146
+ ) {
3885
4147
  "function" === typeof reject &&
3886
4148
  reject(Error("Cannot have cyclic thenables."));
3887
4149
  return;
3888
4150
  }
4151
+ visited.add(inspectedValue);
3889
4152
  if ("fulfilled" === inspectedValue.status)
3890
4153
  inspectedValue = inspectedValue.value;
3891
4154
  else break;
@@ -3906,7 +4169,15 @@
3906
4169
  "function" === typeof reject && reject(this.reason);
3907
4170
  }
3908
4171
  };
3909
- var initializingHandler = null;
4172
+ var ObjectPrototype = Object.prototype,
4173
+ ArrayPrototype = Array.prototype,
4174
+ initializingHandler = null;
4175
+ FlightIterator.prototype = {};
4176
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
4177
+ return this;
4178
+ };
4179
+ var MAX_BIGINT_DIGITS = 300,
4180
+ MAX_BOUND_ARGS = 1e3;
3910
4181
  exports.createClientModuleProxy = function (moduleId) {
3911
4182
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
3912
4183
  return new Proxy(moduleId, proxyHandlers$1);
@@ -3916,20 +4187,24 @@
3916
4187
  };
3917
4188
  exports.decodeAction = function (body, serverManifest) {
3918
4189
  var formData = new FormData(),
3919
- action = null;
4190
+ action = null,
4191
+ seenActions = new Set();
3920
4192
  body.forEach(function (value, key) {
3921
4193
  key.startsWith("$ACTION_")
3922
4194
  ? key.startsWith("$ACTION_REF_")
3923
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
4195
+ ? seenActions.has(key) ||
4196
+ (seenActions.add(key),
4197
+ (value = "$ACTION_" + key.slice(12) + ":"),
3924
4198
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
3925
- (action = loadServerReference(
3926
- serverManifest,
3927
- value.id,
3928
- value.bound
3929
- )))
4199
+ (action = loadServerReference(serverManifest, value)))
3930
4200
  : key.startsWith("$ACTION_ID_") &&
3931
- ((value = key.slice(11)),
3932
- (action = loadServerReference(serverManifest, value, null)))
4201
+ !seenActions.has(key) &&
4202
+ (seenActions.add(key),
4203
+ (value = key.slice(11)),
4204
+ (action = loadServerReference(serverManifest, {
4205
+ id: value,
4206
+ bound: null
4207
+ })))
3933
4208
  : formData.append(key, value);
3934
4209
  });
3935
4210
  return null === action
@@ -3965,7 +4240,8 @@
3965
4240
  webpackMap,
3966
4241
  "",
3967
4242
  options ? options.temporaryReferences : void 0,
3968
- body
4243
+ body,
4244
+ options ? options.arraySizeLimit : void 0
3969
4245
  );
3970
4246
  webpackMap = getChunk(body, 0);
3971
4247
  close(body);
@@ -3979,7 +4255,9 @@
3979
4255
  var response = createResponse(
3980
4256
  webpackMap,
3981
4257
  "",
3982
- options ? options.temporaryReferences : void 0
4258
+ options ? options.temporaryReferences : void 0,
4259
+ void 0,
4260
+ options ? options.arraySizeLimit : void 0
3983
4261
  ),
3984
4262
  pendingFiles = 0,
3985
4263
  queuedFields = [];
@@ -4003,13 +4281,13 @@
4003
4281
  );
4004
4282
  else {
4005
4283
  pendingFiles++;
4006
- var JSCompiler_object_inline_chunks_154 = [];
4284
+ var JSCompiler_object_inline_chunks_149 = [];
4007
4285
  value.on("data", function (chunk) {
4008
- JSCompiler_object_inline_chunks_154.push(chunk);
4286
+ JSCompiler_object_inline_chunks_149.push(chunk);
4009
4287
  });
4010
4288
  value.on("end", function () {
4011
4289
  try {
4012
- var blob = new Blob(JSCompiler_object_inline_chunks_154, {
4290
+ var blob = new Blob(JSCompiler_object_inline_chunks_149, {
4013
4291
  type: mimeType
4014
4292
  });
4015
4293
  response._formData.append(name, blob, filename);