react-server-dom-webpack 19.2.2 → 19.2.4

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