react-server-dom-turbopack 19.2.3 → 19.2.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.
@@ -2324,6 +2324,13 @@
2324
2324
  value
2325
2325
  ) {
2326
2326
  task.model = value;
2327
+ "__proto__" === parentPropertyName &&
2328
+ callWithDebugContextInDEV(request, task, function () {
2329
+ console.error(
2330
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
2331
+ describeObjectForErrorMessage(parent, parentPropertyName)
2332
+ );
2333
+ });
2327
2334
  if (value === REACT_ELEMENT_TYPE) return "$";
2328
2335
  if (null === value) return null;
2329
2336
  if ("object" === typeof value) {
@@ -2517,7 +2524,7 @@
2517
2524
  if (value instanceof Date) return "$D" + value.toJSON();
2518
2525
  elementReference = getPrototypeOf(value);
2519
2526
  if (
2520
- elementReference !== ObjectPrototype &&
2527
+ elementReference !== ObjectPrototype$1 &&
2521
2528
  (null === elementReference ||
2522
2529
  null !== getPrototypeOf(elementReference))
2523
2530
  )
@@ -3088,7 +3095,7 @@
3088
3095
  return serializeDebugBlob(request, value);
3089
3096
  if (getIteratorFn(value)) return Array.from(value);
3090
3097
  request = getPrototypeOf(value);
3091
- if (request !== ObjectPrototype && null !== request) {
3098
+ if (request !== ObjectPrototype$1 && null !== request) {
3092
3099
  counter = Object.create(null);
3093
3100
  for (env in value)
3094
3101
  if (hasOwnProperty.call(value, env) || isGetter(request, env))
@@ -3870,12 +3877,12 @@
3870
3877
  this.value = value;
3871
3878
  this.reason = reason;
3872
3879
  }
3873
- function wakeChunk(response, listeners, value) {
3880
+ function wakeChunk(response, listeners, value, chunk) {
3874
3881
  for (var i = 0; i < listeners.length; i++) {
3875
3882
  var listener = listeners[i];
3876
3883
  "function" === typeof listener
3877
3884
  ? listener(value)
3878
- : fulfillReference(response, listener, value);
3885
+ : fulfillReference(response, listener, value, chunk.reason);
3879
3886
  }
3880
3887
  }
3881
3888
  function rejectChunk(response, listeners, error) {
@@ -3886,27 +3893,6 @@
3886
3893
  : rejectReference(response, listener.handler, error);
3887
3894
  }
3888
3895
  }
3889
- function resolveBlockedCycle(resolvedChunk, reference) {
3890
- var referencedChunk = reference.handler.chunk;
3891
- if (null === referencedChunk) return null;
3892
- if (referencedChunk === resolvedChunk) return reference.handler;
3893
- reference = referencedChunk.value;
3894
- if (null !== reference)
3895
- for (
3896
- referencedChunk = 0;
3897
- referencedChunk < reference.length;
3898
- referencedChunk++
3899
- ) {
3900
- var listener = reference[referencedChunk];
3901
- if (
3902
- "function" !== typeof listener &&
3903
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
3904
- null !== listener)
3905
- )
3906
- return listener;
3907
- }
3908
- return null;
3909
- }
3910
3896
  function triggerErrorOnChunk(response, chunk, error) {
3911
3897
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
3912
3898
  chunk.reason.error(error);
@@ -3930,57 +3916,25 @@
3930
3916
  chunk.value = value;
3931
3917
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
3932
3918
  if (null !== resolveListeners)
3933
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
3919
+ switch ((initializeModelChunk(chunk), chunk.status)) {
3934
3920
  case "fulfilled":
3935
- wakeChunk(response, resolveListeners, chunk.value);
3921
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
3936
3922
  break;
3937
3923
  case "blocked":
3938
- for (value = 0; value < resolveListeners.length; value++)
3939
- if (
3940
- ((id = resolveListeners[value]), "function" !== typeof id)
3941
- ) {
3942
- var cyclicHandler = resolveBlockedCycle(chunk, id);
3943
- if (null !== cyclicHandler)
3944
- switch (
3945
- (fulfillReference(response, id, cyclicHandler.value),
3946
- resolveListeners.splice(value, 1),
3947
- value--,
3948
- null !== rejectListeners &&
3949
- ((id = rejectListeners.indexOf(id)),
3950
- -1 !== id && rejectListeners.splice(id, 1)),
3951
- chunk.status)
3952
- ) {
3953
- case "fulfilled":
3954
- wakeChunk(response, resolveListeners, chunk.value);
3955
- break a;
3956
- case "rejected":
3957
- null !== rejectListeners &&
3958
- rejectChunk(response, rejectListeners, chunk.reason);
3959
- break a;
3960
- }
3961
- }
3962
3924
  case "pending":
3963
3925
  if (chunk.value)
3964
- for (
3965
- response = 0;
3966
- response < resolveListeners.length;
3967
- response++
3968
- )
3969
- chunk.value.push(resolveListeners[response]);
3926
+ for (value = 0; value < resolveListeners.length; value++)
3927
+ chunk.value.push(resolveListeners[value]);
3970
3928
  else chunk.value = resolveListeners;
3971
3929
  if (chunk.reason) {
3972
3930
  if (rejectListeners)
3973
- for (
3974
- resolveListeners = 0;
3975
- resolveListeners < rejectListeners.length;
3976
- resolveListeners++
3977
- )
3978
- chunk.reason.push(rejectListeners[resolveListeners]);
3931
+ for (value = 0; value < rejectListeners.length; value++)
3932
+ chunk.reason.push(rejectListeners[value]);
3979
3933
  } else chunk.reason = rejectListeners;
3980
3934
  break;
3981
3935
  case "rejected":
3982
3936
  rejectListeners &&
3983
- wakeChunk(response, rejectListeners, chunk.reason);
3937
+ rejectChunk(response, rejectListeners, chunk.reason);
3984
3938
  }
3985
3939
  }
3986
3940
  }
@@ -4004,15 +3958,51 @@
4004
3958
  );
4005
3959
  }
4006
3960
  function loadServerReference$1(response, metaData, parentObject, key) {
3961
+ function reject(error) {
3962
+ var rejectListeners = blockedPromise.reason,
3963
+ erroredPromise = blockedPromise;
3964
+ erroredPromise.status = "rejected";
3965
+ erroredPromise.value = null;
3966
+ erroredPromise.reason = error;
3967
+ null !== rejectListeners &&
3968
+ rejectChunk(response, rejectListeners, error);
3969
+ rejectReference(response, handler, error);
3970
+ }
4007
3971
  var id = metaData.id;
4008
3972
  if ("string" !== typeof id || "then" === key) return null;
3973
+ var cachedPromise = metaData.$$promise;
3974
+ if (void 0 !== cachedPromise) {
3975
+ if ("fulfilled" === cachedPromise.status)
3976
+ return (
3977
+ (cachedPromise = cachedPromise.value),
3978
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
3979
+ );
3980
+ initializingHandler
3981
+ ? ((id = initializingHandler), id.deps++)
3982
+ : (id = initializingHandler =
3983
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
3984
+ cachedPromise.then(
3985
+ resolveReference.bind(null, response, id, parentObject, key),
3986
+ rejectReference.bind(null, response, id)
3987
+ );
3988
+ return null;
3989
+ }
3990
+ var blockedPromise = new ReactPromise("blocked", null, null);
3991
+ metaData.$$promise = blockedPromise;
4009
3992
  var serverReference = resolveServerReference(response._bundlerConfig, id);
4010
- id = metaData.bound;
4011
- var promise = preloadModule(serverReference);
4012
- if (promise)
4013
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
4014
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
4015
- else return requireModule(serverReference);
3993
+ cachedPromise = metaData.bound;
3994
+ if ((id = preloadModule(serverReference)))
3995
+ cachedPromise instanceof ReactPromise &&
3996
+ (id = Promise.all([id, cachedPromise]));
3997
+ else if (cachedPromise instanceof ReactPromise)
3998
+ id = Promise.resolve(cachedPromise);
3999
+ else
4000
+ return (
4001
+ (cachedPromise = requireModule(serverReference)),
4002
+ (id = blockedPromise),
4003
+ (id.status = "fulfilled"),
4004
+ (id.value = cachedPromise)
4005
+ );
4016
4006
  if (initializingHandler) {
4017
4007
  var handler = initializingHandler;
4018
4008
  handler.deps++;
@@ -4024,93 +4014,107 @@
4024
4014
  deps: 1,
4025
4015
  errored: !1
4026
4016
  };
4027
- promise.then(
4028
- function () {
4029
- var resolvedValue = requireModule(serverReference);
4030
- if (metaData.bound) {
4031
- var promiseValue = metaData.bound.value;
4032
- promiseValue = Array.isArray(promiseValue)
4033
- ? promiseValue.slice(0)
4034
- : [];
4035
- promiseValue.unshift(null);
4036
- resolvedValue = resolvedValue.bind.apply(
4037
- resolvedValue,
4038
- promiseValue
4017
+ id.then(function () {
4018
+ var resolvedValue = requireModule(serverReference);
4019
+ if (metaData.bound) {
4020
+ var promiseValue = metaData.bound.value;
4021
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
4022
+ if (promiseValue.length > MAX_BOUND_ARGS) {
4023
+ reject(
4024
+ Error(
4025
+ "Server Function has too many bound arguments. Received " +
4026
+ promiseValue.length +
4027
+ " but the limit is " +
4028
+ MAX_BOUND_ARGS +
4029
+ "."
4030
+ )
4039
4031
  );
4032
+ return;
4040
4033
  }
4041
- parentObject[key] = resolvedValue;
4042
- "" === key &&
4043
- null === handler.value &&
4044
- (handler.value = resolvedValue);
4045
- handler.deps--;
4046
- 0 === handler.deps &&
4047
- ((resolvedValue = handler.chunk),
4048
- null !== resolvedValue &&
4049
- "blocked" === resolvedValue.status &&
4050
- ((promiseValue = resolvedValue.value),
4051
- (resolvedValue.status = "fulfilled"),
4052
- (resolvedValue.value = handler.value),
4053
- (resolvedValue.reason = null),
4054
- null !== promiseValue &&
4055
- wakeChunk(response, promiseValue, handler.value)));
4056
- },
4057
- function (error) {
4058
- if (!handler.errored) {
4059
- handler.errored = !0;
4060
- handler.value = null;
4061
- handler.reason = error;
4062
- var chunk = handler.chunk;
4063
- null !== chunk &&
4064
- "blocked" === chunk.status &&
4065
- triggerErrorOnChunk(response, chunk, error);
4066
- }
4034
+ promiseValue.unshift(null);
4035
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
4067
4036
  }
4068
- );
4037
+ promiseValue = blockedPromise.value;
4038
+ var initializedPromise = blockedPromise;
4039
+ initializedPromise.status = "fulfilled";
4040
+ initializedPromise.value = resolvedValue;
4041
+ initializedPromise.reason = null;
4042
+ null !== promiseValue &&
4043
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
4044
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4045
+ }, reject);
4069
4046
  return null;
4070
4047
  }
4071
- function reviveModel(response, parentObj, parentKey, value, reference) {
4048
+ function reviveModel(
4049
+ response,
4050
+ parentObj,
4051
+ parentKey,
4052
+ value,
4053
+ reference,
4054
+ arrayRoot
4055
+ ) {
4072
4056
  if ("string" === typeof value)
4073
4057
  return parseModelString(
4074
4058
  response,
4075
4059
  parentObj,
4076
4060
  parentKey,
4077
4061
  value,
4078
- reference
4062
+ reference,
4063
+ arrayRoot
4079
4064
  );
4080
4065
  if ("object" === typeof value && null !== value)
4081
4066
  if (
4082
4067
  (void 0 !== reference &&
4083
4068
  void 0 !== response._temporaryReferences &&
4084
4069
  response._temporaryReferences.set(value, reference),
4085
- Array.isArray(value))
4086
- )
4087
- for (var i = 0; i < value.length; i++)
4088
- value[i] = reviveModel(
4070
+ isArrayImpl(value))
4071
+ ) {
4072
+ if (null === arrayRoot) {
4073
+ var childContext = { count: 0, fork: !1 };
4074
+ response._rootArrayContexts.set(value, childContext);
4075
+ } else childContext = arrayRoot;
4076
+ 1 < value.length && (childContext.fork = !0);
4077
+ bumpArrayCount(childContext, value.length + 1, response);
4078
+ for (parentObj = 0; parentObj < value.length; parentObj++)
4079
+ value[parentObj] = reviveModel(
4089
4080
  response,
4090
4081
  value,
4091
- "" + i,
4092
- value[i],
4093
- void 0 !== reference ? reference + ":" + i : void 0
4082
+ "" + parentObj,
4083
+ value[parentObj],
4084
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
4085
+ childContext
4094
4086
  );
4095
- else
4096
- for (i in value)
4097
- hasOwnProperty.call(value, i) &&
4098
- ((parentObj =
4099
- void 0 !== reference && -1 === i.indexOf(":")
4100
- ? reference + ":" + i
4101
- : void 0),
4102
- (parentObj = reviveModel(
4103
- response,
4104
- value,
4105
- i,
4106
- value[i],
4107
- parentObj
4108
- )),
4109
- void 0 !== parentObj || "__proto__" === i
4110
- ? (value[i] = parentObj)
4111
- : delete value[i]);
4087
+ } else
4088
+ for (childContext in value)
4089
+ hasOwnProperty.call(value, childContext) &&
4090
+ ("__proto__" === childContext
4091
+ ? delete value[childContext]
4092
+ : ((parentObj =
4093
+ void 0 !== reference && -1 === childContext.indexOf(":")
4094
+ ? reference + ":" + childContext
4095
+ : void 0),
4096
+ (parentObj = reviveModel(
4097
+ response,
4098
+ value,
4099
+ childContext,
4100
+ value[childContext],
4101
+ parentObj,
4102
+ null
4103
+ )),
4104
+ void 0 !== parentObj
4105
+ ? (value[childContext] = parentObj)
4106
+ : delete value[childContext]));
4112
4107
  return value;
4113
4108
  }
4109
+ function bumpArrayCount(arrayContext, slots, response) {
4110
+ if (
4111
+ (arrayContext.count += slots) > response._arraySizeLimit &&
4112
+ arrayContext.fork
4113
+ )
4114
+ throw Error(
4115
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
4116
+ );
4117
+ }
4114
4118
  function initializeModelChunk(chunk) {
4115
4119
  var prevHandler = initializingHandler;
4116
4120
  initializingHandler = null;
@@ -4124,13 +4128,15 @@
4124
4128
  chunk.value = null;
4125
4129
  chunk.reason = null;
4126
4130
  try {
4127
- var rawModel = JSON.parse(resolvedModel),
4128
- value = reviveModel(
4131
+ var rawModel = JSON.parse(resolvedModel);
4132
+ resolvedModel = { count: 0, fork: !1 };
4133
+ var value = reviveModel(
4129
4134
  response,
4130
4135
  { "": rawModel },
4131
4136
  "",
4132
4137
  rawModel,
4133
- _chunk$reason
4138
+ _chunk$reason,
4139
+ resolvedModel
4134
4140
  ),
4135
4141
  resolveListeners = chunk.value;
4136
4142
  if (null !== resolveListeners)
@@ -4142,19 +4148,20 @@
4142
4148
  var listener = resolveListeners[rawModel];
4143
4149
  "function" === typeof listener
4144
4150
  ? listener(value)
4145
- : fulfillReference(response, listener, value);
4151
+ : fulfillReference(response, listener, value, resolvedModel);
4146
4152
  }
4147
4153
  if (null !== initializingHandler) {
4148
4154
  if (initializingHandler.errored) throw initializingHandler.reason;
4149
4155
  if (0 < initializingHandler.deps) {
4150
4156
  initializingHandler.value = value;
4157
+ initializingHandler.reason = resolvedModel;
4151
4158
  initializingHandler.chunk = chunk;
4152
4159
  return;
4153
4160
  }
4154
4161
  }
4155
4162
  chunk.status = "fulfilled";
4156
4163
  chunk.value = value;
4157
- chunk.reason = null;
4164
+ chunk.reason = resolvedModel;
4158
4165
  } catch (error) {
4159
4166
  (chunk.status = "rejected"), (chunk.reason = error);
4160
4167
  } finally {
@@ -4169,7 +4176,8 @@
4169
4176
  ? triggerErrorOnChunk(response, chunk, error)
4170
4177
  : "fulfilled" === chunk.status &&
4171
4178
  null !== chunk.reason &&
4172
- chunk.reason.error(error);
4179
+ ((chunk = chunk.reason),
4180
+ "function" === typeof chunk.error && chunk.error(error));
4173
4181
  });
4174
4182
  }
4175
4183
  function getChunk(response, id) {
@@ -4190,40 +4198,74 @@
4190
4198
  chunks.set(id, chunk));
4191
4199
  return chunk;
4192
4200
  }
4193
- function fulfillReference(response, reference, value) {
4201
+ function fulfillReference(response, reference, value, arrayRoot) {
4194
4202
  var handler = reference.handler,
4195
4203
  parentObject = reference.parentObject,
4196
4204
  key = reference.key,
4197
4205
  map = reference.map,
4198
4206
  path = reference.path;
4199
4207
  try {
4200
- for (var i = 1; i < path.length; i++) {
4208
+ for (
4209
+ var localLength = 0,
4210
+ rootArrayContexts = response._rootArrayContexts,
4211
+ i = 1;
4212
+ i < path.length;
4213
+ i++
4214
+ ) {
4201
4215
  var name = path[i];
4202
4216
  if (
4203
4217
  "object" !== typeof value ||
4204
- !hasOwnProperty.call(value, name) ||
4205
- value instanceof Promise
4218
+ null === value ||
4219
+ (getPrototypeOf(value) !== ObjectPrototype &&
4220
+ getPrototypeOf(value) !== ArrayPrototype) ||
4221
+ !hasOwnProperty.call(value, name)
4206
4222
  )
4207
4223
  throw Error("Invalid reference.");
4208
4224
  value = value[name];
4225
+ if (isArrayImpl(value))
4226
+ (localLength = 0),
4227
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
4228
+ else if (((arrayRoot = null), "string" === typeof value))
4229
+ localLength = value.length;
4230
+ else if ("bigint" === typeof value) {
4231
+ var n = Math.abs(Number(value));
4232
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
4233
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
4209
4234
  }
4210
- var mappedValue = map(response, value, parentObject, key);
4211
- parentObject[key] = mappedValue;
4212
- "" === key && null === handler.value && (handler.value = mappedValue);
4235
+ var resolvedValue = map(response, value, parentObject, key);
4236
+ var referenceArrayRoot = reference.arrayRoot;
4237
+ null !== referenceArrayRoot &&
4238
+ (null !== arrayRoot
4239
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
4240
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
4241
+ : 0 < localLength &&
4242
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4213
4243
  } catch (error) {
4214
- rejectReference(response, reference.handler, error);
4244
+ rejectReference(response, handler, error);
4215
4245
  return;
4216
4246
  }
4247
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4248
+ }
4249
+ function resolveReference(
4250
+ response,
4251
+ handler,
4252
+ parentObject,
4253
+ key,
4254
+ resolvedValue
4255
+ ) {
4256
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
4257
+ "" === key && null === handler.value && (handler.value = resolvedValue);
4217
4258
  handler.deps--;
4218
4259
  0 === handler.deps &&
4219
- ((reference = handler.chunk),
4220
- null !== reference &&
4221
- "blocked" === reference.status &&
4222
- ((value = reference.value),
4223
- (reference.status = "fulfilled"),
4224
- (reference.value = handler.value),
4225
- (reference.reason = handler.reason),
4226
- null !== value && wakeChunk(response, value, handler.value)));
4260
+ ((parentObject = handler.chunk),
4261
+ null !== parentObject &&
4262
+ "blocked" === parentObject.status &&
4263
+ ((key = parentObject.value),
4264
+ (parentObject.status = "fulfilled"),
4265
+ (parentObject.value = handler.value),
4266
+ (parentObject.reason = handler.reason),
4267
+ null !== key &&
4268
+ wakeChunk(response, key, handler.value, parentObject)));
4227
4269
  }
4228
4270
  function rejectReference(response, handler, error) {
4229
4271
  handler.errored ||
@@ -4235,29 +4277,66 @@
4235
4277
  "blocked" === handler.status &&
4236
4278
  triggerErrorOnChunk(response, handler, error));
4237
4279
  }
4238
- function getOutlinedModel(response, reference, parentObject, key, map) {
4280
+ function getOutlinedModel(
4281
+ response,
4282
+ reference,
4283
+ parentObject,
4284
+ key,
4285
+ referenceArrayRoot,
4286
+ map
4287
+ ) {
4239
4288
  reference = reference.split(":");
4240
- var id = parseInt(reference[0], 16);
4241
- id = getChunk(response, id);
4242
- switch (id.status) {
4289
+ var id = parseInt(reference[0], 16),
4290
+ chunk = getChunk(response, id);
4291
+ switch (chunk.status) {
4243
4292
  case "resolved_model":
4244
- initializeModelChunk(id);
4293
+ initializeModelChunk(chunk);
4245
4294
  }
4246
- switch (id.status) {
4295
+ switch (chunk.status) {
4247
4296
  case "fulfilled":
4248
- id = id.value;
4249
- for (var i = 1; i < reference.length; i++) {
4250
- var name = reference[i];
4297
+ id = chunk.value;
4298
+ chunk = chunk.reason;
4299
+ for (
4300
+ var localLength = 0,
4301
+ rootArrayContexts = response._rootArrayContexts,
4302
+ i = 1;
4303
+ i < reference.length;
4304
+ i++
4305
+ ) {
4306
+ localLength = reference[i];
4251
4307
  if (
4252
4308
  "object" !== typeof id ||
4253
- !hasOwnProperty.call(id, name) ||
4254
- id instanceof Promise
4309
+ null === id ||
4310
+ (getPrototypeOf(id) !== ObjectPrototype &&
4311
+ getPrototypeOf(id) !== ArrayPrototype) ||
4312
+ !hasOwnProperty.call(id, localLength)
4255
4313
  )
4256
4314
  throw Error("Invalid reference.");
4257
- id = id[name];
4315
+ id = id[localLength];
4316
+ isArrayImpl(id)
4317
+ ? ((localLength = 0),
4318
+ (chunk = rootArrayContexts.get(id) || chunk))
4319
+ : ((chunk = null),
4320
+ "string" === typeof id
4321
+ ? (localLength = id.length)
4322
+ : "bigint" === typeof id
4323
+ ? ((localLength = Math.abs(Number(id))),
4324
+ (localLength =
4325
+ 0 === localLength
4326
+ ? 1
4327
+ : Math.floor(Math.log10(localLength)) + 1))
4328
+ : (localLength = ArrayBuffer.isView(id)
4329
+ ? id.byteLength
4330
+ : 0));
4258
4331
  }
4259
- return map(response, id, parentObject, key);
4260
- case "pending":
4332
+ parentObject = map(response, id, parentObject, key);
4333
+ null !== referenceArrayRoot &&
4334
+ (null !== chunk
4335
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
4336
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
4337
+ : 0 < localLength &&
4338
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4339
+ return parentObject;
4261
4340
  case "blocked":
4262
4341
  return (
4263
4342
  initializingHandler
@@ -4270,31 +4349,34 @@
4270
4349
  deps: 1,
4271
4350
  errored: !1
4272
4351
  }),
4273
- (parentObject = {
4352
+ (referenceArrayRoot = {
4274
4353
  handler: response,
4275
4354
  parentObject: parentObject,
4276
4355
  key: key,
4277
4356
  map: map,
4278
- path: reference
4357
+ path: reference,
4358
+ arrayRoot: referenceArrayRoot
4279
4359
  }),
4280
- null === id.value
4281
- ? (id.value = [parentObject])
4282
- : id.value.push(parentObject),
4283
- null === id.reason
4284
- ? (id.reason = [parentObject])
4285
- : id.reason.push(parentObject),
4360
+ null === chunk.value
4361
+ ? (chunk.value = [referenceArrayRoot])
4362
+ : chunk.value.push(referenceArrayRoot),
4363
+ null === chunk.reason
4364
+ ? (chunk.reason = [referenceArrayRoot])
4365
+ : chunk.reason.push(referenceArrayRoot),
4286
4366
  null
4287
4367
  );
4368
+ case "pending":
4369
+ throw Error("Invalid forward reference.");
4288
4370
  default:
4289
4371
  return (
4290
4372
  initializingHandler
4291
4373
  ? ((initializingHandler.errored = !0),
4292
4374
  (initializingHandler.value = null),
4293
- (initializingHandler.reason = id.reason))
4375
+ (initializingHandler.reason = chunk.reason))
4294
4376
  : (initializingHandler = {
4295
4377
  chunk: null,
4296
4378
  value: null,
4297
- reason: id.reason,
4379
+ reason: chunk.reason,
4298
4380
  deps: 0,
4299
4381
  errored: !0
4300
4382
  }),
@@ -4303,12 +4385,21 @@
4303
4385
  }
4304
4386
  }
4305
4387
  function createMap(response, model) {
4388
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4389
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4390
+ model.$$consumed = !0;
4306
4391
  return new Map(model);
4307
4392
  }
4308
4393
  function createSet(response, model) {
4394
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4395
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4396
+ model.$$consumed = !0;
4309
4397
  return new Set(model);
4310
4398
  }
4311
4399
  function extractIterator(response, model) {
4400
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4401
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4402
+ model.$$consumed = !0;
4312
4403
  return model[Symbol.iterator]();
4313
4404
  }
4314
4405
  function createModel(response, model, parentObject, key) {
@@ -4320,13 +4411,34 @@
4320
4411
  constructor,
4321
4412
  bytesPerElement,
4322
4413
  parentObject,
4323
- parentKey
4414
+ parentKey,
4415
+ referenceArrayRoot
4324
4416
  ) {
4417
+ function reject(error) {
4418
+ if (!handler.errored) {
4419
+ handler.errored = !0;
4420
+ handler.value = null;
4421
+ handler.reason = error;
4422
+ var chunk = handler.chunk;
4423
+ null !== chunk &&
4424
+ "blocked" === chunk.status &&
4425
+ triggerErrorOnChunk(response, chunk, error);
4426
+ }
4427
+ }
4325
4428
  reference = parseInt(reference.slice(2), 16);
4326
- bytesPerElement = response._prefix + reference;
4327
- if (response._chunks.has(reference))
4429
+ var key = response._prefix + reference;
4430
+ bytesPerElement = response._chunks;
4431
+ if (bytesPerElement.has(reference))
4328
4432
  throw Error("Already initialized typed array.");
4329
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4433
+ bytesPerElement.set(
4434
+ reference,
4435
+ new ReactPromise(
4436
+ "rejected",
4437
+ null,
4438
+ Error("Already initialized typed array.")
4439
+ )
4440
+ );
4441
+ reference = response._formData.get(key).arrayBuffer();
4330
4442
  if (initializingHandler) {
4331
4443
  var handler = initializingHandler;
4332
4444
  handler.deps++;
@@ -4338,40 +4450,32 @@
4338
4450
  deps: 1,
4339
4451
  errored: !1
4340
4452
  };
4341
- reference.then(
4342
- function (buffer) {
4343
- buffer =
4453
+ reference.then(function (buffer) {
4454
+ try {
4455
+ null !== referenceArrayRoot &&
4456
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4457
+ var resolvedValue =
4344
4458
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4345
- parentObject[parentKey] = buffer;
4459
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4346
4460
  "" === parentKey &&
4347
4461
  null === handler.value &&
4348
- (handler.value = buffer);
4349
- handler.deps--;
4350
- if (
4351
- 0 === handler.deps &&
4352
- ((buffer = handler.chunk),
4353
- null !== buffer && "blocked" === buffer.status)
4354
- ) {
4355
- var resolveListeners = buffer.value;
4356
- buffer.status = "fulfilled";
4357
- buffer.value = handler.value;
4358
- buffer.reason = null;
4359
- null !== resolveListeners &&
4360
- wakeChunk(response, resolveListeners, handler.value);
4361
- }
4362
- },
4363
- function (error) {
4364
- if (!handler.errored) {
4365
- handler.errored = !0;
4366
- handler.value = null;
4367
- handler.reason = error;
4368
- var chunk = handler.chunk;
4369
- null !== chunk &&
4370
- "blocked" === chunk.status &&
4371
- triggerErrorOnChunk(response, chunk, error);
4372
- }
4462
+ (handler.value = resolvedValue);
4463
+ } catch (x) {
4464
+ reject(x);
4465
+ return;
4373
4466
  }
4374
- );
4467
+ handler.deps--;
4468
+ 0 === handler.deps &&
4469
+ ((buffer = handler.chunk),
4470
+ null !== buffer &&
4471
+ "blocked" === buffer.status &&
4472
+ ((resolvedValue = buffer.value),
4473
+ (buffer.status = "fulfilled"),
4474
+ (buffer.value = handler.value),
4475
+ (buffer.reason = null),
4476
+ null !== resolvedValue &&
4477
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4478
+ }, reject);
4375
4479
  return null;
4376
4480
  }
4377
4481
  function resolveStream(response, id, stream, controller) {
@@ -4389,90 +4493,78 @@
4389
4493
  : controller.enqueueModel(chunks));
4390
4494
  }
4391
4495
  function parseReadableStream(response, reference, type) {
4496
+ function enqueue(value) {
4497
+ "bytes" !== type || ArrayBuffer.isView(value)
4498
+ ? controller.enqueue(value)
4499
+ : flightController.error(Error("Invalid data for bytes stream."));
4500
+ }
4392
4501
  reference = parseInt(reference.slice(2), 16);
4393
4502
  if (response._chunks.has(reference))
4394
4503
  throw Error("Already initialized stream.");
4395
4504
  var controller = null,
4396
- closed = !1;
4397
- type = new ReadableStream({
4398
- type: type,
4399
- start: function (c) {
4400
- controller = c;
4401
- }
4402
- });
4403
- var previousBlockedChunk = null;
4404
- resolveStream(response, reference, type, {
4405
- enqueueModel: function (json) {
4406
- if (null === previousBlockedChunk) {
4407
- var chunk = new ReactPromise(
4408
- "resolved_model",
4409
- json,
4410
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4411
- );
4412
- initializeModelChunk(chunk);
4413
- "fulfilled" === chunk.status
4414
- ? controller.enqueue(chunk.value)
4415
- : (chunk.then(
4416
- function (v) {
4417
- return controller.enqueue(v);
4418
- },
4419
- function (e) {
4420
- return controller.error(e);
4421
- }
4422
- ),
4423
- (previousBlockedChunk = chunk));
4424
- } else {
4425
- chunk = previousBlockedChunk;
4426
- var _chunk = new ReactPromise("pending", null, null);
4427
- _chunk.then(
4428
- function (v) {
4429
- return controller.enqueue(v);
4430
- },
4431
- function (e) {
4432
- return controller.error(e);
4433
- }
4434
- );
4435
- previousBlockedChunk = _chunk;
4436
- chunk.then(function () {
4437
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
4438
- resolveModelChunk(response, _chunk, json, -1);
4439
- });
4505
+ closed = !1,
4506
+ stream = new ReadableStream({
4507
+ type: type,
4508
+ start: function (c) {
4509
+ controller = c;
4440
4510
  }
4441
- },
4442
- close: function () {
4443
- if (!closed)
4444
- if (((closed = !0), null === previousBlockedChunk))
4445
- controller.close();
4446
- else {
4447
- var blockedChunk = previousBlockedChunk;
4448
- previousBlockedChunk = null;
4449
- blockedChunk.then(function () {
4450
- return controller.close();
4451
- });
4452
- }
4453
- },
4454
- error: function (error) {
4455
- if (!closed)
4456
- if (((closed = !0), null === previousBlockedChunk))
4457
- controller.error(error);
4458
- else {
4459
- var blockedChunk = previousBlockedChunk;
4460
- previousBlockedChunk = null;
4461
- blockedChunk.then(function () {
4462
- return controller.error(error);
4511
+ }),
4512
+ previousBlockedChunk = null,
4513
+ flightController = {
4514
+ enqueueModel: function (json) {
4515
+ if (null === previousBlockedChunk) {
4516
+ var chunk = new ReactPromise(
4517
+ "resolved_model",
4518
+ json,
4519
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4520
+ );
4521
+ initializeModelChunk(chunk);
4522
+ "fulfilled" === chunk.status
4523
+ ? enqueue(chunk.value)
4524
+ : (chunk.then(enqueue, flightController.error),
4525
+ (previousBlockedChunk = chunk));
4526
+ } else {
4527
+ chunk = previousBlockedChunk;
4528
+ var _chunk = new ReactPromise("pending", null, null);
4529
+ _chunk.then(enqueue, flightController.error);
4530
+ previousBlockedChunk = _chunk;
4531
+ chunk.then(function () {
4532
+ previousBlockedChunk === _chunk &&
4533
+ (previousBlockedChunk = null);
4534
+ resolveModelChunk(response, _chunk, json, -1);
4463
4535
  });
4464
4536
  }
4465
- }
4466
- });
4467
- return type;
4468
- }
4469
- function asyncIterator() {
4470
- return this;
4537
+ },
4538
+ close: function () {
4539
+ if (!closed)
4540
+ if (((closed = !0), null === previousBlockedChunk))
4541
+ controller.close();
4542
+ else {
4543
+ var blockedChunk = previousBlockedChunk;
4544
+ previousBlockedChunk = null;
4545
+ blockedChunk.then(function () {
4546
+ return controller.close();
4547
+ });
4548
+ }
4549
+ },
4550
+ error: function (error) {
4551
+ if (!closed)
4552
+ if (((closed = !0), null === previousBlockedChunk))
4553
+ controller.error(error);
4554
+ else {
4555
+ var blockedChunk = previousBlockedChunk;
4556
+ previousBlockedChunk = null;
4557
+ blockedChunk.then(function () {
4558
+ return controller.error(error);
4559
+ });
4560
+ }
4561
+ }
4562
+ };
4563
+ resolveStream(response, reference, stream, flightController);
4564
+ return stream;
4471
4565
  }
4472
- function createIterator(next) {
4473
- next = { next: next };
4474
- next[ASYNC_ITERATOR] = asyncIterator;
4475
- return next;
4566
+ function FlightIterator(next) {
4567
+ this.next = next;
4476
4568
  }
4477
4569
  function parseAsyncIterable(response, reference, iterator) {
4478
4570
  reference = parseInt(reference.slice(2), 16);
@@ -4483,7 +4575,7 @@
4483
4575
  nextWriteIndex = 0,
4484
4576
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4485
4577
  var nextReadIndex = 0;
4486
- return createIterator(function (arg) {
4578
+ return new FlightIterator(function (arg) {
4487
4579
  if (void 0 !== arg)
4488
4580
  throw Error(
4489
4581
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -4562,19 +4654,30 @@
4562
4654
  });
4563
4655
  return iterator;
4564
4656
  }
4565
- function parseModelString(response, obj, key, value, reference) {
4657
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
4566
4658
  if ("$" === value[0]) {
4567
4659
  switch (value[1]) {
4568
4660
  case "$":
4569
- return value.slice(1);
4661
+ return (
4662
+ null !== arrayRoot &&
4663
+ bumpArrayCount(arrayRoot, value.length - 1, response),
4664
+ value.slice(1)
4665
+ );
4570
4666
  case "@":
4571
4667
  return (
4572
4668
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
4573
4669
  );
4574
4670
  case "h":
4575
4671
  return (
4576
- (value = value.slice(2)),
4577
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
4672
+ (arrayRoot = value.slice(2)),
4673
+ getOutlinedModel(
4674
+ response,
4675
+ arrayRoot,
4676
+ obj,
4677
+ key,
4678
+ null,
4679
+ loadServerReference$1
4680
+ )
4578
4681
  );
4579
4682
  case "T":
4580
4683
  if (
@@ -4590,27 +4693,44 @@
4590
4693
  );
4591
4694
  case "Q":
4592
4695
  return (
4593
- (value = value.slice(2)),
4594
- getOutlinedModel(response, value, obj, key, createMap)
4696
+ (arrayRoot = value.slice(2)),
4697
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
4595
4698
  );
4596
4699
  case "W":
4597
4700
  return (
4598
- (value = value.slice(2)),
4599
- getOutlinedModel(response, value, obj, key, createSet)
4701
+ (arrayRoot = value.slice(2)),
4702
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
4600
4703
  );
4601
4704
  case "K":
4602
4705
  obj = value.slice(2);
4603
- var formPrefix = response._prefix + obj + "_",
4604
- data = new FormData();
4605
- response._formData.forEach(function (entry, entryKey) {
4606
- entryKey.startsWith(formPrefix) &&
4607
- data.append(entryKey.slice(formPrefix.length), entry);
4608
- });
4609
- return data;
4706
+ obj = response._prefix + obj + "_";
4707
+ key = new FormData();
4708
+ response = response._formData;
4709
+ arrayRoot = Array.from(response.keys());
4710
+ for (value = 0; value < arrayRoot.length; value++)
4711
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
4712
+ for (
4713
+ var entries = response.getAll(reference),
4714
+ newKey = reference.slice(obj.length),
4715
+ j = 0;
4716
+ j < entries.length;
4717
+ j++
4718
+ )
4719
+ key.append(newKey, entries[j]);
4720
+ response.delete(reference);
4721
+ }
4722
+ return key;
4610
4723
  case "i":
4611
4724
  return (
4612
- (value = value.slice(2)),
4613
- getOutlinedModel(response, value, obj, key, extractIterator)
4725
+ (arrayRoot = value.slice(2)),
4726
+ getOutlinedModel(
4727
+ response,
4728
+ arrayRoot,
4729
+ obj,
4730
+ key,
4731
+ null,
4732
+ extractIterator
4733
+ )
4614
4734
  );
4615
4735
  case "I":
4616
4736
  return Infinity;
@@ -4623,15 +4743,48 @@
4623
4743
  case "D":
4624
4744
  return new Date(Date.parse(value.slice(2)));
4625
4745
  case "n":
4626
- return BigInt(value.slice(2));
4627
- }
4628
- switch (value[1]) {
4746
+ obj = value.slice(2);
4747
+ if (obj.length > MAX_BIGINT_DIGITS)
4748
+ throw Error(
4749
+ "BigInt is too large. Received " +
4750
+ obj.length +
4751
+ " digits but the limit is " +
4752
+ MAX_BIGINT_DIGITS +
4753
+ "."
4754
+ );
4755
+ null !== arrayRoot &&
4756
+ bumpArrayCount(arrayRoot, obj.length, response);
4757
+ return BigInt(obj);
4629
4758
  case "A":
4630
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
4759
+ return parseTypedArray(
4760
+ response,
4761
+ value,
4762
+ ArrayBuffer,
4763
+ 1,
4764
+ obj,
4765
+ key,
4766
+ arrayRoot
4767
+ );
4631
4768
  case "O":
4632
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
4769
+ return parseTypedArray(
4770
+ response,
4771
+ value,
4772
+ Int8Array,
4773
+ 1,
4774
+ obj,
4775
+ key,
4776
+ arrayRoot
4777
+ );
4633
4778
  case "o":
4634
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
4779
+ return parseTypedArray(
4780
+ response,
4781
+ value,
4782
+ Uint8Array,
4783
+ 1,
4784
+ obj,
4785
+ key,
4786
+ arrayRoot
4787
+ );
4635
4788
  case "U":
4636
4789
  return parseTypedArray(
4637
4790
  response,
@@ -4639,22 +4792,79 @@
4639
4792
  Uint8ClampedArray,
4640
4793
  1,
4641
4794
  obj,
4642
- key
4795
+ key,
4796
+ arrayRoot
4643
4797
  );
4644
4798
  case "S":
4645
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
4799
+ return parseTypedArray(
4800
+ response,
4801
+ value,
4802
+ Int16Array,
4803
+ 2,
4804
+ obj,
4805
+ key,
4806
+ arrayRoot
4807
+ );
4646
4808
  case "s":
4647
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
4809
+ return parseTypedArray(
4810
+ response,
4811
+ value,
4812
+ Uint16Array,
4813
+ 2,
4814
+ obj,
4815
+ key,
4816
+ arrayRoot
4817
+ );
4648
4818
  case "L":
4649
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
4819
+ return parseTypedArray(
4820
+ response,
4821
+ value,
4822
+ Int32Array,
4823
+ 4,
4824
+ obj,
4825
+ key,
4826
+ arrayRoot
4827
+ );
4650
4828
  case "l":
4651
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
4829
+ return parseTypedArray(
4830
+ response,
4831
+ value,
4832
+ Uint32Array,
4833
+ 4,
4834
+ obj,
4835
+ key,
4836
+ arrayRoot
4837
+ );
4652
4838
  case "G":
4653
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
4839
+ return parseTypedArray(
4840
+ response,
4841
+ value,
4842
+ Float32Array,
4843
+ 4,
4844
+ obj,
4845
+ key,
4846
+ arrayRoot
4847
+ );
4654
4848
  case "g":
4655
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
4849
+ return parseTypedArray(
4850
+ response,
4851
+ value,
4852
+ Float64Array,
4853
+ 8,
4854
+ obj,
4855
+ key,
4856
+ arrayRoot
4857
+ );
4656
4858
  case "M":
4657
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
4859
+ return parseTypedArray(
4860
+ response,
4861
+ value,
4862
+ BigInt64Array,
4863
+ 8,
4864
+ obj,
4865
+ key,
4866
+ arrayRoot
4867
+ );
4658
4868
  case "m":
4659
4869
  return parseTypedArray(
4660
4870
  response,
@@ -4662,17 +4872,24 @@
4662
4872
  BigUint64Array,
4663
4873
  8,
4664
4874
  obj,
4665
- key
4875
+ key,
4876
+ arrayRoot
4666
4877
  );
4667
4878
  case "V":
4668
- return parseTypedArray(response, value, DataView, 1, obj, key);
4879
+ return parseTypedArray(
4880
+ response,
4881
+ value,
4882
+ DataView,
4883
+ 1,
4884
+ obj,
4885
+ key,
4886
+ arrayRoot
4887
+ );
4669
4888
  case "B":
4670
4889
  return (
4671
4890
  (obj = parseInt(value.slice(2), 16)),
4672
4891
  response._formData.get(response._prefix + obj)
4673
4892
  );
4674
- }
4675
- switch (value[1]) {
4676
4893
  case "R":
4677
4894
  return parseReadableStream(response, value, void 0);
4678
4895
  case "r":
@@ -4683,8 +4900,16 @@
4683
4900
  return parseAsyncIterable(response, value, !0);
4684
4901
  }
4685
4902
  value = value.slice(1);
4686
- return getOutlinedModel(response, value, obj, key, createModel);
4903
+ return getOutlinedModel(
4904
+ response,
4905
+ value,
4906
+ obj,
4907
+ key,
4908
+ arrayRoot,
4909
+ createModel
4910
+ );
4687
4911
  }
4912
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
4688
4913
  return value;
4689
4914
  }
4690
4915
  function createResponse(
@@ -4696,6 +4921,8 @@
4696
4921
  3 < arguments.length && void 0 !== arguments[3]
4697
4922
  ? arguments[3]
4698
4923
  : new FormData(),
4924
+ arraySizeLimit =
4925
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
4699
4926
  chunks = new Map();
4700
4927
  return {
4701
4928
  _bundlerConfig: bundlerConfig,
@@ -4704,19 +4931,32 @@
4704
4931
  _chunks: chunks,
4705
4932
  _closed: !1,
4706
4933
  _closedReason: null,
4707
- _temporaryReferences: temporaryReferences
4934
+ _temporaryReferences: temporaryReferences,
4935
+ _rootArrayContexts: new WeakMap(),
4936
+ _arraySizeLimit: arraySizeLimit
4708
4937
  };
4709
4938
  }
4710
4939
  function close(response) {
4711
4940
  reportGlobalError(response, Error("Connection closed."));
4712
4941
  }
4713
- function loadServerReference(bundlerConfig, id, bound) {
4942
+ function loadServerReference(bundlerConfig, metaData) {
4943
+ var id = metaData.id;
4944
+ if ("string" !== typeof id) return null;
4714
4945
  var serverReference = resolveServerReference(bundlerConfig, id);
4715
4946
  bundlerConfig = preloadModule(serverReference);
4716
- return bound
4717
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
4947
+ metaData = metaData.bound;
4948
+ return metaData instanceof Promise
4949
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
4718
4950
  _ref = _ref[0];
4719
4951
  var fn = requireModule(serverReference);
4952
+ if (_ref.length > MAX_BOUND_ARGS)
4953
+ throw Error(
4954
+ "Server Function has too many bound arguments. Received " +
4955
+ _ref.length +
4956
+ " but the limit is " +
4957
+ MAX_BOUND_ARGS +
4958
+ "."
4959
+ );
4720
4960
  return fn.bind.apply(fn, [null].concat(_ref));
4721
4961
  })
4722
4962
  : bundlerConfig
@@ -4725,8 +4965,19 @@
4725
4965
  })
4726
4966
  : Promise.resolve(requireModule(serverReference));
4727
4967
  }
4728
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
4729
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
4968
+ function decodeBoundActionMetaData(
4969
+ body,
4970
+ serverManifest,
4971
+ formFieldPrefix,
4972
+ arraySizeLimit
4973
+ ) {
4974
+ body = createResponse(
4975
+ serverManifest,
4976
+ formFieldPrefix,
4977
+ void 0,
4978
+ body,
4979
+ arraySizeLimit
4980
+ );
4730
4981
  close(body);
4731
4982
  body = getChunk(body, 0);
4732
4983
  body.then(function () {});
@@ -5236,7 +5487,7 @@
5236
5487
  patchConsole(console, "table"),
5237
5488
  patchConsole(console, "trace"),
5238
5489
  patchConsole(console, "warn"));
5239
- var ObjectPrototype = Object.prototype,
5490
+ var ObjectPrototype$1 = Object.prototype,
5240
5491
  stringify = JSON.stringify,
5241
5492
  ABORTING = 12,
5242
5493
  CLOSED = 14,
@@ -5264,16 +5515,23 @@
5264
5515
  case "fulfilled":
5265
5516
  if ("function" === typeof resolve) {
5266
5517
  for (
5267
- var inspectedValue = this.value, cycleProtection = 0;
5518
+ var inspectedValue = this.value,
5519
+ cycleProtection = 0,
5520
+ visited = new Set();
5268
5521
  inspectedValue instanceof ReactPromise;
5269
5522
 
5270
5523
  ) {
5271
5524
  cycleProtection++;
5272
- if (inspectedValue === this || 1e3 < cycleProtection) {
5525
+ if (
5526
+ inspectedValue === this ||
5527
+ visited.has(inspectedValue) ||
5528
+ 1e3 < cycleProtection
5529
+ ) {
5273
5530
  "function" === typeof reject &&
5274
5531
  reject(Error("Cannot have cyclic thenables."));
5275
5532
  return;
5276
5533
  }
5534
+ visited.add(inspectedValue);
5277
5535
  if ("fulfilled" === inspectedValue.status)
5278
5536
  inspectedValue = inspectedValue.value;
5279
5537
  else break;
@@ -5294,7 +5552,15 @@
5294
5552
  "function" === typeof reject && reject(this.reason);
5295
5553
  }
5296
5554
  };
5297
- var initializingHandler = null;
5555
+ var ObjectPrototype = Object.prototype,
5556
+ ArrayPrototype = Array.prototype,
5557
+ initializingHandler = null;
5558
+ FlightIterator.prototype = {};
5559
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
5560
+ return this;
5561
+ };
5562
+ var MAX_BIGINT_DIGITS = 300,
5563
+ MAX_BOUND_ARGS = 1e3;
5298
5564
  exports.createClientModuleProxy = function (moduleId) {
5299
5565
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
5300
5566
  return new Proxy(moduleId, proxyHandlers$1);
@@ -5304,20 +5570,24 @@
5304
5570
  };
5305
5571
  exports.decodeAction = function (body, serverManifest) {
5306
5572
  var formData = new FormData(),
5307
- action = null;
5573
+ action = null,
5574
+ seenActions = new Set();
5308
5575
  body.forEach(function (value, key) {
5309
5576
  key.startsWith("$ACTION_")
5310
5577
  ? key.startsWith("$ACTION_REF_")
5311
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
5578
+ ? seenActions.has(key) ||
5579
+ (seenActions.add(key),
5580
+ (value = "$ACTION_" + key.slice(12) + ":"),
5312
5581
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
5313
- (action = loadServerReference(
5314
- serverManifest,
5315
- value.id,
5316
- value.bound
5317
- )))
5582
+ (action = loadServerReference(serverManifest, value)))
5318
5583
  : key.startsWith("$ACTION_ID_") &&
5319
- ((value = key.slice(11)),
5320
- (action = loadServerReference(serverManifest, value, null)))
5584
+ !seenActions.has(key) &&
5585
+ (seenActions.add(key),
5586
+ (value = key.slice(11)),
5587
+ (action = loadServerReference(serverManifest, {
5588
+ id: value,
5589
+ bound: null
5590
+ })))
5321
5591
  : formData.append(key, value);
5322
5592
  });
5323
5593
  return null === action
@@ -5353,7 +5623,8 @@
5353
5623
  turbopackMap,
5354
5624
  "",
5355
5625
  options ? options.temporaryReferences : void 0,
5356
- body
5626
+ body,
5627
+ options ? options.arraySizeLimit : void 0
5357
5628
  );
5358
5629
  turbopackMap = getChunk(body, 0);
5359
5630
  close(body);