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.
@@ -2384,6 +2384,13 @@
2384
2384
  value
2385
2385
  ) {
2386
2386
  task.model = value;
2387
+ "__proto__" === parentPropertyName &&
2388
+ callWithDebugContextInDEV(request, task, function () {
2389
+ console.error(
2390
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
2391
+ describeObjectForErrorMessage(parent, parentPropertyName)
2392
+ );
2393
+ });
2387
2394
  if (value === REACT_ELEMENT_TYPE) return "$";
2388
2395
  if (null === value) return null;
2389
2396
  if ("object" === typeof value) {
@@ -2577,7 +2584,7 @@
2577
2584
  if (value instanceof Date) return "$D" + value.toJSON();
2578
2585
  elementReference = getPrototypeOf(value);
2579
2586
  if (
2580
- elementReference !== ObjectPrototype &&
2587
+ elementReference !== ObjectPrototype$1 &&
2581
2588
  (null === elementReference ||
2582
2589
  null !== getPrototypeOf(elementReference))
2583
2590
  )
@@ -3159,7 +3166,7 @@
3159
3166
  return serializeDebugBlob(request, value);
3160
3167
  if (getIteratorFn(value)) return Array.from(value);
3161
3168
  request = getPrototypeOf(value);
3162
- if (request !== ObjectPrototype && null !== request) {
3169
+ if (request !== ObjectPrototype$1 && null !== request) {
3163
3170
  counter = Object.create(null);
3164
3171
  for (env in value)
3165
3172
  if (hasOwnProperty.call(value, env) || isGetter(request, env))
@@ -3945,12 +3952,12 @@
3945
3952
  this.value = value;
3946
3953
  this.reason = reason;
3947
3954
  }
3948
- function wakeChunk(response, listeners, value) {
3955
+ function wakeChunk(response, listeners, value, chunk) {
3949
3956
  for (var i = 0; i < listeners.length; i++) {
3950
3957
  var listener = listeners[i];
3951
3958
  "function" === typeof listener
3952
3959
  ? listener(value)
3953
- : fulfillReference(response, listener, value);
3960
+ : fulfillReference(response, listener, value, chunk.reason);
3954
3961
  }
3955
3962
  }
3956
3963
  function rejectChunk(response, listeners, error) {
@@ -3961,27 +3968,6 @@
3961
3968
  : rejectReference(response, listener.handler, error);
3962
3969
  }
3963
3970
  }
3964
- function resolveBlockedCycle(resolvedChunk, reference) {
3965
- var referencedChunk = reference.handler.chunk;
3966
- if (null === referencedChunk) return null;
3967
- if (referencedChunk === resolvedChunk) return reference.handler;
3968
- reference = referencedChunk.value;
3969
- if (null !== reference)
3970
- for (
3971
- referencedChunk = 0;
3972
- referencedChunk < reference.length;
3973
- referencedChunk++
3974
- ) {
3975
- var listener = reference[referencedChunk];
3976
- if (
3977
- "function" !== typeof listener &&
3978
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
3979
- null !== listener)
3980
- )
3981
- return listener;
3982
- }
3983
- return null;
3984
- }
3985
3971
  function triggerErrorOnChunk(response, chunk, error) {
3986
3972
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
3987
3973
  chunk.reason.error(error);
@@ -4005,57 +3991,25 @@
4005
3991
  chunk.value = value;
4006
3992
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
4007
3993
  if (null !== resolveListeners)
4008
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
3994
+ switch ((initializeModelChunk(chunk), chunk.status)) {
4009
3995
  case "fulfilled":
4010
- wakeChunk(response, resolveListeners, chunk.value);
3996
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
4011
3997
  break;
4012
3998
  case "blocked":
4013
- for (value = 0; value < resolveListeners.length; value++)
4014
- if (
4015
- ((id = resolveListeners[value]), "function" !== typeof id)
4016
- ) {
4017
- var cyclicHandler = resolveBlockedCycle(chunk, id);
4018
- if (null !== cyclicHandler)
4019
- switch (
4020
- (fulfillReference(response, id, cyclicHandler.value),
4021
- resolveListeners.splice(value, 1),
4022
- value--,
4023
- null !== rejectListeners &&
4024
- ((id = rejectListeners.indexOf(id)),
4025
- -1 !== id && rejectListeners.splice(id, 1)),
4026
- chunk.status)
4027
- ) {
4028
- case "fulfilled":
4029
- wakeChunk(response, resolveListeners, chunk.value);
4030
- break a;
4031
- case "rejected":
4032
- null !== rejectListeners &&
4033
- rejectChunk(response, rejectListeners, chunk.reason);
4034
- break a;
4035
- }
4036
- }
4037
3999
  case "pending":
4038
4000
  if (chunk.value)
4039
- for (
4040
- response = 0;
4041
- response < resolveListeners.length;
4042
- response++
4043
- )
4044
- chunk.value.push(resolveListeners[response]);
4001
+ for (value = 0; value < resolveListeners.length; value++)
4002
+ chunk.value.push(resolveListeners[value]);
4045
4003
  else chunk.value = resolveListeners;
4046
4004
  if (chunk.reason) {
4047
4005
  if (rejectListeners)
4048
- for (
4049
- resolveListeners = 0;
4050
- resolveListeners < rejectListeners.length;
4051
- resolveListeners++
4052
- )
4053
- chunk.reason.push(rejectListeners[resolveListeners]);
4006
+ for (value = 0; value < rejectListeners.length; value++)
4007
+ chunk.reason.push(rejectListeners[value]);
4054
4008
  } else chunk.reason = rejectListeners;
4055
4009
  break;
4056
4010
  case "rejected":
4057
4011
  rejectListeners &&
4058
- wakeChunk(response, rejectListeners, chunk.reason);
4012
+ rejectChunk(response, rejectListeners, chunk.reason);
4059
4013
  }
4060
4014
  }
4061
4015
  }
@@ -4079,15 +4033,51 @@
4079
4033
  );
4080
4034
  }
4081
4035
  function loadServerReference$1(response, metaData, parentObject, key) {
4036
+ function reject(error) {
4037
+ var rejectListeners = blockedPromise.reason,
4038
+ erroredPromise = blockedPromise;
4039
+ erroredPromise.status = "rejected";
4040
+ erroredPromise.value = null;
4041
+ erroredPromise.reason = error;
4042
+ null !== rejectListeners &&
4043
+ rejectChunk(response, rejectListeners, error);
4044
+ rejectReference(response, handler, error);
4045
+ }
4082
4046
  var id = metaData.id;
4083
4047
  if ("string" !== typeof id || "then" === key) return null;
4048
+ var cachedPromise = metaData.$$promise;
4049
+ if (void 0 !== cachedPromise) {
4050
+ if ("fulfilled" === cachedPromise.status)
4051
+ return (
4052
+ (cachedPromise = cachedPromise.value),
4053
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
4054
+ );
4055
+ initializingHandler
4056
+ ? ((id = initializingHandler), id.deps++)
4057
+ : (id = initializingHandler =
4058
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
4059
+ cachedPromise.then(
4060
+ resolveReference.bind(null, response, id, parentObject, key),
4061
+ rejectReference.bind(null, response, id)
4062
+ );
4063
+ return null;
4064
+ }
4065
+ var blockedPromise = new ReactPromise("blocked", null, null);
4066
+ metaData.$$promise = blockedPromise;
4084
4067
  var serverReference = resolveServerReference(response._bundlerConfig, id);
4085
- id = metaData.bound;
4086
- var promise = preloadModule(serverReference);
4087
- if (promise)
4088
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
4089
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
4090
- else return requireModule(serverReference);
4068
+ cachedPromise = metaData.bound;
4069
+ if ((id = preloadModule(serverReference)))
4070
+ cachedPromise instanceof ReactPromise &&
4071
+ (id = Promise.all([id, cachedPromise]));
4072
+ else if (cachedPromise instanceof ReactPromise)
4073
+ id = Promise.resolve(cachedPromise);
4074
+ else
4075
+ return (
4076
+ (cachedPromise = requireModule(serverReference)),
4077
+ (id = blockedPromise),
4078
+ (id.status = "fulfilled"),
4079
+ (id.value = cachedPromise)
4080
+ );
4091
4081
  if (initializingHandler) {
4092
4082
  var handler = initializingHandler;
4093
4083
  handler.deps++;
@@ -4099,93 +4089,107 @@
4099
4089
  deps: 1,
4100
4090
  errored: !1
4101
4091
  };
4102
- promise.then(
4103
- function () {
4104
- var resolvedValue = requireModule(serverReference);
4105
- if (metaData.bound) {
4106
- var promiseValue = metaData.bound.value;
4107
- promiseValue = Array.isArray(promiseValue)
4108
- ? promiseValue.slice(0)
4109
- : [];
4110
- promiseValue.unshift(null);
4111
- resolvedValue = resolvedValue.bind.apply(
4112
- resolvedValue,
4113
- promiseValue
4092
+ id.then(function () {
4093
+ var resolvedValue = requireModule(serverReference);
4094
+ if (metaData.bound) {
4095
+ var promiseValue = metaData.bound.value;
4096
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
4097
+ if (promiseValue.length > MAX_BOUND_ARGS) {
4098
+ reject(
4099
+ Error(
4100
+ "Server Function has too many bound arguments. Received " +
4101
+ promiseValue.length +
4102
+ " but the limit is " +
4103
+ MAX_BOUND_ARGS +
4104
+ "."
4105
+ )
4114
4106
  );
4107
+ return;
4115
4108
  }
4116
- parentObject[key] = resolvedValue;
4117
- "" === key &&
4118
- null === handler.value &&
4119
- (handler.value = resolvedValue);
4120
- handler.deps--;
4121
- 0 === handler.deps &&
4122
- ((resolvedValue = handler.chunk),
4123
- null !== resolvedValue &&
4124
- "blocked" === resolvedValue.status &&
4125
- ((promiseValue = resolvedValue.value),
4126
- (resolvedValue.status = "fulfilled"),
4127
- (resolvedValue.value = handler.value),
4128
- (resolvedValue.reason = null),
4129
- null !== promiseValue &&
4130
- wakeChunk(response, promiseValue, handler.value)));
4131
- },
4132
- function (error) {
4133
- if (!handler.errored) {
4134
- handler.errored = !0;
4135
- handler.value = null;
4136
- handler.reason = error;
4137
- var chunk = handler.chunk;
4138
- null !== chunk &&
4139
- "blocked" === chunk.status &&
4140
- triggerErrorOnChunk(response, chunk, error);
4141
- }
4109
+ promiseValue.unshift(null);
4110
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
4142
4111
  }
4143
- );
4112
+ promiseValue = blockedPromise.value;
4113
+ var initializedPromise = blockedPromise;
4114
+ initializedPromise.status = "fulfilled";
4115
+ initializedPromise.value = resolvedValue;
4116
+ initializedPromise.reason = null;
4117
+ null !== promiseValue &&
4118
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
4119
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4120
+ }, reject);
4144
4121
  return null;
4145
4122
  }
4146
- function reviveModel(response, parentObj, parentKey, value, reference) {
4123
+ function reviveModel(
4124
+ response,
4125
+ parentObj,
4126
+ parentKey,
4127
+ value,
4128
+ reference,
4129
+ arrayRoot
4130
+ ) {
4147
4131
  if ("string" === typeof value)
4148
4132
  return parseModelString(
4149
4133
  response,
4150
4134
  parentObj,
4151
4135
  parentKey,
4152
4136
  value,
4153
- reference
4137
+ reference,
4138
+ arrayRoot
4154
4139
  );
4155
4140
  if ("object" === typeof value && null !== value)
4156
4141
  if (
4157
4142
  (void 0 !== reference &&
4158
4143
  void 0 !== response._temporaryReferences &&
4159
4144
  response._temporaryReferences.set(value, reference),
4160
- Array.isArray(value))
4161
- )
4162
- for (var i = 0; i < value.length; i++)
4163
- value[i] = reviveModel(
4145
+ isArrayImpl(value))
4146
+ ) {
4147
+ if (null === arrayRoot) {
4148
+ var childContext = { count: 0, fork: !1 };
4149
+ response._rootArrayContexts.set(value, childContext);
4150
+ } else childContext = arrayRoot;
4151
+ 1 < value.length && (childContext.fork = !0);
4152
+ bumpArrayCount(childContext, value.length + 1, response);
4153
+ for (parentObj = 0; parentObj < value.length; parentObj++)
4154
+ value[parentObj] = reviveModel(
4164
4155
  response,
4165
4156
  value,
4166
- "" + i,
4167
- value[i],
4168
- void 0 !== reference ? reference + ":" + i : void 0
4157
+ "" + parentObj,
4158
+ value[parentObj],
4159
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
4160
+ childContext
4169
4161
  );
4170
- else
4171
- for (i in value)
4172
- hasOwnProperty.call(value, i) &&
4173
- ((parentObj =
4174
- void 0 !== reference && -1 === i.indexOf(":")
4175
- ? reference + ":" + i
4176
- : void 0),
4177
- (parentObj = reviveModel(
4178
- response,
4179
- value,
4180
- i,
4181
- value[i],
4182
- parentObj
4183
- )),
4184
- void 0 !== parentObj || "__proto__" === i
4185
- ? (value[i] = parentObj)
4186
- : delete value[i]);
4162
+ } else
4163
+ for (childContext in value)
4164
+ hasOwnProperty.call(value, childContext) &&
4165
+ ("__proto__" === childContext
4166
+ ? delete value[childContext]
4167
+ : ((parentObj =
4168
+ void 0 !== reference && -1 === childContext.indexOf(":")
4169
+ ? reference + ":" + childContext
4170
+ : void 0),
4171
+ (parentObj = reviveModel(
4172
+ response,
4173
+ value,
4174
+ childContext,
4175
+ value[childContext],
4176
+ parentObj,
4177
+ null
4178
+ )),
4179
+ void 0 !== parentObj
4180
+ ? (value[childContext] = parentObj)
4181
+ : delete value[childContext]));
4187
4182
  return value;
4188
4183
  }
4184
+ function bumpArrayCount(arrayContext, slots, response) {
4185
+ if (
4186
+ (arrayContext.count += slots) > response._arraySizeLimit &&
4187
+ arrayContext.fork
4188
+ )
4189
+ throw Error(
4190
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
4191
+ );
4192
+ }
4189
4193
  function initializeModelChunk(chunk) {
4190
4194
  var prevHandler = initializingHandler;
4191
4195
  initializingHandler = null;
@@ -4199,13 +4203,15 @@
4199
4203
  chunk.value = null;
4200
4204
  chunk.reason = null;
4201
4205
  try {
4202
- var rawModel = JSON.parse(resolvedModel),
4203
- value = reviveModel(
4206
+ var rawModel = JSON.parse(resolvedModel);
4207
+ resolvedModel = { count: 0, fork: !1 };
4208
+ var value = reviveModel(
4204
4209
  response,
4205
4210
  { "": rawModel },
4206
4211
  "",
4207
4212
  rawModel,
4208
- _chunk$reason
4213
+ _chunk$reason,
4214
+ resolvedModel
4209
4215
  ),
4210
4216
  resolveListeners = chunk.value;
4211
4217
  if (null !== resolveListeners)
@@ -4217,19 +4223,20 @@
4217
4223
  var listener = resolveListeners[rawModel];
4218
4224
  "function" === typeof listener
4219
4225
  ? listener(value)
4220
- : fulfillReference(response, listener, value);
4226
+ : fulfillReference(response, listener, value, resolvedModel);
4221
4227
  }
4222
4228
  if (null !== initializingHandler) {
4223
4229
  if (initializingHandler.errored) throw initializingHandler.reason;
4224
4230
  if (0 < initializingHandler.deps) {
4225
4231
  initializingHandler.value = value;
4232
+ initializingHandler.reason = resolvedModel;
4226
4233
  initializingHandler.chunk = chunk;
4227
4234
  return;
4228
4235
  }
4229
4236
  }
4230
4237
  chunk.status = "fulfilled";
4231
4238
  chunk.value = value;
4232
- chunk.reason = null;
4239
+ chunk.reason = resolvedModel;
4233
4240
  } catch (error) {
4234
4241
  (chunk.status = "rejected"), (chunk.reason = error);
4235
4242
  } finally {
@@ -4244,7 +4251,8 @@
4244
4251
  ? triggerErrorOnChunk(response, chunk, error)
4245
4252
  : "fulfilled" === chunk.status &&
4246
4253
  null !== chunk.reason &&
4247
- chunk.reason.error(error);
4254
+ ((chunk = chunk.reason),
4255
+ "function" === typeof chunk.error && chunk.error(error));
4248
4256
  });
4249
4257
  }
4250
4258
  function getChunk(response, id) {
@@ -4265,40 +4273,74 @@
4265
4273
  chunks.set(id, chunk));
4266
4274
  return chunk;
4267
4275
  }
4268
- function fulfillReference(response, reference, value) {
4276
+ function fulfillReference(response, reference, value, arrayRoot) {
4269
4277
  var handler = reference.handler,
4270
4278
  parentObject = reference.parentObject,
4271
4279
  key = reference.key,
4272
4280
  map = reference.map,
4273
4281
  path = reference.path;
4274
4282
  try {
4275
- for (var i = 1; i < path.length; i++) {
4283
+ for (
4284
+ var localLength = 0,
4285
+ rootArrayContexts = response._rootArrayContexts,
4286
+ i = 1;
4287
+ i < path.length;
4288
+ i++
4289
+ ) {
4276
4290
  var name = path[i];
4277
4291
  if (
4278
4292
  "object" !== typeof value ||
4279
- !hasOwnProperty.call(value, name) ||
4280
- value instanceof Promise
4293
+ null === value ||
4294
+ (getPrototypeOf(value) !== ObjectPrototype &&
4295
+ getPrototypeOf(value) !== ArrayPrototype) ||
4296
+ !hasOwnProperty.call(value, name)
4281
4297
  )
4282
4298
  throw Error("Invalid reference.");
4283
4299
  value = value[name];
4300
+ if (isArrayImpl(value))
4301
+ (localLength = 0),
4302
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
4303
+ else if (((arrayRoot = null), "string" === typeof value))
4304
+ localLength = value.length;
4305
+ else if ("bigint" === typeof value) {
4306
+ var n = Math.abs(Number(value));
4307
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
4308
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
4284
4309
  }
4285
- var mappedValue = map(response, value, parentObject, key);
4286
- parentObject[key] = mappedValue;
4287
- "" === key && null === handler.value && (handler.value = mappedValue);
4310
+ var resolvedValue = map(response, value, parentObject, key);
4311
+ var referenceArrayRoot = reference.arrayRoot;
4312
+ null !== referenceArrayRoot &&
4313
+ (null !== arrayRoot
4314
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
4315
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
4316
+ : 0 < localLength &&
4317
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4288
4318
  } catch (error) {
4289
- rejectReference(response, reference.handler, error);
4319
+ rejectReference(response, handler, error);
4290
4320
  return;
4291
4321
  }
4322
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4323
+ }
4324
+ function resolveReference(
4325
+ response,
4326
+ handler,
4327
+ parentObject,
4328
+ key,
4329
+ resolvedValue
4330
+ ) {
4331
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
4332
+ "" === key && null === handler.value && (handler.value = resolvedValue);
4292
4333
  handler.deps--;
4293
4334
  0 === handler.deps &&
4294
- ((reference = handler.chunk),
4295
- null !== reference &&
4296
- "blocked" === reference.status &&
4297
- ((value = reference.value),
4298
- (reference.status = "fulfilled"),
4299
- (reference.value = handler.value),
4300
- (reference.reason = handler.reason),
4301
- null !== value && wakeChunk(response, value, handler.value)));
4335
+ ((parentObject = handler.chunk),
4336
+ null !== parentObject &&
4337
+ "blocked" === parentObject.status &&
4338
+ ((key = parentObject.value),
4339
+ (parentObject.status = "fulfilled"),
4340
+ (parentObject.value = handler.value),
4341
+ (parentObject.reason = handler.reason),
4342
+ null !== key &&
4343
+ wakeChunk(response, key, handler.value, parentObject)));
4302
4344
  }
4303
4345
  function rejectReference(response, handler, error) {
4304
4346
  handler.errored ||
@@ -4310,29 +4352,66 @@
4310
4352
  "blocked" === handler.status &&
4311
4353
  triggerErrorOnChunk(response, handler, error));
4312
4354
  }
4313
- function getOutlinedModel(response, reference, parentObject, key, map) {
4355
+ function getOutlinedModel(
4356
+ response,
4357
+ reference,
4358
+ parentObject,
4359
+ key,
4360
+ referenceArrayRoot,
4361
+ map
4362
+ ) {
4314
4363
  reference = reference.split(":");
4315
- var id = parseInt(reference[0], 16);
4316
- id = getChunk(response, id);
4317
- switch (id.status) {
4364
+ var id = parseInt(reference[0], 16),
4365
+ chunk = getChunk(response, id);
4366
+ switch (chunk.status) {
4318
4367
  case "resolved_model":
4319
- initializeModelChunk(id);
4368
+ initializeModelChunk(chunk);
4320
4369
  }
4321
- switch (id.status) {
4370
+ switch (chunk.status) {
4322
4371
  case "fulfilled":
4323
- id = id.value;
4324
- for (var i = 1; i < reference.length; i++) {
4325
- var name = reference[i];
4372
+ id = chunk.value;
4373
+ chunk = chunk.reason;
4374
+ for (
4375
+ var localLength = 0,
4376
+ rootArrayContexts = response._rootArrayContexts,
4377
+ i = 1;
4378
+ i < reference.length;
4379
+ i++
4380
+ ) {
4381
+ localLength = reference[i];
4326
4382
  if (
4327
4383
  "object" !== typeof id ||
4328
- !hasOwnProperty.call(id, name) ||
4329
- id instanceof Promise
4384
+ null === id ||
4385
+ (getPrototypeOf(id) !== ObjectPrototype &&
4386
+ getPrototypeOf(id) !== ArrayPrototype) ||
4387
+ !hasOwnProperty.call(id, localLength)
4330
4388
  )
4331
4389
  throw Error("Invalid reference.");
4332
- id = id[name];
4390
+ id = id[localLength];
4391
+ isArrayImpl(id)
4392
+ ? ((localLength = 0),
4393
+ (chunk = rootArrayContexts.get(id) || chunk))
4394
+ : ((chunk = null),
4395
+ "string" === typeof id
4396
+ ? (localLength = id.length)
4397
+ : "bigint" === typeof id
4398
+ ? ((localLength = Math.abs(Number(id))),
4399
+ (localLength =
4400
+ 0 === localLength
4401
+ ? 1
4402
+ : Math.floor(Math.log10(localLength)) + 1))
4403
+ : (localLength = ArrayBuffer.isView(id)
4404
+ ? id.byteLength
4405
+ : 0));
4333
4406
  }
4334
- return map(response, id, parentObject, key);
4335
- case "pending":
4407
+ parentObject = map(response, id, parentObject, key);
4408
+ null !== referenceArrayRoot &&
4409
+ (null !== chunk
4410
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
4411
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
4412
+ : 0 < localLength &&
4413
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4414
+ return parentObject;
4336
4415
  case "blocked":
4337
4416
  return (
4338
4417
  initializingHandler
@@ -4345,31 +4424,34 @@
4345
4424
  deps: 1,
4346
4425
  errored: !1
4347
4426
  }),
4348
- (parentObject = {
4427
+ (referenceArrayRoot = {
4349
4428
  handler: response,
4350
4429
  parentObject: parentObject,
4351
4430
  key: key,
4352
4431
  map: map,
4353
- path: reference
4432
+ path: reference,
4433
+ arrayRoot: referenceArrayRoot
4354
4434
  }),
4355
- null === id.value
4356
- ? (id.value = [parentObject])
4357
- : id.value.push(parentObject),
4358
- null === id.reason
4359
- ? (id.reason = [parentObject])
4360
- : id.reason.push(parentObject),
4435
+ null === chunk.value
4436
+ ? (chunk.value = [referenceArrayRoot])
4437
+ : chunk.value.push(referenceArrayRoot),
4438
+ null === chunk.reason
4439
+ ? (chunk.reason = [referenceArrayRoot])
4440
+ : chunk.reason.push(referenceArrayRoot),
4361
4441
  null
4362
4442
  );
4443
+ case "pending":
4444
+ throw Error("Invalid forward reference.");
4363
4445
  default:
4364
4446
  return (
4365
4447
  initializingHandler
4366
4448
  ? ((initializingHandler.errored = !0),
4367
4449
  (initializingHandler.value = null),
4368
- (initializingHandler.reason = id.reason))
4450
+ (initializingHandler.reason = chunk.reason))
4369
4451
  : (initializingHandler = {
4370
4452
  chunk: null,
4371
4453
  value: null,
4372
- reason: id.reason,
4454
+ reason: chunk.reason,
4373
4455
  deps: 0,
4374
4456
  errored: !0
4375
4457
  }),
@@ -4378,12 +4460,21 @@
4378
4460
  }
4379
4461
  }
4380
4462
  function createMap(response, model) {
4463
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4464
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4465
+ model.$$consumed = !0;
4381
4466
  return new Map(model);
4382
4467
  }
4383
4468
  function createSet(response, model) {
4469
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4470
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4471
+ model.$$consumed = !0;
4384
4472
  return new Set(model);
4385
4473
  }
4386
4474
  function extractIterator(response, model) {
4475
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4476
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4477
+ model.$$consumed = !0;
4387
4478
  return model[Symbol.iterator]();
4388
4479
  }
4389
4480
  function createModel(response, model, parentObject, key) {
@@ -4395,13 +4486,34 @@
4395
4486
  constructor,
4396
4487
  bytesPerElement,
4397
4488
  parentObject,
4398
- parentKey
4489
+ parentKey,
4490
+ referenceArrayRoot
4399
4491
  ) {
4492
+ function reject(error) {
4493
+ if (!handler.errored) {
4494
+ handler.errored = !0;
4495
+ handler.value = null;
4496
+ handler.reason = error;
4497
+ var chunk = handler.chunk;
4498
+ null !== chunk &&
4499
+ "blocked" === chunk.status &&
4500
+ triggerErrorOnChunk(response, chunk, error);
4501
+ }
4502
+ }
4400
4503
  reference = parseInt(reference.slice(2), 16);
4401
- bytesPerElement = response._prefix + reference;
4402
- if (response._chunks.has(reference))
4504
+ var key = response._prefix + reference;
4505
+ bytesPerElement = response._chunks;
4506
+ if (bytesPerElement.has(reference))
4403
4507
  throw Error("Already initialized typed array.");
4404
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4508
+ bytesPerElement.set(
4509
+ reference,
4510
+ new ReactPromise(
4511
+ "rejected",
4512
+ null,
4513
+ Error("Already initialized typed array.")
4514
+ )
4515
+ );
4516
+ reference = response._formData.get(key).arrayBuffer();
4405
4517
  if (initializingHandler) {
4406
4518
  var handler = initializingHandler;
4407
4519
  handler.deps++;
@@ -4413,40 +4525,32 @@
4413
4525
  deps: 1,
4414
4526
  errored: !1
4415
4527
  };
4416
- reference.then(
4417
- function (buffer) {
4418
- buffer =
4528
+ reference.then(function (buffer) {
4529
+ try {
4530
+ null !== referenceArrayRoot &&
4531
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4532
+ var resolvedValue =
4419
4533
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4420
- parentObject[parentKey] = buffer;
4534
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4421
4535
  "" === parentKey &&
4422
4536
  null === handler.value &&
4423
- (handler.value = buffer);
4424
- handler.deps--;
4425
- if (
4426
- 0 === handler.deps &&
4427
- ((buffer = handler.chunk),
4428
- null !== buffer && "blocked" === buffer.status)
4429
- ) {
4430
- var resolveListeners = buffer.value;
4431
- buffer.status = "fulfilled";
4432
- buffer.value = handler.value;
4433
- buffer.reason = null;
4434
- null !== resolveListeners &&
4435
- wakeChunk(response, resolveListeners, handler.value);
4436
- }
4437
- },
4438
- function (error) {
4439
- if (!handler.errored) {
4440
- handler.errored = !0;
4441
- handler.value = null;
4442
- handler.reason = error;
4443
- var chunk = handler.chunk;
4444
- null !== chunk &&
4445
- "blocked" === chunk.status &&
4446
- triggerErrorOnChunk(response, chunk, error);
4447
- }
4537
+ (handler.value = resolvedValue);
4538
+ } catch (x) {
4539
+ reject(x);
4540
+ return;
4448
4541
  }
4449
- );
4542
+ handler.deps--;
4543
+ 0 === handler.deps &&
4544
+ ((buffer = handler.chunk),
4545
+ null !== buffer &&
4546
+ "blocked" === buffer.status &&
4547
+ ((resolvedValue = buffer.value),
4548
+ (buffer.status = "fulfilled"),
4549
+ (buffer.value = handler.value),
4550
+ (buffer.reason = null),
4551
+ null !== resolvedValue &&
4552
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4553
+ }, reject);
4450
4554
  return null;
4451
4555
  }
4452
4556
  function resolveStream(response, id, stream, controller) {
@@ -4464,90 +4568,78 @@
4464
4568
  : controller.enqueueModel(chunks));
4465
4569
  }
4466
4570
  function parseReadableStream(response, reference, type) {
4571
+ function enqueue(value) {
4572
+ "bytes" !== type || ArrayBuffer.isView(value)
4573
+ ? controller.enqueue(value)
4574
+ : flightController.error(Error("Invalid data for bytes stream."));
4575
+ }
4467
4576
  reference = parseInt(reference.slice(2), 16);
4468
4577
  if (response._chunks.has(reference))
4469
4578
  throw Error("Already initialized stream.");
4470
4579
  var controller = null,
4471
- closed = !1;
4472
- type = new ReadableStream({
4473
- type: type,
4474
- start: function (c) {
4475
- controller = c;
4476
- }
4477
- });
4478
- var previousBlockedChunk = null;
4479
- resolveStream(response, reference, type, {
4480
- enqueueModel: function (json) {
4481
- if (null === previousBlockedChunk) {
4482
- var chunk = new ReactPromise(
4483
- "resolved_model",
4484
- json,
4485
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4486
- );
4487
- initializeModelChunk(chunk);
4488
- "fulfilled" === chunk.status
4489
- ? controller.enqueue(chunk.value)
4490
- : (chunk.then(
4491
- function (v) {
4492
- return controller.enqueue(v);
4493
- },
4494
- function (e) {
4495
- return controller.error(e);
4496
- }
4497
- ),
4498
- (previousBlockedChunk = chunk));
4499
- } else {
4500
- chunk = previousBlockedChunk;
4501
- var _chunk = new ReactPromise("pending", null, null);
4502
- _chunk.then(
4503
- function (v) {
4504
- return controller.enqueue(v);
4505
- },
4506
- function (e) {
4507
- return controller.error(e);
4508
- }
4509
- );
4510
- previousBlockedChunk = _chunk;
4511
- chunk.then(function () {
4512
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
4513
- resolveModelChunk(response, _chunk, json, -1);
4514
- });
4580
+ closed = !1,
4581
+ stream = new ReadableStream({
4582
+ type: type,
4583
+ start: function (c) {
4584
+ controller = c;
4515
4585
  }
4516
- },
4517
- close: function () {
4518
- if (!closed)
4519
- if (((closed = !0), null === previousBlockedChunk))
4520
- controller.close();
4521
- else {
4522
- var blockedChunk = previousBlockedChunk;
4523
- previousBlockedChunk = null;
4524
- blockedChunk.then(function () {
4525
- return controller.close();
4526
- });
4527
- }
4528
- },
4529
- error: function (error) {
4530
- if (!closed)
4531
- if (((closed = !0), null === previousBlockedChunk))
4532
- controller.error(error);
4533
- else {
4534
- var blockedChunk = previousBlockedChunk;
4535
- previousBlockedChunk = null;
4536
- blockedChunk.then(function () {
4537
- return controller.error(error);
4586
+ }),
4587
+ previousBlockedChunk = null,
4588
+ flightController = {
4589
+ enqueueModel: function (json) {
4590
+ if (null === previousBlockedChunk) {
4591
+ var chunk = new ReactPromise(
4592
+ "resolved_model",
4593
+ json,
4594
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4595
+ );
4596
+ initializeModelChunk(chunk);
4597
+ "fulfilled" === chunk.status
4598
+ ? enqueue(chunk.value)
4599
+ : (chunk.then(enqueue, flightController.error),
4600
+ (previousBlockedChunk = chunk));
4601
+ } else {
4602
+ chunk = previousBlockedChunk;
4603
+ var _chunk = new ReactPromise("pending", null, null);
4604
+ _chunk.then(enqueue, flightController.error);
4605
+ previousBlockedChunk = _chunk;
4606
+ chunk.then(function () {
4607
+ previousBlockedChunk === _chunk &&
4608
+ (previousBlockedChunk = null);
4609
+ resolveModelChunk(response, _chunk, json, -1);
4538
4610
  });
4539
4611
  }
4540
- }
4541
- });
4542
- return type;
4543
- }
4544
- function asyncIterator() {
4545
- return this;
4612
+ },
4613
+ close: function () {
4614
+ if (!closed)
4615
+ if (((closed = !0), null === previousBlockedChunk))
4616
+ controller.close();
4617
+ else {
4618
+ var blockedChunk = previousBlockedChunk;
4619
+ previousBlockedChunk = null;
4620
+ blockedChunk.then(function () {
4621
+ return controller.close();
4622
+ });
4623
+ }
4624
+ },
4625
+ error: function (error) {
4626
+ if (!closed)
4627
+ if (((closed = !0), null === previousBlockedChunk))
4628
+ controller.error(error);
4629
+ else {
4630
+ var blockedChunk = previousBlockedChunk;
4631
+ previousBlockedChunk = null;
4632
+ blockedChunk.then(function () {
4633
+ return controller.error(error);
4634
+ });
4635
+ }
4636
+ }
4637
+ };
4638
+ resolveStream(response, reference, stream, flightController);
4639
+ return stream;
4546
4640
  }
4547
- function createIterator(next) {
4548
- next = { next: next };
4549
- next[ASYNC_ITERATOR] = asyncIterator;
4550
- return next;
4641
+ function FlightIterator(next) {
4642
+ this.next = next;
4551
4643
  }
4552
4644
  function parseAsyncIterable(response, reference, iterator) {
4553
4645
  reference = parseInt(reference.slice(2), 16);
@@ -4558,7 +4650,7 @@
4558
4650
  nextWriteIndex = 0,
4559
4651
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4560
4652
  var nextReadIndex = 0;
4561
- return createIterator(function (arg) {
4653
+ return new FlightIterator(function (arg) {
4562
4654
  if (void 0 !== arg)
4563
4655
  throw Error(
4564
4656
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -4637,19 +4729,30 @@
4637
4729
  });
4638
4730
  return iterator;
4639
4731
  }
4640
- function parseModelString(response, obj, key, value, reference) {
4732
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
4641
4733
  if ("$" === value[0]) {
4642
4734
  switch (value[1]) {
4643
4735
  case "$":
4644
- return value.slice(1);
4736
+ return (
4737
+ null !== arrayRoot &&
4738
+ bumpArrayCount(arrayRoot, value.length - 1, response),
4739
+ value.slice(1)
4740
+ );
4645
4741
  case "@":
4646
4742
  return (
4647
4743
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
4648
4744
  );
4649
4745
  case "h":
4650
4746
  return (
4651
- (value = value.slice(2)),
4652
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
4747
+ (arrayRoot = value.slice(2)),
4748
+ getOutlinedModel(
4749
+ response,
4750
+ arrayRoot,
4751
+ obj,
4752
+ key,
4753
+ null,
4754
+ loadServerReference$1
4755
+ )
4653
4756
  );
4654
4757
  case "T":
4655
4758
  if (
@@ -4665,27 +4768,44 @@
4665
4768
  );
4666
4769
  case "Q":
4667
4770
  return (
4668
- (value = value.slice(2)),
4669
- getOutlinedModel(response, value, obj, key, createMap)
4771
+ (arrayRoot = value.slice(2)),
4772
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
4670
4773
  );
4671
4774
  case "W":
4672
4775
  return (
4673
- (value = value.slice(2)),
4674
- getOutlinedModel(response, value, obj, key, createSet)
4776
+ (arrayRoot = value.slice(2)),
4777
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
4675
4778
  );
4676
4779
  case "K":
4677
4780
  obj = value.slice(2);
4678
- var formPrefix = response._prefix + obj + "_",
4679
- data = new FormData();
4680
- response._formData.forEach(function (entry, entryKey) {
4681
- entryKey.startsWith(formPrefix) &&
4682
- data.append(entryKey.slice(formPrefix.length), entry);
4683
- });
4684
- return data;
4781
+ obj = response._prefix + obj + "_";
4782
+ key = new FormData();
4783
+ response = response._formData;
4784
+ arrayRoot = Array.from(response.keys());
4785
+ for (value = 0; value < arrayRoot.length; value++)
4786
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
4787
+ for (
4788
+ var entries = response.getAll(reference),
4789
+ newKey = reference.slice(obj.length),
4790
+ j = 0;
4791
+ j < entries.length;
4792
+ j++
4793
+ )
4794
+ key.append(newKey, entries[j]);
4795
+ response.delete(reference);
4796
+ }
4797
+ return key;
4685
4798
  case "i":
4686
4799
  return (
4687
- (value = value.slice(2)),
4688
- getOutlinedModel(response, value, obj, key, extractIterator)
4800
+ (arrayRoot = value.slice(2)),
4801
+ getOutlinedModel(
4802
+ response,
4803
+ arrayRoot,
4804
+ obj,
4805
+ key,
4806
+ null,
4807
+ extractIterator
4808
+ )
4689
4809
  );
4690
4810
  case "I":
4691
4811
  return Infinity;
@@ -4698,15 +4818,48 @@
4698
4818
  case "D":
4699
4819
  return new Date(Date.parse(value.slice(2)));
4700
4820
  case "n":
4701
- return BigInt(value.slice(2));
4702
- }
4703
- switch (value[1]) {
4821
+ obj = value.slice(2);
4822
+ if (obj.length > MAX_BIGINT_DIGITS)
4823
+ throw Error(
4824
+ "BigInt is too large. Received " +
4825
+ obj.length +
4826
+ " digits but the limit is " +
4827
+ MAX_BIGINT_DIGITS +
4828
+ "."
4829
+ );
4830
+ null !== arrayRoot &&
4831
+ bumpArrayCount(arrayRoot, obj.length, response);
4832
+ return BigInt(obj);
4704
4833
  case "A":
4705
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
4834
+ return parseTypedArray(
4835
+ response,
4836
+ value,
4837
+ ArrayBuffer,
4838
+ 1,
4839
+ obj,
4840
+ key,
4841
+ arrayRoot
4842
+ );
4706
4843
  case "O":
4707
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
4844
+ return parseTypedArray(
4845
+ response,
4846
+ value,
4847
+ Int8Array,
4848
+ 1,
4849
+ obj,
4850
+ key,
4851
+ arrayRoot
4852
+ );
4708
4853
  case "o":
4709
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
4854
+ return parseTypedArray(
4855
+ response,
4856
+ value,
4857
+ Uint8Array,
4858
+ 1,
4859
+ obj,
4860
+ key,
4861
+ arrayRoot
4862
+ );
4710
4863
  case "U":
4711
4864
  return parseTypedArray(
4712
4865
  response,
@@ -4714,22 +4867,79 @@
4714
4867
  Uint8ClampedArray,
4715
4868
  1,
4716
4869
  obj,
4717
- key
4870
+ key,
4871
+ arrayRoot
4718
4872
  );
4719
4873
  case "S":
4720
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
4874
+ return parseTypedArray(
4875
+ response,
4876
+ value,
4877
+ Int16Array,
4878
+ 2,
4879
+ obj,
4880
+ key,
4881
+ arrayRoot
4882
+ );
4721
4883
  case "s":
4722
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
4884
+ return parseTypedArray(
4885
+ response,
4886
+ value,
4887
+ Uint16Array,
4888
+ 2,
4889
+ obj,
4890
+ key,
4891
+ arrayRoot
4892
+ );
4723
4893
  case "L":
4724
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
4894
+ return parseTypedArray(
4895
+ response,
4896
+ value,
4897
+ Int32Array,
4898
+ 4,
4899
+ obj,
4900
+ key,
4901
+ arrayRoot
4902
+ );
4725
4903
  case "l":
4726
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
4904
+ return parseTypedArray(
4905
+ response,
4906
+ value,
4907
+ Uint32Array,
4908
+ 4,
4909
+ obj,
4910
+ key,
4911
+ arrayRoot
4912
+ );
4727
4913
  case "G":
4728
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
4914
+ return parseTypedArray(
4915
+ response,
4916
+ value,
4917
+ Float32Array,
4918
+ 4,
4919
+ obj,
4920
+ key,
4921
+ arrayRoot
4922
+ );
4729
4923
  case "g":
4730
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
4924
+ return parseTypedArray(
4925
+ response,
4926
+ value,
4927
+ Float64Array,
4928
+ 8,
4929
+ obj,
4930
+ key,
4931
+ arrayRoot
4932
+ );
4731
4933
  case "M":
4732
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
4934
+ return parseTypedArray(
4935
+ response,
4936
+ value,
4937
+ BigInt64Array,
4938
+ 8,
4939
+ obj,
4940
+ key,
4941
+ arrayRoot
4942
+ );
4733
4943
  case "m":
4734
4944
  return parseTypedArray(
4735
4945
  response,
@@ -4737,17 +4947,24 @@
4737
4947
  BigUint64Array,
4738
4948
  8,
4739
4949
  obj,
4740
- key
4950
+ key,
4951
+ arrayRoot
4741
4952
  );
4742
4953
  case "V":
4743
- return parseTypedArray(response, value, DataView, 1, obj, key);
4954
+ return parseTypedArray(
4955
+ response,
4956
+ value,
4957
+ DataView,
4958
+ 1,
4959
+ obj,
4960
+ key,
4961
+ arrayRoot
4962
+ );
4744
4963
  case "B":
4745
4964
  return (
4746
4965
  (obj = parseInt(value.slice(2), 16)),
4747
4966
  response._formData.get(response._prefix + obj)
4748
4967
  );
4749
- }
4750
- switch (value[1]) {
4751
4968
  case "R":
4752
4969
  return parseReadableStream(response, value, void 0);
4753
4970
  case "r":
@@ -4758,8 +4975,16 @@
4758
4975
  return parseAsyncIterable(response, value, !0);
4759
4976
  }
4760
4977
  value = value.slice(1);
4761
- return getOutlinedModel(response, value, obj, key, createModel);
4978
+ return getOutlinedModel(
4979
+ response,
4980
+ value,
4981
+ obj,
4982
+ key,
4983
+ arrayRoot,
4984
+ createModel
4985
+ );
4762
4986
  }
4987
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
4763
4988
  return value;
4764
4989
  }
4765
4990
  function createResponse(
@@ -4771,6 +4996,8 @@
4771
4996
  3 < arguments.length && void 0 !== arguments[3]
4772
4997
  ? arguments[3]
4773
4998
  : new FormData(),
4999
+ arraySizeLimit =
5000
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
4774
5001
  chunks = new Map();
4775
5002
  return {
4776
5003
  _bundlerConfig: bundlerConfig,
@@ -4779,19 +5006,32 @@
4779
5006
  _chunks: chunks,
4780
5007
  _closed: !1,
4781
5008
  _closedReason: null,
4782
- _temporaryReferences: temporaryReferences
5009
+ _temporaryReferences: temporaryReferences,
5010
+ _rootArrayContexts: new WeakMap(),
5011
+ _arraySizeLimit: arraySizeLimit
4783
5012
  };
4784
5013
  }
4785
5014
  function close(response) {
4786
5015
  reportGlobalError(response, Error("Connection closed."));
4787
5016
  }
4788
- function loadServerReference(bundlerConfig, id, bound) {
5017
+ function loadServerReference(bundlerConfig, metaData) {
5018
+ var id = metaData.id;
5019
+ if ("string" !== typeof id) return null;
4789
5020
  var serverReference = resolveServerReference(bundlerConfig, id);
4790
5021
  bundlerConfig = preloadModule(serverReference);
4791
- return bound
4792
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
5022
+ metaData = metaData.bound;
5023
+ return metaData instanceof Promise
5024
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
4793
5025
  _ref = _ref[0];
4794
5026
  var fn = requireModule(serverReference);
5027
+ if (_ref.length > MAX_BOUND_ARGS)
5028
+ throw Error(
5029
+ "Server Function has too many bound arguments. Received " +
5030
+ _ref.length +
5031
+ " but the limit is " +
5032
+ MAX_BOUND_ARGS +
5033
+ "."
5034
+ );
4795
5035
  return fn.bind.apply(fn, [null].concat(_ref));
4796
5036
  })
4797
5037
  : bundlerConfig
@@ -4800,8 +5040,19 @@
4800
5040
  })
4801
5041
  : Promise.resolve(requireModule(serverReference));
4802
5042
  }
4803
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
4804
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
5043
+ function decodeBoundActionMetaData(
5044
+ body,
5045
+ serverManifest,
5046
+ formFieldPrefix,
5047
+ arraySizeLimit
5048
+ ) {
5049
+ body = createResponse(
5050
+ serverManifest,
5051
+ formFieldPrefix,
5052
+ void 0,
5053
+ body,
5054
+ arraySizeLimit
5055
+ );
4805
5056
  close(body);
4806
5057
  body = getChunk(body, 0);
4807
5058
  body.then(function () {});
@@ -5311,7 +5562,7 @@
5311
5562
  patchConsole(console, "table"),
5312
5563
  patchConsole(console, "trace"),
5313
5564
  patchConsole(console, "warn"));
5314
- var ObjectPrototype = Object.prototype,
5565
+ var ObjectPrototype$1 = Object.prototype,
5315
5566
  stringify = JSON.stringify,
5316
5567
  ABORTING = 12,
5317
5568
  CLOSED = 14,
@@ -5339,16 +5590,23 @@
5339
5590
  case "fulfilled":
5340
5591
  if ("function" === typeof resolve) {
5341
5592
  for (
5342
- var inspectedValue = this.value, cycleProtection = 0;
5593
+ var inspectedValue = this.value,
5594
+ cycleProtection = 0,
5595
+ visited = new Set();
5343
5596
  inspectedValue instanceof ReactPromise;
5344
5597
 
5345
5598
  ) {
5346
5599
  cycleProtection++;
5347
- if (inspectedValue === this || 1e3 < cycleProtection) {
5600
+ if (
5601
+ inspectedValue === this ||
5602
+ visited.has(inspectedValue) ||
5603
+ 1e3 < cycleProtection
5604
+ ) {
5348
5605
  "function" === typeof reject &&
5349
5606
  reject(Error("Cannot have cyclic thenables."));
5350
5607
  return;
5351
5608
  }
5609
+ visited.add(inspectedValue);
5352
5610
  if ("fulfilled" === inspectedValue.status)
5353
5611
  inspectedValue = inspectedValue.value;
5354
5612
  else break;
@@ -5369,7 +5627,15 @@
5369
5627
  "function" === typeof reject && reject(this.reason);
5370
5628
  }
5371
5629
  };
5372
- var initializingHandler = null;
5630
+ var ObjectPrototype = Object.prototype,
5631
+ ArrayPrototype = Array.prototype,
5632
+ initializingHandler = null;
5633
+ FlightIterator.prototype = {};
5634
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
5635
+ return this;
5636
+ };
5637
+ var MAX_BIGINT_DIGITS = 300,
5638
+ MAX_BOUND_ARGS = 1e3;
5373
5639
  exports.createClientModuleProxy = function (moduleId) {
5374
5640
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
5375
5641
  return new Proxy(moduleId, proxyHandlers$1);
@@ -5379,20 +5645,24 @@
5379
5645
  };
5380
5646
  exports.decodeAction = function (body, serverManifest) {
5381
5647
  var formData = new FormData(),
5382
- action = null;
5648
+ action = null,
5649
+ seenActions = new Set();
5383
5650
  body.forEach(function (value, key) {
5384
5651
  key.startsWith("$ACTION_")
5385
5652
  ? key.startsWith("$ACTION_REF_")
5386
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
5653
+ ? seenActions.has(key) ||
5654
+ (seenActions.add(key),
5655
+ (value = "$ACTION_" + key.slice(12) + ":"),
5387
5656
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
5388
- (action = loadServerReference(
5389
- serverManifest,
5390
- value.id,
5391
- value.bound
5392
- )))
5657
+ (action = loadServerReference(serverManifest, value)))
5393
5658
  : key.startsWith("$ACTION_ID_") &&
5394
- ((value = key.slice(11)),
5395
- (action = loadServerReference(serverManifest, value, null)))
5659
+ !seenActions.has(key) &&
5660
+ (seenActions.add(key),
5661
+ (value = key.slice(11)),
5662
+ (action = loadServerReference(serverManifest, {
5663
+ id: value,
5664
+ bound: null
5665
+ })))
5396
5666
  : formData.append(key, value);
5397
5667
  });
5398
5668
  return null === action
@@ -5428,7 +5698,8 @@
5428
5698
  turbopackMap,
5429
5699
  "",
5430
5700
  options ? options.temporaryReferences : void 0,
5431
- body
5701
+ body,
5702
+ options ? options.arraySizeLimit : void 0
5432
5703
  );
5433
5704
  turbopackMap = getChunk(body, 0);
5434
5705
  close(body);
@@ -5468,7 +5739,9 @@
5468
5739
  response$jscomp$0 = createResponse(
5469
5740
  turbopackMap,
5470
5741
  "",
5471
- options ? options.temporaryReferences : void 0
5742
+ options ? options.temporaryReferences : void 0,
5743
+ void 0,
5744
+ options ? options.arraySizeLimit : void 0
5472
5745
  );
5473
5746
  iterator.next().then(progress, error);
5474
5747
  return getChunk(response$jscomp$0, 0);