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