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.
@@ -2597,6 +2597,13 @@
2597
2597
  value
2598
2598
  ) {
2599
2599
  task.model = value;
2600
+ "__proto__" === parentPropertyName &&
2601
+ callWithDebugContextInDEV(request, task, function () {
2602
+ console.error(
2603
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
2604
+ describeObjectForErrorMessage(parent, parentPropertyName)
2605
+ );
2606
+ });
2600
2607
  if (value === REACT_ELEMENT_TYPE) return "$";
2601
2608
  if (null === value) return null;
2602
2609
  if ("object" === typeof value) {
@@ -2790,7 +2797,7 @@
2790
2797
  if (value instanceof Date) return "$D" + value.toJSON();
2791
2798
  elementReference = getPrototypeOf(value);
2792
2799
  if (
2793
- elementReference !== ObjectPrototype &&
2800
+ elementReference !== ObjectPrototype$1 &&
2794
2801
  (null === elementReference ||
2795
2802
  null !== getPrototypeOf(elementReference))
2796
2803
  )
@@ -3454,7 +3461,7 @@
3454
3461
  return serializeDebugBlob(request, value);
3455
3462
  if (getIteratorFn(value)) return Array.from(value);
3456
3463
  request = getPrototypeOf(value);
3457
- if (request !== ObjectPrototype && null !== request) {
3464
+ if (request !== ObjectPrototype$1 && null !== request) {
3458
3465
  counter = Object.create(null);
3459
3466
  for (env in value)
3460
3467
  if (hasOwnProperty.call(value, env) || isGetter(request, env))
@@ -4348,12 +4355,12 @@
4348
4355
  this.value = value;
4349
4356
  this.reason = reason;
4350
4357
  }
4351
- function wakeChunk(response, listeners, value) {
4358
+ function wakeChunk(response, listeners, value, chunk) {
4352
4359
  for (var i = 0; i < listeners.length; i++) {
4353
4360
  var listener = listeners[i];
4354
4361
  "function" === typeof listener
4355
4362
  ? listener(value)
4356
- : fulfillReference(response, listener, value);
4363
+ : fulfillReference(response, listener, value, chunk.reason);
4357
4364
  }
4358
4365
  }
4359
4366
  function rejectChunk(response, listeners, error) {
@@ -4364,27 +4371,6 @@
4364
4371
  : rejectReference(response, listener.handler, error);
4365
4372
  }
4366
4373
  }
4367
- function resolveBlockedCycle(resolvedChunk, reference) {
4368
- var referencedChunk = reference.handler.chunk;
4369
- if (null === referencedChunk) return null;
4370
- if (referencedChunk === resolvedChunk) return reference.handler;
4371
- reference = referencedChunk.value;
4372
- if (null !== reference)
4373
- for (
4374
- referencedChunk = 0;
4375
- referencedChunk < reference.length;
4376
- referencedChunk++
4377
- ) {
4378
- var listener = reference[referencedChunk];
4379
- if (
4380
- "function" !== typeof listener &&
4381
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
4382
- null !== listener)
4383
- )
4384
- return listener;
4385
- }
4386
- return null;
4387
- }
4388
4374
  function triggerErrorOnChunk(response, chunk, error) {
4389
4375
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
4390
4376
  chunk.reason.error(error);
@@ -4408,57 +4394,25 @@
4408
4394
  chunk.value = value;
4409
4395
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
4410
4396
  if (null !== resolveListeners)
4411
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
4397
+ switch ((initializeModelChunk(chunk), chunk.status)) {
4412
4398
  case "fulfilled":
4413
- wakeChunk(response, resolveListeners, chunk.value);
4399
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
4414
4400
  break;
4415
4401
  case "blocked":
4416
- for (value = 0; value < resolveListeners.length; value++)
4417
- if (
4418
- ((id = resolveListeners[value]), "function" !== typeof id)
4419
- ) {
4420
- var cyclicHandler = resolveBlockedCycle(chunk, id);
4421
- if (null !== cyclicHandler)
4422
- switch (
4423
- (fulfillReference(response, id, cyclicHandler.value),
4424
- resolveListeners.splice(value, 1),
4425
- value--,
4426
- null !== rejectListeners &&
4427
- ((id = rejectListeners.indexOf(id)),
4428
- -1 !== id && rejectListeners.splice(id, 1)),
4429
- chunk.status)
4430
- ) {
4431
- case "fulfilled":
4432
- wakeChunk(response, resolveListeners, chunk.value);
4433
- break a;
4434
- case "rejected":
4435
- null !== rejectListeners &&
4436
- rejectChunk(response, rejectListeners, chunk.reason);
4437
- break a;
4438
- }
4439
- }
4440
4402
  case "pending":
4441
4403
  if (chunk.value)
4442
- for (
4443
- response = 0;
4444
- response < resolveListeners.length;
4445
- response++
4446
- )
4447
- chunk.value.push(resolveListeners[response]);
4404
+ for (value = 0; value < resolveListeners.length; value++)
4405
+ chunk.value.push(resolveListeners[value]);
4448
4406
  else chunk.value = resolveListeners;
4449
4407
  if (chunk.reason) {
4450
4408
  if (rejectListeners)
4451
- for (
4452
- resolveListeners = 0;
4453
- resolveListeners < rejectListeners.length;
4454
- resolveListeners++
4455
- )
4456
- chunk.reason.push(rejectListeners[resolveListeners]);
4409
+ for (value = 0; value < rejectListeners.length; value++)
4410
+ chunk.reason.push(rejectListeners[value]);
4457
4411
  } else chunk.reason = rejectListeners;
4458
4412
  break;
4459
4413
  case "rejected":
4460
4414
  rejectListeners &&
4461
- wakeChunk(response, rejectListeners, chunk.reason);
4415
+ rejectChunk(response, rejectListeners, chunk.reason);
4462
4416
  }
4463
4417
  }
4464
4418
  }
@@ -4482,15 +4436,51 @@
4482
4436
  );
4483
4437
  }
4484
4438
  function loadServerReference$1(response, metaData, parentObject, key) {
4439
+ function reject(error) {
4440
+ var rejectListeners = blockedPromise.reason,
4441
+ erroredPromise = blockedPromise;
4442
+ erroredPromise.status = "rejected";
4443
+ erroredPromise.value = null;
4444
+ erroredPromise.reason = error;
4445
+ null !== rejectListeners &&
4446
+ rejectChunk(response, rejectListeners, error);
4447
+ rejectReference(response, handler, error);
4448
+ }
4485
4449
  var id = metaData.id;
4486
4450
  if ("string" !== typeof id || "then" === key) return null;
4451
+ var cachedPromise = metaData.$$promise;
4452
+ if (void 0 !== cachedPromise) {
4453
+ if ("fulfilled" === cachedPromise.status)
4454
+ return (
4455
+ (cachedPromise = cachedPromise.value),
4456
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
4457
+ );
4458
+ initializingHandler
4459
+ ? ((id = initializingHandler), id.deps++)
4460
+ : (id = initializingHandler =
4461
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
4462
+ cachedPromise.then(
4463
+ resolveReference.bind(null, response, id, parentObject, key),
4464
+ rejectReference.bind(null, response, id)
4465
+ );
4466
+ return null;
4467
+ }
4468
+ var blockedPromise = new ReactPromise("blocked", null, null);
4469
+ metaData.$$promise = blockedPromise;
4487
4470
  var serverReference = resolveServerReference(response._bundlerConfig, id);
4488
- id = metaData.bound;
4489
- var promise = preloadModule(serverReference);
4490
- if (promise)
4491
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
4492
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
4493
- else return requireModule(serverReference);
4471
+ cachedPromise = metaData.bound;
4472
+ if ((id = preloadModule(serverReference)))
4473
+ cachedPromise instanceof ReactPromise &&
4474
+ (id = Promise.all([id, cachedPromise]));
4475
+ else if (cachedPromise instanceof ReactPromise)
4476
+ id = Promise.resolve(cachedPromise);
4477
+ else
4478
+ return (
4479
+ (cachedPromise = requireModule(serverReference)),
4480
+ (id = blockedPromise),
4481
+ (id.status = "fulfilled"),
4482
+ (id.value = cachedPromise)
4483
+ );
4494
4484
  if (initializingHandler) {
4495
4485
  var handler = initializingHandler;
4496
4486
  handler.deps++;
@@ -4502,93 +4492,107 @@
4502
4492
  deps: 1,
4503
4493
  errored: !1
4504
4494
  };
4505
- promise.then(
4506
- function () {
4507
- var resolvedValue = requireModule(serverReference);
4508
- if (metaData.bound) {
4509
- var promiseValue = metaData.bound.value;
4510
- promiseValue = Array.isArray(promiseValue)
4511
- ? promiseValue.slice(0)
4512
- : [];
4513
- promiseValue.unshift(null);
4514
- resolvedValue = resolvedValue.bind.apply(
4515
- resolvedValue,
4516
- promiseValue
4495
+ id.then(function () {
4496
+ var resolvedValue = requireModule(serverReference);
4497
+ if (metaData.bound) {
4498
+ var promiseValue = metaData.bound.value;
4499
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
4500
+ if (promiseValue.length > MAX_BOUND_ARGS) {
4501
+ reject(
4502
+ Error(
4503
+ "Server Function has too many bound arguments. Received " +
4504
+ promiseValue.length +
4505
+ " but the limit is " +
4506
+ MAX_BOUND_ARGS +
4507
+ "."
4508
+ )
4517
4509
  );
4510
+ return;
4518
4511
  }
4519
- parentObject[key] = resolvedValue;
4520
- "" === key &&
4521
- null === handler.value &&
4522
- (handler.value = resolvedValue);
4523
- handler.deps--;
4524
- 0 === handler.deps &&
4525
- ((resolvedValue = handler.chunk),
4526
- null !== resolvedValue &&
4527
- "blocked" === resolvedValue.status &&
4528
- ((promiseValue = resolvedValue.value),
4529
- (resolvedValue.status = "fulfilled"),
4530
- (resolvedValue.value = handler.value),
4531
- (resolvedValue.reason = null),
4532
- null !== promiseValue &&
4533
- wakeChunk(response, promiseValue, handler.value)));
4534
- },
4535
- function (error) {
4536
- if (!handler.errored) {
4537
- handler.errored = !0;
4538
- handler.value = null;
4539
- handler.reason = error;
4540
- var chunk = handler.chunk;
4541
- null !== chunk &&
4542
- "blocked" === chunk.status &&
4543
- triggerErrorOnChunk(response, chunk, error);
4544
- }
4512
+ promiseValue.unshift(null);
4513
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
4545
4514
  }
4546
- );
4515
+ promiseValue = blockedPromise.value;
4516
+ var initializedPromise = blockedPromise;
4517
+ initializedPromise.status = "fulfilled";
4518
+ initializedPromise.value = resolvedValue;
4519
+ initializedPromise.reason = null;
4520
+ null !== promiseValue &&
4521
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
4522
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4523
+ }, reject);
4547
4524
  return null;
4548
4525
  }
4549
- function reviveModel(response, parentObj, parentKey, value, reference) {
4526
+ function reviveModel(
4527
+ response,
4528
+ parentObj,
4529
+ parentKey,
4530
+ value,
4531
+ reference,
4532
+ arrayRoot
4533
+ ) {
4550
4534
  if ("string" === typeof value)
4551
4535
  return parseModelString(
4552
4536
  response,
4553
4537
  parentObj,
4554
4538
  parentKey,
4555
4539
  value,
4556
- reference
4540
+ reference,
4541
+ arrayRoot
4557
4542
  );
4558
4543
  if ("object" === typeof value && null !== value)
4559
4544
  if (
4560
4545
  (void 0 !== reference &&
4561
4546
  void 0 !== response._temporaryReferences &&
4562
4547
  response._temporaryReferences.set(value, reference),
4563
- Array.isArray(value))
4564
- )
4565
- for (var i = 0; i < value.length; i++)
4566
- value[i] = reviveModel(
4548
+ isArrayImpl(value))
4549
+ ) {
4550
+ if (null === arrayRoot) {
4551
+ var childContext = { count: 0, fork: !1 };
4552
+ response._rootArrayContexts.set(value, childContext);
4553
+ } else childContext = arrayRoot;
4554
+ 1 < value.length && (childContext.fork = !0);
4555
+ bumpArrayCount(childContext, value.length + 1, response);
4556
+ for (parentObj = 0; parentObj < value.length; parentObj++)
4557
+ value[parentObj] = reviveModel(
4567
4558
  response,
4568
4559
  value,
4569
- "" + i,
4570
- value[i],
4571
- void 0 !== reference ? reference + ":" + i : void 0
4560
+ "" + parentObj,
4561
+ value[parentObj],
4562
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
4563
+ childContext
4572
4564
  );
4573
- else
4574
- for (i in value)
4575
- hasOwnProperty.call(value, i) &&
4576
- ((parentObj =
4577
- void 0 !== reference && -1 === i.indexOf(":")
4578
- ? reference + ":" + i
4579
- : void 0),
4580
- (parentObj = reviveModel(
4581
- response,
4582
- value,
4583
- i,
4584
- value[i],
4585
- parentObj
4586
- )),
4587
- void 0 !== parentObj || "__proto__" === i
4588
- ? (value[i] = parentObj)
4589
- : delete value[i]);
4565
+ } else
4566
+ for (childContext in value)
4567
+ hasOwnProperty.call(value, childContext) &&
4568
+ ("__proto__" === childContext
4569
+ ? delete value[childContext]
4570
+ : ((parentObj =
4571
+ void 0 !== reference && -1 === childContext.indexOf(":")
4572
+ ? reference + ":" + childContext
4573
+ : void 0),
4574
+ (parentObj = reviveModel(
4575
+ response,
4576
+ value,
4577
+ childContext,
4578
+ value[childContext],
4579
+ parentObj,
4580
+ null
4581
+ )),
4582
+ void 0 !== parentObj
4583
+ ? (value[childContext] = parentObj)
4584
+ : delete value[childContext]));
4590
4585
  return value;
4591
4586
  }
4587
+ function bumpArrayCount(arrayContext, slots, response) {
4588
+ if (
4589
+ (arrayContext.count += slots) > response._arraySizeLimit &&
4590
+ arrayContext.fork
4591
+ )
4592
+ throw Error(
4593
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
4594
+ );
4595
+ }
4592
4596
  function initializeModelChunk(chunk) {
4593
4597
  var prevHandler = initializingHandler;
4594
4598
  initializingHandler = null;
@@ -4602,13 +4606,15 @@
4602
4606
  chunk.value = null;
4603
4607
  chunk.reason = null;
4604
4608
  try {
4605
- var rawModel = JSON.parse(resolvedModel),
4606
- value = reviveModel(
4609
+ var rawModel = JSON.parse(resolvedModel);
4610
+ resolvedModel = { count: 0, fork: !1 };
4611
+ var value = reviveModel(
4607
4612
  response,
4608
4613
  { "": rawModel },
4609
4614
  "",
4610
4615
  rawModel,
4611
- _chunk$reason
4616
+ _chunk$reason,
4617
+ resolvedModel
4612
4618
  ),
4613
4619
  resolveListeners = chunk.value;
4614
4620
  if (null !== resolveListeners)
@@ -4620,19 +4626,20 @@
4620
4626
  var listener = resolveListeners[rawModel];
4621
4627
  "function" === typeof listener
4622
4628
  ? listener(value)
4623
- : fulfillReference(response, listener, value);
4629
+ : fulfillReference(response, listener, value, resolvedModel);
4624
4630
  }
4625
4631
  if (null !== initializingHandler) {
4626
4632
  if (initializingHandler.errored) throw initializingHandler.reason;
4627
4633
  if (0 < initializingHandler.deps) {
4628
4634
  initializingHandler.value = value;
4635
+ initializingHandler.reason = resolvedModel;
4629
4636
  initializingHandler.chunk = chunk;
4630
4637
  return;
4631
4638
  }
4632
4639
  }
4633
4640
  chunk.status = "fulfilled";
4634
4641
  chunk.value = value;
4635
- chunk.reason = null;
4642
+ chunk.reason = resolvedModel;
4636
4643
  } catch (error) {
4637
4644
  (chunk.status = "rejected"), (chunk.reason = error);
4638
4645
  } finally {
@@ -4647,7 +4654,8 @@
4647
4654
  ? triggerErrorOnChunk(response, chunk, error)
4648
4655
  : "fulfilled" === chunk.status &&
4649
4656
  null !== chunk.reason &&
4650
- chunk.reason.error(error);
4657
+ ((chunk = chunk.reason),
4658
+ "function" === typeof chunk.error && chunk.error(error));
4651
4659
  });
4652
4660
  }
4653
4661
  function getChunk(response, id) {
@@ -4668,40 +4676,74 @@
4668
4676
  chunks.set(id, chunk));
4669
4677
  return chunk;
4670
4678
  }
4671
- function fulfillReference(response, reference, value) {
4679
+ function fulfillReference(response, reference, value, arrayRoot) {
4672
4680
  var handler = reference.handler,
4673
4681
  parentObject = reference.parentObject,
4674
4682
  key = reference.key,
4675
4683
  map = reference.map,
4676
4684
  path = reference.path;
4677
4685
  try {
4678
- for (var i = 1; i < path.length; i++) {
4686
+ for (
4687
+ var localLength = 0,
4688
+ rootArrayContexts = response._rootArrayContexts,
4689
+ i = 1;
4690
+ i < path.length;
4691
+ i++
4692
+ ) {
4679
4693
  var name = path[i];
4680
4694
  if (
4681
4695
  "object" !== typeof value ||
4682
- !hasOwnProperty.call(value, name) ||
4683
- value instanceof Promise
4696
+ null === value ||
4697
+ (getPrototypeOf(value) !== ObjectPrototype &&
4698
+ getPrototypeOf(value) !== ArrayPrototype) ||
4699
+ !hasOwnProperty.call(value, name)
4684
4700
  )
4685
4701
  throw Error("Invalid reference.");
4686
4702
  value = value[name];
4703
+ if (isArrayImpl(value))
4704
+ (localLength = 0),
4705
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
4706
+ else if (((arrayRoot = null), "string" === typeof value))
4707
+ localLength = value.length;
4708
+ else if ("bigint" === typeof value) {
4709
+ var n = Math.abs(Number(value));
4710
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
4711
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
4687
4712
  }
4688
- var mappedValue = map(response, value, parentObject, key);
4689
- parentObject[key] = mappedValue;
4690
- "" === key && null === handler.value && (handler.value = mappedValue);
4713
+ var resolvedValue = map(response, value, parentObject, key);
4714
+ var referenceArrayRoot = reference.arrayRoot;
4715
+ null !== referenceArrayRoot &&
4716
+ (null !== arrayRoot
4717
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
4718
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
4719
+ : 0 < localLength &&
4720
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4691
4721
  } catch (error) {
4692
- rejectReference(response, reference.handler, error);
4722
+ rejectReference(response, handler, error);
4693
4723
  return;
4694
4724
  }
4725
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4726
+ }
4727
+ function resolveReference(
4728
+ response,
4729
+ handler,
4730
+ parentObject,
4731
+ key,
4732
+ resolvedValue
4733
+ ) {
4734
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
4735
+ "" === key && null === handler.value && (handler.value = resolvedValue);
4695
4736
  handler.deps--;
4696
4737
  0 === handler.deps &&
4697
- ((reference = handler.chunk),
4698
- null !== reference &&
4699
- "blocked" === reference.status &&
4700
- ((value = reference.value),
4701
- (reference.status = "fulfilled"),
4702
- (reference.value = handler.value),
4703
- (reference.reason = handler.reason),
4704
- null !== value && wakeChunk(response, value, handler.value)));
4738
+ ((parentObject = handler.chunk),
4739
+ null !== parentObject &&
4740
+ "blocked" === parentObject.status &&
4741
+ ((key = parentObject.value),
4742
+ (parentObject.status = "fulfilled"),
4743
+ (parentObject.value = handler.value),
4744
+ (parentObject.reason = handler.reason),
4745
+ null !== key &&
4746
+ wakeChunk(response, key, handler.value, parentObject)));
4705
4747
  }
4706
4748
  function rejectReference(response, handler, error) {
4707
4749
  handler.errored ||
@@ -4713,29 +4755,66 @@
4713
4755
  "blocked" === handler.status &&
4714
4756
  triggerErrorOnChunk(response, handler, error));
4715
4757
  }
4716
- function getOutlinedModel(response, reference, parentObject, key, map) {
4758
+ function getOutlinedModel(
4759
+ response,
4760
+ reference,
4761
+ parentObject,
4762
+ key,
4763
+ referenceArrayRoot,
4764
+ map
4765
+ ) {
4717
4766
  reference = reference.split(":");
4718
- var id = parseInt(reference[0], 16);
4719
- id = getChunk(response, id);
4720
- switch (id.status) {
4767
+ var id = parseInt(reference[0], 16),
4768
+ chunk = getChunk(response, id);
4769
+ switch (chunk.status) {
4721
4770
  case "resolved_model":
4722
- initializeModelChunk(id);
4771
+ initializeModelChunk(chunk);
4723
4772
  }
4724
- switch (id.status) {
4773
+ switch (chunk.status) {
4725
4774
  case "fulfilled":
4726
- id = id.value;
4727
- for (var i = 1; i < reference.length; i++) {
4728
- var name = reference[i];
4775
+ id = chunk.value;
4776
+ chunk = chunk.reason;
4777
+ for (
4778
+ var localLength = 0,
4779
+ rootArrayContexts = response._rootArrayContexts,
4780
+ i = 1;
4781
+ i < reference.length;
4782
+ i++
4783
+ ) {
4784
+ localLength = reference[i];
4729
4785
  if (
4730
4786
  "object" !== typeof id ||
4731
- !hasOwnProperty.call(id, name) ||
4732
- id instanceof Promise
4787
+ null === id ||
4788
+ (getPrototypeOf(id) !== ObjectPrototype &&
4789
+ getPrototypeOf(id) !== ArrayPrototype) ||
4790
+ !hasOwnProperty.call(id, localLength)
4733
4791
  )
4734
4792
  throw Error("Invalid reference.");
4735
- id = id[name];
4793
+ id = id[localLength];
4794
+ isArrayImpl(id)
4795
+ ? ((localLength = 0),
4796
+ (chunk = rootArrayContexts.get(id) || chunk))
4797
+ : ((chunk = null),
4798
+ "string" === typeof id
4799
+ ? (localLength = id.length)
4800
+ : "bigint" === typeof id
4801
+ ? ((localLength = Math.abs(Number(id))),
4802
+ (localLength =
4803
+ 0 === localLength
4804
+ ? 1
4805
+ : Math.floor(Math.log10(localLength)) + 1))
4806
+ : (localLength = ArrayBuffer.isView(id)
4807
+ ? id.byteLength
4808
+ : 0));
4736
4809
  }
4737
- return map(response, id, parentObject, key);
4738
- case "pending":
4810
+ parentObject = map(response, id, parentObject, key);
4811
+ null !== referenceArrayRoot &&
4812
+ (null !== chunk
4813
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
4814
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
4815
+ : 0 < localLength &&
4816
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4817
+ return parentObject;
4739
4818
  case "blocked":
4740
4819
  return (
4741
4820
  initializingHandler
@@ -4748,31 +4827,34 @@
4748
4827
  deps: 1,
4749
4828
  errored: !1
4750
4829
  }),
4751
- (parentObject = {
4830
+ (referenceArrayRoot = {
4752
4831
  handler: response,
4753
4832
  parentObject: parentObject,
4754
4833
  key: key,
4755
4834
  map: map,
4756
- path: reference
4835
+ path: reference,
4836
+ arrayRoot: referenceArrayRoot
4757
4837
  }),
4758
- null === id.value
4759
- ? (id.value = [parentObject])
4760
- : id.value.push(parentObject),
4761
- null === id.reason
4762
- ? (id.reason = [parentObject])
4763
- : id.reason.push(parentObject),
4838
+ null === chunk.value
4839
+ ? (chunk.value = [referenceArrayRoot])
4840
+ : chunk.value.push(referenceArrayRoot),
4841
+ null === chunk.reason
4842
+ ? (chunk.reason = [referenceArrayRoot])
4843
+ : chunk.reason.push(referenceArrayRoot),
4764
4844
  null
4765
4845
  );
4846
+ case "pending":
4847
+ throw Error("Invalid forward reference.");
4766
4848
  default:
4767
4849
  return (
4768
4850
  initializingHandler
4769
4851
  ? ((initializingHandler.errored = !0),
4770
4852
  (initializingHandler.value = null),
4771
- (initializingHandler.reason = id.reason))
4853
+ (initializingHandler.reason = chunk.reason))
4772
4854
  : (initializingHandler = {
4773
4855
  chunk: null,
4774
4856
  value: null,
4775
- reason: id.reason,
4857
+ reason: chunk.reason,
4776
4858
  deps: 0,
4777
4859
  errored: !0
4778
4860
  }),
@@ -4781,12 +4863,21 @@
4781
4863
  }
4782
4864
  }
4783
4865
  function createMap(response, model) {
4866
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4867
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4868
+ model.$$consumed = !0;
4784
4869
  return new Map(model);
4785
4870
  }
4786
4871
  function createSet(response, model) {
4872
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4873
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4874
+ model.$$consumed = !0;
4787
4875
  return new Set(model);
4788
4876
  }
4789
4877
  function extractIterator(response, model) {
4878
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4879
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4880
+ model.$$consumed = !0;
4790
4881
  return model[Symbol.iterator]();
4791
4882
  }
4792
4883
  function createModel(response, model, parentObject, key) {
@@ -4798,13 +4889,34 @@
4798
4889
  constructor,
4799
4890
  bytesPerElement,
4800
4891
  parentObject,
4801
- parentKey
4892
+ parentKey,
4893
+ referenceArrayRoot
4802
4894
  ) {
4895
+ function reject(error) {
4896
+ if (!handler.errored) {
4897
+ handler.errored = !0;
4898
+ handler.value = null;
4899
+ handler.reason = error;
4900
+ var chunk = handler.chunk;
4901
+ null !== chunk &&
4902
+ "blocked" === chunk.status &&
4903
+ triggerErrorOnChunk(response, chunk, error);
4904
+ }
4905
+ }
4803
4906
  reference = parseInt(reference.slice(2), 16);
4804
- bytesPerElement = response._prefix + reference;
4805
- if (response._chunks.has(reference))
4907
+ var key = response._prefix + reference;
4908
+ bytesPerElement = response._chunks;
4909
+ if (bytesPerElement.has(reference))
4806
4910
  throw Error("Already initialized typed array.");
4807
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4911
+ bytesPerElement.set(
4912
+ reference,
4913
+ new ReactPromise(
4914
+ "rejected",
4915
+ null,
4916
+ Error("Already initialized typed array.")
4917
+ )
4918
+ );
4919
+ reference = response._formData.get(key).arrayBuffer();
4808
4920
  if (initializingHandler) {
4809
4921
  var handler = initializingHandler;
4810
4922
  handler.deps++;
@@ -4816,40 +4928,32 @@
4816
4928
  deps: 1,
4817
4929
  errored: !1
4818
4930
  };
4819
- reference.then(
4820
- function (buffer) {
4821
- buffer =
4931
+ reference.then(function (buffer) {
4932
+ try {
4933
+ null !== referenceArrayRoot &&
4934
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4935
+ var resolvedValue =
4822
4936
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4823
- parentObject[parentKey] = buffer;
4937
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4824
4938
  "" === parentKey &&
4825
4939
  null === handler.value &&
4826
- (handler.value = buffer);
4827
- handler.deps--;
4828
- if (
4829
- 0 === handler.deps &&
4830
- ((buffer = handler.chunk),
4831
- null !== buffer && "blocked" === buffer.status)
4832
- ) {
4833
- var resolveListeners = buffer.value;
4834
- buffer.status = "fulfilled";
4835
- buffer.value = handler.value;
4836
- buffer.reason = null;
4837
- null !== resolveListeners &&
4838
- wakeChunk(response, resolveListeners, handler.value);
4839
- }
4840
- },
4841
- function (error) {
4842
- if (!handler.errored) {
4843
- handler.errored = !0;
4844
- handler.value = null;
4845
- handler.reason = error;
4846
- var chunk = handler.chunk;
4847
- null !== chunk &&
4848
- "blocked" === chunk.status &&
4849
- triggerErrorOnChunk(response, chunk, error);
4850
- }
4940
+ (handler.value = resolvedValue);
4941
+ } catch (x) {
4942
+ reject(x);
4943
+ return;
4851
4944
  }
4852
- );
4945
+ handler.deps--;
4946
+ 0 === handler.deps &&
4947
+ ((buffer = handler.chunk),
4948
+ null !== buffer &&
4949
+ "blocked" === buffer.status &&
4950
+ ((resolvedValue = buffer.value),
4951
+ (buffer.status = "fulfilled"),
4952
+ (buffer.value = handler.value),
4953
+ (buffer.reason = null),
4954
+ null !== resolvedValue &&
4955
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4956
+ }, reject);
4853
4957
  return null;
4854
4958
  }
4855
4959
  function resolveStream(response, id, stream, controller) {
@@ -4867,90 +4971,78 @@
4867
4971
  : controller.enqueueModel(chunks));
4868
4972
  }
4869
4973
  function parseReadableStream(response, reference, type) {
4974
+ function enqueue(value) {
4975
+ "bytes" !== type || ArrayBuffer.isView(value)
4976
+ ? controller.enqueue(value)
4977
+ : flightController.error(Error("Invalid data for bytes stream."));
4978
+ }
4870
4979
  reference = parseInt(reference.slice(2), 16);
4871
4980
  if (response._chunks.has(reference))
4872
4981
  throw Error("Already initialized stream.");
4873
4982
  var controller = null,
4874
- closed = !1;
4875
- type = new ReadableStream({
4876
- type: type,
4877
- start: function (c) {
4878
- controller = c;
4879
- }
4880
- });
4881
- var previousBlockedChunk = null;
4882
- resolveStream(response, reference, type, {
4883
- enqueueModel: function (json) {
4884
- if (null === previousBlockedChunk) {
4885
- var chunk = new ReactPromise(
4886
- "resolved_model",
4887
- json,
4888
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4889
- );
4890
- initializeModelChunk(chunk);
4891
- "fulfilled" === chunk.status
4892
- ? controller.enqueue(chunk.value)
4893
- : (chunk.then(
4894
- function (v) {
4895
- return controller.enqueue(v);
4896
- },
4897
- function (e) {
4898
- return controller.error(e);
4899
- }
4900
- ),
4901
- (previousBlockedChunk = chunk));
4902
- } else {
4903
- chunk = previousBlockedChunk;
4904
- var _chunk = new ReactPromise("pending", null, null);
4905
- _chunk.then(
4906
- function (v) {
4907
- return controller.enqueue(v);
4908
- },
4909
- function (e) {
4910
- return controller.error(e);
4911
- }
4912
- );
4913
- previousBlockedChunk = _chunk;
4914
- chunk.then(function () {
4915
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
4916
- resolveModelChunk(response, _chunk, json, -1);
4917
- });
4983
+ closed = !1,
4984
+ stream = new ReadableStream({
4985
+ type: type,
4986
+ start: function (c) {
4987
+ controller = c;
4918
4988
  }
4919
- },
4920
- close: function () {
4921
- if (!closed)
4922
- if (((closed = !0), null === previousBlockedChunk))
4923
- controller.close();
4924
- else {
4925
- var blockedChunk = previousBlockedChunk;
4926
- previousBlockedChunk = null;
4927
- blockedChunk.then(function () {
4928
- return controller.close();
4929
- });
4930
- }
4931
- },
4932
- error: function (error) {
4933
- if (!closed)
4934
- if (((closed = !0), null === previousBlockedChunk))
4935
- controller.error(error);
4936
- else {
4937
- var blockedChunk = previousBlockedChunk;
4938
- previousBlockedChunk = null;
4939
- blockedChunk.then(function () {
4940
- return controller.error(error);
4989
+ }),
4990
+ previousBlockedChunk = null,
4991
+ flightController = {
4992
+ enqueueModel: function (json) {
4993
+ if (null === previousBlockedChunk) {
4994
+ var chunk = new ReactPromise(
4995
+ "resolved_model",
4996
+ json,
4997
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4998
+ );
4999
+ initializeModelChunk(chunk);
5000
+ "fulfilled" === chunk.status
5001
+ ? enqueue(chunk.value)
5002
+ : (chunk.then(enqueue, flightController.error),
5003
+ (previousBlockedChunk = chunk));
5004
+ } else {
5005
+ chunk = previousBlockedChunk;
5006
+ var _chunk = new ReactPromise("pending", null, null);
5007
+ _chunk.then(enqueue, flightController.error);
5008
+ previousBlockedChunk = _chunk;
5009
+ chunk.then(function () {
5010
+ previousBlockedChunk === _chunk &&
5011
+ (previousBlockedChunk = null);
5012
+ resolveModelChunk(response, _chunk, json, -1);
4941
5013
  });
4942
5014
  }
4943
- }
4944
- });
4945
- return type;
4946
- }
4947
- function asyncIterator() {
4948
- return this;
5015
+ },
5016
+ close: function () {
5017
+ if (!closed)
5018
+ if (((closed = !0), null === previousBlockedChunk))
5019
+ controller.close();
5020
+ else {
5021
+ var blockedChunk = previousBlockedChunk;
5022
+ previousBlockedChunk = null;
5023
+ blockedChunk.then(function () {
5024
+ return controller.close();
5025
+ });
5026
+ }
5027
+ },
5028
+ error: function (error) {
5029
+ if (!closed)
5030
+ if (((closed = !0), null === previousBlockedChunk))
5031
+ controller.error(error);
5032
+ else {
5033
+ var blockedChunk = previousBlockedChunk;
5034
+ previousBlockedChunk = null;
5035
+ blockedChunk.then(function () {
5036
+ return controller.error(error);
5037
+ });
5038
+ }
5039
+ }
5040
+ };
5041
+ resolveStream(response, reference, stream, flightController);
5042
+ return stream;
4949
5043
  }
4950
- function createIterator(next) {
4951
- next = { next: next };
4952
- next[ASYNC_ITERATOR] = asyncIterator;
4953
- return next;
5044
+ function FlightIterator(next) {
5045
+ this.next = next;
4954
5046
  }
4955
5047
  function parseAsyncIterable(response, reference, iterator) {
4956
5048
  reference = parseInt(reference.slice(2), 16);
@@ -4961,7 +5053,7 @@
4961
5053
  nextWriteIndex = 0,
4962
5054
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4963
5055
  var nextReadIndex = 0;
4964
- return createIterator(function (arg) {
5056
+ return new FlightIterator(function (arg) {
4965
5057
  if (void 0 !== arg)
4966
5058
  throw Error(
4967
5059
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -5040,19 +5132,30 @@
5040
5132
  });
5041
5133
  return iterator;
5042
5134
  }
5043
- function parseModelString(response, obj, key, value, reference) {
5135
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
5044
5136
  if ("$" === value[0]) {
5045
5137
  switch (value[1]) {
5046
5138
  case "$":
5047
- return value.slice(1);
5139
+ return (
5140
+ null !== arrayRoot &&
5141
+ bumpArrayCount(arrayRoot, value.length - 1, response),
5142
+ value.slice(1)
5143
+ );
5048
5144
  case "@":
5049
5145
  return (
5050
5146
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
5051
5147
  );
5052
5148
  case "h":
5053
5149
  return (
5054
- (value = value.slice(2)),
5055
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
5150
+ (arrayRoot = value.slice(2)),
5151
+ getOutlinedModel(
5152
+ response,
5153
+ arrayRoot,
5154
+ obj,
5155
+ key,
5156
+ null,
5157
+ loadServerReference$1
5158
+ )
5056
5159
  );
5057
5160
  case "T":
5058
5161
  if (
@@ -5068,27 +5171,44 @@
5068
5171
  );
5069
5172
  case "Q":
5070
5173
  return (
5071
- (value = value.slice(2)),
5072
- getOutlinedModel(response, value, obj, key, createMap)
5174
+ (arrayRoot = value.slice(2)),
5175
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
5073
5176
  );
5074
5177
  case "W":
5075
5178
  return (
5076
- (value = value.slice(2)),
5077
- getOutlinedModel(response, value, obj, key, createSet)
5179
+ (arrayRoot = value.slice(2)),
5180
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
5078
5181
  );
5079
5182
  case "K":
5080
5183
  obj = value.slice(2);
5081
- var formPrefix = response._prefix + obj + "_",
5082
- data = new FormData();
5083
- response._formData.forEach(function (entry, entryKey) {
5084
- entryKey.startsWith(formPrefix) &&
5085
- data.append(entryKey.slice(formPrefix.length), entry);
5086
- });
5087
- return data;
5184
+ obj = response._prefix + obj + "_";
5185
+ key = new FormData();
5186
+ response = response._formData;
5187
+ arrayRoot = Array.from(response.keys());
5188
+ for (value = 0; value < arrayRoot.length; value++)
5189
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
5190
+ for (
5191
+ var entries = response.getAll(reference),
5192
+ newKey = reference.slice(obj.length),
5193
+ j = 0;
5194
+ j < entries.length;
5195
+ j++
5196
+ )
5197
+ key.append(newKey, entries[j]);
5198
+ response.delete(reference);
5199
+ }
5200
+ return key;
5088
5201
  case "i":
5089
5202
  return (
5090
- (value = value.slice(2)),
5091
- getOutlinedModel(response, value, obj, key, extractIterator)
5203
+ (arrayRoot = value.slice(2)),
5204
+ getOutlinedModel(
5205
+ response,
5206
+ arrayRoot,
5207
+ obj,
5208
+ key,
5209
+ null,
5210
+ extractIterator
5211
+ )
5092
5212
  );
5093
5213
  case "I":
5094
5214
  return Infinity;
@@ -5101,15 +5221,48 @@
5101
5221
  case "D":
5102
5222
  return new Date(Date.parse(value.slice(2)));
5103
5223
  case "n":
5104
- return BigInt(value.slice(2));
5105
- }
5106
- switch (value[1]) {
5224
+ obj = value.slice(2);
5225
+ if (obj.length > MAX_BIGINT_DIGITS)
5226
+ throw Error(
5227
+ "BigInt is too large. Received " +
5228
+ obj.length +
5229
+ " digits but the limit is " +
5230
+ MAX_BIGINT_DIGITS +
5231
+ "."
5232
+ );
5233
+ null !== arrayRoot &&
5234
+ bumpArrayCount(arrayRoot, obj.length, response);
5235
+ return BigInt(obj);
5107
5236
  case "A":
5108
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
5237
+ return parseTypedArray(
5238
+ response,
5239
+ value,
5240
+ ArrayBuffer,
5241
+ 1,
5242
+ obj,
5243
+ key,
5244
+ arrayRoot
5245
+ );
5109
5246
  case "O":
5110
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
5247
+ return parseTypedArray(
5248
+ response,
5249
+ value,
5250
+ Int8Array,
5251
+ 1,
5252
+ obj,
5253
+ key,
5254
+ arrayRoot
5255
+ );
5111
5256
  case "o":
5112
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
5257
+ return parseTypedArray(
5258
+ response,
5259
+ value,
5260
+ Uint8Array,
5261
+ 1,
5262
+ obj,
5263
+ key,
5264
+ arrayRoot
5265
+ );
5113
5266
  case "U":
5114
5267
  return parseTypedArray(
5115
5268
  response,
@@ -5117,22 +5270,79 @@
5117
5270
  Uint8ClampedArray,
5118
5271
  1,
5119
5272
  obj,
5120
- key
5273
+ key,
5274
+ arrayRoot
5121
5275
  );
5122
5276
  case "S":
5123
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
5277
+ return parseTypedArray(
5278
+ response,
5279
+ value,
5280
+ Int16Array,
5281
+ 2,
5282
+ obj,
5283
+ key,
5284
+ arrayRoot
5285
+ );
5124
5286
  case "s":
5125
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
5287
+ return parseTypedArray(
5288
+ response,
5289
+ value,
5290
+ Uint16Array,
5291
+ 2,
5292
+ obj,
5293
+ key,
5294
+ arrayRoot
5295
+ );
5126
5296
  case "L":
5127
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
5297
+ return parseTypedArray(
5298
+ response,
5299
+ value,
5300
+ Int32Array,
5301
+ 4,
5302
+ obj,
5303
+ key,
5304
+ arrayRoot
5305
+ );
5128
5306
  case "l":
5129
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
5307
+ return parseTypedArray(
5308
+ response,
5309
+ value,
5310
+ Uint32Array,
5311
+ 4,
5312
+ obj,
5313
+ key,
5314
+ arrayRoot
5315
+ );
5130
5316
  case "G":
5131
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
5317
+ return parseTypedArray(
5318
+ response,
5319
+ value,
5320
+ Float32Array,
5321
+ 4,
5322
+ obj,
5323
+ key,
5324
+ arrayRoot
5325
+ );
5132
5326
  case "g":
5133
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
5327
+ return parseTypedArray(
5328
+ response,
5329
+ value,
5330
+ Float64Array,
5331
+ 8,
5332
+ obj,
5333
+ key,
5334
+ arrayRoot
5335
+ );
5134
5336
  case "M":
5135
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
5337
+ return parseTypedArray(
5338
+ response,
5339
+ value,
5340
+ BigInt64Array,
5341
+ 8,
5342
+ obj,
5343
+ key,
5344
+ arrayRoot
5345
+ );
5136
5346
  case "m":
5137
5347
  return parseTypedArray(
5138
5348
  response,
@@ -5140,17 +5350,24 @@
5140
5350
  BigUint64Array,
5141
5351
  8,
5142
5352
  obj,
5143
- key
5353
+ key,
5354
+ arrayRoot
5144
5355
  );
5145
5356
  case "V":
5146
- return parseTypedArray(response, value, DataView, 1, obj, key);
5357
+ return parseTypedArray(
5358
+ response,
5359
+ value,
5360
+ DataView,
5361
+ 1,
5362
+ obj,
5363
+ key,
5364
+ arrayRoot
5365
+ );
5147
5366
  case "B":
5148
5367
  return (
5149
5368
  (obj = parseInt(value.slice(2), 16)),
5150
5369
  response._formData.get(response._prefix + obj)
5151
5370
  );
5152
- }
5153
- switch (value[1]) {
5154
5371
  case "R":
5155
5372
  return parseReadableStream(response, value, void 0);
5156
5373
  case "r":
@@ -5161,8 +5378,16 @@
5161
5378
  return parseAsyncIterable(response, value, !0);
5162
5379
  }
5163
5380
  value = value.slice(1);
5164
- return getOutlinedModel(response, value, obj, key, createModel);
5381
+ return getOutlinedModel(
5382
+ response,
5383
+ value,
5384
+ obj,
5385
+ key,
5386
+ arrayRoot,
5387
+ createModel
5388
+ );
5165
5389
  }
5390
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
5166
5391
  return value;
5167
5392
  }
5168
5393
  function createResponse(
@@ -5174,6 +5399,8 @@
5174
5399
  3 < arguments.length && void 0 !== arguments[3]
5175
5400
  ? arguments[3]
5176
5401
  : new FormData(),
5402
+ arraySizeLimit =
5403
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
5177
5404
  chunks = new Map();
5178
5405
  return {
5179
5406
  _bundlerConfig: bundlerConfig,
@@ -5182,7 +5409,9 @@
5182
5409
  _chunks: chunks,
5183
5410
  _closed: !1,
5184
5411
  _closedReason: null,
5185
- _temporaryReferences: temporaryReferences
5412
+ _temporaryReferences: temporaryReferences,
5413
+ _rootArrayContexts: new WeakMap(),
5414
+ _arraySizeLimit: arraySizeLimit
5186
5415
  };
5187
5416
  }
5188
5417
  function resolveField(response, key, value) {
@@ -5198,13 +5427,24 @@
5198
5427
  function close(response) {
5199
5428
  reportGlobalError(response, Error("Connection closed."));
5200
5429
  }
5201
- function loadServerReference(bundlerConfig, id, bound) {
5430
+ function loadServerReference(bundlerConfig, metaData) {
5431
+ var id = metaData.id;
5432
+ if ("string" !== typeof id) return null;
5202
5433
  var serverReference = resolveServerReference(bundlerConfig, id);
5203
5434
  bundlerConfig = preloadModule(serverReference);
5204
- return bound
5205
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
5435
+ metaData = metaData.bound;
5436
+ return metaData instanceof Promise
5437
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
5206
5438
  _ref = _ref[0];
5207
5439
  var fn = requireModule(serverReference);
5440
+ if (_ref.length > MAX_BOUND_ARGS)
5441
+ throw Error(
5442
+ "Server Function has too many bound arguments. Received " +
5443
+ _ref.length +
5444
+ " but the limit is " +
5445
+ MAX_BOUND_ARGS +
5446
+ "."
5447
+ );
5208
5448
  return fn.bind.apply(fn, [null].concat(_ref));
5209
5449
  })
5210
5450
  : bundlerConfig
@@ -5213,8 +5453,19 @@
5213
5453
  })
5214
5454
  : Promise.resolve(requireModule(serverReference));
5215
5455
  }
5216
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
5217
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
5456
+ function decodeBoundActionMetaData(
5457
+ body,
5458
+ serverManifest,
5459
+ formFieldPrefix,
5460
+ arraySizeLimit
5461
+ ) {
5462
+ body = createResponse(
5463
+ serverManifest,
5464
+ formFieldPrefix,
5465
+ void 0,
5466
+ body,
5467
+ arraySizeLimit
5468
+ );
5218
5469
  close(body);
5219
5470
  body = getChunk(body, 0);
5220
5471
  body.then(function () {});
@@ -5937,7 +6188,7 @@
5937
6188
  patchConsole(console, "table"),
5938
6189
  patchConsole(console, "trace"),
5939
6190
  patchConsole(console, "warn"));
5940
- var ObjectPrototype = Object.prototype,
6191
+ var ObjectPrototype$1 = Object.prototype,
5941
6192
  stringify = JSON.stringify,
5942
6193
  ABORTING = 12,
5943
6194
  CLOSED = 14,
@@ -5965,16 +6216,23 @@
5965
6216
  case "fulfilled":
5966
6217
  if ("function" === typeof resolve) {
5967
6218
  for (
5968
- var inspectedValue = this.value, cycleProtection = 0;
6219
+ var inspectedValue = this.value,
6220
+ cycleProtection = 0,
6221
+ visited = new Set();
5969
6222
  inspectedValue instanceof ReactPromise;
5970
6223
 
5971
6224
  ) {
5972
6225
  cycleProtection++;
5973
- if (inspectedValue === this || 1e3 < cycleProtection) {
6226
+ if (
6227
+ inspectedValue === this ||
6228
+ visited.has(inspectedValue) ||
6229
+ 1e3 < cycleProtection
6230
+ ) {
5974
6231
  "function" === typeof reject &&
5975
6232
  reject(Error("Cannot have cyclic thenables."));
5976
6233
  return;
5977
6234
  }
6235
+ visited.add(inspectedValue);
5978
6236
  if ("fulfilled" === inspectedValue.status)
5979
6237
  inspectedValue = inspectedValue.value;
5980
6238
  else break;
@@ -5995,7 +6253,15 @@
5995
6253
  "function" === typeof reject && reject(this.reason);
5996
6254
  }
5997
6255
  };
5998
- var initializingHandler = null;
6256
+ var ObjectPrototype = Object.prototype,
6257
+ ArrayPrototype = Array.prototype,
6258
+ initializingHandler = null;
6259
+ FlightIterator.prototype = {};
6260
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
6261
+ return this;
6262
+ };
6263
+ var MAX_BIGINT_DIGITS = 300,
6264
+ MAX_BOUND_ARGS = 1e3;
5999
6265
  exports.createClientModuleProxy = function (moduleId) {
6000
6266
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
6001
6267
  return new Proxy(moduleId, proxyHandlers$1);
@@ -6005,20 +6271,24 @@
6005
6271
  };
6006
6272
  exports.decodeAction = function (body, serverManifest) {
6007
6273
  var formData = new FormData(),
6008
- action = null;
6274
+ action = null,
6275
+ seenActions = new Set();
6009
6276
  body.forEach(function (value, key) {
6010
6277
  key.startsWith("$ACTION_")
6011
6278
  ? key.startsWith("$ACTION_REF_")
6012
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
6279
+ ? seenActions.has(key) ||
6280
+ (seenActions.add(key),
6281
+ (value = "$ACTION_" + key.slice(12) + ":"),
6013
6282
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
6014
- (action = loadServerReference(
6015
- serverManifest,
6016
- value.id,
6017
- value.bound
6018
- )))
6283
+ (action = loadServerReference(serverManifest, value)))
6019
6284
  : key.startsWith("$ACTION_ID_") &&
6020
- ((value = key.slice(11)),
6021
- (action = loadServerReference(serverManifest, value, null)))
6285
+ !seenActions.has(key) &&
6286
+ (seenActions.add(key),
6287
+ (value = key.slice(11)),
6288
+ (action = loadServerReference(serverManifest, {
6289
+ id: value,
6290
+ bound: null
6291
+ })))
6022
6292
  : formData.append(key, value);
6023
6293
  });
6024
6294
  return null === action
@@ -6054,7 +6324,8 @@
6054
6324
  turbopackMap,
6055
6325
  "",
6056
6326
  options ? options.temporaryReferences : void 0,
6057
- body
6327
+ body,
6328
+ options ? options.arraySizeLimit : void 0
6058
6329
  );
6059
6330
  turbopackMap = getChunk(body, 0);
6060
6331
  close(body);
@@ -6086,7 +6357,9 @@
6086
6357
  response = createResponse(
6087
6358
  turbopackMap,
6088
6359
  "",
6089
- options ? options.temporaryReferences : void 0
6360
+ options ? options.temporaryReferences : void 0,
6361
+ void 0,
6362
+ options ? options.arraySizeLimit : void 0
6090
6363
  );
6091
6364
  iterator.next().then(progress, error);
6092
6365
  return getChunk(response, 0);
@@ -6099,7 +6372,9 @@
6099
6372
  var response = createResponse(
6100
6373
  turbopackMap,
6101
6374
  "",
6102
- options ? options.temporaryReferences : void 0
6375
+ options ? options.temporaryReferences : void 0,
6376
+ void 0,
6377
+ options ? options.arraySizeLimit : void 0
6103
6378
  ),
6104
6379
  pendingFiles = 0,
6105
6380
  queuedFields = [];
@@ -6123,13 +6398,13 @@
6123
6398
  );
6124
6399
  else {
6125
6400
  pendingFiles++;
6126
- var JSCompiler_object_inline_chunks_263 = [];
6401
+ var JSCompiler_object_inline_chunks_258 = [];
6127
6402
  value.on("data", function (chunk) {
6128
- JSCompiler_object_inline_chunks_263.push(chunk);
6403
+ JSCompiler_object_inline_chunks_258.push(chunk);
6129
6404
  });
6130
6405
  value.on("end", function () {
6131
6406
  try {
6132
- var blob = new Blob(JSCompiler_object_inline_chunks_263, {
6407
+ var blob = new Blob(JSCompiler_object_inline_chunks_258, {
6133
6408
  type: mimeType
6134
6409
  });
6135
6410
  response._formData.append(name, blob, filename);