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