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