react-server-dom-webpack 19.2.3 → 19.2.5

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