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.
@@ -1732,6 +1732,13 @@
1732
1732
  value
1733
1733
  ) {
1734
1734
  task.model = value;
1735
+ parentPropertyName === __PROTO__$1 &&
1736
+ callWithDebugContextInDEV(request, task, function () {
1737
+ console.error(
1738
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
1739
+ describeObjectForErrorMessage(parent, parentPropertyName)
1740
+ );
1741
+ });
1735
1742
  if (value === REACT_ELEMENT_TYPE) return "$";
1736
1743
  if (null === value) return null;
1737
1744
  if ("object" === typeof value) {
@@ -1905,7 +1912,7 @@
1905
1912
  if (value instanceof Date) return "$D" + value.toJSON();
1906
1913
  elementReference = getPrototypeOf(value);
1907
1914
  if (
1908
- elementReference !== ObjectPrototype &&
1915
+ elementReference !== ObjectPrototype$1 &&
1909
1916
  (null === elementReference ||
1910
1917
  null !== getPrototypeOf(elementReference))
1911
1918
  )
@@ -2806,12 +2813,12 @@
2806
2813
  this.value = value;
2807
2814
  this.reason = reason;
2808
2815
  }
2809
- function wakeChunk(response, listeners, value) {
2816
+ function wakeChunk(response, listeners, value, chunk) {
2810
2817
  for (var i = 0; i < listeners.length; i++) {
2811
2818
  var listener = listeners[i];
2812
2819
  "function" === typeof listener
2813
2820
  ? listener(value)
2814
- : fulfillReference(response, listener, value);
2821
+ : fulfillReference(response, listener, value, chunk.reason);
2815
2822
  }
2816
2823
  }
2817
2824
  function rejectChunk(response, listeners, error) {
@@ -2822,27 +2829,6 @@
2822
2829
  : rejectReference(response, listener.handler, error);
2823
2830
  }
2824
2831
  }
2825
- function resolveBlockedCycle(resolvedChunk, reference) {
2826
- var referencedChunk = reference.handler.chunk;
2827
- if (null === referencedChunk) return null;
2828
- if (referencedChunk === resolvedChunk) return reference.handler;
2829
- reference = referencedChunk.value;
2830
- if (null !== reference)
2831
- for (
2832
- referencedChunk = 0;
2833
- referencedChunk < reference.length;
2834
- referencedChunk++
2835
- ) {
2836
- var listener = reference[referencedChunk];
2837
- if (
2838
- "function" !== typeof listener &&
2839
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2840
- null !== listener)
2841
- )
2842
- return listener;
2843
- }
2844
- return null;
2845
- }
2846
2832
  function triggerErrorOnChunk(response, chunk, error) {
2847
2833
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2848
2834
  chunk.reason.error(error);
@@ -2866,57 +2852,25 @@
2866
2852
  chunk.value = value;
2867
2853
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
2868
2854
  if (null !== resolveListeners)
2869
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2855
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2870
2856
  case "fulfilled":
2871
- wakeChunk(response, resolveListeners, chunk.value);
2857
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2872
2858
  break;
2873
2859
  case "blocked":
2874
- for (value = 0; value < resolveListeners.length; value++)
2875
- if (
2876
- ((id = resolveListeners[value]), "function" !== typeof id)
2877
- ) {
2878
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2879
- if (null !== cyclicHandler)
2880
- switch (
2881
- (fulfillReference(response, id, cyclicHandler.value),
2882
- resolveListeners.splice(value, 1),
2883
- value--,
2884
- null !== rejectListeners &&
2885
- ((id = rejectListeners.indexOf(id)),
2886
- -1 !== id && rejectListeners.splice(id, 1)),
2887
- chunk.status)
2888
- ) {
2889
- case "fulfilled":
2890
- wakeChunk(response, resolveListeners, chunk.value);
2891
- break a;
2892
- case "rejected":
2893
- null !== rejectListeners &&
2894
- rejectChunk(response, rejectListeners, chunk.reason);
2895
- break a;
2896
- }
2897
- }
2898
2860
  case "pending":
2899
2861
  if (chunk.value)
2900
- for (
2901
- response = 0;
2902
- response < resolveListeners.length;
2903
- response++
2904
- )
2905
- chunk.value.push(resolveListeners[response]);
2862
+ for (value = 0; value < resolveListeners.length; value++)
2863
+ chunk.value.push(resolveListeners[value]);
2906
2864
  else chunk.value = resolveListeners;
2907
2865
  if (chunk.reason) {
2908
2866
  if (rejectListeners)
2909
- for (
2910
- resolveListeners = 0;
2911
- resolveListeners < rejectListeners.length;
2912
- resolveListeners++
2913
- )
2914
- chunk.reason.push(rejectListeners[resolveListeners]);
2867
+ for (value = 0; value < rejectListeners.length; value++)
2868
+ chunk.reason.push(rejectListeners[value]);
2915
2869
  } else chunk.reason = rejectListeners;
2916
2870
  break;
2917
2871
  case "rejected":
2918
2872
  rejectListeners &&
2919
- wakeChunk(response, rejectListeners, chunk.reason);
2873
+ rejectChunk(response, rejectListeners, chunk.reason);
2920
2874
  }
2921
2875
  }
2922
2876
  }
@@ -2940,15 +2894,51 @@
2940
2894
  );
2941
2895
  }
2942
2896
  function loadServerReference$1(response, metaData, parentObject, key) {
2897
+ function reject(error) {
2898
+ var rejectListeners = blockedPromise.reason,
2899
+ erroredPromise = blockedPromise;
2900
+ erroredPromise.status = "rejected";
2901
+ erroredPromise.value = null;
2902
+ erroredPromise.reason = error;
2903
+ null !== rejectListeners &&
2904
+ rejectChunk(response, rejectListeners, error);
2905
+ rejectReference(response, handler, error);
2906
+ }
2943
2907
  var id = metaData.id;
2944
2908
  if ("string" !== typeof id || "then" === key) return null;
2909
+ var cachedPromise = metaData.$$promise;
2910
+ if (void 0 !== cachedPromise) {
2911
+ if ("fulfilled" === cachedPromise.status)
2912
+ return (
2913
+ (cachedPromise = cachedPromise.value),
2914
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2915
+ );
2916
+ initializingHandler
2917
+ ? ((id = initializingHandler), id.deps++)
2918
+ : (id = initializingHandler =
2919
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2920
+ cachedPromise.then(
2921
+ resolveReference.bind(null, response, id, parentObject, key),
2922
+ rejectReference.bind(null, response, id)
2923
+ );
2924
+ return null;
2925
+ }
2926
+ var blockedPromise = new ReactPromise("blocked", null, null);
2927
+ metaData.$$promise = blockedPromise;
2945
2928
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2946
- id = metaData.bound;
2947
- var promise = preloadModule(serverReference);
2948
- if (promise)
2949
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2950
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2951
- else return requireModule(serverReference);
2929
+ cachedPromise = metaData.bound;
2930
+ if ((id = preloadModule(serverReference)))
2931
+ cachedPromise instanceof ReactPromise &&
2932
+ (id = Promise.all([id, cachedPromise]));
2933
+ else if (cachedPromise instanceof ReactPromise)
2934
+ id = Promise.resolve(cachedPromise);
2935
+ else
2936
+ return (
2937
+ (cachedPromise = requireModule(serverReference)),
2938
+ (id = blockedPromise),
2939
+ (id.status = "fulfilled"),
2940
+ (id.value = cachedPromise)
2941
+ );
2952
2942
  if (initializingHandler) {
2953
2943
  var handler = initializingHandler;
2954
2944
  handler.deps++;
@@ -2960,93 +2950,107 @@
2960
2950
  deps: 1,
2961
2951
  errored: !1
2962
2952
  };
2963
- promise.then(
2964
- function () {
2965
- var resolvedValue = requireModule(serverReference);
2966
- if (metaData.bound) {
2967
- var promiseValue = metaData.bound.value;
2968
- promiseValue = Array.isArray(promiseValue)
2969
- ? promiseValue.slice(0)
2970
- : [];
2971
- promiseValue.unshift(null);
2972
- resolvedValue = resolvedValue.bind.apply(
2973
- resolvedValue,
2974
- promiseValue
2953
+ id.then(function () {
2954
+ var resolvedValue = requireModule(serverReference);
2955
+ if (metaData.bound) {
2956
+ var promiseValue = metaData.bound.value;
2957
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2958
+ if (promiseValue.length > MAX_BOUND_ARGS) {
2959
+ reject(
2960
+ Error(
2961
+ "Server Function has too many bound arguments. Received " +
2962
+ promiseValue.length +
2963
+ " but the limit is " +
2964
+ MAX_BOUND_ARGS +
2965
+ "."
2966
+ )
2975
2967
  );
2968
+ return;
2976
2969
  }
2977
- parentObject[key] = resolvedValue;
2978
- "" === key &&
2979
- null === handler.value &&
2980
- (handler.value = resolvedValue);
2981
- handler.deps--;
2982
- 0 === handler.deps &&
2983
- ((resolvedValue = handler.chunk),
2984
- null !== resolvedValue &&
2985
- "blocked" === resolvedValue.status &&
2986
- ((promiseValue = resolvedValue.value),
2987
- (resolvedValue.status = "fulfilled"),
2988
- (resolvedValue.value = handler.value),
2989
- (resolvedValue.reason = null),
2990
- null !== promiseValue &&
2991
- wakeChunk(response, promiseValue, handler.value)));
2992
- },
2993
- function (error) {
2994
- if (!handler.errored) {
2995
- handler.errored = !0;
2996
- handler.value = null;
2997
- handler.reason = error;
2998
- var chunk = handler.chunk;
2999
- null !== chunk &&
3000
- "blocked" === chunk.status &&
3001
- triggerErrorOnChunk(response, chunk, error);
3002
- }
2970
+ promiseValue.unshift(null);
2971
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
3003
2972
  }
3004
- );
2973
+ promiseValue = blockedPromise.value;
2974
+ var initializedPromise = blockedPromise;
2975
+ initializedPromise.status = "fulfilled";
2976
+ initializedPromise.value = resolvedValue;
2977
+ initializedPromise.reason = null;
2978
+ null !== promiseValue &&
2979
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2980
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2981
+ }, reject);
3005
2982
  return null;
3006
2983
  }
3007
- function reviveModel(response, parentObj, parentKey, value, reference) {
2984
+ function reviveModel(
2985
+ response,
2986
+ parentObj,
2987
+ parentKey,
2988
+ value,
2989
+ reference,
2990
+ arrayRoot
2991
+ ) {
3008
2992
  if ("string" === typeof value)
3009
2993
  return parseModelString(
3010
2994
  response,
3011
2995
  parentObj,
3012
2996
  parentKey,
3013
2997
  value,
3014
- reference
2998
+ reference,
2999
+ arrayRoot
3015
3000
  );
3016
3001
  if ("object" === typeof value && null !== value)
3017
3002
  if (
3018
3003
  (void 0 !== reference &&
3019
3004
  void 0 !== response._temporaryReferences &&
3020
3005
  response._temporaryReferences.set(value, reference),
3021
- Array.isArray(value))
3022
- )
3023
- for (var i = 0; i < value.length; i++)
3024
- value[i] = reviveModel(
3006
+ isArrayImpl(value))
3007
+ ) {
3008
+ if (null === arrayRoot) {
3009
+ var childContext = { count: 0, fork: !1 };
3010
+ response._rootArrayContexts.set(value, childContext);
3011
+ } else childContext = arrayRoot;
3012
+ 1 < value.length && (childContext.fork = !0);
3013
+ bumpArrayCount(childContext, value.length + 1, response);
3014
+ for (parentObj = 0; parentObj < value.length; parentObj++)
3015
+ value[parentObj] = reviveModel(
3025
3016
  response,
3026
3017
  value,
3027
- "" + i,
3028
- value[i],
3029
- void 0 !== reference ? reference + ":" + i : void 0
3018
+ "" + parentObj,
3019
+ value[parentObj],
3020
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
3021
+ childContext
3030
3022
  );
3031
- else
3032
- for (i in value)
3033
- hasOwnProperty.call(value, i) &&
3034
- ((parentObj =
3035
- void 0 !== reference && -1 === i.indexOf(":")
3036
- ? reference + ":" + i
3037
- : void 0),
3038
- (parentObj = reviveModel(
3039
- response,
3040
- value,
3041
- i,
3042
- value[i],
3043
- parentObj
3044
- )),
3045
- void 0 !== parentObj || "__proto__" === i
3046
- ? (value[i] = parentObj)
3047
- : delete value[i]);
3023
+ } else
3024
+ for (childContext in value)
3025
+ hasOwnProperty.call(value, childContext) &&
3026
+ ("__proto__" === childContext
3027
+ ? delete value[childContext]
3028
+ : ((parentObj =
3029
+ void 0 !== reference && -1 === childContext.indexOf(":")
3030
+ ? reference + ":" + childContext
3031
+ : void 0),
3032
+ (parentObj = reviveModel(
3033
+ response,
3034
+ value,
3035
+ childContext,
3036
+ value[childContext],
3037
+ parentObj,
3038
+ null
3039
+ )),
3040
+ void 0 !== parentObj
3041
+ ? (value[childContext] = parentObj)
3042
+ : delete value[childContext]));
3048
3043
  return value;
3049
3044
  }
3045
+ function bumpArrayCount(arrayContext, slots, response) {
3046
+ if (
3047
+ (arrayContext.count += slots) > response._arraySizeLimit &&
3048
+ arrayContext.fork
3049
+ )
3050
+ throw Error(
3051
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
3052
+ );
3053
+ }
3050
3054
  function initializeModelChunk(chunk) {
3051
3055
  var prevHandler = initializingHandler;
3052
3056
  initializingHandler = null;
@@ -3060,13 +3064,15 @@
3060
3064
  chunk.value = null;
3061
3065
  chunk.reason = null;
3062
3066
  try {
3063
- var rawModel = JSON.parse(resolvedModel),
3064
- value = reviveModel(
3067
+ var rawModel = JSON.parse(resolvedModel);
3068
+ resolvedModel = { count: 0, fork: !1 };
3069
+ var value = reviveModel(
3065
3070
  response,
3066
3071
  { "": rawModel },
3067
3072
  "",
3068
3073
  rawModel,
3069
- _chunk$reason
3074
+ _chunk$reason,
3075
+ resolvedModel
3070
3076
  ),
3071
3077
  resolveListeners = chunk.value;
3072
3078
  if (null !== resolveListeners)
@@ -3078,19 +3084,20 @@
3078
3084
  var listener = resolveListeners[rawModel];
3079
3085
  "function" === typeof listener
3080
3086
  ? listener(value)
3081
- : fulfillReference(response, listener, value);
3087
+ : fulfillReference(response, listener, value, resolvedModel);
3082
3088
  }
3083
3089
  if (null !== initializingHandler) {
3084
3090
  if (initializingHandler.errored) throw initializingHandler.reason;
3085
3091
  if (0 < initializingHandler.deps) {
3086
3092
  initializingHandler.value = value;
3093
+ initializingHandler.reason = resolvedModel;
3087
3094
  initializingHandler.chunk = chunk;
3088
3095
  return;
3089
3096
  }
3090
3097
  }
3091
3098
  chunk.status = "fulfilled";
3092
3099
  chunk.value = value;
3093
- chunk.reason = null;
3100
+ chunk.reason = resolvedModel;
3094
3101
  } catch (error) {
3095
3102
  (chunk.status = "rejected"), (chunk.reason = error);
3096
3103
  } finally {
@@ -3105,7 +3112,8 @@
3105
3112
  ? triggerErrorOnChunk(response, chunk, error)
3106
3113
  : "fulfilled" === chunk.status &&
3107
3114
  null !== chunk.reason &&
3108
- chunk.reason.error(error);
3115
+ ((chunk = chunk.reason),
3116
+ "function" === typeof chunk.error && chunk.error(error));
3109
3117
  });
3110
3118
  }
3111
3119
  function getChunk(response, id) {
@@ -3126,40 +3134,74 @@
3126
3134
  chunks.set(id, chunk));
3127
3135
  return chunk;
3128
3136
  }
3129
- function fulfillReference(response, reference, value) {
3137
+ function fulfillReference(response, reference, value, arrayRoot) {
3130
3138
  var handler = reference.handler,
3131
3139
  parentObject = reference.parentObject,
3132
3140
  key = reference.key,
3133
3141
  map = reference.map,
3134
3142
  path = reference.path;
3135
3143
  try {
3136
- for (var i = 1; i < path.length; i++) {
3144
+ for (
3145
+ var localLength = 0,
3146
+ rootArrayContexts = response._rootArrayContexts,
3147
+ i = 1;
3148
+ i < path.length;
3149
+ i++
3150
+ ) {
3137
3151
  var name = path[i];
3138
3152
  if (
3139
3153
  "object" !== typeof value ||
3140
- !hasOwnProperty.call(value, name) ||
3141
- value instanceof Promise
3154
+ null === value ||
3155
+ (getPrototypeOf(value) !== ObjectPrototype &&
3156
+ getPrototypeOf(value) !== ArrayPrototype) ||
3157
+ !hasOwnProperty.call(value, name)
3142
3158
  )
3143
3159
  throw Error("Invalid reference.");
3144
3160
  value = value[name];
3161
+ if (isArrayImpl(value))
3162
+ (localLength = 0),
3163
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
3164
+ else if (((arrayRoot = null), "string" === typeof value))
3165
+ localLength = value.length;
3166
+ else if ("bigint" === typeof value) {
3167
+ var n = Math.abs(Number(value));
3168
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
3169
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
3145
3170
  }
3146
- var mappedValue = map(response, value, parentObject, key);
3147
- parentObject[key] = mappedValue;
3148
- "" === key && null === handler.value && (handler.value = mappedValue);
3171
+ var resolvedValue = map(response, value, parentObject, key);
3172
+ var referenceArrayRoot = reference.arrayRoot;
3173
+ null !== referenceArrayRoot &&
3174
+ (null !== arrayRoot
3175
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
3176
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
3177
+ : 0 < localLength &&
3178
+ bumpArrayCount(referenceArrayRoot, localLength, response));
3149
3179
  } catch (error) {
3150
- rejectReference(response, reference.handler, error);
3180
+ rejectReference(response, handler, error);
3151
3181
  return;
3152
3182
  }
3183
+ resolveReference(response, handler, parentObject, key, resolvedValue);
3184
+ }
3185
+ function resolveReference(
3186
+ response,
3187
+ handler,
3188
+ parentObject,
3189
+ key,
3190
+ resolvedValue
3191
+ ) {
3192
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
3193
+ "" === key && null === handler.value && (handler.value = resolvedValue);
3153
3194
  handler.deps--;
3154
3195
  0 === handler.deps &&
3155
- ((reference = handler.chunk),
3156
- null !== reference &&
3157
- "blocked" === reference.status &&
3158
- ((value = reference.value),
3159
- (reference.status = "fulfilled"),
3160
- (reference.value = handler.value),
3161
- (reference.reason = handler.reason),
3162
- null !== value && wakeChunk(response, value, handler.value)));
3196
+ ((parentObject = handler.chunk),
3197
+ null !== parentObject &&
3198
+ "blocked" === parentObject.status &&
3199
+ ((key = parentObject.value),
3200
+ (parentObject.status = "fulfilled"),
3201
+ (parentObject.value = handler.value),
3202
+ (parentObject.reason = handler.reason),
3203
+ null !== key &&
3204
+ wakeChunk(response, key, handler.value, parentObject)));
3163
3205
  }
3164
3206
  function rejectReference(response, handler, error) {
3165
3207
  handler.errored ||
@@ -3171,29 +3213,66 @@
3171
3213
  "blocked" === handler.status &&
3172
3214
  triggerErrorOnChunk(response, handler, error));
3173
3215
  }
3174
- function getOutlinedModel(response, reference, parentObject, key, map) {
3216
+ function getOutlinedModel(
3217
+ response,
3218
+ reference,
3219
+ parentObject,
3220
+ key,
3221
+ referenceArrayRoot,
3222
+ map
3223
+ ) {
3175
3224
  reference = reference.split(":");
3176
- var id = parseInt(reference[0], 16);
3177
- id = getChunk(response, id);
3178
- switch (id.status) {
3225
+ var id = parseInt(reference[0], 16),
3226
+ chunk = getChunk(response, id);
3227
+ switch (chunk.status) {
3179
3228
  case "resolved_model":
3180
- initializeModelChunk(id);
3229
+ initializeModelChunk(chunk);
3181
3230
  }
3182
- switch (id.status) {
3231
+ switch (chunk.status) {
3183
3232
  case "fulfilled":
3184
- id = id.value;
3185
- for (var i = 1; i < reference.length; i++) {
3186
- var name = reference[i];
3233
+ id = chunk.value;
3234
+ chunk = chunk.reason;
3235
+ for (
3236
+ var localLength = 0,
3237
+ rootArrayContexts = response._rootArrayContexts,
3238
+ i = 1;
3239
+ i < reference.length;
3240
+ i++
3241
+ ) {
3242
+ localLength = reference[i];
3187
3243
  if (
3188
3244
  "object" !== typeof id ||
3189
- !hasOwnProperty.call(id, name) ||
3190
- id instanceof Promise
3245
+ null === id ||
3246
+ (getPrototypeOf(id) !== ObjectPrototype &&
3247
+ getPrototypeOf(id) !== ArrayPrototype) ||
3248
+ !hasOwnProperty.call(id, localLength)
3191
3249
  )
3192
3250
  throw Error("Invalid reference.");
3193
- id = id[name];
3251
+ id = id[localLength];
3252
+ isArrayImpl(id)
3253
+ ? ((localLength = 0),
3254
+ (chunk = rootArrayContexts.get(id) || chunk))
3255
+ : ((chunk = null),
3256
+ "string" === typeof id
3257
+ ? (localLength = id.length)
3258
+ : "bigint" === typeof id
3259
+ ? ((localLength = Math.abs(Number(id))),
3260
+ (localLength =
3261
+ 0 === localLength
3262
+ ? 1
3263
+ : Math.floor(Math.log10(localLength)) + 1))
3264
+ : (localLength = ArrayBuffer.isView(id)
3265
+ ? id.byteLength
3266
+ : 0));
3194
3267
  }
3195
- return map(response, id, parentObject, key);
3196
- case "pending":
3268
+ parentObject = map(response, id, parentObject, key);
3269
+ null !== referenceArrayRoot &&
3270
+ (null !== chunk
3271
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
3272
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
3273
+ : 0 < localLength &&
3274
+ bumpArrayCount(referenceArrayRoot, localLength, response));
3275
+ return parentObject;
3197
3276
  case "blocked":
3198
3277
  return (
3199
3278
  initializingHandler
@@ -3206,31 +3285,34 @@
3206
3285
  deps: 1,
3207
3286
  errored: !1
3208
3287
  }),
3209
- (parentObject = {
3288
+ (referenceArrayRoot = {
3210
3289
  handler: response,
3211
3290
  parentObject: parentObject,
3212
3291
  key: key,
3213
3292
  map: map,
3214
- path: reference
3293
+ path: reference,
3294
+ arrayRoot: referenceArrayRoot
3215
3295
  }),
3216
- null === id.value
3217
- ? (id.value = [parentObject])
3218
- : id.value.push(parentObject),
3219
- null === id.reason
3220
- ? (id.reason = [parentObject])
3221
- : id.reason.push(parentObject),
3296
+ null === chunk.value
3297
+ ? (chunk.value = [referenceArrayRoot])
3298
+ : chunk.value.push(referenceArrayRoot),
3299
+ null === chunk.reason
3300
+ ? (chunk.reason = [referenceArrayRoot])
3301
+ : chunk.reason.push(referenceArrayRoot),
3222
3302
  null
3223
3303
  );
3304
+ case "pending":
3305
+ throw Error("Invalid forward reference.");
3224
3306
  default:
3225
3307
  return (
3226
3308
  initializingHandler
3227
3309
  ? ((initializingHandler.errored = !0),
3228
3310
  (initializingHandler.value = null),
3229
- (initializingHandler.reason = id.reason))
3311
+ (initializingHandler.reason = chunk.reason))
3230
3312
  : (initializingHandler = {
3231
3313
  chunk: null,
3232
3314
  value: null,
3233
- reason: id.reason,
3315
+ reason: chunk.reason,
3234
3316
  deps: 0,
3235
3317
  errored: !0
3236
3318
  }),
@@ -3239,12 +3321,21 @@
3239
3321
  }
3240
3322
  }
3241
3323
  function createMap(response, model) {
3324
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
3325
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
3326
+ model.$$consumed = !0;
3242
3327
  return new Map(model);
3243
3328
  }
3244
3329
  function createSet(response, model) {
3330
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
3331
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
3332
+ model.$$consumed = !0;
3245
3333
  return new Set(model);
3246
3334
  }
3247
3335
  function extractIterator(response, model) {
3336
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
3337
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
3338
+ model.$$consumed = !0;
3248
3339
  return model[Symbol.iterator]();
3249
3340
  }
3250
3341
  function createModel(response, model, parentObject, key) {
@@ -3256,13 +3347,34 @@
3256
3347
  constructor,
3257
3348
  bytesPerElement,
3258
3349
  parentObject,
3259
- parentKey
3350
+ parentKey,
3351
+ referenceArrayRoot
3260
3352
  ) {
3353
+ function reject(error) {
3354
+ if (!handler.errored) {
3355
+ handler.errored = !0;
3356
+ handler.value = null;
3357
+ handler.reason = error;
3358
+ var chunk = handler.chunk;
3359
+ null !== chunk &&
3360
+ "blocked" === chunk.status &&
3361
+ triggerErrorOnChunk(response, chunk, error);
3362
+ }
3363
+ }
3261
3364
  reference = parseInt(reference.slice(2), 16);
3262
- bytesPerElement = response._prefix + reference;
3263
- if (response._chunks.has(reference))
3365
+ var key = response._prefix + reference;
3366
+ bytesPerElement = response._chunks;
3367
+ if (bytesPerElement.has(reference))
3264
3368
  throw Error("Already initialized typed array.");
3265
- reference = response._formData.get(bytesPerElement).arrayBuffer();
3369
+ bytesPerElement.set(
3370
+ reference,
3371
+ new ReactPromise(
3372
+ "rejected",
3373
+ null,
3374
+ Error("Already initialized typed array.")
3375
+ )
3376
+ );
3377
+ reference = response._formData.get(key).arrayBuffer();
3266
3378
  if (initializingHandler) {
3267
3379
  var handler = initializingHandler;
3268
3380
  handler.deps++;
@@ -3274,40 +3386,32 @@
3274
3386
  deps: 1,
3275
3387
  errored: !1
3276
3388
  };
3277
- reference.then(
3278
- function (buffer) {
3279
- buffer =
3389
+ reference.then(function (buffer) {
3390
+ try {
3391
+ null !== referenceArrayRoot &&
3392
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
3393
+ var resolvedValue =
3280
3394
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
3281
- parentObject[parentKey] = buffer;
3395
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
3282
3396
  "" === parentKey &&
3283
3397
  null === handler.value &&
3284
- (handler.value = buffer);
3285
- handler.deps--;
3286
- if (
3287
- 0 === handler.deps &&
3288
- ((buffer = handler.chunk),
3289
- null !== buffer && "blocked" === buffer.status)
3290
- ) {
3291
- var resolveListeners = buffer.value;
3292
- buffer.status = "fulfilled";
3293
- buffer.value = handler.value;
3294
- buffer.reason = null;
3295
- null !== resolveListeners &&
3296
- wakeChunk(response, resolveListeners, handler.value);
3297
- }
3298
- },
3299
- function (error) {
3300
- if (!handler.errored) {
3301
- handler.errored = !0;
3302
- handler.value = null;
3303
- handler.reason = error;
3304
- var chunk = handler.chunk;
3305
- null !== chunk &&
3306
- "blocked" === chunk.status &&
3307
- triggerErrorOnChunk(response, chunk, error);
3308
- }
3398
+ (handler.value = resolvedValue);
3399
+ } catch (x) {
3400
+ reject(x);
3401
+ return;
3309
3402
  }
3310
- );
3403
+ handler.deps--;
3404
+ 0 === handler.deps &&
3405
+ ((buffer = handler.chunk),
3406
+ null !== buffer &&
3407
+ "blocked" === buffer.status &&
3408
+ ((resolvedValue = buffer.value),
3409
+ (buffer.status = "fulfilled"),
3410
+ (buffer.value = handler.value),
3411
+ (buffer.reason = null),
3412
+ null !== resolvedValue &&
3413
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
3414
+ }, reject);
3311
3415
  return null;
3312
3416
  }
3313
3417
  function resolveStream(response, id, stream, controller) {
@@ -3325,90 +3429,78 @@
3325
3429
  : controller.enqueueModel(chunks));
3326
3430
  }
3327
3431
  function parseReadableStream(response, reference, type) {
3432
+ function enqueue(value) {
3433
+ "bytes" !== type || ArrayBuffer.isView(value)
3434
+ ? controller.enqueue(value)
3435
+ : flightController.error(Error("Invalid data for bytes stream."));
3436
+ }
3328
3437
  reference = parseInt(reference.slice(2), 16);
3329
3438
  if (response._chunks.has(reference))
3330
3439
  throw Error("Already initialized stream.");
3331
3440
  var controller = null,
3332
- closed = !1;
3333
- type = new ReadableStream({
3334
- type: type,
3335
- start: function (c) {
3336
- controller = c;
3337
- }
3338
- });
3339
- var previousBlockedChunk = null;
3340
- resolveStream(response, reference, type, {
3341
- enqueueModel: function (json) {
3342
- if (null === previousBlockedChunk) {
3343
- var chunk = new ReactPromise(
3344
- "resolved_model",
3345
- json,
3346
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3347
- );
3348
- initializeModelChunk(chunk);
3349
- "fulfilled" === chunk.status
3350
- ? controller.enqueue(chunk.value)
3351
- : (chunk.then(
3352
- function (v) {
3353
- return controller.enqueue(v);
3354
- },
3355
- function (e) {
3356
- return controller.error(e);
3357
- }
3358
- ),
3359
- (previousBlockedChunk = chunk));
3360
- } else {
3361
- chunk = previousBlockedChunk;
3362
- var _chunk = new ReactPromise("pending", null, null);
3363
- _chunk.then(
3364
- function (v) {
3365
- return controller.enqueue(v);
3366
- },
3367
- function (e) {
3368
- return controller.error(e);
3369
- }
3370
- );
3371
- previousBlockedChunk = _chunk;
3372
- chunk.then(function () {
3373
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
3374
- resolveModelChunk(response, _chunk, json, -1);
3375
- });
3441
+ closed = !1,
3442
+ stream = new ReadableStream({
3443
+ type: type,
3444
+ start: function (c) {
3445
+ controller = c;
3376
3446
  }
3377
- },
3378
- close: function () {
3379
- if (!closed)
3380
- if (((closed = !0), null === previousBlockedChunk))
3381
- controller.close();
3382
- else {
3383
- var blockedChunk = previousBlockedChunk;
3384
- previousBlockedChunk = null;
3385
- blockedChunk.then(function () {
3386
- return controller.close();
3387
- });
3388
- }
3389
- },
3390
- error: function (error) {
3391
- if (!closed)
3392
- if (((closed = !0), null === previousBlockedChunk))
3393
- controller.error(error);
3394
- else {
3395
- var blockedChunk = previousBlockedChunk;
3396
- previousBlockedChunk = null;
3397
- blockedChunk.then(function () {
3398
- return controller.error(error);
3447
+ }),
3448
+ previousBlockedChunk = null,
3449
+ flightController = {
3450
+ enqueueModel: function (json) {
3451
+ if (null === previousBlockedChunk) {
3452
+ var chunk = new ReactPromise(
3453
+ "resolved_model",
3454
+ json,
3455
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3456
+ );
3457
+ initializeModelChunk(chunk);
3458
+ "fulfilled" === chunk.status
3459
+ ? enqueue(chunk.value)
3460
+ : (chunk.then(enqueue, flightController.error),
3461
+ (previousBlockedChunk = chunk));
3462
+ } else {
3463
+ chunk = previousBlockedChunk;
3464
+ var _chunk = new ReactPromise("pending", null, null);
3465
+ _chunk.then(enqueue, flightController.error);
3466
+ previousBlockedChunk = _chunk;
3467
+ chunk.then(function () {
3468
+ previousBlockedChunk === _chunk &&
3469
+ (previousBlockedChunk = null);
3470
+ resolveModelChunk(response, _chunk, json, -1);
3399
3471
  });
3400
3472
  }
3401
- }
3402
- });
3403
- return type;
3404
- }
3405
- function asyncIterator() {
3406
- return this;
3473
+ },
3474
+ close: function () {
3475
+ if (!closed)
3476
+ if (((closed = !0), null === previousBlockedChunk))
3477
+ controller.close();
3478
+ else {
3479
+ var blockedChunk = previousBlockedChunk;
3480
+ previousBlockedChunk = null;
3481
+ blockedChunk.then(function () {
3482
+ return controller.close();
3483
+ });
3484
+ }
3485
+ },
3486
+ error: function (error) {
3487
+ if (!closed)
3488
+ if (((closed = !0), null === previousBlockedChunk))
3489
+ controller.error(error);
3490
+ else {
3491
+ var blockedChunk = previousBlockedChunk;
3492
+ previousBlockedChunk = null;
3493
+ blockedChunk.then(function () {
3494
+ return controller.error(error);
3495
+ });
3496
+ }
3497
+ }
3498
+ };
3499
+ resolveStream(response, reference, stream, flightController);
3500
+ return stream;
3407
3501
  }
3408
- function createIterator(next) {
3409
- next = { next: next };
3410
- next[ASYNC_ITERATOR] = asyncIterator;
3411
- return next;
3502
+ function FlightIterator(next) {
3503
+ this.next = next;
3412
3504
  }
3413
3505
  function parseAsyncIterable(response, reference, iterator) {
3414
3506
  reference = parseInt(reference.slice(2), 16);
@@ -3419,7 +3511,7 @@
3419
3511
  nextWriteIndex = 0,
3420
3512
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
3421
3513
  var nextReadIndex = 0;
3422
- return createIterator(function (arg) {
3514
+ return new FlightIterator(function (arg) {
3423
3515
  if (void 0 !== arg)
3424
3516
  throw Error(
3425
3517
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -3498,19 +3590,30 @@
3498
3590
  });
3499
3591
  return iterator;
3500
3592
  }
3501
- function parseModelString(response, obj, key, value, reference) {
3593
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
3502
3594
  if ("$" === value[0]) {
3503
3595
  switch (value[1]) {
3504
3596
  case "$":
3505
- return value.slice(1);
3597
+ return (
3598
+ null !== arrayRoot &&
3599
+ bumpArrayCount(arrayRoot, value.length - 1, response),
3600
+ value.slice(1)
3601
+ );
3506
3602
  case "@":
3507
3603
  return (
3508
3604
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
3509
3605
  );
3510
3606
  case "h":
3511
3607
  return (
3512
- (value = value.slice(2)),
3513
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
3608
+ (arrayRoot = value.slice(2)),
3609
+ getOutlinedModel(
3610
+ response,
3611
+ arrayRoot,
3612
+ obj,
3613
+ key,
3614
+ null,
3615
+ loadServerReference$1
3616
+ )
3514
3617
  );
3515
3618
  case "T":
3516
3619
  if (
@@ -3526,27 +3629,44 @@
3526
3629
  );
3527
3630
  case "Q":
3528
3631
  return (
3529
- (value = value.slice(2)),
3530
- getOutlinedModel(response, value, obj, key, createMap)
3632
+ (arrayRoot = value.slice(2)),
3633
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
3531
3634
  );
3532
3635
  case "W":
3533
3636
  return (
3534
- (value = value.slice(2)),
3535
- getOutlinedModel(response, value, obj, key, createSet)
3637
+ (arrayRoot = value.slice(2)),
3638
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
3536
3639
  );
3537
3640
  case "K":
3538
3641
  obj = value.slice(2);
3539
- var formPrefix = response._prefix + obj + "_",
3540
- data = new FormData();
3541
- response._formData.forEach(function (entry, entryKey) {
3542
- entryKey.startsWith(formPrefix) &&
3543
- data.append(entryKey.slice(formPrefix.length), entry);
3544
- });
3545
- return data;
3642
+ obj = response._prefix + obj + "_";
3643
+ key = new FormData();
3644
+ response = response._formData;
3645
+ arrayRoot = Array.from(response.keys());
3646
+ for (value = 0; value < arrayRoot.length; value++)
3647
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
3648
+ for (
3649
+ var entries = response.getAll(reference),
3650
+ newKey = reference.slice(obj.length),
3651
+ j = 0;
3652
+ j < entries.length;
3653
+ j++
3654
+ )
3655
+ key.append(newKey, entries[j]);
3656
+ response.delete(reference);
3657
+ }
3658
+ return key;
3546
3659
  case "i":
3547
3660
  return (
3548
- (value = value.slice(2)),
3549
- getOutlinedModel(response, value, obj, key, extractIterator)
3661
+ (arrayRoot = value.slice(2)),
3662
+ getOutlinedModel(
3663
+ response,
3664
+ arrayRoot,
3665
+ obj,
3666
+ key,
3667
+ null,
3668
+ extractIterator
3669
+ )
3550
3670
  );
3551
3671
  case "I":
3552
3672
  return Infinity;
@@ -3559,15 +3679,48 @@
3559
3679
  case "D":
3560
3680
  return new Date(Date.parse(value.slice(2)));
3561
3681
  case "n":
3562
- return BigInt(value.slice(2));
3563
- }
3564
- switch (value[1]) {
3682
+ obj = value.slice(2);
3683
+ if (obj.length > MAX_BIGINT_DIGITS)
3684
+ throw Error(
3685
+ "BigInt is too large. Received " +
3686
+ obj.length +
3687
+ " digits but the limit is " +
3688
+ MAX_BIGINT_DIGITS +
3689
+ "."
3690
+ );
3691
+ null !== arrayRoot &&
3692
+ bumpArrayCount(arrayRoot, obj.length, response);
3693
+ return BigInt(obj);
3565
3694
  case "A":
3566
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
3695
+ return parseTypedArray(
3696
+ response,
3697
+ value,
3698
+ ArrayBuffer,
3699
+ 1,
3700
+ obj,
3701
+ key,
3702
+ arrayRoot
3703
+ );
3567
3704
  case "O":
3568
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
3705
+ return parseTypedArray(
3706
+ response,
3707
+ value,
3708
+ Int8Array,
3709
+ 1,
3710
+ obj,
3711
+ key,
3712
+ arrayRoot
3713
+ );
3569
3714
  case "o":
3570
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
3715
+ return parseTypedArray(
3716
+ response,
3717
+ value,
3718
+ Uint8Array,
3719
+ 1,
3720
+ obj,
3721
+ key,
3722
+ arrayRoot
3723
+ );
3571
3724
  case "U":
3572
3725
  return parseTypedArray(
3573
3726
  response,
@@ -3575,22 +3728,79 @@
3575
3728
  Uint8ClampedArray,
3576
3729
  1,
3577
3730
  obj,
3578
- key
3731
+ key,
3732
+ arrayRoot
3579
3733
  );
3580
3734
  case "S":
3581
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
3735
+ return parseTypedArray(
3736
+ response,
3737
+ value,
3738
+ Int16Array,
3739
+ 2,
3740
+ obj,
3741
+ key,
3742
+ arrayRoot
3743
+ );
3582
3744
  case "s":
3583
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3745
+ return parseTypedArray(
3746
+ response,
3747
+ value,
3748
+ Uint16Array,
3749
+ 2,
3750
+ obj,
3751
+ key,
3752
+ arrayRoot
3753
+ );
3584
3754
  case "L":
3585
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3755
+ return parseTypedArray(
3756
+ response,
3757
+ value,
3758
+ Int32Array,
3759
+ 4,
3760
+ obj,
3761
+ key,
3762
+ arrayRoot
3763
+ );
3586
3764
  case "l":
3587
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3765
+ return parseTypedArray(
3766
+ response,
3767
+ value,
3768
+ Uint32Array,
3769
+ 4,
3770
+ obj,
3771
+ key,
3772
+ arrayRoot
3773
+ );
3588
3774
  case "G":
3589
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3775
+ return parseTypedArray(
3776
+ response,
3777
+ value,
3778
+ Float32Array,
3779
+ 4,
3780
+ obj,
3781
+ key,
3782
+ arrayRoot
3783
+ );
3590
3784
  case "g":
3591
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3785
+ return parseTypedArray(
3786
+ response,
3787
+ value,
3788
+ Float64Array,
3789
+ 8,
3790
+ obj,
3791
+ key,
3792
+ arrayRoot
3793
+ );
3592
3794
  case "M":
3593
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3795
+ return parseTypedArray(
3796
+ response,
3797
+ value,
3798
+ BigInt64Array,
3799
+ 8,
3800
+ obj,
3801
+ key,
3802
+ arrayRoot
3803
+ );
3594
3804
  case "m":
3595
3805
  return parseTypedArray(
3596
3806
  response,
@@ -3598,17 +3808,24 @@
3598
3808
  BigUint64Array,
3599
3809
  8,
3600
3810
  obj,
3601
- key
3811
+ key,
3812
+ arrayRoot
3602
3813
  );
3603
3814
  case "V":
3604
- return parseTypedArray(response, value, DataView, 1, obj, key);
3815
+ return parseTypedArray(
3816
+ response,
3817
+ value,
3818
+ DataView,
3819
+ 1,
3820
+ obj,
3821
+ key,
3822
+ arrayRoot
3823
+ );
3605
3824
  case "B":
3606
3825
  return (
3607
3826
  (obj = parseInt(value.slice(2), 16)),
3608
3827
  response._formData.get(response._prefix + obj)
3609
3828
  );
3610
- }
3611
- switch (value[1]) {
3612
3829
  case "R":
3613
3830
  return parseReadableStream(response, value, void 0);
3614
3831
  case "r":
@@ -3619,8 +3836,16 @@
3619
3836
  return parseAsyncIterable(response, value, !0);
3620
3837
  }
3621
3838
  value = value.slice(1);
3622
- return getOutlinedModel(response, value, obj, key, createModel);
3839
+ return getOutlinedModel(
3840
+ response,
3841
+ value,
3842
+ obj,
3843
+ key,
3844
+ arrayRoot,
3845
+ createModel
3846
+ );
3623
3847
  }
3848
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
3624
3849
  return value;
3625
3850
  }
3626
3851
  function createResponse(
@@ -3632,6 +3857,8 @@
3632
3857
  3 < arguments.length && void 0 !== arguments[3]
3633
3858
  ? arguments[3]
3634
3859
  : new FormData(),
3860
+ arraySizeLimit =
3861
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
3635
3862
  chunks = new Map();
3636
3863
  return {
3637
3864
  _bundlerConfig: bundlerConfig,
@@ -3640,7 +3867,9 @@
3640
3867
  _chunks: chunks,
3641
3868
  _closed: !1,
3642
3869
  _closedReason: null,
3643
- _temporaryReferences: temporaryReferences
3870
+ _temporaryReferences: temporaryReferences,
3871
+ _rootArrayContexts: new WeakMap(),
3872
+ _arraySizeLimit: arraySizeLimit
3644
3873
  };
3645
3874
  }
3646
3875
  function resolveField(response, key, value) {
@@ -3656,13 +3885,24 @@
3656
3885
  function close(response) {
3657
3886
  reportGlobalError(response, Error("Connection closed."));
3658
3887
  }
3659
- function loadServerReference(bundlerConfig, id, bound) {
3888
+ function loadServerReference(bundlerConfig, metaData) {
3889
+ var id = metaData.id;
3890
+ if ("string" !== typeof id) return null;
3660
3891
  var serverReference = resolveServerReference(bundlerConfig, id);
3661
3892
  bundlerConfig = preloadModule(serverReference);
3662
- return bound
3663
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3893
+ metaData = metaData.bound;
3894
+ return metaData instanceof Promise
3895
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
3664
3896
  _ref = _ref[0];
3665
3897
  var fn = requireModule(serverReference);
3898
+ if (_ref.length > MAX_BOUND_ARGS)
3899
+ throw Error(
3900
+ "Server Function has too many bound arguments. Received " +
3901
+ _ref.length +
3902
+ " but the limit is " +
3903
+ MAX_BOUND_ARGS +
3904
+ "."
3905
+ );
3666
3906
  return fn.bind.apply(fn, [null].concat(_ref));
3667
3907
  })
3668
3908
  : bundlerConfig
@@ -3671,8 +3911,19 @@
3671
3911
  })
3672
3912
  : Promise.resolve(requireModule(serverReference));
3673
3913
  }
3674
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
3675
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3914
+ function decodeBoundActionMetaData(
3915
+ body,
3916
+ serverManifest,
3917
+ formFieldPrefix,
3918
+ arraySizeLimit
3919
+ ) {
3920
+ body = createResponse(
3921
+ serverManifest,
3922
+ formFieldPrefix,
3923
+ void 0,
3924
+ body,
3925
+ arraySizeLimit
3926
+ );
3676
3927
  close(body);
3677
3928
  body = getChunk(body, 0);
3678
3929
  body.then(function () {});
@@ -4133,13 +4384,14 @@
4133
4384
  patchConsole(console, "table"),
4134
4385
  patchConsole(console, "trace"),
4135
4386
  patchConsole(console, "warn"));
4136
- var ObjectPrototype = Object.prototype,
4387
+ var ObjectPrototype$1 = Object.prototype,
4137
4388
  stringify = JSON.stringify,
4138
4389
  PENDING$1 = 0,
4139
4390
  COMPLETED = 1,
4140
4391
  ABORTED = 3,
4141
4392
  ERRORED$1 = 4,
4142
4393
  RENDERING = 5,
4394
+ __PROTO__$1 = "__proto__",
4143
4395
  OPENING = 10,
4144
4396
  ABORTING = 12,
4145
4397
  CLOSING = 13,
@@ -4162,16 +4414,23 @@
4162
4414
  case "fulfilled":
4163
4415
  if ("function" === typeof resolve) {
4164
4416
  for (
4165
- var inspectedValue = this.value, cycleProtection = 0;
4417
+ var inspectedValue = this.value,
4418
+ cycleProtection = 0,
4419
+ visited = new Set();
4166
4420
  inspectedValue instanceof ReactPromise;
4167
4421
 
4168
4422
  ) {
4169
4423
  cycleProtection++;
4170
- if (inspectedValue === this || 1e3 < cycleProtection) {
4424
+ if (
4425
+ inspectedValue === this ||
4426
+ visited.has(inspectedValue) ||
4427
+ 1e3 < cycleProtection
4428
+ ) {
4171
4429
  "function" === typeof reject &&
4172
4430
  reject(Error("Cannot have cyclic thenables."));
4173
4431
  return;
4174
4432
  }
4433
+ visited.add(inspectedValue);
4175
4434
  if ("fulfilled" === inspectedValue.status)
4176
4435
  inspectedValue = inspectedValue.value;
4177
4436
  else break;
@@ -4192,7 +4451,15 @@
4192
4451
  "function" === typeof reject && reject(this.reason);
4193
4452
  }
4194
4453
  };
4195
- var initializingHandler = null;
4454
+ var ObjectPrototype = Object.prototype,
4455
+ ArrayPrototype = Array.prototype,
4456
+ initializingHandler = null;
4457
+ FlightIterator.prototype = {};
4458
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
4459
+ return this;
4460
+ };
4461
+ var MAX_BIGINT_DIGITS = 300,
4462
+ MAX_BOUND_ARGS = 1e3;
4196
4463
  exports.createClientModuleProxy = function (moduleId) {
4197
4464
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
4198
4465
  return new Proxy(moduleId, proxyHandlers$1);
@@ -4202,20 +4469,24 @@
4202
4469
  };
4203
4470
  exports.decodeAction = function (body, serverManifest) {
4204
4471
  var formData = new FormData(),
4205
- action = null;
4472
+ action = null,
4473
+ seenActions = new Set();
4206
4474
  body.forEach(function (value, key) {
4207
4475
  key.startsWith("$ACTION_")
4208
4476
  ? key.startsWith("$ACTION_REF_")
4209
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
4477
+ ? seenActions.has(key) ||
4478
+ (seenActions.add(key),
4479
+ (value = "$ACTION_" + key.slice(12) + ":"),
4210
4480
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
4211
- (action = loadServerReference(
4212
- serverManifest,
4213
- value.id,
4214
- value.bound
4215
- )))
4481
+ (action = loadServerReference(serverManifest, value)))
4216
4482
  : key.startsWith("$ACTION_ID_") &&
4217
- ((value = key.slice(11)),
4218
- (action = loadServerReference(serverManifest, value, null)))
4483
+ !seenActions.has(key) &&
4484
+ (seenActions.add(key),
4485
+ (value = key.slice(11)),
4486
+ (action = loadServerReference(serverManifest, {
4487
+ id: value,
4488
+ bound: null
4489
+ })))
4219
4490
  : formData.append(key, value);
4220
4491
  });
4221
4492
  return null === action
@@ -4251,7 +4522,8 @@
4251
4522
  turbopackMap,
4252
4523
  "",
4253
4524
  options ? options.temporaryReferences : void 0,
4254
- body
4525
+ body,
4526
+ options ? options.arraySizeLimit : void 0
4255
4527
  );
4256
4528
  turbopackMap = getChunk(body, 0);
4257
4529
  close(body);
@@ -4265,7 +4537,9 @@
4265
4537
  var response = createResponse(
4266
4538
  turbopackMap,
4267
4539
  "",
4268
- options ? options.temporaryReferences : void 0
4540
+ options ? options.temporaryReferences : void 0,
4541
+ void 0,
4542
+ options ? options.arraySizeLimit : void 0
4269
4543
  ),
4270
4544
  pendingFiles = 0,
4271
4545
  queuedFields = [];
@@ -4289,13 +4563,13 @@
4289
4563
  );
4290
4564
  else {
4291
4565
  pendingFiles++;
4292
- var JSCompiler_object_inline_chunks_166 = [];
4566
+ var JSCompiler_object_inline_chunks_161 = [];
4293
4567
  value.on("data", function (chunk) {
4294
- JSCompiler_object_inline_chunks_166.push(chunk);
4568
+ JSCompiler_object_inline_chunks_161.push(chunk);
4295
4569
  });
4296
4570
  value.on("end", function () {
4297
4571
  try {
4298
- var blob = new Blob(JSCompiler_object_inline_chunks_166, {
4572
+ var blob = new Blob(JSCompiler_object_inline_chunks_161, {
4299
4573
  type: mimeType
4300
4574
  });
4301
4575
  response._formData.append(name, blob, filename);