react-server-dom-turbopack 19.1.4 → 19.1.6

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.
@@ -1673,6 +1673,13 @@
1673
1673
  value
1674
1674
  ) {
1675
1675
  task.model = value;
1676
+ parentPropertyName === __PROTO__$1 &&
1677
+ callWithDebugContextInDEV(request, task, function () {
1678
+ console.error(
1679
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
1680
+ describeObjectForErrorMessage(parent, parentPropertyName)
1681
+ );
1682
+ });
1676
1683
  if (value === REACT_ELEMENT_TYPE) return "$";
1677
1684
  if (null === value) return null;
1678
1685
  if ("object" === typeof value) {
@@ -1846,7 +1853,7 @@
1846
1853
  if (value instanceof Date) return "$D" + value.toJSON();
1847
1854
  elementReference = getPrototypeOf(value);
1848
1855
  if (
1849
- elementReference !== ObjectPrototype &&
1856
+ elementReference !== ObjectPrototype$1 &&
1850
1857
  (null === elementReference ||
1851
1858
  null !== getPrototypeOf(elementReference))
1852
1859
  )
@@ -2750,12 +2757,12 @@
2750
2757
  this.value = value;
2751
2758
  this.reason = reason;
2752
2759
  }
2753
- function wakeChunk(response, listeners, value) {
2760
+ function wakeChunk(response, listeners, value, chunk) {
2754
2761
  for (var i = 0; i < listeners.length; i++) {
2755
2762
  var listener = listeners[i];
2756
2763
  "function" === typeof listener
2757
2764
  ? listener(value)
2758
- : fulfillReference(response, listener, value);
2765
+ : fulfillReference(response, listener, value, chunk.reason);
2759
2766
  }
2760
2767
  }
2761
2768
  function rejectChunk(response, listeners, error) {
@@ -2766,27 +2773,6 @@
2766
2773
  : rejectReference(response, listener.handler, error);
2767
2774
  }
2768
2775
  }
2769
- function resolveBlockedCycle(resolvedChunk, reference) {
2770
- var referencedChunk = reference.handler.chunk;
2771
- if (null === referencedChunk) return null;
2772
- if (referencedChunk === resolvedChunk) return reference.handler;
2773
- reference = referencedChunk.value;
2774
- if (null !== reference)
2775
- for (
2776
- referencedChunk = 0;
2777
- referencedChunk < reference.length;
2778
- referencedChunk++
2779
- ) {
2780
- var listener = reference[referencedChunk];
2781
- if (
2782
- "function" !== typeof listener &&
2783
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2784
- null !== listener)
2785
- )
2786
- return listener;
2787
- }
2788
- return null;
2789
- }
2790
2776
  function triggerErrorOnChunk(response, chunk, error) {
2791
2777
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2792
2778
  chunk.reason.error(error);
@@ -2810,57 +2796,25 @@
2810
2796
  chunk.value = value;
2811
2797
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
2812
2798
  if (null !== resolveListeners)
2813
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2799
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2814
2800
  case "fulfilled":
2815
- wakeChunk(response, resolveListeners, chunk.value);
2801
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2816
2802
  break;
2817
2803
  case "blocked":
2818
- for (value = 0; value < resolveListeners.length; value++)
2819
- if (
2820
- ((id = resolveListeners[value]), "function" !== typeof id)
2821
- ) {
2822
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2823
- if (null !== cyclicHandler)
2824
- switch (
2825
- (fulfillReference(response, id, cyclicHandler.value),
2826
- resolveListeners.splice(value, 1),
2827
- value--,
2828
- null !== rejectListeners &&
2829
- ((id = rejectListeners.indexOf(id)),
2830
- -1 !== id && rejectListeners.splice(id, 1)),
2831
- chunk.status)
2832
- ) {
2833
- case "fulfilled":
2834
- wakeChunk(response, resolveListeners, chunk.value);
2835
- break a;
2836
- case "rejected":
2837
- null !== rejectListeners &&
2838
- rejectChunk(response, rejectListeners, chunk.reason);
2839
- break a;
2840
- }
2841
- }
2842
2804
  case "pending":
2843
2805
  if (chunk.value)
2844
- for (
2845
- response = 0;
2846
- response < resolveListeners.length;
2847
- response++
2848
- )
2849
- chunk.value.push(resolveListeners[response]);
2806
+ for (value = 0; value < resolveListeners.length; value++)
2807
+ chunk.value.push(resolveListeners[value]);
2850
2808
  else chunk.value = resolveListeners;
2851
2809
  if (chunk.reason) {
2852
2810
  if (rejectListeners)
2853
- for (
2854
- resolveListeners = 0;
2855
- resolveListeners < rejectListeners.length;
2856
- resolveListeners++
2857
- )
2858
- chunk.reason.push(rejectListeners[resolveListeners]);
2811
+ for (value = 0; value < rejectListeners.length; value++)
2812
+ chunk.reason.push(rejectListeners[value]);
2859
2813
  } else chunk.reason = rejectListeners;
2860
2814
  break;
2861
2815
  case "rejected":
2862
2816
  rejectListeners &&
2863
- wakeChunk(response, rejectListeners, chunk.reason);
2817
+ rejectChunk(response, rejectListeners, chunk.reason);
2864
2818
  }
2865
2819
  }
2866
2820
  }
@@ -2884,15 +2838,51 @@
2884
2838
  );
2885
2839
  }
2886
2840
  function loadServerReference$1(response, metaData, parentObject, key) {
2841
+ function reject(error) {
2842
+ var rejectListeners = blockedPromise.reason,
2843
+ erroredPromise = blockedPromise;
2844
+ erroredPromise.status = "rejected";
2845
+ erroredPromise.value = null;
2846
+ erroredPromise.reason = error;
2847
+ null !== rejectListeners &&
2848
+ rejectChunk(response, rejectListeners, error);
2849
+ rejectReference(response, handler, error);
2850
+ }
2887
2851
  var id = metaData.id;
2888
2852
  if ("string" !== typeof id || "then" === key) return null;
2853
+ var cachedPromise = metaData.$$promise;
2854
+ if (void 0 !== cachedPromise) {
2855
+ if ("fulfilled" === cachedPromise.status)
2856
+ return (
2857
+ (cachedPromise = cachedPromise.value),
2858
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2859
+ );
2860
+ initializingHandler
2861
+ ? ((id = initializingHandler), id.deps++)
2862
+ : (id = initializingHandler =
2863
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2864
+ cachedPromise.then(
2865
+ resolveReference.bind(null, response, id, parentObject, key),
2866
+ rejectReference.bind(null, response, id)
2867
+ );
2868
+ return null;
2869
+ }
2870
+ var blockedPromise = new ReactPromise("blocked", null, null);
2871
+ metaData.$$promise = blockedPromise;
2889
2872
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2890
- id = metaData.bound;
2891
- var promise = preloadModule(serverReference);
2892
- if (promise)
2893
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2894
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2895
- else return requireModule(serverReference);
2873
+ cachedPromise = metaData.bound;
2874
+ if ((id = preloadModule(serverReference)))
2875
+ cachedPromise instanceof ReactPromise &&
2876
+ (id = Promise.all([id, cachedPromise]));
2877
+ else if (cachedPromise instanceof ReactPromise)
2878
+ id = Promise.resolve(cachedPromise);
2879
+ else
2880
+ return (
2881
+ (cachedPromise = requireModule(serverReference)),
2882
+ (id = blockedPromise),
2883
+ (id.status = "fulfilled"),
2884
+ (id.value = cachedPromise)
2885
+ );
2896
2886
  if (initializingHandler) {
2897
2887
  var handler = initializingHandler;
2898
2888
  handler.deps++;
@@ -2904,93 +2894,107 @@
2904
2894
  deps: 1,
2905
2895
  errored: !1
2906
2896
  };
2907
- promise.then(
2908
- function () {
2909
- var resolvedValue = requireModule(serverReference);
2910
- if (metaData.bound) {
2911
- var promiseValue = metaData.bound.value;
2912
- promiseValue = Array.isArray(promiseValue)
2913
- ? promiseValue.slice(0)
2914
- : [];
2915
- promiseValue.unshift(null);
2916
- resolvedValue = resolvedValue.bind.apply(
2917
- resolvedValue,
2918
- promiseValue
2897
+ id.then(function () {
2898
+ var resolvedValue = requireModule(serverReference);
2899
+ if (metaData.bound) {
2900
+ var promiseValue = metaData.bound.value;
2901
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2902
+ if (promiseValue.length > MAX_BOUND_ARGS) {
2903
+ reject(
2904
+ Error(
2905
+ "Server Function has too many bound arguments. Received " +
2906
+ promiseValue.length +
2907
+ " but the limit is " +
2908
+ MAX_BOUND_ARGS +
2909
+ "."
2910
+ )
2919
2911
  );
2912
+ return;
2920
2913
  }
2921
- parentObject[key] = resolvedValue;
2922
- "" === key &&
2923
- null === handler.value &&
2924
- (handler.value = resolvedValue);
2925
- handler.deps--;
2926
- 0 === handler.deps &&
2927
- ((resolvedValue = handler.chunk),
2928
- null !== resolvedValue &&
2929
- "blocked" === resolvedValue.status &&
2930
- ((promiseValue = resolvedValue.value),
2931
- (resolvedValue.status = "fulfilled"),
2932
- (resolvedValue.value = handler.value),
2933
- (resolvedValue.reason = null),
2934
- null !== promiseValue &&
2935
- wakeChunk(response, promiseValue, handler.value)));
2936
- },
2937
- function (error) {
2938
- if (!handler.errored) {
2939
- handler.errored = !0;
2940
- handler.value = null;
2941
- handler.reason = error;
2942
- var chunk = handler.chunk;
2943
- null !== chunk &&
2944
- "blocked" === chunk.status &&
2945
- triggerErrorOnChunk(response, chunk, error);
2946
- }
2914
+ promiseValue.unshift(null);
2915
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2947
2916
  }
2948
- );
2917
+ promiseValue = blockedPromise.value;
2918
+ var initializedPromise = blockedPromise;
2919
+ initializedPromise.status = "fulfilled";
2920
+ initializedPromise.value = resolvedValue;
2921
+ initializedPromise.reason = null;
2922
+ null !== promiseValue &&
2923
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2924
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2925
+ }, reject);
2949
2926
  return null;
2950
2927
  }
2951
- function reviveModel(response, parentObj, parentKey, value, reference) {
2928
+ function reviveModel(
2929
+ response,
2930
+ parentObj,
2931
+ parentKey,
2932
+ value,
2933
+ reference,
2934
+ arrayRoot
2935
+ ) {
2952
2936
  if ("string" === typeof value)
2953
2937
  return parseModelString(
2954
2938
  response,
2955
2939
  parentObj,
2956
2940
  parentKey,
2957
2941
  value,
2958
- reference
2942
+ reference,
2943
+ arrayRoot
2959
2944
  );
2960
2945
  if ("object" === typeof value && null !== value)
2961
2946
  if (
2962
2947
  (void 0 !== reference &&
2963
2948
  void 0 !== response._temporaryReferences &&
2964
2949
  response._temporaryReferences.set(value, reference),
2965
- Array.isArray(value))
2966
- )
2967
- for (var i = 0; i < value.length; i++)
2968
- value[i] = reviveModel(
2950
+ isArrayImpl(value))
2951
+ ) {
2952
+ if (null === arrayRoot) {
2953
+ var childContext = { count: 0, fork: !1 };
2954
+ response._rootArrayContexts.set(value, childContext);
2955
+ } else childContext = arrayRoot;
2956
+ 1 < value.length && (childContext.fork = !0);
2957
+ bumpArrayCount(childContext, value.length + 1, response);
2958
+ for (parentObj = 0; parentObj < value.length; parentObj++)
2959
+ value[parentObj] = reviveModel(
2969
2960
  response,
2970
2961
  value,
2971
- "" + i,
2972
- value[i],
2973
- void 0 !== reference ? reference + ":" + i : void 0
2962
+ "" + parentObj,
2963
+ value[parentObj],
2964
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
2965
+ childContext
2974
2966
  );
2975
- else
2976
- for (i in value)
2977
- hasOwnProperty.call(value, i) &&
2978
- ((parentObj =
2979
- void 0 !== reference && -1 === i.indexOf(":")
2980
- ? reference + ":" + i
2981
- : void 0),
2982
- (parentObj = reviveModel(
2983
- response,
2984
- value,
2985
- i,
2986
- value[i],
2987
- parentObj
2988
- )),
2989
- void 0 !== parentObj || "__proto__" === i
2990
- ? (value[i] = parentObj)
2991
- : delete value[i]);
2967
+ } else
2968
+ for (childContext in value)
2969
+ hasOwnProperty.call(value, childContext) &&
2970
+ ("__proto__" === childContext
2971
+ ? delete value[childContext]
2972
+ : ((parentObj =
2973
+ void 0 !== reference && -1 === childContext.indexOf(":")
2974
+ ? reference + ":" + childContext
2975
+ : void 0),
2976
+ (parentObj = reviveModel(
2977
+ response,
2978
+ value,
2979
+ childContext,
2980
+ value[childContext],
2981
+ parentObj,
2982
+ null
2983
+ )),
2984
+ void 0 !== parentObj
2985
+ ? (value[childContext] = parentObj)
2986
+ : delete value[childContext]));
2992
2987
  return value;
2993
2988
  }
2989
+ function bumpArrayCount(arrayContext, slots, response) {
2990
+ if (
2991
+ (arrayContext.count += slots) > response._arraySizeLimit &&
2992
+ arrayContext.fork
2993
+ )
2994
+ throw Error(
2995
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
2996
+ );
2997
+ }
2994
2998
  function initializeModelChunk(chunk) {
2995
2999
  var prevHandler = initializingHandler;
2996
3000
  initializingHandler = null;
@@ -3004,13 +3008,15 @@
3004
3008
  chunk.value = null;
3005
3009
  chunk.reason = null;
3006
3010
  try {
3007
- var rawModel = JSON.parse(resolvedModel),
3008
- value = reviveModel(
3011
+ var rawModel = JSON.parse(resolvedModel);
3012
+ resolvedModel = { count: 0, fork: !1 };
3013
+ var value = reviveModel(
3009
3014
  response,
3010
3015
  { "": rawModel },
3011
3016
  "",
3012
3017
  rawModel,
3013
- _chunk$reason
3018
+ _chunk$reason,
3019
+ resolvedModel
3014
3020
  ),
3015
3021
  resolveListeners = chunk.value;
3016
3022
  if (null !== resolveListeners)
@@ -3022,19 +3028,20 @@
3022
3028
  var listener = resolveListeners[rawModel];
3023
3029
  "function" === typeof listener
3024
3030
  ? listener(value)
3025
- : fulfillReference(response, listener, value);
3031
+ : fulfillReference(response, listener, value, resolvedModel);
3026
3032
  }
3027
3033
  if (null !== initializingHandler) {
3028
3034
  if (initializingHandler.errored) throw initializingHandler.reason;
3029
3035
  if (0 < initializingHandler.deps) {
3030
3036
  initializingHandler.value = value;
3037
+ initializingHandler.reason = resolvedModel;
3031
3038
  initializingHandler.chunk = chunk;
3032
3039
  return;
3033
3040
  }
3034
3041
  }
3035
3042
  chunk.status = "fulfilled";
3036
3043
  chunk.value = value;
3037
- chunk.reason = null;
3044
+ chunk.reason = resolvedModel;
3038
3045
  } catch (error) {
3039
3046
  (chunk.status = "rejected"), (chunk.reason = error);
3040
3047
  } finally {
@@ -3049,7 +3056,8 @@
3049
3056
  ? triggerErrorOnChunk(response, chunk, error)
3050
3057
  : "fulfilled" === chunk.status &&
3051
3058
  null !== chunk.reason &&
3052
- chunk.reason.error(error);
3059
+ ((chunk = chunk.reason),
3060
+ "function" === typeof chunk.error && chunk.error(error));
3053
3061
  });
3054
3062
  }
3055
3063
  function getChunk(response, id) {
@@ -3070,40 +3078,74 @@
3070
3078
  chunks.set(id, chunk));
3071
3079
  return chunk;
3072
3080
  }
3073
- function fulfillReference(response, reference, value) {
3081
+ function fulfillReference(response, reference, value, arrayRoot) {
3074
3082
  var handler = reference.handler,
3075
3083
  parentObject = reference.parentObject,
3076
3084
  key = reference.key,
3077
3085
  map = reference.map,
3078
3086
  path = reference.path;
3079
3087
  try {
3080
- for (var i = 1; i < path.length; i++) {
3088
+ for (
3089
+ var localLength = 0,
3090
+ rootArrayContexts = response._rootArrayContexts,
3091
+ i = 1;
3092
+ i < path.length;
3093
+ i++
3094
+ ) {
3081
3095
  var name = path[i];
3082
3096
  if (
3083
3097
  "object" !== typeof value ||
3084
- !hasOwnProperty.call(value, name) ||
3085
- value instanceof Promise
3098
+ null === value ||
3099
+ (getPrototypeOf(value) !== ObjectPrototype &&
3100
+ getPrototypeOf(value) !== ArrayPrototype) ||
3101
+ !hasOwnProperty.call(value, name)
3086
3102
  )
3087
3103
  throw Error("Invalid reference.");
3088
3104
  value = value[name];
3105
+ if (isArrayImpl(value))
3106
+ (localLength = 0),
3107
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
3108
+ else if (((arrayRoot = null), "string" === typeof value))
3109
+ localLength = value.length;
3110
+ else if ("bigint" === typeof value) {
3111
+ var n = Math.abs(Number(value));
3112
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
3113
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
3089
3114
  }
3090
- var mappedValue = map(response, value, parentObject, key);
3091
- parentObject[key] = mappedValue;
3092
- "" === key && null === handler.value && (handler.value = mappedValue);
3115
+ var resolvedValue = map(response, value, parentObject, key);
3116
+ var referenceArrayRoot = reference.arrayRoot;
3117
+ null !== referenceArrayRoot &&
3118
+ (null !== arrayRoot
3119
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
3120
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
3121
+ : 0 < localLength &&
3122
+ bumpArrayCount(referenceArrayRoot, localLength, response));
3093
3123
  } catch (error) {
3094
- rejectReference(response, reference.handler, error);
3124
+ rejectReference(response, handler, error);
3095
3125
  return;
3096
3126
  }
3127
+ resolveReference(response, handler, parentObject, key, resolvedValue);
3128
+ }
3129
+ function resolveReference(
3130
+ response,
3131
+ handler,
3132
+ parentObject,
3133
+ key,
3134
+ resolvedValue
3135
+ ) {
3136
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
3137
+ "" === key && null === handler.value && (handler.value = resolvedValue);
3097
3138
  handler.deps--;
3098
3139
  0 === handler.deps &&
3099
- ((reference = handler.chunk),
3100
- null !== reference &&
3101
- "blocked" === reference.status &&
3102
- ((value = reference.value),
3103
- (reference.status = "fulfilled"),
3104
- (reference.value = handler.value),
3105
- (reference.reason = handler.reason),
3106
- null !== value && wakeChunk(response, value, handler.value)));
3140
+ ((parentObject = handler.chunk),
3141
+ null !== parentObject &&
3142
+ "blocked" === parentObject.status &&
3143
+ ((key = parentObject.value),
3144
+ (parentObject.status = "fulfilled"),
3145
+ (parentObject.value = handler.value),
3146
+ (parentObject.reason = handler.reason),
3147
+ null !== key &&
3148
+ wakeChunk(response, key, handler.value, parentObject)));
3107
3149
  }
3108
3150
  function rejectReference(response, handler, error) {
3109
3151
  handler.errored ||
@@ -3115,29 +3157,66 @@
3115
3157
  "blocked" === handler.status &&
3116
3158
  triggerErrorOnChunk(response, handler, error));
3117
3159
  }
3118
- function getOutlinedModel(response, reference, parentObject, key, map) {
3160
+ function getOutlinedModel(
3161
+ response,
3162
+ reference,
3163
+ parentObject,
3164
+ key,
3165
+ referenceArrayRoot,
3166
+ map
3167
+ ) {
3119
3168
  reference = reference.split(":");
3120
- var id = parseInt(reference[0], 16);
3121
- id = getChunk(response, id);
3122
- switch (id.status) {
3169
+ var id = parseInt(reference[0], 16),
3170
+ chunk = getChunk(response, id);
3171
+ switch (chunk.status) {
3123
3172
  case "resolved_model":
3124
- initializeModelChunk(id);
3173
+ initializeModelChunk(chunk);
3125
3174
  }
3126
- switch (id.status) {
3175
+ switch (chunk.status) {
3127
3176
  case "fulfilled":
3128
- id = id.value;
3129
- for (var i = 1; i < reference.length; i++) {
3130
- var name = reference[i];
3177
+ id = chunk.value;
3178
+ chunk = chunk.reason;
3179
+ for (
3180
+ var localLength = 0,
3181
+ rootArrayContexts = response._rootArrayContexts,
3182
+ i = 1;
3183
+ i < reference.length;
3184
+ i++
3185
+ ) {
3186
+ localLength = reference[i];
3131
3187
  if (
3132
3188
  "object" !== typeof id ||
3133
- !hasOwnProperty.call(id, name) ||
3134
- id instanceof Promise
3189
+ null === id ||
3190
+ (getPrototypeOf(id) !== ObjectPrototype &&
3191
+ getPrototypeOf(id) !== ArrayPrototype) ||
3192
+ !hasOwnProperty.call(id, localLength)
3135
3193
  )
3136
3194
  throw Error("Invalid reference.");
3137
- id = id[name];
3195
+ id = id[localLength];
3196
+ isArrayImpl(id)
3197
+ ? ((localLength = 0),
3198
+ (chunk = rootArrayContexts.get(id) || chunk))
3199
+ : ((chunk = null),
3200
+ "string" === typeof id
3201
+ ? (localLength = id.length)
3202
+ : "bigint" === typeof id
3203
+ ? ((localLength = Math.abs(Number(id))),
3204
+ (localLength =
3205
+ 0 === localLength
3206
+ ? 1
3207
+ : Math.floor(Math.log10(localLength)) + 1))
3208
+ : (localLength = ArrayBuffer.isView(id)
3209
+ ? id.byteLength
3210
+ : 0));
3138
3211
  }
3139
- return map(response, id, parentObject, key);
3140
- case "pending":
3212
+ parentObject = map(response, id, parentObject, key);
3213
+ null !== referenceArrayRoot &&
3214
+ (null !== chunk
3215
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
3216
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
3217
+ : 0 < localLength &&
3218
+ bumpArrayCount(referenceArrayRoot, localLength, response));
3219
+ return parentObject;
3141
3220
  case "blocked":
3142
3221
  return (
3143
3222
  initializingHandler
@@ -3150,31 +3229,34 @@
3150
3229
  deps: 1,
3151
3230
  errored: !1
3152
3231
  }),
3153
- (parentObject = {
3232
+ (referenceArrayRoot = {
3154
3233
  handler: response,
3155
3234
  parentObject: parentObject,
3156
3235
  key: key,
3157
3236
  map: map,
3158
- path: reference
3237
+ path: reference,
3238
+ arrayRoot: referenceArrayRoot
3159
3239
  }),
3160
- null === id.value
3161
- ? (id.value = [parentObject])
3162
- : id.value.push(parentObject),
3163
- null === id.reason
3164
- ? (id.reason = [parentObject])
3165
- : id.reason.push(parentObject),
3240
+ null === chunk.value
3241
+ ? (chunk.value = [referenceArrayRoot])
3242
+ : chunk.value.push(referenceArrayRoot),
3243
+ null === chunk.reason
3244
+ ? (chunk.reason = [referenceArrayRoot])
3245
+ : chunk.reason.push(referenceArrayRoot),
3166
3246
  null
3167
3247
  );
3248
+ case "pending":
3249
+ throw Error("Invalid forward reference.");
3168
3250
  default:
3169
3251
  return (
3170
3252
  initializingHandler
3171
3253
  ? ((initializingHandler.errored = !0),
3172
3254
  (initializingHandler.value = null),
3173
- (initializingHandler.reason = id.reason))
3255
+ (initializingHandler.reason = chunk.reason))
3174
3256
  : (initializingHandler = {
3175
3257
  chunk: null,
3176
3258
  value: null,
3177
- reason: id.reason,
3259
+ reason: chunk.reason,
3178
3260
  deps: 0,
3179
3261
  errored: !0
3180
3262
  }),
@@ -3183,12 +3265,21 @@
3183
3265
  }
3184
3266
  }
3185
3267
  function createMap(response, model) {
3268
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
3269
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
3270
+ model.$$consumed = !0;
3186
3271
  return new Map(model);
3187
3272
  }
3188
3273
  function createSet(response, model) {
3274
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
3275
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
3276
+ model.$$consumed = !0;
3189
3277
  return new Set(model);
3190
3278
  }
3191
3279
  function extractIterator(response, model) {
3280
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
3281
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
3282
+ model.$$consumed = !0;
3192
3283
  return model[Symbol.iterator]();
3193
3284
  }
3194
3285
  function createModel(response, model, parentObject, key) {
@@ -3200,13 +3291,34 @@
3200
3291
  constructor,
3201
3292
  bytesPerElement,
3202
3293
  parentObject,
3203
- parentKey
3294
+ parentKey,
3295
+ referenceArrayRoot
3204
3296
  ) {
3297
+ function reject(error) {
3298
+ if (!handler.errored) {
3299
+ handler.errored = !0;
3300
+ handler.value = null;
3301
+ handler.reason = error;
3302
+ var chunk = handler.chunk;
3303
+ null !== chunk &&
3304
+ "blocked" === chunk.status &&
3305
+ triggerErrorOnChunk(response, chunk, error);
3306
+ }
3307
+ }
3205
3308
  reference = parseInt(reference.slice(2), 16);
3206
- bytesPerElement = response._prefix + reference;
3207
- if (response._chunks.has(reference))
3309
+ var key = response._prefix + reference;
3310
+ bytesPerElement = response._chunks;
3311
+ if (bytesPerElement.has(reference))
3208
3312
  throw Error("Already initialized typed array.");
3209
- reference = response._formData.get(bytesPerElement).arrayBuffer();
3313
+ bytesPerElement.set(
3314
+ reference,
3315
+ new ReactPromise(
3316
+ "rejected",
3317
+ null,
3318
+ Error("Already initialized typed array.")
3319
+ )
3320
+ );
3321
+ reference = response._formData.get(key).arrayBuffer();
3210
3322
  if (initializingHandler) {
3211
3323
  var handler = initializingHandler;
3212
3324
  handler.deps++;
@@ -3218,40 +3330,32 @@
3218
3330
  deps: 1,
3219
3331
  errored: !1
3220
3332
  };
3221
- reference.then(
3222
- function (buffer) {
3223
- buffer =
3333
+ reference.then(function (buffer) {
3334
+ try {
3335
+ null !== referenceArrayRoot &&
3336
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
3337
+ var resolvedValue =
3224
3338
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
3225
- parentObject[parentKey] = buffer;
3339
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
3226
3340
  "" === parentKey &&
3227
3341
  null === handler.value &&
3228
- (handler.value = buffer);
3229
- handler.deps--;
3230
- if (
3231
- 0 === handler.deps &&
3232
- ((buffer = handler.chunk),
3233
- null !== buffer && "blocked" === buffer.status)
3234
- ) {
3235
- var resolveListeners = buffer.value;
3236
- buffer.status = "fulfilled";
3237
- buffer.value = handler.value;
3238
- buffer.reason = null;
3239
- null !== resolveListeners &&
3240
- wakeChunk(response, resolveListeners, handler.value);
3241
- }
3242
- },
3243
- function (error) {
3244
- if (!handler.errored) {
3245
- handler.errored = !0;
3246
- handler.value = null;
3247
- handler.reason = error;
3248
- var chunk = handler.chunk;
3249
- null !== chunk &&
3250
- "blocked" === chunk.status &&
3251
- triggerErrorOnChunk(response, chunk, error);
3252
- }
3342
+ (handler.value = resolvedValue);
3343
+ } catch (x) {
3344
+ reject(x);
3345
+ return;
3253
3346
  }
3254
- );
3347
+ handler.deps--;
3348
+ 0 === handler.deps &&
3349
+ ((buffer = handler.chunk),
3350
+ null !== buffer &&
3351
+ "blocked" === buffer.status &&
3352
+ ((resolvedValue = buffer.value),
3353
+ (buffer.status = "fulfilled"),
3354
+ (buffer.value = handler.value),
3355
+ (buffer.reason = null),
3356
+ null !== resolvedValue &&
3357
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
3358
+ }, reject);
3255
3359
  return null;
3256
3360
  }
3257
3361
  function resolveStream(response, id, stream, controller) {
@@ -3269,90 +3373,78 @@
3269
3373
  : controller.enqueueModel(chunks));
3270
3374
  }
3271
3375
  function parseReadableStream(response, reference, type) {
3376
+ function enqueue(value) {
3377
+ "bytes" !== type || ArrayBuffer.isView(value)
3378
+ ? controller.enqueue(value)
3379
+ : flightController.error(Error("Invalid data for bytes stream."));
3380
+ }
3272
3381
  reference = parseInt(reference.slice(2), 16);
3273
3382
  if (response._chunks.has(reference))
3274
3383
  throw Error("Already initialized stream.");
3275
3384
  var controller = null,
3276
- closed = !1;
3277
- type = new ReadableStream({
3278
- type: type,
3279
- start: function (c) {
3280
- controller = c;
3281
- }
3282
- });
3283
- var previousBlockedChunk = null;
3284
- resolveStream(response, reference, type, {
3285
- enqueueModel: function (json) {
3286
- if (null === previousBlockedChunk) {
3287
- var chunk = new ReactPromise(
3288
- "resolved_model",
3289
- json,
3290
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3291
- );
3292
- initializeModelChunk(chunk);
3293
- "fulfilled" === chunk.status
3294
- ? controller.enqueue(chunk.value)
3295
- : (chunk.then(
3296
- function (v) {
3297
- return controller.enqueue(v);
3298
- },
3299
- function (e) {
3300
- return controller.error(e);
3301
- }
3302
- ),
3303
- (previousBlockedChunk = chunk));
3304
- } else {
3305
- chunk = previousBlockedChunk;
3306
- var _chunk = new ReactPromise("pending", null, null);
3307
- _chunk.then(
3308
- function (v) {
3309
- return controller.enqueue(v);
3310
- },
3311
- function (e) {
3312
- return controller.error(e);
3313
- }
3314
- );
3315
- previousBlockedChunk = _chunk;
3316
- chunk.then(function () {
3317
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
3318
- resolveModelChunk(response, _chunk, json, -1);
3319
- });
3385
+ closed = !1,
3386
+ stream = new ReadableStream({
3387
+ type: type,
3388
+ start: function (c) {
3389
+ controller = c;
3320
3390
  }
3321
- },
3322
- close: function () {
3323
- if (!closed)
3324
- if (((closed = !0), null === previousBlockedChunk))
3325
- controller.close();
3326
- else {
3327
- var blockedChunk = previousBlockedChunk;
3328
- previousBlockedChunk = null;
3329
- blockedChunk.then(function () {
3330
- return controller.close();
3331
- });
3332
- }
3333
- },
3334
- error: function (error) {
3335
- if (!closed)
3336
- if (((closed = !0), null === previousBlockedChunk))
3337
- controller.error(error);
3338
- else {
3339
- var blockedChunk = previousBlockedChunk;
3340
- previousBlockedChunk = null;
3341
- blockedChunk.then(function () {
3342
- return controller.error(error);
3391
+ }),
3392
+ previousBlockedChunk = null,
3393
+ flightController = {
3394
+ enqueueModel: function (json) {
3395
+ if (null === previousBlockedChunk) {
3396
+ var chunk = new ReactPromise(
3397
+ "resolved_model",
3398
+ json,
3399
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3400
+ );
3401
+ initializeModelChunk(chunk);
3402
+ "fulfilled" === chunk.status
3403
+ ? enqueue(chunk.value)
3404
+ : (chunk.then(enqueue, flightController.error),
3405
+ (previousBlockedChunk = chunk));
3406
+ } else {
3407
+ chunk = previousBlockedChunk;
3408
+ var _chunk = new ReactPromise("pending", null, null);
3409
+ _chunk.then(enqueue, flightController.error);
3410
+ previousBlockedChunk = _chunk;
3411
+ chunk.then(function () {
3412
+ previousBlockedChunk === _chunk &&
3413
+ (previousBlockedChunk = null);
3414
+ resolveModelChunk(response, _chunk, json, -1);
3343
3415
  });
3344
3416
  }
3345
- }
3346
- });
3347
- return type;
3348
- }
3349
- function asyncIterator() {
3350
- return this;
3417
+ },
3418
+ close: function () {
3419
+ if (!closed)
3420
+ if (((closed = !0), null === previousBlockedChunk))
3421
+ controller.close();
3422
+ else {
3423
+ var blockedChunk = previousBlockedChunk;
3424
+ previousBlockedChunk = null;
3425
+ blockedChunk.then(function () {
3426
+ return controller.close();
3427
+ });
3428
+ }
3429
+ },
3430
+ error: function (error) {
3431
+ if (!closed)
3432
+ if (((closed = !0), null === previousBlockedChunk))
3433
+ controller.error(error);
3434
+ else {
3435
+ var blockedChunk = previousBlockedChunk;
3436
+ previousBlockedChunk = null;
3437
+ blockedChunk.then(function () {
3438
+ return controller.error(error);
3439
+ });
3440
+ }
3441
+ }
3442
+ };
3443
+ resolveStream(response, reference, stream, flightController);
3444
+ return stream;
3351
3445
  }
3352
- function createIterator(next) {
3353
- next = { next: next };
3354
- next[ASYNC_ITERATOR] = asyncIterator;
3355
- return next;
3446
+ function FlightIterator(next) {
3447
+ this.next = next;
3356
3448
  }
3357
3449
  function parseAsyncIterable(response, reference, iterator) {
3358
3450
  reference = parseInt(reference.slice(2), 16);
@@ -3363,7 +3455,7 @@
3363
3455
  nextWriteIndex = 0,
3364
3456
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
3365
3457
  var nextReadIndex = 0;
3366
- return createIterator(function (arg) {
3458
+ return new FlightIterator(function (arg) {
3367
3459
  if (void 0 !== arg)
3368
3460
  throw Error(
3369
3461
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -3442,19 +3534,30 @@
3442
3534
  });
3443
3535
  return iterator;
3444
3536
  }
3445
- function parseModelString(response, obj, key, value, reference) {
3537
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
3446
3538
  if ("$" === value[0]) {
3447
3539
  switch (value[1]) {
3448
3540
  case "$":
3449
- return value.slice(1);
3541
+ return (
3542
+ null !== arrayRoot &&
3543
+ bumpArrayCount(arrayRoot, value.length - 1, response),
3544
+ value.slice(1)
3545
+ );
3450
3546
  case "@":
3451
3547
  return (
3452
3548
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
3453
3549
  );
3454
3550
  case "h":
3455
3551
  return (
3456
- (value = value.slice(2)),
3457
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
3552
+ (arrayRoot = value.slice(2)),
3553
+ getOutlinedModel(
3554
+ response,
3555
+ arrayRoot,
3556
+ obj,
3557
+ key,
3558
+ null,
3559
+ loadServerReference$1
3560
+ )
3458
3561
  );
3459
3562
  case "T":
3460
3563
  if (
@@ -3470,27 +3573,44 @@
3470
3573
  );
3471
3574
  case "Q":
3472
3575
  return (
3473
- (value = value.slice(2)),
3474
- getOutlinedModel(response, value, obj, key, createMap)
3576
+ (arrayRoot = value.slice(2)),
3577
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
3475
3578
  );
3476
3579
  case "W":
3477
3580
  return (
3478
- (value = value.slice(2)),
3479
- getOutlinedModel(response, value, obj, key, createSet)
3581
+ (arrayRoot = value.slice(2)),
3582
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
3480
3583
  );
3481
3584
  case "K":
3482
3585
  obj = value.slice(2);
3483
- var formPrefix = response._prefix + obj + "_",
3484
- data = new FormData();
3485
- response._formData.forEach(function (entry, entryKey) {
3486
- entryKey.startsWith(formPrefix) &&
3487
- data.append(entryKey.slice(formPrefix.length), entry);
3488
- });
3489
- return data;
3586
+ obj = response._prefix + obj + "_";
3587
+ key = new FormData();
3588
+ response = response._formData;
3589
+ arrayRoot = Array.from(response.keys());
3590
+ for (value = 0; value < arrayRoot.length; value++)
3591
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
3592
+ for (
3593
+ var entries = response.getAll(reference),
3594
+ newKey = reference.slice(obj.length),
3595
+ j = 0;
3596
+ j < entries.length;
3597
+ j++
3598
+ )
3599
+ key.append(newKey, entries[j]);
3600
+ response.delete(reference);
3601
+ }
3602
+ return key;
3490
3603
  case "i":
3491
3604
  return (
3492
- (value = value.slice(2)),
3493
- getOutlinedModel(response, value, obj, key, extractIterator)
3605
+ (arrayRoot = value.slice(2)),
3606
+ getOutlinedModel(
3607
+ response,
3608
+ arrayRoot,
3609
+ obj,
3610
+ key,
3611
+ null,
3612
+ extractIterator
3613
+ )
3494
3614
  );
3495
3615
  case "I":
3496
3616
  return Infinity;
@@ -3503,15 +3623,48 @@
3503
3623
  case "D":
3504
3624
  return new Date(Date.parse(value.slice(2)));
3505
3625
  case "n":
3506
- return BigInt(value.slice(2));
3507
- }
3508
- switch (value[1]) {
3626
+ obj = value.slice(2);
3627
+ if (obj.length > MAX_BIGINT_DIGITS)
3628
+ throw Error(
3629
+ "BigInt is too large. Received " +
3630
+ obj.length +
3631
+ " digits but the limit is " +
3632
+ MAX_BIGINT_DIGITS +
3633
+ "."
3634
+ );
3635
+ null !== arrayRoot &&
3636
+ bumpArrayCount(arrayRoot, obj.length, response);
3637
+ return BigInt(obj);
3509
3638
  case "A":
3510
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
3639
+ return parseTypedArray(
3640
+ response,
3641
+ value,
3642
+ ArrayBuffer,
3643
+ 1,
3644
+ obj,
3645
+ key,
3646
+ arrayRoot
3647
+ );
3511
3648
  case "O":
3512
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
3649
+ return parseTypedArray(
3650
+ response,
3651
+ value,
3652
+ Int8Array,
3653
+ 1,
3654
+ obj,
3655
+ key,
3656
+ arrayRoot
3657
+ );
3513
3658
  case "o":
3514
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
3659
+ return parseTypedArray(
3660
+ response,
3661
+ value,
3662
+ Uint8Array,
3663
+ 1,
3664
+ obj,
3665
+ key,
3666
+ arrayRoot
3667
+ );
3515
3668
  case "U":
3516
3669
  return parseTypedArray(
3517
3670
  response,
@@ -3519,22 +3672,79 @@
3519
3672
  Uint8ClampedArray,
3520
3673
  1,
3521
3674
  obj,
3522
- key
3675
+ key,
3676
+ arrayRoot
3523
3677
  );
3524
3678
  case "S":
3525
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
3679
+ return parseTypedArray(
3680
+ response,
3681
+ value,
3682
+ Int16Array,
3683
+ 2,
3684
+ obj,
3685
+ key,
3686
+ arrayRoot
3687
+ );
3526
3688
  case "s":
3527
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3689
+ return parseTypedArray(
3690
+ response,
3691
+ value,
3692
+ Uint16Array,
3693
+ 2,
3694
+ obj,
3695
+ key,
3696
+ arrayRoot
3697
+ );
3528
3698
  case "L":
3529
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3699
+ return parseTypedArray(
3700
+ response,
3701
+ value,
3702
+ Int32Array,
3703
+ 4,
3704
+ obj,
3705
+ key,
3706
+ arrayRoot
3707
+ );
3530
3708
  case "l":
3531
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3709
+ return parseTypedArray(
3710
+ response,
3711
+ value,
3712
+ Uint32Array,
3713
+ 4,
3714
+ obj,
3715
+ key,
3716
+ arrayRoot
3717
+ );
3532
3718
  case "G":
3533
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3719
+ return parseTypedArray(
3720
+ response,
3721
+ value,
3722
+ Float32Array,
3723
+ 4,
3724
+ obj,
3725
+ key,
3726
+ arrayRoot
3727
+ );
3534
3728
  case "g":
3535
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3729
+ return parseTypedArray(
3730
+ response,
3731
+ value,
3732
+ Float64Array,
3733
+ 8,
3734
+ obj,
3735
+ key,
3736
+ arrayRoot
3737
+ );
3536
3738
  case "M":
3537
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3739
+ return parseTypedArray(
3740
+ response,
3741
+ value,
3742
+ BigInt64Array,
3743
+ 8,
3744
+ obj,
3745
+ key,
3746
+ arrayRoot
3747
+ );
3538
3748
  case "m":
3539
3749
  return parseTypedArray(
3540
3750
  response,
@@ -3542,17 +3752,24 @@
3542
3752
  BigUint64Array,
3543
3753
  8,
3544
3754
  obj,
3545
- key
3755
+ key,
3756
+ arrayRoot
3546
3757
  );
3547
3758
  case "V":
3548
- return parseTypedArray(response, value, DataView, 1, obj, key);
3759
+ return parseTypedArray(
3760
+ response,
3761
+ value,
3762
+ DataView,
3763
+ 1,
3764
+ obj,
3765
+ key,
3766
+ arrayRoot
3767
+ );
3549
3768
  case "B":
3550
3769
  return (
3551
3770
  (obj = parseInt(value.slice(2), 16)),
3552
3771
  response._formData.get(response._prefix + obj)
3553
3772
  );
3554
- }
3555
- switch (value[1]) {
3556
3773
  case "R":
3557
3774
  return parseReadableStream(response, value, void 0);
3558
3775
  case "r":
@@ -3563,8 +3780,16 @@
3563
3780
  return parseAsyncIterable(response, value, !0);
3564
3781
  }
3565
3782
  value = value.slice(1);
3566
- return getOutlinedModel(response, value, obj, key, createModel);
3783
+ return getOutlinedModel(
3784
+ response,
3785
+ value,
3786
+ obj,
3787
+ key,
3788
+ arrayRoot,
3789
+ createModel
3790
+ );
3567
3791
  }
3792
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
3568
3793
  return value;
3569
3794
  }
3570
3795
  function createResponse(
@@ -3576,6 +3801,8 @@
3576
3801
  3 < arguments.length && void 0 !== arguments[3]
3577
3802
  ? arguments[3]
3578
3803
  : new FormData(),
3804
+ arraySizeLimit =
3805
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
3579
3806
  chunks = new Map();
3580
3807
  return {
3581
3808
  _bundlerConfig: bundlerConfig,
@@ -3584,19 +3811,32 @@
3584
3811
  _chunks: chunks,
3585
3812
  _closed: !1,
3586
3813
  _closedReason: null,
3587
- _temporaryReferences: temporaryReferences
3814
+ _temporaryReferences: temporaryReferences,
3815
+ _rootArrayContexts: new WeakMap(),
3816
+ _arraySizeLimit: arraySizeLimit
3588
3817
  };
3589
3818
  }
3590
3819
  function close(response) {
3591
3820
  reportGlobalError(response, Error("Connection closed."));
3592
3821
  }
3593
- function loadServerReference(bundlerConfig, id, bound) {
3822
+ function loadServerReference(bundlerConfig, metaData) {
3823
+ var id = metaData.id;
3824
+ if ("string" !== typeof id) return null;
3594
3825
  var serverReference = resolveServerReference(bundlerConfig, id);
3595
3826
  bundlerConfig = preloadModule(serverReference);
3596
- return bound
3597
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3827
+ metaData = metaData.bound;
3828
+ return metaData instanceof Promise
3829
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
3598
3830
  _ref = _ref[0];
3599
3831
  var fn = requireModule(serverReference);
3832
+ if (_ref.length > MAX_BOUND_ARGS)
3833
+ throw Error(
3834
+ "Server Function has too many bound arguments. Received " +
3835
+ _ref.length +
3836
+ " but the limit is " +
3837
+ MAX_BOUND_ARGS +
3838
+ "."
3839
+ );
3600
3840
  return fn.bind.apply(fn, [null].concat(_ref));
3601
3841
  })
3602
3842
  : bundlerConfig
@@ -3605,8 +3845,19 @@
3605
3845
  })
3606
3846
  : Promise.resolve(requireModule(serverReference));
3607
3847
  }
3608
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
3609
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3848
+ function decodeBoundActionMetaData(
3849
+ body,
3850
+ serverManifest,
3851
+ formFieldPrefix,
3852
+ arraySizeLimit
3853
+ ) {
3854
+ body = createResponse(
3855
+ serverManifest,
3856
+ formFieldPrefix,
3857
+ void 0,
3858
+ body,
3859
+ arraySizeLimit
3860
+ );
3610
3861
  close(body);
3611
3862
  body = getChunk(body, 0);
3612
3863
  body.then(function () {});
@@ -4052,13 +4303,14 @@
4052
4303
  patchConsole(console, "table"),
4053
4304
  patchConsole(console, "trace"),
4054
4305
  patchConsole(console, "warn"));
4055
- var ObjectPrototype = Object.prototype,
4306
+ var ObjectPrototype$1 = Object.prototype,
4056
4307
  stringify = JSON.stringify,
4057
4308
  PENDING$1 = 0,
4058
4309
  COMPLETED = 1,
4059
4310
  ABORTED = 3,
4060
4311
  ERRORED$1 = 4,
4061
4312
  RENDERING = 5,
4313
+ __PROTO__$1 = "__proto__",
4062
4314
  OPENING = 10,
4063
4315
  ABORTING = 12,
4064
4316
  CLOSING = 13,
@@ -4081,16 +4333,23 @@
4081
4333
  case "fulfilled":
4082
4334
  if ("function" === typeof resolve) {
4083
4335
  for (
4084
- var inspectedValue = this.value, cycleProtection = 0;
4336
+ var inspectedValue = this.value,
4337
+ cycleProtection = 0,
4338
+ visited = new Set();
4085
4339
  inspectedValue instanceof ReactPromise;
4086
4340
 
4087
4341
  ) {
4088
4342
  cycleProtection++;
4089
- if (inspectedValue === this || 1e3 < cycleProtection) {
4343
+ if (
4344
+ inspectedValue === this ||
4345
+ visited.has(inspectedValue) ||
4346
+ 1e3 < cycleProtection
4347
+ ) {
4090
4348
  "function" === typeof reject &&
4091
4349
  reject(Error("Cannot have cyclic thenables."));
4092
4350
  return;
4093
4351
  }
4352
+ visited.add(inspectedValue);
4094
4353
  if ("fulfilled" === inspectedValue.status)
4095
4354
  inspectedValue = inspectedValue.value;
4096
4355
  else break;
@@ -4111,7 +4370,15 @@
4111
4370
  "function" === typeof reject && reject(this.reason);
4112
4371
  }
4113
4372
  };
4114
- var initializingHandler = null;
4373
+ var ObjectPrototype = Object.prototype,
4374
+ ArrayPrototype = Array.prototype,
4375
+ initializingHandler = null;
4376
+ FlightIterator.prototype = {};
4377
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
4378
+ return this;
4379
+ };
4380
+ var MAX_BIGINT_DIGITS = 300,
4381
+ MAX_BOUND_ARGS = 1e3;
4115
4382
  exports.createClientModuleProxy = function (moduleId) {
4116
4383
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
4117
4384
  return new Proxy(moduleId, proxyHandlers$1);
@@ -4121,20 +4388,24 @@
4121
4388
  };
4122
4389
  exports.decodeAction = function (body, serverManifest) {
4123
4390
  var formData = new FormData(),
4124
- action = null;
4391
+ action = null,
4392
+ seenActions = new Set();
4125
4393
  body.forEach(function (value, key) {
4126
4394
  key.startsWith("$ACTION_")
4127
4395
  ? key.startsWith("$ACTION_REF_")
4128
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
4396
+ ? seenActions.has(key) ||
4397
+ (seenActions.add(key),
4398
+ (value = "$ACTION_" + key.slice(12) + ":"),
4129
4399
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
4130
- (action = loadServerReference(
4131
- serverManifest,
4132
- value.id,
4133
- value.bound
4134
- )))
4400
+ (action = loadServerReference(serverManifest, value)))
4135
4401
  : key.startsWith("$ACTION_ID_") &&
4136
- ((value = key.slice(11)),
4137
- (action = loadServerReference(serverManifest, value, null)))
4402
+ !seenActions.has(key) &&
4403
+ (seenActions.add(key),
4404
+ (value = key.slice(11)),
4405
+ (action = loadServerReference(serverManifest, {
4406
+ id: value,
4407
+ bound: null
4408
+ })))
4138
4409
  : formData.append(key, value);
4139
4410
  });
4140
4411
  return null === action
@@ -4170,7 +4441,8 @@
4170
4441
  turbopackMap,
4171
4442
  "",
4172
4443
  options ? options.temporaryReferences : void 0,
4173
- body
4444
+ body,
4445
+ options ? options.arraySizeLimit : void 0
4174
4446
  );
4175
4447
  turbopackMap = getChunk(body, 0);
4176
4448
  close(body);