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