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