react-server-dom-turbopack 19.2.3 → 19.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -841,7 +841,7 @@ function describeObjectForErrorMessage(objectOrArray, expandedName) {
841
841
  : "\n " + str;
842
842
  }
843
843
  var hasOwnProperty = Object.prototype.hasOwnProperty,
844
- ObjectPrototype = Object.prototype,
844
+ ObjectPrototype$1 = Object.prototype,
845
845
  stringify = JSON.stringify;
846
846
  function defaultErrorHandler(error) {
847
847
  console.error(error);
@@ -1707,7 +1707,7 @@ function renderModelDestructive(
1707
1707
  if (value instanceof Date) return "$D" + value.toJSON();
1708
1708
  request = getPrototypeOf(value);
1709
1709
  if (
1710
- request !== ObjectPrototype &&
1710
+ request !== ObjectPrototype$1 &&
1711
1711
  (null === request || null !== getPrototypeOf(request))
1712
1712
  )
1713
1713
  throw Error(
@@ -2291,16 +2291,23 @@ ReactPromise.prototype.then = function (resolve, reject) {
2291
2291
  case "fulfilled":
2292
2292
  if ("function" === typeof resolve) {
2293
2293
  for (
2294
- var inspectedValue = this.value, cycleProtection = 0;
2294
+ var inspectedValue = this.value,
2295
+ cycleProtection = 0,
2296
+ visited = new Set();
2295
2297
  inspectedValue instanceof ReactPromise;
2296
2298
 
2297
2299
  ) {
2298
2300
  cycleProtection++;
2299
- if (inspectedValue === this || 1e3 < cycleProtection) {
2301
+ if (
2302
+ inspectedValue === this ||
2303
+ visited.has(inspectedValue) ||
2304
+ 1e3 < cycleProtection
2305
+ ) {
2300
2306
  "function" === typeof reject &&
2301
2307
  reject(Error("Cannot have cyclic thenables."));
2302
2308
  return;
2303
2309
  }
2310
+ visited.add(inspectedValue);
2304
2311
  if ("fulfilled" === inspectedValue.status)
2305
2312
  inspectedValue = inspectedValue.value;
2306
2313
  else break;
@@ -2319,12 +2326,14 @@ ReactPromise.prototype.then = function (resolve, reject) {
2319
2326
  "function" === typeof reject && reject(this.reason);
2320
2327
  }
2321
2328
  };
2322
- function wakeChunk(response, listeners, value) {
2329
+ var ObjectPrototype = Object.prototype,
2330
+ ArrayPrototype = Array.prototype;
2331
+ function wakeChunk(response, listeners, value, chunk) {
2323
2332
  for (var i = 0; i < listeners.length; i++) {
2324
2333
  var listener = listeners[i];
2325
2334
  "function" === typeof listener
2326
2335
  ? listener(value)
2327
- : fulfillReference(response, listener, value);
2336
+ : fulfillReference(response, listener, value, chunk.reason);
2328
2337
  }
2329
2338
  }
2330
2339
  function rejectChunk(response, listeners, error) {
@@ -2335,27 +2344,6 @@ function rejectChunk(response, listeners, error) {
2335
2344
  : rejectReference(response, listener.handler, error);
2336
2345
  }
2337
2346
  }
2338
- function resolveBlockedCycle(resolvedChunk, reference) {
2339
- var referencedChunk = reference.handler.chunk;
2340
- if (null === referencedChunk) return null;
2341
- if (referencedChunk === resolvedChunk) return reference.handler;
2342
- reference = referencedChunk.value;
2343
- if (null !== reference)
2344
- for (
2345
- referencedChunk = 0;
2346
- referencedChunk < reference.length;
2347
- referencedChunk++
2348
- ) {
2349
- var listener = reference[referencedChunk];
2350
- if (
2351
- "function" !== typeof listener &&
2352
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2353
- null !== listener)
2354
- )
2355
- return listener;
2356
- }
2357
- return null;
2358
- }
2359
2347
  function triggerErrorOnChunk(response, chunk, error) {
2360
2348
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2361
2349
  chunk.reason.error(error);
@@ -2391,33 +2379,11 @@ function resolveModelChunk(response, chunk, value, id) {
2391
2379
  chunk.reason =
2392
2380
  ((value.id = id), (value[RESPONSE_SYMBOL] = response), value);
2393
2381
  if (null !== resolveListeners)
2394
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2382
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2395
2383
  case "fulfilled":
2396
- wakeChunk(response, resolveListeners, chunk.value);
2384
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2397
2385
  break;
2398
2386
  case "blocked":
2399
- for (value = 0; value < resolveListeners.length; value++)
2400
- if (((id = resolveListeners[value]), "function" !== typeof id)) {
2401
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2402
- if (null !== cyclicHandler)
2403
- switch (
2404
- (fulfillReference(response, id, cyclicHandler.value),
2405
- resolveListeners.splice(value, 1),
2406
- value--,
2407
- null !== rejectListeners &&
2408
- ((id = rejectListeners.indexOf(id)),
2409
- -1 !== id && rejectListeners.splice(id, 1)),
2410
- chunk.status)
2411
- ) {
2412
- case "fulfilled":
2413
- wakeChunk(response, resolveListeners, chunk.value);
2414
- break a;
2415
- case "rejected":
2416
- null !== rejectListeners &&
2417
- rejectChunk(response, rejectListeners, chunk.reason);
2418
- break a;
2419
- }
2420
- }
2421
2387
  case "pending":
2422
2388
  if (chunk.value)
2423
2389
  for (response = 0; response < resolveListeners.length; response++)
@@ -2434,7 +2400,8 @@ function resolveModelChunk(response, chunk, value, id) {
2434
2400
  } else chunk.reason = rejectListeners;
2435
2401
  break;
2436
2402
  case "rejected":
2437
- rejectListeners && wakeChunk(response, rejectListeners, chunk.reason);
2403
+ rejectListeners &&
2404
+ rejectChunk(response, rejectListeners, chunk.reason);
2438
2405
  }
2439
2406
  }
2440
2407
  }
@@ -2457,15 +2424,50 @@ function resolveIteratorResultChunk(response, chunk, value, done) {
2457
2424
  );
2458
2425
  }
2459
2426
  function loadServerReference$1(response, metaData, parentObject, key) {
2427
+ function reject(error) {
2428
+ var rejectListeners = blockedPromise.reason,
2429
+ erroredPromise = blockedPromise;
2430
+ erroredPromise.status = "rejected";
2431
+ erroredPromise.value = null;
2432
+ erroredPromise.reason = error;
2433
+ null !== rejectListeners && rejectChunk(response, rejectListeners, error);
2434
+ rejectReference(response, handler, error);
2435
+ }
2460
2436
  var id = metaData.id;
2461
2437
  if ("string" !== typeof id || "then" === key) return null;
2438
+ var cachedPromise = metaData.$$promise;
2439
+ if (void 0 !== cachedPromise) {
2440
+ if ("fulfilled" === cachedPromise.status)
2441
+ return (
2442
+ (cachedPromise = cachedPromise.value),
2443
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2444
+ );
2445
+ initializingHandler
2446
+ ? ((id = initializingHandler), id.deps++)
2447
+ : (id = initializingHandler =
2448
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2449
+ cachedPromise.then(
2450
+ resolveReference.bind(null, response, id, parentObject, key),
2451
+ rejectReference.bind(null, response, id)
2452
+ );
2453
+ return null;
2454
+ }
2455
+ var blockedPromise = new ReactPromise("blocked", null, null);
2456
+ metaData.$$promise = blockedPromise;
2462
2457
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2463
- id = metaData.bound;
2464
- var promise = preloadModule(serverReference);
2465
- if (promise)
2466
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2467
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2468
- else return requireModule(serverReference);
2458
+ cachedPromise = metaData.bound;
2459
+ if ((id = preloadModule(serverReference)))
2460
+ cachedPromise instanceof ReactPromise &&
2461
+ (id = Promise.all([id, cachedPromise]));
2462
+ else if (cachedPromise instanceof ReactPromise)
2463
+ id = Promise.resolve(cachedPromise);
2464
+ else
2465
+ return (
2466
+ (cachedPromise = requireModule(serverReference)),
2467
+ (id = blockedPromise),
2468
+ (id.status = "fulfilled"),
2469
+ (id.value = cachedPromise)
2470
+ );
2469
2471
  if (initializingHandler) {
2470
2472
  var handler = initializingHandler;
2471
2473
  handler.deps++;
@@ -2477,74 +2479,105 @@ function loadServerReference$1(response, metaData, parentObject, key) {
2477
2479
  deps: 1,
2478
2480
  errored: !1
2479
2481
  };
2480
- promise.then(
2481
- function () {
2482
- var resolvedValue = requireModule(serverReference);
2483
- if (metaData.bound) {
2484
- var promiseValue = metaData.bound.value;
2485
- promiseValue = Array.isArray(promiseValue) ? promiseValue.slice(0) : [];
2486
- promiseValue.unshift(null);
2487
- resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2488
- }
2489
- parentObject[key] = resolvedValue;
2490
- "" === key && null === handler.value && (handler.value = resolvedValue);
2491
- handler.deps--;
2492
- 0 === handler.deps &&
2493
- ((resolvedValue = handler.chunk),
2494
- null !== resolvedValue &&
2495
- "blocked" === resolvedValue.status &&
2496
- ((promiseValue = resolvedValue.value),
2497
- (resolvedValue.status = "fulfilled"),
2498
- (resolvedValue.value = handler.value),
2499
- (resolvedValue.reason = null),
2500
- null !== promiseValue &&
2501
- wakeChunk(response, promiseValue, handler.value)));
2502
- },
2503
- function (error) {
2504
- if (!handler.errored) {
2505
- handler.errored = !0;
2506
- handler.value = null;
2507
- handler.reason = error;
2508
- var chunk = handler.chunk;
2509
- null !== chunk &&
2510
- "blocked" === chunk.status &&
2511
- triggerErrorOnChunk(response, chunk, error);
2482
+ id.then(function () {
2483
+ var resolvedValue = requireModule(serverReference);
2484
+ if (metaData.bound) {
2485
+ var promiseValue = metaData.bound.value;
2486
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2487
+ if (1e3 < promiseValue.length) {
2488
+ reject(
2489
+ Error(
2490
+ "Server Function has too many bound arguments. Received " +
2491
+ promiseValue.length +
2492
+ " but the limit is 1000."
2493
+ )
2494
+ );
2495
+ return;
2512
2496
  }
2497
+ promiseValue.unshift(null);
2498
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2513
2499
  }
2514
- );
2500
+ promiseValue = blockedPromise.value;
2501
+ var initializedPromise = blockedPromise;
2502
+ initializedPromise.status = "fulfilled";
2503
+ initializedPromise.value = resolvedValue;
2504
+ initializedPromise.reason = null;
2505
+ null !== promiseValue &&
2506
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2507
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2508
+ }, reject);
2515
2509
  return null;
2516
2510
  }
2517
- function reviveModel(response, parentObj, parentKey, value, reference) {
2511
+ function reviveModel(
2512
+ response,
2513
+ parentObj,
2514
+ parentKey,
2515
+ value,
2516
+ reference,
2517
+ arrayRoot
2518
+ ) {
2518
2519
  if ("string" === typeof value)
2519
- return parseModelString(response, parentObj, parentKey, value, reference);
2520
+ return parseModelString(
2521
+ response,
2522
+ parentObj,
2523
+ parentKey,
2524
+ value,
2525
+ reference,
2526
+ arrayRoot
2527
+ );
2520
2528
  if ("object" === typeof value && null !== value)
2521
2529
  if (
2522
2530
  (void 0 !== reference &&
2523
2531
  void 0 !== response._temporaryReferences &&
2524
2532
  response._temporaryReferences.set(value, reference),
2525
- Array.isArray(value))
2526
- )
2527
- for (var i = 0; i < value.length; i++)
2528
- value[i] = reviveModel(
2533
+ isArrayImpl(value))
2534
+ ) {
2535
+ if (null === arrayRoot) {
2536
+ var childContext = { count: 0, fork: !1 };
2537
+ response._rootArrayContexts.set(value, childContext);
2538
+ } else childContext = arrayRoot;
2539
+ 1 < value.length && (childContext.fork = !0);
2540
+ bumpArrayCount(childContext, value.length + 1, response);
2541
+ for (parentObj = 0; parentObj < value.length; parentObj++)
2542
+ value[parentObj] = reviveModel(
2529
2543
  response,
2530
2544
  value,
2531
- "" + i,
2532
- value[i],
2533
- void 0 !== reference ? reference + ":" + i : void 0
2545
+ "" + parentObj,
2546
+ value[parentObj],
2547
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
2548
+ childContext
2534
2549
  );
2535
- else
2536
- for (i in value)
2537
- hasOwnProperty.call(value, i) &&
2538
- ((parentObj =
2539
- void 0 !== reference && -1 === i.indexOf(":")
2540
- ? reference + ":" + i
2541
- : void 0),
2542
- (parentObj = reviveModel(response, value, i, value[i], parentObj)),
2543
- void 0 !== parentObj || "__proto__" === i
2544
- ? (value[i] = parentObj)
2545
- : delete value[i]);
2550
+ } else
2551
+ for (childContext in value)
2552
+ hasOwnProperty.call(value, childContext) &&
2553
+ ("__proto__" === childContext
2554
+ ? delete value[childContext]
2555
+ : ((parentObj =
2556
+ void 0 !== reference && -1 === childContext.indexOf(":")
2557
+ ? reference + ":" + childContext
2558
+ : void 0),
2559
+ (parentObj = reviveModel(
2560
+ response,
2561
+ value,
2562
+ childContext,
2563
+ value[childContext],
2564
+ parentObj,
2565
+ null
2566
+ )),
2567
+ void 0 !== parentObj
2568
+ ? (value[childContext] = parentObj)
2569
+ : delete value[childContext]));
2546
2570
  return value;
2547
2571
  }
2572
+ function bumpArrayCount(arrayContext, slots, response) {
2573
+ if (
2574
+ (arrayContext.count += slots) > response._arraySizeLimit &&
2575
+ arrayContext.fork
2576
+ )
2577
+ throw Error(
2578
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
2579
+ );
2580
+ }
2548
2581
  var initializingHandler = null;
2549
2582
  function initializeModelChunk(chunk) {
2550
2583
  var prevHandler = initializingHandler;
@@ -2558,13 +2591,15 @@ function initializeModelChunk(chunk) {
2558
2591
  chunk.value = null;
2559
2592
  chunk.reason = null;
2560
2593
  try {
2561
- var rawModel = JSON.parse(resolvedModel),
2562
- value = reviveModel(
2594
+ var rawModel = JSON.parse(resolvedModel);
2595
+ resolvedModel = { count: 0, fork: !1 };
2596
+ var value = reviveModel(
2563
2597
  response,
2564
2598
  { "": rawModel },
2565
2599
  "",
2566
2600
  rawModel,
2567
- _chunk$reason
2601
+ _chunk$reason,
2602
+ resolvedModel
2568
2603
  ),
2569
2604
  resolveListeners = chunk.value;
2570
2605
  if (null !== resolveListeners)
@@ -2576,19 +2611,20 @@ function initializeModelChunk(chunk) {
2576
2611
  var listener = resolveListeners[rawModel];
2577
2612
  "function" === typeof listener
2578
2613
  ? listener(value)
2579
- : fulfillReference(response, listener, value);
2614
+ : fulfillReference(response, listener, value, resolvedModel);
2580
2615
  }
2581
2616
  if (null !== initializingHandler) {
2582
2617
  if (initializingHandler.errored) throw initializingHandler.reason;
2583
2618
  if (0 < initializingHandler.deps) {
2584
2619
  initializingHandler.value = value;
2620
+ initializingHandler.reason = resolvedModel;
2585
2621
  initializingHandler.chunk = chunk;
2586
2622
  return;
2587
2623
  }
2588
2624
  }
2589
2625
  chunk.status = "fulfilled";
2590
2626
  chunk.value = value;
2591
- chunk.reason = null;
2627
+ chunk.reason = resolvedModel;
2592
2628
  } catch (error) {
2593
2629
  (chunk.status = "rejected"), (chunk.reason = error);
2594
2630
  } finally {
@@ -2603,7 +2639,8 @@ function reportGlobalError(response, error) {
2603
2639
  ? triggerErrorOnChunk(response, chunk, error)
2604
2640
  : "fulfilled" === chunk.status &&
2605
2641
  null !== chunk.reason &&
2606
- chunk.reason.error(error);
2642
+ ((chunk = chunk.reason),
2643
+ "function" === typeof chunk.error && chunk.error(error));
2607
2644
  });
2608
2645
  }
2609
2646
  function getChunk(response, id) {
@@ -2620,40 +2657,67 @@ function getChunk(response, id) {
2620
2657
  chunks.set(id, chunk));
2621
2658
  return chunk;
2622
2659
  }
2623
- function fulfillReference(response, reference, value) {
2660
+ function fulfillReference(response, reference, value, arrayRoot) {
2624
2661
  var handler = reference.handler,
2625
2662
  parentObject = reference.parentObject,
2626
2663
  key = reference.key,
2627
2664
  map = reference.map,
2628
2665
  path = reference.path;
2629
2666
  try {
2630
- for (var i = 1; i < path.length; i++) {
2667
+ for (
2668
+ var localLength = 0,
2669
+ rootArrayContexts = response._rootArrayContexts,
2670
+ i = 1;
2671
+ i < path.length;
2672
+ i++
2673
+ ) {
2631
2674
  var name = path[i];
2632
2675
  if (
2633
2676
  "object" !== typeof value ||
2634
- !hasOwnProperty.call(value, name) ||
2635
- value instanceof Promise
2677
+ null === value ||
2678
+ (getPrototypeOf(value) !== ObjectPrototype &&
2679
+ getPrototypeOf(value) !== ArrayPrototype) ||
2680
+ !hasOwnProperty.call(value, name)
2636
2681
  )
2637
2682
  throw Error("Invalid reference.");
2638
2683
  value = value[name];
2684
+ if (isArrayImpl(value))
2685
+ (localLength = 0),
2686
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
2687
+ else if (((arrayRoot = null), "string" === typeof value))
2688
+ localLength = value.length;
2689
+ else if ("bigint" === typeof value) {
2690
+ var n = Math.abs(Number(value));
2691
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
2692
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
2639
2693
  }
2640
- var mappedValue = map(response, value, parentObject, key);
2641
- parentObject[key] = mappedValue;
2642
- "" === key && null === handler.value && (handler.value = mappedValue);
2694
+ var resolvedValue = map(response, value, parentObject, key);
2695
+ var referenceArrayRoot = reference.arrayRoot;
2696
+ null !== referenceArrayRoot &&
2697
+ (null !== arrayRoot
2698
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
2699
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
2700
+ : 0 < localLength &&
2701
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2643
2702
  } catch (error) {
2644
- rejectReference(response, reference.handler, error);
2703
+ rejectReference(response, handler, error);
2645
2704
  return;
2646
2705
  }
2706
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2707
+ }
2708
+ function resolveReference(response, handler, parentObject, key, resolvedValue) {
2709
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
2710
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2647
2711
  handler.deps--;
2648
2712
  0 === handler.deps &&
2649
- ((reference = handler.chunk),
2650
- null !== reference &&
2651
- "blocked" === reference.status &&
2652
- ((value = reference.value),
2653
- (reference.status = "fulfilled"),
2654
- (reference.value = handler.value),
2655
- (reference.reason = handler.reason),
2656
- null !== value && wakeChunk(response, value, handler.value)));
2713
+ ((parentObject = handler.chunk),
2714
+ null !== parentObject &&
2715
+ "blocked" === parentObject.status &&
2716
+ ((key = parentObject.value),
2717
+ (parentObject.status = "fulfilled"),
2718
+ (parentObject.value = handler.value),
2719
+ (parentObject.reason = handler.reason),
2720
+ null !== key && wakeChunk(response, key, handler.value, parentObject)));
2657
2721
  }
2658
2722
  function rejectReference(response, handler, error) {
2659
2723
  handler.errored ||
@@ -2665,60 +2729,97 @@ function rejectReference(response, handler, error) {
2665
2729
  "blocked" === handler.status &&
2666
2730
  triggerErrorOnChunk(response, handler, error));
2667
2731
  }
2668
- function getOutlinedModel(response, reference, parentObject, key, map) {
2732
+ function getOutlinedModel(
2733
+ response,
2734
+ reference,
2735
+ parentObject,
2736
+ key,
2737
+ referenceArrayRoot,
2738
+ map
2739
+ ) {
2669
2740
  reference = reference.split(":");
2670
- var id = parseInt(reference[0], 16);
2671
- id = getChunk(response, id);
2672
- switch (id.status) {
2741
+ var id = parseInt(reference[0], 16),
2742
+ chunk = getChunk(response, id);
2743
+ switch (chunk.status) {
2673
2744
  case "resolved_model":
2674
- initializeModelChunk(id);
2745
+ initializeModelChunk(chunk);
2675
2746
  }
2676
- switch (id.status) {
2747
+ switch (chunk.status) {
2677
2748
  case "fulfilled":
2678
- id = id.value;
2679
- for (var i = 1; i < reference.length; i++) {
2680
- var name = reference[i];
2749
+ id = chunk.value;
2750
+ chunk = chunk.reason;
2751
+ for (
2752
+ var localLength = 0,
2753
+ rootArrayContexts = response._rootArrayContexts,
2754
+ i = 1;
2755
+ i < reference.length;
2756
+ i++
2757
+ ) {
2758
+ localLength = reference[i];
2681
2759
  if (
2682
2760
  "object" !== typeof id ||
2683
- !hasOwnProperty.call(id, name) ||
2684
- id instanceof Promise
2761
+ null === id ||
2762
+ (getPrototypeOf(id) !== ObjectPrototype &&
2763
+ getPrototypeOf(id) !== ArrayPrototype) ||
2764
+ !hasOwnProperty.call(id, localLength)
2685
2765
  )
2686
2766
  throw Error("Invalid reference.");
2687
- id = id[name];
2767
+ id = id[localLength];
2768
+ isArrayImpl(id)
2769
+ ? ((localLength = 0), (chunk = rootArrayContexts.get(id) || chunk))
2770
+ : ((chunk = null),
2771
+ "string" === typeof id
2772
+ ? (localLength = id.length)
2773
+ : "bigint" === typeof id
2774
+ ? ((localLength = Math.abs(Number(id))),
2775
+ (localLength =
2776
+ 0 === localLength
2777
+ ? 1
2778
+ : Math.floor(Math.log10(localLength)) + 1))
2779
+ : (localLength = ArrayBuffer.isView(id) ? id.byteLength : 0));
2688
2780
  }
2689
- return map(response, id, parentObject, key);
2690
- case "pending":
2781
+ parentObject = map(response, id, parentObject, key);
2782
+ null !== referenceArrayRoot &&
2783
+ (null !== chunk
2784
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
2785
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
2786
+ : 0 < localLength &&
2787
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2788
+ return parentObject;
2691
2789
  case "blocked":
2692
2790
  return (
2693
2791
  initializingHandler
2694
2792
  ? ((response = initializingHandler), response.deps++)
2695
2793
  : (response = initializingHandler =
2696
2794
  { chunk: null, value: null, reason: null, deps: 1, errored: !1 }),
2697
- (parentObject = {
2795
+ (referenceArrayRoot = {
2698
2796
  handler: response,
2699
2797
  parentObject: parentObject,
2700
2798
  key: key,
2701
2799
  map: map,
2702
- path: reference
2800
+ path: reference,
2801
+ arrayRoot: referenceArrayRoot
2703
2802
  }),
2704
- null === id.value
2705
- ? (id.value = [parentObject])
2706
- : id.value.push(parentObject),
2707
- null === id.reason
2708
- ? (id.reason = [parentObject])
2709
- : id.reason.push(parentObject),
2803
+ null === chunk.value
2804
+ ? (chunk.value = [referenceArrayRoot])
2805
+ : chunk.value.push(referenceArrayRoot),
2806
+ null === chunk.reason
2807
+ ? (chunk.reason = [referenceArrayRoot])
2808
+ : chunk.reason.push(referenceArrayRoot),
2710
2809
  null
2711
2810
  );
2811
+ case "pending":
2812
+ throw Error("Invalid forward reference.");
2712
2813
  default:
2713
2814
  return (
2714
2815
  initializingHandler
2715
2816
  ? ((initializingHandler.errored = !0),
2716
2817
  (initializingHandler.value = null),
2717
- (initializingHandler.reason = id.reason))
2818
+ (initializingHandler.reason = chunk.reason))
2718
2819
  : (initializingHandler = {
2719
2820
  chunk: null,
2720
2821
  value: null,
2721
- reason: id.reason,
2822
+ reason: chunk.reason,
2722
2823
  deps: 0,
2723
2824
  errored: !0
2724
2825
  }),
@@ -2727,12 +2828,21 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
2727
2828
  }
2728
2829
  }
2729
2830
  function createMap(response, model) {
2831
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
2832
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
2833
+ model.$$consumed = !0;
2730
2834
  return new Map(model);
2731
2835
  }
2732
2836
  function createSet(response, model) {
2837
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
2838
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
2839
+ model.$$consumed = !0;
2733
2840
  return new Set(model);
2734
2841
  }
2735
2842
  function extractIterator(response, model) {
2843
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
2844
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
2845
+ model.$$consumed = !0;
2736
2846
  return model[Symbol.iterator]();
2737
2847
  }
2738
2848
  function createModel(response, model, parentObject, key) {
@@ -2744,13 +2854,34 @@ function parseTypedArray(
2744
2854
  constructor,
2745
2855
  bytesPerElement,
2746
2856
  parentObject,
2747
- parentKey
2857
+ parentKey,
2858
+ referenceArrayRoot
2748
2859
  ) {
2860
+ function reject(error) {
2861
+ if (!handler.errored) {
2862
+ handler.errored = !0;
2863
+ handler.value = null;
2864
+ handler.reason = error;
2865
+ var chunk = handler.chunk;
2866
+ null !== chunk &&
2867
+ "blocked" === chunk.status &&
2868
+ triggerErrorOnChunk(response, chunk, error);
2869
+ }
2870
+ }
2749
2871
  reference = parseInt(reference.slice(2), 16);
2750
- bytesPerElement = response._prefix + reference;
2751
- if (response._chunks.has(reference))
2872
+ var key = response._prefix + reference;
2873
+ bytesPerElement = response._chunks;
2874
+ if (bytesPerElement.has(reference))
2752
2875
  throw Error("Already initialized typed array.");
2753
- reference = response._formData.get(bytesPerElement).arrayBuffer();
2876
+ bytesPerElement.set(
2877
+ reference,
2878
+ new ReactPromise(
2879
+ "rejected",
2880
+ null,
2881
+ Error("Already initialized typed array.")
2882
+ )
2883
+ );
2884
+ reference = response._formData.get(key).arrayBuffer();
2754
2885
  if (initializingHandler) {
2755
2886
  var handler = initializingHandler;
2756
2887
  handler.deps++;
@@ -2762,37 +2893,32 @@ function parseTypedArray(
2762
2893
  deps: 1,
2763
2894
  errored: !1
2764
2895
  };
2765
- reference.then(
2766
- function (buffer) {
2767
- buffer = constructor === ArrayBuffer ? buffer : new constructor(buffer);
2768
- parentObject[parentKey] = buffer;
2769
- "" === parentKey && null === handler.value && (handler.value = buffer);
2770
- handler.deps--;
2771
- if (
2772
- 0 === handler.deps &&
2773
- ((buffer = handler.chunk),
2774
- null !== buffer && "blocked" === buffer.status)
2775
- ) {
2776
- var resolveListeners = buffer.value;
2777
- buffer.status = "fulfilled";
2778
- buffer.value = handler.value;
2779
- buffer.reason = null;
2780
- null !== resolveListeners &&
2781
- wakeChunk(response, resolveListeners, handler.value);
2782
- }
2783
- },
2784
- function (error) {
2785
- if (!handler.errored) {
2786
- handler.errored = !0;
2787
- handler.value = null;
2788
- handler.reason = error;
2789
- var chunk = handler.chunk;
2790
- null !== chunk &&
2791
- "blocked" === chunk.status &&
2792
- triggerErrorOnChunk(response, chunk, error);
2793
- }
2896
+ reference.then(function (buffer) {
2897
+ try {
2898
+ null !== referenceArrayRoot &&
2899
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
2900
+ var resolvedValue =
2901
+ constructor === ArrayBuffer ? buffer : new constructor(buffer);
2902
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
2903
+ "" === parentKey &&
2904
+ null === handler.value &&
2905
+ (handler.value = resolvedValue);
2906
+ } catch (x) {
2907
+ reject(x);
2908
+ return;
2794
2909
  }
2795
- );
2910
+ handler.deps--;
2911
+ 0 === handler.deps &&
2912
+ ((buffer = handler.chunk),
2913
+ null !== buffer &&
2914
+ "blocked" === buffer.status &&
2915
+ ((resolvedValue = buffer.value),
2916
+ (buffer.status = "fulfilled"),
2917
+ (buffer.value = handler.value),
2918
+ (buffer.reason = null),
2919
+ null !== resolvedValue &&
2920
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
2921
+ }, reject);
2796
2922
  return null;
2797
2923
  }
2798
2924
  function resolveStream(response, id, stream, controller) {
@@ -2808,86 +2934,78 @@ function resolveStream(response, id, stream, controller) {
2808
2934
  : controller.enqueueModel(chunks));
2809
2935
  }
2810
2936
  function parseReadableStream(response, reference, type) {
2937
+ function enqueue(value) {
2938
+ "bytes" !== type || ArrayBuffer.isView(value)
2939
+ ? controller.enqueue(value)
2940
+ : flightController.error(Error("Invalid data for bytes stream."));
2941
+ }
2811
2942
  reference = parseInt(reference.slice(2), 16);
2812
2943
  if (response._chunks.has(reference))
2813
2944
  throw Error("Already initialized stream.");
2814
2945
  var controller = null,
2815
- closed = !1;
2816
- type = new ReadableStream({
2817
- type: type,
2818
- start: function (c) {
2819
- controller = c;
2820
- }
2821
- });
2822
- var previousBlockedChunk = null;
2823
- resolveStream(response, reference, type, {
2824
- enqueueModel: function (json) {
2825
- if (null === previousBlockedChunk) {
2826
- var chunk = createResolvedModelChunk(response, json, -1);
2827
- initializeModelChunk(chunk);
2828
- "fulfilled" === chunk.status
2829
- ? controller.enqueue(chunk.value)
2830
- : (chunk.then(
2831
- function (v) {
2832
- return controller.enqueue(v);
2833
- },
2834
- function (e) {
2835
- return controller.error(e);
2836
- }
2837
- ),
2838
- (previousBlockedChunk = chunk));
2839
- } else {
2840
- chunk = previousBlockedChunk;
2841
- var chunk$30 = new ReactPromise("pending", null, null);
2842
- chunk$30.then(
2843
- function (v) {
2844
- return controller.enqueue(v);
2845
- },
2846
- function (e) {
2847
- return controller.error(e);
2848
- }
2849
- );
2850
- previousBlockedChunk = chunk$30;
2851
- chunk.then(function () {
2852
- previousBlockedChunk === chunk$30 && (previousBlockedChunk = null);
2853
- resolveModelChunk(response, chunk$30, json, -1);
2854
- });
2946
+ closed = !1,
2947
+ stream = new ReadableStream({
2948
+ type: type,
2949
+ start: function (c) {
2950
+ controller = c;
2855
2951
  }
2856
- },
2857
- close: function () {
2858
- if (!closed)
2859
- if (((closed = !0), null === previousBlockedChunk)) controller.close();
2860
- else {
2861
- var blockedChunk = previousBlockedChunk;
2862
- previousBlockedChunk = null;
2863
- blockedChunk.then(function () {
2864
- return controller.close();
2865
- });
2866
- }
2867
- },
2868
- error: function (error) {
2869
- if (!closed)
2870
- if (((closed = !0), null === previousBlockedChunk))
2871
- controller.error(error);
2872
- else {
2873
- var blockedChunk = previousBlockedChunk;
2874
- previousBlockedChunk = null;
2875
- blockedChunk.then(function () {
2876
- return controller.error(error);
2952
+ }),
2953
+ previousBlockedChunk = null,
2954
+ flightController = {
2955
+ enqueueModel: function (json) {
2956
+ if (null === previousBlockedChunk) {
2957
+ var chunk = createResolvedModelChunk(response, json, -1);
2958
+ initializeModelChunk(chunk);
2959
+ "fulfilled" === chunk.status
2960
+ ? enqueue(chunk.value)
2961
+ : (chunk.then(enqueue, flightController.error),
2962
+ (previousBlockedChunk = chunk));
2963
+ } else {
2964
+ chunk = previousBlockedChunk;
2965
+ var chunk$31 = new ReactPromise("pending", null, null);
2966
+ chunk$31.then(enqueue, flightController.error);
2967
+ previousBlockedChunk = chunk$31;
2968
+ chunk.then(function () {
2969
+ previousBlockedChunk === chunk$31 && (previousBlockedChunk = null);
2970
+ resolveModelChunk(response, chunk$31, json, -1);
2877
2971
  });
2878
2972
  }
2879
- }
2880
- });
2881
- return type;
2882
- }
2883
- function asyncIterator() {
2884
- return this;
2973
+ },
2974
+ close: function () {
2975
+ if (!closed)
2976
+ if (((closed = !0), null === previousBlockedChunk))
2977
+ controller.close();
2978
+ else {
2979
+ var blockedChunk = previousBlockedChunk;
2980
+ previousBlockedChunk = null;
2981
+ blockedChunk.then(function () {
2982
+ return controller.close();
2983
+ });
2984
+ }
2985
+ },
2986
+ error: function (error) {
2987
+ if (!closed)
2988
+ if (((closed = !0), null === previousBlockedChunk))
2989
+ controller.error(error);
2990
+ else {
2991
+ var blockedChunk = previousBlockedChunk;
2992
+ previousBlockedChunk = null;
2993
+ blockedChunk.then(function () {
2994
+ return controller.error(error);
2995
+ });
2996
+ }
2997
+ }
2998
+ };
2999
+ resolveStream(response, reference, stream, flightController);
3000
+ return stream;
2885
3001
  }
2886
- function createIterator(next) {
2887
- next = { next: next };
2888
- next[ASYNC_ITERATOR] = asyncIterator;
2889
- return next;
3002
+ function FlightIterator(next) {
3003
+ this.next = next;
2890
3004
  }
3005
+ FlightIterator.prototype = {};
3006
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
3007
+ return this;
3008
+ };
2891
3009
  function parseAsyncIterable(response, reference, iterator) {
2892
3010
  reference = parseInt(reference.slice(2), 16);
2893
3011
  if (response._chunks.has(reference))
@@ -2899,7 +3017,7 @@ function parseAsyncIterable(response, reference, iterator) {
2899
3017
  $jscomp$compprop5 =
2900
3018
  (($jscomp$compprop5[ASYNC_ITERATOR] = function () {
2901
3019
  var nextReadIndex = 0;
2902
- return createIterator(function (arg) {
3020
+ return new FlightIterator(function (arg) {
2903
3021
  if (void 0 !== arg)
2904
3022
  throw Error(
2905
3023
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -2979,17 +3097,28 @@ function parseAsyncIterable(response, reference, iterator) {
2979
3097
  });
2980
3098
  return iterator;
2981
3099
  }
2982
- function parseModelString(response, obj, key, value, reference) {
3100
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
2983
3101
  if ("$" === value[0]) {
2984
3102
  switch (value[1]) {
2985
3103
  case "$":
2986
- return value.slice(1);
3104
+ return (
3105
+ null !== arrayRoot &&
3106
+ bumpArrayCount(arrayRoot, value.length - 1, response),
3107
+ value.slice(1)
3108
+ );
2987
3109
  case "@":
2988
3110
  return (obj = parseInt(value.slice(2), 16)), getChunk(response, obj);
2989
3111
  case "h":
2990
3112
  return (
2991
- (value = value.slice(2)),
2992
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
3113
+ (arrayRoot = value.slice(2)),
3114
+ getOutlinedModel(
3115
+ response,
3116
+ arrayRoot,
3117
+ obj,
3118
+ key,
3119
+ null,
3120
+ loadServerReference$1
3121
+ )
2993
3122
  );
2994
3123
  case "T":
2995
3124
  if (void 0 === reference || void 0 === response._temporaryReferences)
@@ -3002,27 +3131,37 @@ function parseModelString(response, obj, key, value, reference) {
3002
3131
  );
3003
3132
  case "Q":
3004
3133
  return (
3005
- (value = value.slice(2)),
3006
- getOutlinedModel(response, value, obj, key, createMap)
3134
+ (arrayRoot = value.slice(2)),
3135
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
3007
3136
  );
3008
3137
  case "W":
3009
3138
  return (
3010
- (value = value.slice(2)),
3011
- getOutlinedModel(response, value, obj, key, createSet)
3139
+ (arrayRoot = value.slice(2)),
3140
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
3012
3141
  );
3013
3142
  case "K":
3014
3143
  obj = value.slice(2);
3015
- var formPrefix = response._prefix + obj + "_",
3016
- data = new FormData();
3017
- response._formData.forEach(function (entry, entryKey) {
3018
- entryKey.startsWith(formPrefix) &&
3019
- data.append(entryKey.slice(formPrefix.length), entry);
3020
- });
3021
- return data;
3144
+ obj = response._prefix + obj + "_";
3145
+ key = new FormData();
3146
+ response = response._formData;
3147
+ arrayRoot = Array.from(response.keys());
3148
+ for (value = 0; value < arrayRoot.length; value++)
3149
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
3150
+ for (
3151
+ var entries = response.getAll(reference),
3152
+ newKey = reference.slice(obj.length),
3153
+ j = 0;
3154
+ j < entries.length;
3155
+ j++
3156
+ )
3157
+ key.append(newKey, entries[j]);
3158
+ response.delete(reference);
3159
+ }
3160
+ return key;
3022
3161
  case "i":
3023
3162
  return (
3024
- (value = value.slice(2)),
3025
- getOutlinedModel(response, value, obj, key, extractIterator)
3163
+ (arrayRoot = value.slice(2)),
3164
+ getOutlinedModel(response, arrayRoot, obj, key, null, extractIterator)
3026
3165
  );
3027
3166
  case "I":
3028
3167
  return Infinity;
@@ -3035,42 +3174,150 @@ function parseModelString(response, obj, key, value, reference) {
3035
3174
  case "D":
3036
3175
  return new Date(Date.parse(value.slice(2)));
3037
3176
  case "n":
3038
- return BigInt(value.slice(2));
3039
- }
3040
- switch (value[1]) {
3177
+ obj = value.slice(2);
3178
+ if (300 < obj.length)
3179
+ throw Error(
3180
+ "BigInt is too large. Received " +
3181
+ obj.length +
3182
+ " digits but the limit is 300."
3183
+ );
3184
+ null !== arrayRoot && bumpArrayCount(arrayRoot, obj.length, response);
3185
+ return BigInt(obj);
3041
3186
  case "A":
3042
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
3187
+ return parseTypedArray(
3188
+ response,
3189
+ value,
3190
+ ArrayBuffer,
3191
+ 1,
3192
+ obj,
3193
+ key,
3194
+ arrayRoot
3195
+ );
3043
3196
  case "O":
3044
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
3197
+ return parseTypedArray(
3198
+ response,
3199
+ value,
3200
+ Int8Array,
3201
+ 1,
3202
+ obj,
3203
+ key,
3204
+ arrayRoot
3205
+ );
3045
3206
  case "o":
3046
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
3207
+ return parseTypedArray(
3208
+ response,
3209
+ value,
3210
+ Uint8Array,
3211
+ 1,
3212
+ obj,
3213
+ key,
3214
+ arrayRoot
3215
+ );
3047
3216
  case "U":
3048
- return parseTypedArray(response, value, Uint8ClampedArray, 1, obj, key);
3217
+ return parseTypedArray(
3218
+ response,
3219
+ value,
3220
+ Uint8ClampedArray,
3221
+ 1,
3222
+ obj,
3223
+ key,
3224
+ arrayRoot
3225
+ );
3049
3226
  case "S":
3050
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
3227
+ return parseTypedArray(
3228
+ response,
3229
+ value,
3230
+ Int16Array,
3231
+ 2,
3232
+ obj,
3233
+ key,
3234
+ arrayRoot
3235
+ );
3051
3236
  case "s":
3052
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3237
+ return parseTypedArray(
3238
+ response,
3239
+ value,
3240
+ Uint16Array,
3241
+ 2,
3242
+ obj,
3243
+ key,
3244
+ arrayRoot
3245
+ );
3053
3246
  case "L":
3054
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3247
+ return parseTypedArray(
3248
+ response,
3249
+ value,
3250
+ Int32Array,
3251
+ 4,
3252
+ obj,
3253
+ key,
3254
+ arrayRoot
3255
+ );
3055
3256
  case "l":
3056
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3257
+ return parseTypedArray(
3258
+ response,
3259
+ value,
3260
+ Uint32Array,
3261
+ 4,
3262
+ obj,
3263
+ key,
3264
+ arrayRoot
3265
+ );
3057
3266
  case "G":
3058
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3267
+ return parseTypedArray(
3268
+ response,
3269
+ value,
3270
+ Float32Array,
3271
+ 4,
3272
+ obj,
3273
+ key,
3274
+ arrayRoot
3275
+ );
3059
3276
  case "g":
3060
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3277
+ return parseTypedArray(
3278
+ response,
3279
+ value,
3280
+ Float64Array,
3281
+ 8,
3282
+ obj,
3283
+ key,
3284
+ arrayRoot
3285
+ );
3061
3286
  case "M":
3062
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3287
+ return parseTypedArray(
3288
+ response,
3289
+ value,
3290
+ BigInt64Array,
3291
+ 8,
3292
+ obj,
3293
+ key,
3294
+ arrayRoot
3295
+ );
3063
3296
  case "m":
3064
- return parseTypedArray(response, value, BigUint64Array, 8, obj, key);
3297
+ return parseTypedArray(
3298
+ response,
3299
+ value,
3300
+ BigUint64Array,
3301
+ 8,
3302
+ obj,
3303
+ key,
3304
+ arrayRoot
3305
+ );
3065
3306
  case "V":
3066
- return parseTypedArray(response, value, DataView, 1, obj, key);
3307
+ return parseTypedArray(
3308
+ response,
3309
+ value,
3310
+ DataView,
3311
+ 1,
3312
+ obj,
3313
+ key,
3314
+ arrayRoot
3315
+ );
3067
3316
  case "B":
3068
3317
  return (
3069
3318
  (obj = parseInt(value.slice(2), 16)),
3070
3319
  response._formData.get(response._prefix + obj)
3071
3320
  );
3072
- }
3073
- switch (value[1]) {
3074
3321
  case "R":
3075
3322
  return parseReadableStream(response, value, void 0);
3076
3323
  case "r":
@@ -3081,8 +3328,9 @@ function parseModelString(response, obj, key, value, reference) {
3081
3328
  return parseAsyncIterable(response, value, !0);
3082
3329
  }
3083
3330
  value = value.slice(1);
3084
- return getOutlinedModel(response, value, obj, key, createModel);
3331
+ return getOutlinedModel(response, value, obj, key, arrayRoot, createModel);
3085
3332
  }
3333
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
3086
3334
  return value;
3087
3335
  }
3088
3336
  function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
@@ -3090,6 +3338,8 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
3090
3338
  3 < arguments.length && void 0 !== arguments[3]
3091
3339
  ? arguments[3]
3092
3340
  : new FormData(),
3341
+ arraySizeLimit =
3342
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
3093
3343
  chunks = new Map();
3094
3344
  return {
3095
3345
  _bundlerConfig: bundlerConfig,
@@ -3098,7 +3348,9 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
3098
3348
  _chunks: chunks,
3099
3349
  _closed: !1,
3100
3350
  _closedReason: null,
3101
- _temporaryReferences: temporaryReferences
3351
+ _temporaryReferences: temporaryReferences,
3352
+ _rootArrayContexts: new WeakMap(),
3353
+ _arraySizeLimit: arraySizeLimit
3102
3354
  };
3103
3355
  }
3104
3356
  function resolveField(response, key, value) {
@@ -3114,13 +3366,22 @@ function resolveField(response, key, value) {
3114
3366
  function close(response) {
3115
3367
  reportGlobalError(response, Error("Connection closed."));
3116
3368
  }
3117
- function loadServerReference(bundlerConfig, id, bound) {
3369
+ function loadServerReference(bundlerConfig, metaData) {
3370
+ var id = metaData.id;
3371
+ if ("string" !== typeof id) return null;
3118
3372
  var serverReference = resolveServerReference(bundlerConfig, id);
3119
3373
  bundlerConfig = preloadModule(serverReference);
3120
- return bound
3121
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3374
+ metaData = metaData.bound;
3375
+ return metaData instanceof Promise
3376
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
3122
3377
  _ref = _ref[0];
3123
3378
  var fn = requireModule(serverReference);
3379
+ if (1e3 < _ref.length)
3380
+ throw Error(
3381
+ "Server Function has too many bound arguments. Received " +
3382
+ _ref.length +
3383
+ " but the limit is 1000."
3384
+ );
3124
3385
  return fn.bind.apply(fn, [null].concat(_ref));
3125
3386
  })
3126
3387
  : bundlerConfig
@@ -3129,8 +3390,19 @@ function loadServerReference(bundlerConfig, id, bound) {
3129
3390
  })
3130
3391
  : Promise.resolve(requireModule(serverReference));
3131
3392
  }
3132
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
3133
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3393
+ function decodeBoundActionMetaData(
3394
+ body,
3395
+ serverManifest,
3396
+ formFieldPrefix,
3397
+ arraySizeLimit
3398
+ ) {
3399
+ body = createResponse(
3400
+ serverManifest,
3401
+ formFieldPrefix,
3402
+ void 0,
3403
+ body,
3404
+ arraySizeLimit
3405
+ );
3134
3406
  close(body);
3135
3407
  body = getChunk(body, 0);
3136
3408
  body.then(function () {});
@@ -3187,16 +3459,24 @@ exports.createTemporaryReferenceSet = function () {
3187
3459
  };
3188
3460
  exports.decodeAction = function (body, serverManifest) {
3189
3461
  var formData = new FormData(),
3190
- action = null;
3462
+ action = null,
3463
+ seenActions = new Set();
3191
3464
  body.forEach(function (value, key) {
3192
3465
  key.startsWith("$ACTION_")
3193
3466
  ? key.startsWith("$ACTION_REF_")
3194
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
3467
+ ? seenActions.has(key) ||
3468
+ (seenActions.add(key),
3469
+ (value = "$ACTION_" + key.slice(12) + ":"),
3195
3470
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
3196
- (action = loadServerReference(serverManifest, value.id, value.bound)))
3471
+ (action = loadServerReference(serverManifest, value)))
3197
3472
  : key.startsWith("$ACTION_ID_") &&
3198
- ((value = key.slice(11)),
3199
- (action = loadServerReference(serverManifest, value, null)))
3473
+ !seenActions.has(key) &&
3474
+ (seenActions.add(key),
3475
+ (value = key.slice(11)),
3476
+ (action = loadServerReference(serverManifest, {
3477
+ id: value,
3478
+ bound: null
3479
+ })))
3200
3480
  : formData.append(key, value);
3201
3481
  });
3202
3482
  return null === action
@@ -3232,7 +3512,8 @@ exports.decodeReply = function (body, turbopackMap, options) {
3232
3512
  turbopackMap,
3233
3513
  "",
3234
3514
  options ? options.temporaryReferences : void 0,
3235
- body
3515
+ body,
3516
+ options ? options.arraySizeLimit : void 0
3236
3517
  );
3237
3518
  turbopackMap = getChunk(body, 0);
3238
3519
  close(body);
@@ -3264,7 +3545,9 @@ exports.decodeReplyFromAsyncIterable = function (
3264
3545
  response = createResponse(
3265
3546
  turbopackMap,
3266
3547
  "",
3267
- options ? options.temporaryReferences : void 0
3548
+ options ? options.temporaryReferences : void 0,
3549
+ void 0,
3550
+ options ? options.arraySizeLimit : void 0
3268
3551
  );
3269
3552
  iterator.next().then(progress, error);
3270
3553
  return getChunk(response, 0);
@@ -3273,7 +3556,9 @@ exports.decodeReplyFromBusboy = function (busboyStream, turbopackMap, options) {
3273
3556
  var response = createResponse(
3274
3557
  turbopackMap,
3275
3558
  "",
3276
- options ? options.temporaryReferences : void 0
3559
+ options ? options.temporaryReferences : void 0,
3560
+ void 0,
3561
+ options ? options.arraySizeLimit : void 0
3277
3562
  ),
3278
3563
  pendingFiles = 0,
3279
3564
  queuedFields = [];
@@ -3297,13 +3582,13 @@ exports.decodeReplyFromBusboy = function (busboyStream, turbopackMap, options) {
3297
3582
  );
3298
3583
  else {
3299
3584
  pendingFiles++;
3300
- var JSCompiler_object_inline_chunks_291 = [];
3585
+ var JSCompiler_object_inline_chunks_287 = [];
3301
3586
  value.on("data", function (chunk) {
3302
- JSCompiler_object_inline_chunks_291.push(chunk);
3587
+ JSCompiler_object_inline_chunks_287.push(chunk);
3303
3588
  });
3304
3589
  value.on("end", function () {
3305
3590
  try {
3306
- var blob = new Blob(JSCompiler_object_inline_chunks_291, {
3591
+ var blob = new Blob(JSCompiler_object_inline_chunks_287, {
3307
3592
  type: mimeType
3308
3593
  });
3309
3594
  response._formData.append(name, blob, filename);