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