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