@vitejs/plugin-rsc 0.5.16 → 0.5.18

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.
Files changed (55) hide show
  1. package/dist/browser.d.ts +2 -2
  2. package/dist/{cjs-DH9Oa3zy.js → cjs-D2v1gYgq.js} +33 -24
  3. package/dist/core/browser.d.ts +1 -1
  4. package/dist/core/browser.js +2 -2
  5. package/dist/core/plugin.js +1 -1
  6. package/dist/core/rsc.d.ts +1 -1
  7. package/dist/core/rsc.js +1 -1
  8. package/dist/core/ssr.d.ts +1 -1
  9. package/dist/core/ssr.js +2 -2
  10. package/dist/{dist-DZUJDIM2.js → dist-yW9-EeG1.js} +1 -1
  11. package/dist/index-CLmWsR1c.d.ts +584 -0
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.js +4 -4
  14. package/dist/{picocolors-kt7Y18A3.js → picocolors-BRyoHAlU.js} +1 -1
  15. package/dist/plugin-BGmSmdwL.js +27 -0
  16. package/dist/{plugin-DBWiu_Dx.js → plugin-Cp12dr0Z.js} +408 -329
  17. package/dist/{plugin-V6VFxi_0.d.ts → plugin-K7i9F4Fd.d.ts} +6 -12
  18. package/dist/plugin.d.ts +2 -2
  19. package/dist/plugin.js +4 -4
  20. package/dist/plugins/cjs.js +1 -1
  21. package/dist/react/browser.d.ts +2 -2
  22. package/dist/react/rsc.js +1 -1
  23. package/dist/{rsc-BCFg12vs.js → rsc-Bhp6O2qz.js} +3 -3
  24. package/dist/rsc.d.ts +2 -2
  25. package/dist/rsc.js +2 -2
  26. package/dist/ssr.d.ts +2 -3
  27. package/dist/ssr.js +1 -1
  28. package/dist/transforms/index.d.ts +1 -1
  29. package/dist/transforms/index.js +1 -1
  30. package/dist/{transforms-D4jDIHgD.js → transforms-B2EJTNXG.js} +2 -2
  31. package/dist/utils/encryption-runtime.js +3 -3
  32. package/dist/utils/rpc.js +1 -1
  33. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.browser.development.js +129 -110
  34. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.browser.production.js +67 -55
  35. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.edge.development.js +127 -108
  36. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.edge.production.js +67 -55
  37. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.node.development.js +127 -108
  38. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.node.production.js +67 -55
  39. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.browser.development.js +625 -351
  40. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.browser.production.js +598 -314
  41. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.edge.development.js +628 -352
  42. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.edge.production.js +601 -315
  43. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.node.development.js +634 -356
  44. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.node.production.js +607 -319
  45. package/dist/vendor/react-server-dom/package.json +3 -3
  46. package/package.json +10 -8
  47. package/dist/index-DJ0AhQ9B.d.ts +0 -90
  48. package/dist/plugin-B1AJWrMi.js +0 -24
  49. /package/dist/{browser-BmyjVnfA.d.ts → browser-s-WcB8A7.d.ts} +0 -0
  50. /package/dist/{chunk-BFhhoFQb.js → chunk-Dj_d7TT4.js} +0 -0
  51. /package/dist/{encryption-utils-BPYvebX4.js → encryption-utils-DdqSKS_O.js} +0 -0
  52. /package/dist/{index-DqoQPvhP.d.ts → index-now_lP2V.d.ts} +0 -0
  53. /package/dist/{rpc-DbBe389F.js → rpc-EIuXyQpO.js} +0 -0
  54. /package/dist/{shared-Chot7h9j.js → shared-CGK4coF3.js} +0 -0
  55. /package/dist/{shared-DEpnONZf.js → shared-rtJPs0Yj.js} +0 -0
@@ -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,13 +4866,25 @@
4784
4866
  }
4785
4867
  }
4786
4868
  function createMap(response, model) {
4787
- return new Map(model);
4869
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4870
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4871
+ response = new Map(model);
4872
+ model.$$consumed = !0;
4873
+ return response;
4788
4874
  }
4789
4875
  function createSet(response, model) {
4790
- return new Set(model);
4876
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4877
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4878
+ response = new Set(model);
4879
+ model.$$consumed = !0;
4880
+ return response;
4791
4881
  }
4792
4882
  function extractIterator(response, model) {
4793
- return model[Symbol.iterator]();
4883
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4884
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4885
+ response = model[Symbol.iterator]();
4886
+ model.$$consumed = !0;
4887
+ return response;
4794
4888
  }
4795
4889
  function createModel(response, model, parentObject, key) {
4796
4890
  return "then" === key && "function" === typeof model ? null : model;
@@ -4801,13 +4895,34 @@
4801
4895
  constructor,
4802
4896
  bytesPerElement,
4803
4897
  parentObject,
4804
- parentKey
4898
+ parentKey,
4899
+ referenceArrayRoot
4805
4900
  ) {
4901
+ function reject(error) {
4902
+ if (!handler.errored) {
4903
+ handler.errored = !0;
4904
+ handler.value = null;
4905
+ handler.reason = error;
4906
+ var chunk = handler.chunk;
4907
+ null !== chunk &&
4908
+ "blocked" === chunk.status &&
4909
+ triggerErrorOnChunk(response, chunk, error);
4910
+ }
4911
+ }
4806
4912
  reference = parseInt(reference.slice(2), 16);
4807
- bytesPerElement = response._prefix + reference;
4808
- if (response._chunks.has(reference))
4913
+ var key = response._prefix + reference;
4914
+ bytesPerElement = response._chunks;
4915
+ if (bytesPerElement.has(reference))
4809
4916
  throw Error("Already initialized typed array.");
4810
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4917
+ bytesPerElement.set(
4918
+ reference,
4919
+ new ReactPromise(
4920
+ "rejected",
4921
+ null,
4922
+ Error("Already initialized typed array.")
4923
+ )
4924
+ );
4925
+ reference = response._formData.get(key).arrayBuffer();
4811
4926
  if (initializingHandler) {
4812
4927
  var handler = initializingHandler;
4813
4928
  handler.deps++;
@@ -4819,40 +4934,32 @@
4819
4934
  deps: 1,
4820
4935
  errored: !1
4821
4936
  };
4822
- reference.then(
4823
- function (buffer) {
4824
- buffer =
4937
+ reference.then(function (buffer) {
4938
+ try {
4939
+ null !== referenceArrayRoot &&
4940
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4941
+ var resolvedValue =
4825
4942
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4826
- parentObject[parentKey] = buffer;
4943
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4827
4944
  "" === parentKey &&
4828
4945
  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
- }
4946
+ (handler.value = resolvedValue);
4947
+ } catch (x) {
4948
+ reject(x);
4949
+ return;
4854
4950
  }
4855
- );
4951
+ handler.deps--;
4952
+ 0 === handler.deps &&
4953
+ ((buffer = handler.chunk),
4954
+ null !== buffer &&
4955
+ "blocked" === buffer.status &&
4956
+ ((resolvedValue = buffer.value),
4957
+ (buffer.status = "fulfilled"),
4958
+ (buffer.value = handler.value),
4959
+ (buffer.reason = null),
4960
+ null !== resolvedValue &&
4961
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4962
+ }, reject);
4856
4963
  return null;
4857
4964
  }
4858
4965
  function resolveStream(response, id, stream, controller) {
@@ -4870,90 +4977,78 @@
4870
4977
  : controller.enqueueModel(chunks));
4871
4978
  }
4872
4979
  function parseReadableStream(response, reference, type) {
4980
+ function enqueue(value) {
4981
+ "bytes" !== type || ArrayBuffer.isView(value)
4982
+ ? controller.enqueue(value)
4983
+ : flightController.error(Error("Invalid data for bytes stream."));
4984
+ }
4873
4985
  reference = parseInt(reference.slice(2), 16);
4874
4986
  if (response._chunks.has(reference))
4875
4987
  throw Error("Already initialized stream.");
4876
4988
  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
- });
4989
+ closed = !1,
4990
+ stream = new ReadableStream({
4991
+ type: type,
4992
+ start: function (c) {
4993
+ controller = c;
4921
4994
  }
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);
4995
+ }),
4996
+ previousBlockedChunk = null,
4997
+ flightController = {
4998
+ enqueueModel: function (json) {
4999
+ if (null === previousBlockedChunk) {
5000
+ var chunk = new ReactPromise(
5001
+ "resolved_model",
5002
+ json,
5003
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
5004
+ );
5005
+ initializeModelChunk(chunk);
5006
+ "fulfilled" === chunk.status
5007
+ ? enqueue(chunk.value)
5008
+ : (chunk.then(enqueue, flightController.error),
5009
+ (previousBlockedChunk = chunk));
5010
+ } else {
5011
+ chunk = previousBlockedChunk;
5012
+ var _chunk = new ReactPromise("pending", null, null);
5013
+ _chunk.then(enqueue, flightController.error);
5014
+ previousBlockedChunk = _chunk;
5015
+ chunk.then(function () {
5016
+ previousBlockedChunk === _chunk &&
5017
+ (previousBlockedChunk = null);
5018
+ resolveModelChunk(response, _chunk, json, -1);
4944
5019
  });
4945
5020
  }
4946
- }
4947
- });
4948
- return type;
4949
- }
4950
- function asyncIterator() {
4951
- return this;
5021
+ },
5022
+ close: function () {
5023
+ if (!closed)
5024
+ if (((closed = !0), null === previousBlockedChunk))
5025
+ controller.close();
5026
+ else {
5027
+ var blockedChunk = previousBlockedChunk;
5028
+ previousBlockedChunk = null;
5029
+ blockedChunk.then(function () {
5030
+ return controller.close();
5031
+ });
5032
+ }
5033
+ },
5034
+ error: function (error) {
5035
+ if (!closed)
5036
+ if (((closed = !0), null === previousBlockedChunk))
5037
+ controller.error(error);
5038
+ else {
5039
+ var blockedChunk = previousBlockedChunk;
5040
+ previousBlockedChunk = null;
5041
+ blockedChunk.then(function () {
5042
+ return controller.error(error);
5043
+ });
5044
+ }
5045
+ }
5046
+ };
5047
+ resolveStream(response, reference, stream, flightController);
5048
+ return stream;
4952
5049
  }
4953
- function createIterator(next) {
4954
- next = { next: next };
4955
- next[ASYNC_ITERATOR] = asyncIterator;
4956
- return next;
5050
+ function FlightIterator(next) {
5051
+ this.next = next;
4957
5052
  }
4958
5053
  function parseAsyncIterable(response, reference, iterator) {
4959
5054
  reference = parseInt(reference.slice(2), 16);
@@ -4964,7 +5059,7 @@
4964
5059
  nextWriteIndex = 0,
4965
5060
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4966
5061
  var nextReadIndex = 0;
4967
- return createIterator(function (arg) {
5062
+ return new FlightIterator(function (arg) {
4968
5063
  if (void 0 !== arg)
4969
5064
  throw Error(
4970
5065
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -5043,19 +5138,30 @@
5043
5138
  });
5044
5139
  return iterator;
5045
5140
  }
5046
- function parseModelString(response, obj, key, value, reference) {
5141
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
5047
5142
  if ("$" === value[0]) {
5048
5143
  switch (value[1]) {
5049
5144
  case "$":
5050
- return value.slice(1);
5145
+ return (
5146
+ null !== arrayRoot &&
5147
+ bumpArrayCount(arrayRoot, value.length - 1, response),
5148
+ value.slice(1)
5149
+ );
5051
5150
  case "@":
5052
5151
  return (
5053
5152
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
5054
5153
  );
5055
5154
  case "h":
5056
5155
  return (
5057
- (value = value.slice(2)),
5058
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
5156
+ (arrayRoot = value.slice(2)),
5157
+ getOutlinedModel(
5158
+ response,
5159
+ arrayRoot,
5160
+ obj,
5161
+ key,
5162
+ null,
5163
+ loadServerReference$1
5164
+ )
5059
5165
  );
5060
5166
  case "T":
5061
5167
  if (
@@ -5071,27 +5177,44 @@
5071
5177
  );
5072
5178
  case "Q":
5073
5179
  return (
5074
- (value = value.slice(2)),
5075
- getOutlinedModel(response, value, obj, key, createMap)
5180
+ (arrayRoot = value.slice(2)),
5181
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
5076
5182
  );
5077
5183
  case "W":
5078
5184
  return (
5079
- (value = value.slice(2)),
5080
- getOutlinedModel(response, value, obj, key, createSet)
5185
+ (arrayRoot = value.slice(2)),
5186
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
5081
5187
  );
5082
5188
  case "K":
5083
5189
  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;
5190
+ obj = response._prefix + obj + "_";
5191
+ key = new FormData();
5192
+ response = response._formData;
5193
+ arrayRoot = Array.from(response.keys());
5194
+ for (value = 0; value < arrayRoot.length; value++)
5195
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
5196
+ for (
5197
+ var entries = response.getAll(reference),
5198
+ newKey = reference.slice(obj.length),
5199
+ j = 0;
5200
+ j < entries.length;
5201
+ j++
5202
+ )
5203
+ key.append(newKey, entries[j]);
5204
+ response.delete(reference);
5205
+ }
5206
+ return key;
5091
5207
  case "i":
5092
5208
  return (
5093
- (value = value.slice(2)),
5094
- getOutlinedModel(response, value, obj, key, extractIterator)
5209
+ (arrayRoot = value.slice(2)),
5210
+ getOutlinedModel(
5211
+ response,
5212
+ arrayRoot,
5213
+ obj,
5214
+ key,
5215
+ null,
5216
+ extractIterator
5217
+ )
5095
5218
  );
5096
5219
  case "I":
5097
5220
  return Infinity;
@@ -5104,15 +5227,48 @@
5104
5227
  case "D":
5105
5228
  return new Date(Date.parse(value.slice(2)));
5106
5229
  case "n":
5107
- return BigInt(value.slice(2));
5108
- }
5109
- switch (value[1]) {
5230
+ obj = value.slice(2);
5231
+ if (obj.length > MAX_BIGINT_DIGITS)
5232
+ throw Error(
5233
+ "BigInt is too large. Received " +
5234
+ obj.length +
5235
+ " digits but the limit is " +
5236
+ MAX_BIGINT_DIGITS +
5237
+ "."
5238
+ );
5239
+ null !== arrayRoot &&
5240
+ bumpArrayCount(arrayRoot, obj.length, response);
5241
+ return BigInt(obj);
5110
5242
  case "A":
5111
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
5243
+ return parseTypedArray(
5244
+ response,
5245
+ value,
5246
+ ArrayBuffer,
5247
+ 1,
5248
+ obj,
5249
+ key,
5250
+ arrayRoot
5251
+ );
5112
5252
  case "O":
5113
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
5253
+ return parseTypedArray(
5254
+ response,
5255
+ value,
5256
+ Int8Array,
5257
+ 1,
5258
+ obj,
5259
+ key,
5260
+ arrayRoot
5261
+ );
5114
5262
  case "o":
5115
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
5263
+ return parseTypedArray(
5264
+ response,
5265
+ value,
5266
+ Uint8Array,
5267
+ 1,
5268
+ obj,
5269
+ key,
5270
+ arrayRoot
5271
+ );
5116
5272
  case "U":
5117
5273
  return parseTypedArray(
5118
5274
  response,
@@ -5120,22 +5276,79 @@
5120
5276
  Uint8ClampedArray,
5121
5277
  1,
5122
5278
  obj,
5123
- key
5279
+ key,
5280
+ arrayRoot
5124
5281
  );
5125
5282
  case "S":
5126
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
5283
+ return parseTypedArray(
5284
+ response,
5285
+ value,
5286
+ Int16Array,
5287
+ 2,
5288
+ obj,
5289
+ key,
5290
+ arrayRoot
5291
+ );
5127
5292
  case "s":
5128
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
5293
+ return parseTypedArray(
5294
+ response,
5295
+ value,
5296
+ Uint16Array,
5297
+ 2,
5298
+ obj,
5299
+ key,
5300
+ arrayRoot
5301
+ );
5129
5302
  case "L":
5130
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
5303
+ return parseTypedArray(
5304
+ response,
5305
+ value,
5306
+ Int32Array,
5307
+ 4,
5308
+ obj,
5309
+ key,
5310
+ arrayRoot
5311
+ );
5131
5312
  case "l":
5132
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
5313
+ return parseTypedArray(
5314
+ response,
5315
+ value,
5316
+ Uint32Array,
5317
+ 4,
5318
+ obj,
5319
+ key,
5320
+ arrayRoot
5321
+ );
5133
5322
  case "G":
5134
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
5323
+ return parseTypedArray(
5324
+ response,
5325
+ value,
5326
+ Float32Array,
5327
+ 4,
5328
+ obj,
5329
+ key,
5330
+ arrayRoot
5331
+ );
5135
5332
  case "g":
5136
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
5333
+ return parseTypedArray(
5334
+ response,
5335
+ value,
5336
+ Float64Array,
5337
+ 8,
5338
+ obj,
5339
+ key,
5340
+ arrayRoot
5341
+ );
5137
5342
  case "M":
5138
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
5343
+ return parseTypedArray(
5344
+ response,
5345
+ value,
5346
+ BigInt64Array,
5347
+ 8,
5348
+ obj,
5349
+ key,
5350
+ arrayRoot
5351
+ );
5139
5352
  case "m":
5140
5353
  return parseTypedArray(
5141
5354
  response,
@@ -5143,17 +5356,24 @@
5143
5356
  BigUint64Array,
5144
5357
  8,
5145
5358
  obj,
5146
- key
5359
+ key,
5360
+ arrayRoot
5147
5361
  );
5148
5362
  case "V":
5149
- return parseTypedArray(response, value, DataView, 1, obj, key);
5363
+ return parseTypedArray(
5364
+ response,
5365
+ value,
5366
+ DataView,
5367
+ 1,
5368
+ obj,
5369
+ key,
5370
+ arrayRoot
5371
+ );
5150
5372
  case "B":
5151
5373
  return (
5152
5374
  (obj = parseInt(value.slice(2), 16)),
5153
5375
  response._formData.get(response._prefix + obj)
5154
5376
  );
5155
- }
5156
- switch (value[1]) {
5157
5377
  case "R":
5158
5378
  return parseReadableStream(response, value, void 0);
5159
5379
  case "r":
@@ -5164,8 +5384,16 @@
5164
5384
  return parseAsyncIterable(response, value, !0);
5165
5385
  }
5166
5386
  value = value.slice(1);
5167
- return getOutlinedModel(response, value, obj, key, createModel);
5387
+ return getOutlinedModel(
5388
+ response,
5389
+ value,
5390
+ obj,
5391
+ key,
5392
+ arrayRoot,
5393
+ createModel
5394
+ );
5168
5395
  }
5396
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
5169
5397
  return value;
5170
5398
  }
5171
5399
  function createResponse(
@@ -5177,6 +5405,8 @@
5177
5405
  3 < arguments.length && void 0 !== arguments[3]
5178
5406
  ? arguments[3]
5179
5407
  : new FormData(),
5408
+ arraySizeLimit =
5409
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
5180
5410
  chunks = new Map();
5181
5411
  return {
5182
5412
  _bundlerConfig: bundlerConfig,
@@ -5185,7 +5415,9 @@
5185
5415
  _chunks: chunks,
5186
5416
  _closed: !1,
5187
5417
  _closedReason: null,
5188
- _temporaryReferences: temporaryReferences
5418
+ _temporaryReferences: temporaryReferences,
5419
+ _rootArrayContexts: new WeakMap(),
5420
+ _arraySizeLimit: arraySizeLimit
5189
5421
  };
5190
5422
  }
5191
5423
  function resolveField(response, key, value) {
@@ -5201,13 +5433,24 @@
5201
5433
  function close(response) {
5202
5434
  reportGlobalError(response, Error("Connection closed."));
5203
5435
  }
5204
- function loadServerReference(bundlerConfig, id, bound) {
5436
+ function loadServerReference(bundlerConfig, metaData) {
5437
+ var id = metaData.id;
5438
+ if ("string" !== typeof id) return null;
5205
5439
  var serverReference = resolveServerReference(bundlerConfig, id);
5206
5440
  bundlerConfig = preloadModule(serverReference);
5207
- return bound
5208
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
5441
+ metaData = metaData.bound;
5442
+ return metaData instanceof Promise
5443
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
5209
5444
  _ref = _ref[0];
5210
5445
  var fn = requireModule(serverReference);
5446
+ if (_ref.length > MAX_BOUND_ARGS)
5447
+ throw Error(
5448
+ "Server Function has too many bound arguments. Received " +
5449
+ _ref.length +
5450
+ " but the limit is " +
5451
+ MAX_BOUND_ARGS +
5452
+ "."
5453
+ );
5211
5454
  return fn.bind.apply(fn, [null].concat(_ref));
5212
5455
  })
5213
5456
  : bundlerConfig
@@ -5216,8 +5459,19 @@
5216
5459
  })
5217
5460
  : Promise.resolve(requireModule(serverReference));
5218
5461
  }
5219
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
5220
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
5462
+ function decodeBoundActionMetaData(
5463
+ body,
5464
+ serverManifest,
5465
+ formFieldPrefix,
5466
+ arraySizeLimit
5467
+ ) {
5468
+ body = createResponse(
5469
+ serverManifest,
5470
+ formFieldPrefix,
5471
+ void 0,
5472
+ body,
5473
+ arraySizeLimit
5474
+ );
5221
5475
  close(body);
5222
5476
  body = getChunk(body, 0);
5223
5477
  body.then(function () {});
@@ -5940,7 +6194,7 @@
5940
6194
  patchConsole(console, "table"),
5941
6195
  patchConsole(console, "trace"),
5942
6196
  patchConsole(console, "warn"));
5943
- var ObjectPrototype = Object.prototype,
6197
+ var ObjectPrototype$1 = Object.prototype,
5944
6198
  stringify = JSON.stringify,
5945
6199
  ABORTING = 12,
5946
6200
  CLOSED = 14,
@@ -5967,16 +6221,23 @@
5967
6221
  case "fulfilled":
5968
6222
  if ("function" === typeof resolve) {
5969
6223
  for (
5970
- var inspectedValue = this.value, cycleProtection = 0;
6224
+ var inspectedValue = this.value,
6225
+ cycleProtection = 0,
6226
+ visited = new Set();
5971
6227
  inspectedValue instanceof ReactPromise;
5972
6228
 
5973
6229
  ) {
5974
6230
  cycleProtection++;
5975
- if (inspectedValue === this || 1e3 < cycleProtection) {
6231
+ if (
6232
+ inspectedValue === this ||
6233
+ visited.has(inspectedValue) ||
6234
+ 1e3 < cycleProtection
6235
+ ) {
5976
6236
  "function" === typeof reject &&
5977
6237
  reject(Error("Cannot have cyclic thenables."));
5978
6238
  return;
5979
6239
  }
6240
+ visited.add(inspectedValue);
5980
6241
  if ("fulfilled" === inspectedValue.status)
5981
6242
  inspectedValue = inspectedValue.value;
5982
6243
  else break;
@@ -5997,7 +6258,15 @@
5997
6258
  "function" === typeof reject && reject(this.reason);
5998
6259
  }
5999
6260
  };
6000
- var initializingHandler = null;
6261
+ var ObjectPrototype = Object.prototype,
6262
+ ArrayPrototype = Array.prototype,
6263
+ initializingHandler = null;
6264
+ FlightIterator.prototype = {};
6265
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
6266
+ return this;
6267
+ };
6268
+ var MAX_BIGINT_DIGITS = 300,
6269
+ MAX_BOUND_ARGS = 1e3;
6001
6270
  exports.createClientModuleProxy = function (moduleId) {
6002
6271
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
6003
6272
  return new Proxy(moduleId, proxyHandlers$1);
@@ -6007,20 +6276,24 @@
6007
6276
  };
6008
6277
  exports.decodeAction = function (body, serverManifest) {
6009
6278
  var formData = new FormData(),
6010
- action = null;
6279
+ action = null,
6280
+ seenActions = new Set();
6011
6281
  body.forEach(function (value, key) {
6012
6282
  key.startsWith("$ACTION_")
6013
6283
  ? key.startsWith("$ACTION_REF_")
6014
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
6284
+ ? seenActions.has(key) ||
6285
+ (seenActions.add(key),
6286
+ (value = "$ACTION_" + key.slice(12) + ":"),
6015
6287
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
6016
- (action = loadServerReference(
6017
- serverManifest,
6018
- value.id,
6019
- value.bound
6020
- )))
6288
+ (action = loadServerReference(serverManifest, value)))
6021
6289
  : key.startsWith("$ACTION_ID_") &&
6022
- ((value = key.slice(11)),
6023
- (action = loadServerReference(serverManifest, value, null)))
6290
+ !seenActions.has(key) &&
6291
+ (seenActions.add(key),
6292
+ (value = key.slice(11)),
6293
+ (action = loadServerReference(serverManifest, {
6294
+ id: value,
6295
+ bound: null
6296
+ })))
6024
6297
  : formData.append(key, value);
6025
6298
  });
6026
6299
  return null === action
@@ -6056,7 +6329,8 @@
6056
6329
  webpackMap,
6057
6330
  "",
6058
6331
  options ? options.temporaryReferences : void 0,
6059
- body
6332
+ body,
6333
+ options ? options.arraySizeLimit : void 0
6060
6334
  );
6061
6335
  webpackMap = getChunk(body, 0);
6062
6336
  close(body);
@@ -6088,7 +6362,9 @@
6088
6362
  response = createResponse(
6089
6363
  webpackMap,
6090
6364
  "",
6091
- options ? options.temporaryReferences : void 0
6365
+ options ? options.temporaryReferences : void 0,
6366
+ void 0,
6367
+ options ? options.arraySizeLimit : void 0
6092
6368
  );
6093
6369
  iterator.next().then(progress, error);
6094
6370
  return getChunk(response, 0);
@@ -6101,7 +6377,9 @@
6101
6377
  var response = createResponse(
6102
6378
  webpackMap,
6103
6379
  "",
6104
- options ? options.temporaryReferences : void 0
6380
+ options ? options.temporaryReferences : void 0,
6381
+ void 0,
6382
+ options ? options.arraySizeLimit : void 0
6105
6383
  ),
6106
6384
  pendingFiles = 0,
6107
6385
  queuedFields = [];
@@ -6125,13 +6403,13 @@
6125
6403
  );
6126
6404
  else {
6127
6405
  pendingFiles++;
6128
- var JSCompiler_object_inline_chunks_263 = [];
6406
+ var JSCompiler_object_inline_chunks_258 = [];
6129
6407
  value.on("data", function (chunk) {
6130
- JSCompiler_object_inline_chunks_263.push(chunk);
6408
+ JSCompiler_object_inline_chunks_258.push(chunk);
6131
6409
  });
6132
6410
  value.on("end", function () {
6133
6411
  try {
6134
- var blob = new Blob(JSCompiler_object_inline_chunks_263, {
6412
+ var blob = new Blob(JSCompiler_object_inline_chunks_258, {
6135
6413
  type: mimeType
6136
6414
  });
6137
6415
  response._formData.append(name, blob, filename);