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