@vitejs/plugin-rsc 0.5.16 → 0.5.18

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