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