react-server-dom-turbopack 19.0.3 → 19.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -726,7 +726,7 @@ function describeObjectForErrorMessage(objectOrArray, expandedName) {
726
726
  "\n " + str + "\n " + objectOrArray)
727
727
  : "\n " + str;
728
728
  }
729
- var ObjectPrototype = Object.prototype,
729
+ var ObjectPrototype$1 = Object.prototype,
730
730
  stringify = JSON.stringify;
731
731
  function defaultErrorHandler(error) {
732
732
  console.error(error);
@@ -1547,7 +1547,7 @@ function renderModelDestructive(
1547
1547
  if (value instanceof Date) return "$D" + value.toJSON();
1548
1548
  request = getPrototypeOf(value);
1549
1549
  if (
1550
- request !== ObjectPrototype &&
1550
+ request !== ObjectPrototype$1 &&
1551
1551
  (null === request || null !== getPrototypeOf(request))
1552
1552
  )
1553
1553
  throw Error(
@@ -2061,16 +2061,23 @@ ReactPromise.prototype.then = function (resolve, reject) {
2061
2061
  case "fulfilled":
2062
2062
  if ("function" === typeof resolve) {
2063
2063
  for (
2064
- var inspectedValue = this.value, cycleProtection = 0;
2064
+ var inspectedValue = this.value,
2065
+ cycleProtection = 0,
2066
+ visited = new Set();
2065
2067
  inspectedValue instanceof ReactPromise;
2066
2068
 
2067
2069
  ) {
2068
2070
  cycleProtection++;
2069
- if (inspectedValue === this || 1e3 < cycleProtection) {
2071
+ if (
2072
+ inspectedValue === this ||
2073
+ visited.has(inspectedValue) ||
2074
+ 1e3 < cycleProtection
2075
+ ) {
2070
2076
  "function" === typeof reject &&
2071
2077
  reject(Error("Cannot have cyclic thenables."));
2072
2078
  return;
2073
2079
  }
2080
+ visited.add(inspectedValue);
2074
2081
  if ("fulfilled" === inspectedValue.status)
2075
2082
  inspectedValue = inspectedValue.value;
2076
2083
  else break;
@@ -2089,12 +2096,14 @@ ReactPromise.prototype.then = function (resolve, reject) {
2089
2096
  "function" === typeof reject && reject(this.reason);
2090
2097
  }
2091
2098
  };
2092
- function wakeChunk(response, listeners, value) {
2099
+ var ObjectPrototype = Object.prototype,
2100
+ ArrayPrototype = Array.prototype;
2101
+ function wakeChunk(response, listeners, value, chunk) {
2093
2102
  for (var i = 0; i < listeners.length; i++) {
2094
2103
  var listener = listeners[i];
2095
2104
  "function" === typeof listener
2096
2105
  ? listener(value)
2097
- : fulfillReference(response, listener, value);
2106
+ : fulfillReference(response, listener, value, chunk.reason);
2098
2107
  }
2099
2108
  }
2100
2109
  function rejectChunk(response, listeners, error) {
@@ -2105,27 +2114,6 @@ function rejectChunk(response, listeners, error) {
2105
2114
  : rejectReference(response, listener.handler, error);
2106
2115
  }
2107
2116
  }
2108
- function resolveBlockedCycle(resolvedChunk, reference) {
2109
- var referencedChunk = reference.handler.chunk;
2110
- if (null === referencedChunk) return null;
2111
- if (referencedChunk === resolvedChunk) return reference.handler;
2112
- reference = referencedChunk.value;
2113
- if (null !== reference)
2114
- for (
2115
- referencedChunk = 0;
2116
- referencedChunk < reference.length;
2117
- referencedChunk++
2118
- ) {
2119
- var listener = reference[referencedChunk];
2120
- if (
2121
- "function" !== typeof listener &&
2122
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2123
- null !== listener)
2124
- )
2125
- return listener;
2126
- }
2127
- return null;
2128
- }
2129
2117
  function triggerErrorOnChunk(response, chunk, error) {
2130
2118
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2131
2119
  chunk.reason.error(error);
@@ -2161,33 +2149,11 @@ function resolveModelChunk(response, chunk, value, id) {
2161
2149
  chunk.reason =
2162
2150
  ((value.id = id), (value[RESPONSE_SYMBOL] = response), value);
2163
2151
  if (null !== resolveListeners)
2164
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2152
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2165
2153
  case "fulfilled":
2166
- wakeChunk(response, resolveListeners, chunk.value);
2154
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2167
2155
  break;
2168
2156
  case "blocked":
2169
- for (value = 0; value < resolveListeners.length; value++)
2170
- if (((id = resolveListeners[value]), "function" !== typeof id)) {
2171
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2172
- if (null !== cyclicHandler)
2173
- switch (
2174
- (fulfillReference(response, id, cyclicHandler.value),
2175
- resolveListeners.splice(value, 1),
2176
- value--,
2177
- null !== rejectListeners &&
2178
- ((id = rejectListeners.indexOf(id)),
2179
- -1 !== id && rejectListeners.splice(id, 1)),
2180
- chunk.status)
2181
- ) {
2182
- case "fulfilled":
2183
- wakeChunk(response, resolveListeners, chunk.value);
2184
- break a;
2185
- case "rejected":
2186
- null !== rejectListeners &&
2187
- rejectChunk(response, rejectListeners, chunk.reason);
2188
- break a;
2189
- }
2190
- }
2191
2157
  case "pending":
2192
2158
  if (chunk.value)
2193
2159
  for (response = 0; response < resolveListeners.length; response++)
@@ -2204,7 +2170,8 @@ function resolveModelChunk(response, chunk, value, id) {
2204
2170
  } else chunk.reason = rejectListeners;
2205
2171
  break;
2206
2172
  case "rejected":
2207
- rejectListeners && wakeChunk(response, rejectListeners, chunk.reason);
2173
+ rejectListeners &&
2174
+ rejectChunk(response, rejectListeners, chunk.reason);
2208
2175
  }
2209
2176
  }
2210
2177
  }
@@ -2227,15 +2194,50 @@ function resolveIteratorResultChunk(response, chunk, value, done) {
2227
2194
  );
2228
2195
  }
2229
2196
  function loadServerReference$1(response, metaData, parentObject, key) {
2197
+ function reject(error) {
2198
+ var rejectListeners = blockedPromise.reason,
2199
+ erroredPromise = blockedPromise;
2200
+ erroredPromise.status = "rejected";
2201
+ erroredPromise.value = null;
2202
+ erroredPromise.reason = error;
2203
+ null !== rejectListeners && rejectChunk(response, rejectListeners, error);
2204
+ rejectReference(response, handler, error);
2205
+ }
2230
2206
  var id = metaData.id;
2231
2207
  if ("string" !== typeof id || "then" === key) return null;
2208
+ var cachedPromise = metaData.$$promise;
2209
+ if (void 0 !== cachedPromise) {
2210
+ if ("fulfilled" === cachedPromise.status)
2211
+ return (
2212
+ (cachedPromise = cachedPromise.value),
2213
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2214
+ );
2215
+ initializingHandler
2216
+ ? ((id = initializingHandler), id.deps++)
2217
+ : (id = initializingHandler =
2218
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2219
+ cachedPromise.then(
2220
+ resolveReference.bind(null, response, id, parentObject, key),
2221
+ rejectReference.bind(null, response, id)
2222
+ );
2223
+ return null;
2224
+ }
2225
+ var blockedPromise = new ReactPromise("blocked", null, null);
2226
+ metaData.$$promise = blockedPromise;
2232
2227
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2233
- id = metaData.bound;
2234
- var promise = preloadModule(serverReference);
2235
- if (promise)
2236
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2237
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2238
- else return requireModule(serverReference);
2228
+ cachedPromise = metaData.bound;
2229
+ if ((id = preloadModule(serverReference)))
2230
+ cachedPromise instanceof ReactPromise &&
2231
+ (id = Promise.all([id, cachedPromise]));
2232
+ else if (cachedPromise instanceof ReactPromise)
2233
+ id = Promise.resolve(cachedPromise);
2234
+ else
2235
+ return (
2236
+ (cachedPromise = requireModule(serverReference)),
2237
+ (id = blockedPromise),
2238
+ (id.status = "fulfilled"),
2239
+ (id.value = cachedPromise)
2240
+ );
2239
2241
  if (initializingHandler) {
2240
2242
  var handler = initializingHandler;
2241
2243
  handler.deps++;
@@ -2247,74 +2249,105 @@ function loadServerReference$1(response, metaData, parentObject, key) {
2247
2249
  deps: 1,
2248
2250
  errored: !1
2249
2251
  };
2250
- promise.then(
2251
- function () {
2252
- var resolvedValue = requireModule(serverReference);
2253
- if (metaData.bound) {
2254
- var promiseValue = metaData.bound.value;
2255
- promiseValue = Array.isArray(promiseValue) ? promiseValue.slice(0) : [];
2256
- promiseValue.unshift(null);
2257
- resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2258
- }
2259
- parentObject[key] = resolvedValue;
2260
- "" === key && null === handler.value && (handler.value = resolvedValue);
2261
- handler.deps--;
2262
- 0 === handler.deps &&
2263
- ((resolvedValue = handler.chunk),
2264
- null !== resolvedValue &&
2265
- "blocked" === resolvedValue.status &&
2266
- ((promiseValue = resolvedValue.value),
2267
- (resolvedValue.status = "fulfilled"),
2268
- (resolvedValue.value = handler.value),
2269
- (resolvedValue.reason = null),
2270
- null !== promiseValue &&
2271
- wakeChunk(response, promiseValue, handler.value)));
2272
- },
2273
- function (error) {
2274
- if (!handler.errored) {
2275
- handler.errored = !0;
2276
- handler.value = null;
2277
- handler.reason = error;
2278
- var chunk = handler.chunk;
2279
- null !== chunk &&
2280
- "blocked" === chunk.status &&
2281
- triggerErrorOnChunk(response, chunk, error);
2252
+ id.then(function () {
2253
+ var resolvedValue = requireModule(serverReference);
2254
+ if (metaData.bound) {
2255
+ var promiseValue = metaData.bound.value;
2256
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2257
+ if (1e3 < promiseValue.length) {
2258
+ reject(
2259
+ Error(
2260
+ "Server Function has too many bound arguments. Received " +
2261
+ promiseValue.length +
2262
+ " but the limit is 1000."
2263
+ )
2264
+ );
2265
+ return;
2282
2266
  }
2267
+ promiseValue.unshift(null);
2268
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2283
2269
  }
2284
- );
2270
+ promiseValue = blockedPromise.value;
2271
+ var initializedPromise = blockedPromise;
2272
+ initializedPromise.status = "fulfilled";
2273
+ initializedPromise.value = resolvedValue;
2274
+ initializedPromise.reason = null;
2275
+ null !== promiseValue &&
2276
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2277
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2278
+ }, reject);
2285
2279
  return null;
2286
2280
  }
2287
- function reviveModel(response, parentObj, parentKey, value, reference) {
2281
+ function reviveModel(
2282
+ response,
2283
+ parentObj,
2284
+ parentKey,
2285
+ value,
2286
+ reference,
2287
+ arrayRoot
2288
+ ) {
2288
2289
  if ("string" === typeof value)
2289
- return parseModelString(response, parentObj, parentKey, value, reference);
2290
+ return parseModelString(
2291
+ response,
2292
+ parentObj,
2293
+ parentKey,
2294
+ value,
2295
+ reference,
2296
+ arrayRoot
2297
+ );
2290
2298
  if ("object" === typeof value && null !== value)
2291
2299
  if (
2292
2300
  (void 0 !== reference &&
2293
2301
  void 0 !== response._temporaryReferences &&
2294
2302
  response._temporaryReferences.set(value, reference),
2295
- Array.isArray(value))
2296
- )
2297
- for (var i = 0; i < value.length; i++)
2298
- value[i] = reviveModel(
2303
+ isArrayImpl(value))
2304
+ ) {
2305
+ if (null === arrayRoot) {
2306
+ var childContext = { count: 0, fork: !1 };
2307
+ response._rootArrayContexts.set(value, childContext);
2308
+ } else childContext = arrayRoot;
2309
+ 1 < value.length && (childContext.fork = !0);
2310
+ bumpArrayCount(childContext, value.length + 1, response);
2311
+ for (parentObj = 0; parentObj < value.length; parentObj++)
2312
+ value[parentObj] = reviveModel(
2299
2313
  response,
2300
2314
  value,
2301
- "" + i,
2302
- value[i],
2303
- void 0 !== reference ? reference + ":" + i : void 0
2315
+ "" + parentObj,
2316
+ value[parentObj],
2317
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
2318
+ childContext
2304
2319
  );
2305
- else
2306
- for (i in value)
2307
- hasOwnProperty.call(value, i) &&
2308
- ((parentObj =
2309
- void 0 !== reference && -1 === i.indexOf(":")
2310
- ? reference + ":" + i
2311
- : void 0),
2312
- (parentObj = reviveModel(response, value, i, value[i], parentObj)),
2313
- void 0 !== parentObj || "__proto__" === i
2314
- ? (value[i] = parentObj)
2315
- : delete value[i]);
2320
+ } else
2321
+ for (childContext in value)
2322
+ hasOwnProperty.call(value, childContext) &&
2323
+ ("__proto__" === childContext
2324
+ ? delete value[childContext]
2325
+ : ((parentObj =
2326
+ void 0 !== reference && -1 === childContext.indexOf(":")
2327
+ ? reference + ":" + childContext
2328
+ : void 0),
2329
+ (parentObj = reviveModel(
2330
+ response,
2331
+ value,
2332
+ childContext,
2333
+ value[childContext],
2334
+ parentObj,
2335
+ null
2336
+ )),
2337
+ void 0 !== parentObj
2338
+ ? (value[childContext] = parentObj)
2339
+ : delete value[childContext]));
2316
2340
  return value;
2317
2341
  }
2342
+ function bumpArrayCount(arrayContext, slots, response) {
2343
+ if (
2344
+ (arrayContext.count += slots) > response._arraySizeLimit &&
2345
+ arrayContext.fork
2346
+ )
2347
+ throw Error(
2348
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
2349
+ );
2350
+ }
2318
2351
  var initializingHandler = null;
2319
2352
  function initializeModelChunk(chunk) {
2320
2353
  var prevHandler = initializingHandler;
@@ -2328,13 +2361,15 @@ function initializeModelChunk(chunk) {
2328
2361
  chunk.value = null;
2329
2362
  chunk.reason = null;
2330
2363
  try {
2331
- var rawModel = JSON.parse(resolvedModel),
2332
- value = reviveModel(
2364
+ var rawModel = JSON.parse(resolvedModel);
2365
+ resolvedModel = { count: 0, fork: !1 };
2366
+ var value = reviveModel(
2333
2367
  response,
2334
2368
  { "": rawModel },
2335
2369
  "",
2336
2370
  rawModel,
2337
- _chunk$reason
2371
+ _chunk$reason,
2372
+ resolvedModel
2338
2373
  ),
2339
2374
  resolveListeners = chunk.value;
2340
2375
  if (null !== resolveListeners)
@@ -2346,19 +2381,20 @@ function initializeModelChunk(chunk) {
2346
2381
  var listener = resolveListeners[rawModel];
2347
2382
  "function" === typeof listener
2348
2383
  ? listener(value)
2349
- : fulfillReference(response, listener, value);
2384
+ : fulfillReference(response, listener, value, resolvedModel);
2350
2385
  }
2351
2386
  if (null !== initializingHandler) {
2352
2387
  if (initializingHandler.errored) throw initializingHandler.reason;
2353
2388
  if (0 < initializingHandler.deps) {
2354
2389
  initializingHandler.value = value;
2390
+ initializingHandler.reason = resolvedModel;
2355
2391
  initializingHandler.chunk = chunk;
2356
2392
  return;
2357
2393
  }
2358
2394
  }
2359
2395
  chunk.status = "fulfilled";
2360
2396
  chunk.value = value;
2361
- chunk.reason = null;
2397
+ chunk.reason = resolvedModel;
2362
2398
  } catch (error) {
2363
2399
  (chunk.status = "rejected"), (chunk.reason = error);
2364
2400
  } finally {
@@ -2371,7 +2407,8 @@ function reportGlobalError(response, error) {
2371
2407
  ? triggerErrorOnChunk(response, chunk, error)
2372
2408
  : "fulfilled" === chunk.status &&
2373
2409
  null !== chunk.reason &&
2374
- chunk.reason.error(error);
2410
+ ((chunk = chunk.reason),
2411
+ "function" === typeof chunk.error && chunk.error(error));
2375
2412
  });
2376
2413
  }
2377
2414
  function getChunk(response, id) {
@@ -2386,40 +2423,67 @@ function getChunk(response, id) {
2386
2423
  chunks.set(id, chunk));
2387
2424
  return chunk;
2388
2425
  }
2389
- function fulfillReference(response, reference, value) {
2426
+ function fulfillReference(response, reference, value, arrayRoot) {
2390
2427
  var handler = reference.handler,
2391
2428
  parentObject = reference.parentObject,
2392
2429
  key = reference.key,
2393
2430
  map = reference.map,
2394
2431
  path = reference.path;
2395
2432
  try {
2396
- for (var i = 1; i < path.length; i++) {
2433
+ for (
2434
+ var localLength = 0,
2435
+ rootArrayContexts = response._rootArrayContexts,
2436
+ i = 1;
2437
+ i < path.length;
2438
+ i++
2439
+ ) {
2397
2440
  var name = path[i];
2398
2441
  if (
2399
2442
  "object" !== typeof value ||
2400
- !hasOwnProperty.call(value, name) ||
2401
- value instanceof Promise
2443
+ null === value ||
2444
+ (getPrototypeOf(value) !== ObjectPrototype &&
2445
+ getPrototypeOf(value) !== ArrayPrototype) ||
2446
+ !hasOwnProperty.call(value, name)
2402
2447
  )
2403
2448
  throw Error("Invalid reference.");
2404
2449
  value = value[name];
2450
+ if (isArrayImpl(value))
2451
+ (localLength = 0),
2452
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
2453
+ else if (((arrayRoot = null), "string" === typeof value))
2454
+ localLength = value.length;
2455
+ else if ("bigint" === typeof value) {
2456
+ var n = Math.abs(Number(value));
2457
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
2458
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
2405
2459
  }
2406
- var mappedValue = map(response, value, parentObject, key);
2407
- parentObject[key] = mappedValue;
2408
- "" === key && null === handler.value && (handler.value = mappedValue);
2460
+ var resolvedValue = map(response, value, parentObject, key);
2461
+ var referenceArrayRoot = reference.arrayRoot;
2462
+ null !== referenceArrayRoot &&
2463
+ (null !== arrayRoot
2464
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
2465
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
2466
+ : 0 < localLength &&
2467
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2409
2468
  } catch (error) {
2410
- rejectReference(response, reference.handler, error);
2469
+ rejectReference(response, handler, error);
2411
2470
  return;
2412
2471
  }
2472
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2473
+ }
2474
+ function resolveReference(response, handler, parentObject, key, resolvedValue) {
2475
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
2476
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2413
2477
  handler.deps--;
2414
2478
  0 === handler.deps &&
2415
- ((reference = handler.chunk),
2416
- null !== reference &&
2417
- "blocked" === reference.status &&
2418
- ((value = reference.value),
2419
- (reference.status = "fulfilled"),
2420
- (reference.value = handler.value),
2421
- (reference.reason = handler.reason),
2422
- null !== value && wakeChunk(response, value, handler.value)));
2479
+ ((parentObject = handler.chunk),
2480
+ null !== parentObject &&
2481
+ "blocked" === parentObject.status &&
2482
+ ((key = parentObject.value),
2483
+ (parentObject.status = "fulfilled"),
2484
+ (parentObject.value = handler.value),
2485
+ (parentObject.reason = handler.reason),
2486
+ null !== key && wakeChunk(response, key, handler.value, parentObject)));
2423
2487
  }
2424
2488
  function rejectReference(response, handler, error) {
2425
2489
  handler.errored ||
@@ -2431,60 +2495,97 @@ function rejectReference(response, handler, error) {
2431
2495
  "blocked" === handler.status &&
2432
2496
  triggerErrorOnChunk(response, handler, error));
2433
2497
  }
2434
- function getOutlinedModel(response, reference, parentObject, key, map) {
2498
+ function getOutlinedModel(
2499
+ response,
2500
+ reference,
2501
+ parentObject,
2502
+ key,
2503
+ referenceArrayRoot,
2504
+ map
2505
+ ) {
2435
2506
  reference = reference.split(":");
2436
- var id = parseInt(reference[0], 16);
2437
- id = getChunk(response, id);
2438
- switch (id.status) {
2507
+ var id = parseInt(reference[0], 16),
2508
+ chunk = getChunk(response, id);
2509
+ switch (chunk.status) {
2439
2510
  case "resolved_model":
2440
- initializeModelChunk(id);
2511
+ initializeModelChunk(chunk);
2441
2512
  }
2442
- switch (id.status) {
2513
+ switch (chunk.status) {
2443
2514
  case "fulfilled":
2444
- id = id.value;
2445
- for (var i = 1; i < reference.length; i++) {
2446
- var name = reference[i];
2515
+ id = chunk.value;
2516
+ chunk = chunk.reason;
2517
+ for (
2518
+ var localLength = 0,
2519
+ rootArrayContexts = response._rootArrayContexts,
2520
+ i = 1;
2521
+ i < reference.length;
2522
+ i++
2523
+ ) {
2524
+ localLength = reference[i];
2447
2525
  if (
2448
2526
  "object" !== typeof id ||
2449
- !hasOwnProperty.call(id, name) ||
2450
- id instanceof Promise
2527
+ null === id ||
2528
+ (getPrototypeOf(id) !== ObjectPrototype &&
2529
+ getPrototypeOf(id) !== ArrayPrototype) ||
2530
+ !hasOwnProperty.call(id, localLength)
2451
2531
  )
2452
2532
  throw Error("Invalid reference.");
2453
- id = id[name];
2533
+ id = id[localLength];
2534
+ isArrayImpl(id)
2535
+ ? ((localLength = 0), (chunk = rootArrayContexts.get(id) || chunk))
2536
+ : ((chunk = null),
2537
+ "string" === typeof id
2538
+ ? (localLength = id.length)
2539
+ : "bigint" === typeof id
2540
+ ? ((localLength = Math.abs(Number(id))),
2541
+ (localLength =
2542
+ 0 === localLength
2543
+ ? 1
2544
+ : Math.floor(Math.log10(localLength)) + 1))
2545
+ : (localLength = ArrayBuffer.isView(id) ? id.byteLength : 0));
2454
2546
  }
2455
- return map(response, id, parentObject, key);
2456
- case "pending":
2547
+ parentObject = map(response, id, parentObject, key);
2548
+ null !== referenceArrayRoot &&
2549
+ (null !== chunk
2550
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
2551
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
2552
+ : 0 < localLength &&
2553
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2554
+ return parentObject;
2457
2555
  case "blocked":
2458
2556
  return (
2459
2557
  initializingHandler
2460
2558
  ? ((response = initializingHandler), response.deps++)
2461
2559
  : (response = initializingHandler =
2462
2560
  { chunk: null, value: null, reason: null, deps: 1, errored: !1 }),
2463
- (parentObject = {
2561
+ (referenceArrayRoot = {
2464
2562
  handler: response,
2465
2563
  parentObject: parentObject,
2466
2564
  key: key,
2467
2565
  map: map,
2468
- path: reference
2566
+ path: reference,
2567
+ arrayRoot: referenceArrayRoot
2469
2568
  }),
2470
- null === id.value
2471
- ? (id.value = [parentObject])
2472
- : id.value.push(parentObject),
2473
- null === id.reason
2474
- ? (id.reason = [parentObject])
2475
- : id.reason.push(parentObject),
2569
+ null === chunk.value
2570
+ ? (chunk.value = [referenceArrayRoot])
2571
+ : chunk.value.push(referenceArrayRoot),
2572
+ null === chunk.reason
2573
+ ? (chunk.reason = [referenceArrayRoot])
2574
+ : chunk.reason.push(referenceArrayRoot),
2476
2575
  null
2477
2576
  );
2577
+ case "pending":
2578
+ throw Error("Invalid forward reference.");
2478
2579
  default:
2479
2580
  return (
2480
2581
  initializingHandler
2481
2582
  ? ((initializingHandler.errored = !0),
2482
2583
  (initializingHandler.value = null),
2483
- (initializingHandler.reason = id.reason))
2584
+ (initializingHandler.reason = chunk.reason))
2484
2585
  : (initializingHandler = {
2485
2586
  chunk: null,
2486
2587
  value: null,
2487
- reason: id.reason,
2588
+ reason: chunk.reason,
2488
2589
  deps: 0,
2489
2590
  errored: !0
2490
2591
  }),
@@ -2493,12 +2594,21 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
2493
2594
  }
2494
2595
  }
2495
2596
  function createMap(response, model) {
2597
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
2598
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
2599
+ model.$$consumed = !0;
2496
2600
  return new Map(model);
2497
2601
  }
2498
2602
  function createSet(response, model) {
2603
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
2604
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
2605
+ model.$$consumed = !0;
2499
2606
  return new Set(model);
2500
2607
  }
2501
2608
  function extractIterator(response, model) {
2609
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
2610
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
2611
+ model.$$consumed = !0;
2502
2612
  return model[Symbol.iterator]();
2503
2613
  }
2504
2614
  function createModel(response, model, parentObject, key) {
@@ -2510,13 +2620,34 @@ function parseTypedArray(
2510
2620
  constructor,
2511
2621
  bytesPerElement,
2512
2622
  parentObject,
2513
- parentKey
2623
+ parentKey,
2624
+ referenceArrayRoot
2514
2625
  ) {
2626
+ function reject(error) {
2627
+ if (!handler.errored) {
2628
+ handler.errored = !0;
2629
+ handler.value = null;
2630
+ handler.reason = error;
2631
+ var chunk = handler.chunk;
2632
+ null !== chunk &&
2633
+ "blocked" === chunk.status &&
2634
+ triggerErrorOnChunk(response, chunk, error);
2635
+ }
2636
+ }
2515
2637
  reference = parseInt(reference.slice(2), 16);
2516
- bytesPerElement = response._prefix + reference;
2517
- if (response._chunks.has(reference))
2638
+ var key = response._prefix + reference;
2639
+ bytesPerElement = response._chunks;
2640
+ if (bytesPerElement.has(reference))
2518
2641
  throw Error("Already initialized typed array.");
2519
- reference = response._formData.get(bytesPerElement).arrayBuffer();
2642
+ bytesPerElement.set(
2643
+ reference,
2644
+ new ReactPromise(
2645
+ "rejected",
2646
+ null,
2647
+ Error("Already initialized typed array.")
2648
+ )
2649
+ );
2650
+ reference = response._formData.get(key).arrayBuffer();
2520
2651
  if (initializingHandler) {
2521
2652
  var handler = initializingHandler;
2522
2653
  handler.deps++;
@@ -2528,37 +2659,32 @@ function parseTypedArray(
2528
2659
  deps: 1,
2529
2660
  errored: !1
2530
2661
  };
2531
- reference.then(
2532
- function (buffer) {
2533
- buffer = constructor === ArrayBuffer ? buffer : new constructor(buffer);
2534
- parentObject[parentKey] = buffer;
2535
- "" === parentKey && null === handler.value && (handler.value = buffer);
2536
- handler.deps--;
2537
- if (
2538
- 0 === handler.deps &&
2539
- ((buffer = handler.chunk),
2540
- null !== buffer && "blocked" === buffer.status)
2541
- ) {
2542
- var resolveListeners = buffer.value;
2543
- buffer.status = "fulfilled";
2544
- buffer.value = handler.value;
2545
- buffer.reason = null;
2546
- null !== resolveListeners &&
2547
- wakeChunk(response, resolveListeners, handler.value);
2548
- }
2549
- },
2550
- function (error) {
2551
- if (!handler.errored) {
2552
- handler.errored = !0;
2553
- handler.value = null;
2554
- handler.reason = error;
2555
- var chunk = handler.chunk;
2556
- null !== chunk &&
2557
- "blocked" === chunk.status &&
2558
- triggerErrorOnChunk(response, chunk, error);
2559
- }
2662
+ reference.then(function (buffer) {
2663
+ try {
2664
+ null !== referenceArrayRoot &&
2665
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
2666
+ var resolvedValue =
2667
+ constructor === ArrayBuffer ? buffer : new constructor(buffer);
2668
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
2669
+ "" === parentKey &&
2670
+ null === handler.value &&
2671
+ (handler.value = resolvedValue);
2672
+ } catch (x) {
2673
+ reject(x);
2674
+ return;
2560
2675
  }
2561
- );
2676
+ handler.deps--;
2677
+ 0 === handler.deps &&
2678
+ ((buffer = handler.chunk),
2679
+ null !== buffer &&
2680
+ "blocked" === buffer.status &&
2681
+ ((resolvedValue = buffer.value),
2682
+ (buffer.status = "fulfilled"),
2683
+ (buffer.value = handler.value),
2684
+ (buffer.reason = null),
2685
+ null !== resolvedValue &&
2686
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
2687
+ }, reject);
2562
2688
  return null;
2563
2689
  }
2564
2690
  function resolveStream(response, id, stream, controller) {
@@ -2574,86 +2700,78 @@ function resolveStream(response, id, stream, controller) {
2574
2700
  : controller.enqueueModel(chunks));
2575
2701
  }
2576
2702
  function parseReadableStream(response, reference, type) {
2703
+ function enqueue(value) {
2704
+ "bytes" !== type || ArrayBuffer.isView(value)
2705
+ ? controller.enqueue(value)
2706
+ : flightController.error(Error("Invalid data for bytes stream."));
2707
+ }
2577
2708
  reference = parseInt(reference.slice(2), 16);
2578
2709
  if (response._chunks.has(reference))
2579
2710
  throw Error("Already initialized stream.");
2580
2711
  var controller = null,
2581
- closed = !1;
2582
- type = new ReadableStream({
2583
- type: type,
2584
- start: function (c) {
2585
- controller = c;
2586
- }
2587
- });
2588
- var previousBlockedChunk = null;
2589
- resolveStream(response, reference, type, {
2590
- enqueueModel: function (json) {
2591
- if (null === previousBlockedChunk) {
2592
- var chunk = createResolvedModelChunk(response, json, -1);
2593
- initializeModelChunk(chunk);
2594
- "fulfilled" === chunk.status
2595
- ? controller.enqueue(chunk.value)
2596
- : (chunk.then(
2597
- function (v) {
2598
- return controller.enqueue(v);
2599
- },
2600
- function (e) {
2601
- return controller.error(e);
2602
- }
2603
- ),
2604
- (previousBlockedChunk = chunk));
2605
- } else {
2606
- chunk = previousBlockedChunk;
2607
- var chunk$31 = new ReactPromise("pending", null, null);
2608
- chunk$31.then(
2609
- function (v) {
2610
- return controller.enqueue(v);
2611
- },
2612
- function (e) {
2613
- return controller.error(e);
2614
- }
2615
- );
2616
- previousBlockedChunk = chunk$31;
2617
- chunk.then(function () {
2618
- previousBlockedChunk === chunk$31 && (previousBlockedChunk = null);
2619
- resolveModelChunk(response, chunk$31, json, -1);
2620
- });
2712
+ closed = !1,
2713
+ stream = new ReadableStream({
2714
+ type: type,
2715
+ start: function (c) {
2716
+ controller = c;
2621
2717
  }
2622
- },
2623
- close: function () {
2624
- if (!closed)
2625
- if (((closed = !0), null === previousBlockedChunk)) controller.close();
2626
- else {
2627
- var blockedChunk = previousBlockedChunk;
2628
- previousBlockedChunk = null;
2629
- blockedChunk.then(function () {
2630
- return controller.close();
2631
- });
2632
- }
2633
- },
2634
- error: function (error) {
2635
- if (!closed)
2636
- if (((closed = !0), null === previousBlockedChunk))
2637
- controller.error(error);
2638
- else {
2639
- var blockedChunk = previousBlockedChunk;
2640
- previousBlockedChunk = null;
2641
- blockedChunk.then(function () {
2642
- return controller.error(error);
2718
+ }),
2719
+ previousBlockedChunk = null,
2720
+ flightController = {
2721
+ enqueueModel: function (json) {
2722
+ if (null === previousBlockedChunk) {
2723
+ var chunk = createResolvedModelChunk(response, json, -1);
2724
+ initializeModelChunk(chunk);
2725
+ "fulfilled" === chunk.status
2726
+ ? enqueue(chunk.value)
2727
+ : (chunk.then(enqueue, flightController.error),
2728
+ (previousBlockedChunk = chunk));
2729
+ } else {
2730
+ chunk = previousBlockedChunk;
2731
+ var chunk$32 = new ReactPromise("pending", null, null);
2732
+ chunk$32.then(enqueue, flightController.error);
2733
+ previousBlockedChunk = chunk$32;
2734
+ chunk.then(function () {
2735
+ previousBlockedChunk === chunk$32 && (previousBlockedChunk = null);
2736
+ resolveModelChunk(response, chunk$32, json, -1);
2643
2737
  });
2644
2738
  }
2645
- }
2646
- });
2647
- return type;
2648
- }
2649
- function asyncIterator() {
2650
- return this;
2739
+ },
2740
+ close: function () {
2741
+ if (!closed)
2742
+ if (((closed = !0), null === previousBlockedChunk))
2743
+ controller.close();
2744
+ else {
2745
+ var blockedChunk = previousBlockedChunk;
2746
+ previousBlockedChunk = null;
2747
+ blockedChunk.then(function () {
2748
+ return controller.close();
2749
+ });
2750
+ }
2751
+ },
2752
+ error: function (error) {
2753
+ if (!closed)
2754
+ if (((closed = !0), null === previousBlockedChunk))
2755
+ controller.error(error);
2756
+ else {
2757
+ var blockedChunk = previousBlockedChunk;
2758
+ previousBlockedChunk = null;
2759
+ blockedChunk.then(function () {
2760
+ return controller.error(error);
2761
+ });
2762
+ }
2763
+ }
2764
+ };
2765
+ resolveStream(response, reference, stream, flightController);
2766
+ return stream;
2651
2767
  }
2652
- function createIterator(next) {
2653
- next = { next: next };
2654
- next[ASYNC_ITERATOR] = asyncIterator;
2655
- return next;
2768
+ function FlightIterator(next) {
2769
+ this.next = next;
2656
2770
  }
2771
+ FlightIterator.prototype = {};
2772
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
2773
+ return this;
2774
+ };
2657
2775
  function parseAsyncIterable(response, reference, iterator) {
2658
2776
  reference = parseInt(reference.slice(2), 16);
2659
2777
  if (response._chunks.has(reference))
@@ -2665,7 +2783,7 @@ function parseAsyncIterable(response, reference, iterator) {
2665
2783
  $jscomp$compprop5 =
2666
2784
  (($jscomp$compprop5[ASYNC_ITERATOR] = function () {
2667
2785
  var nextReadIndex = 0;
2668
- return createIterator(function (arg) {
2786
+ return new FlightIterator(function (arg) {
2669
2787
  if (void 0 !== arg)
2670
2788
  throw Error(
2671
2789
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -2745,17 +2863,28 @@ function parseAsyncIterable(response, reference, iterator) {
2745
2863
  });
2746
2864
  return iterator;
2747
2865
  }
2748
- function parseModelString(response, obj, key, value, reference) {
2866
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
2749
2867
  if ("$" === value[0]) {
2750
2868
  switch (value[1]) {
2751
2869
  case "$":
2752
- return value.slice(1);
2870
+ return (
2871
+ null !== arrayRoot &&
2872
+ bumpArrayCount(arrayRoot, value.length - 1, response),
2873
+ value.slice(1)
2874
+ );
2753
2875
  case "@":
2754
2876
  return (obj = parseInt(value.slice(2), 16)), getChunk(response, obj);
2755
2877
  case "h":
2756
2878
  return (
2757
- (value = value.slice(2)),
2758
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
2879
+ (arrayRoot = value.slice(2)),
2880
+ getOutlinedModel(
2881
+ response,
2882
+ arrayRoot,
2883
+ obj,
2884
+ key,
2885
+ null,
2886
+ loadServerReference$1
2887
+ )
2759
2888
  );
2760
2889
  case "T":
2761
2890
  if (void 0 === reference || void 0 === response._temporaryReferences)
@@ -2768,27 +2897,37 @@ function parseModelString(response, obj, key, value, reference) {
2768
2897
  );
2769
2898
  case "Q":
2770
2899
  return (
2771
- (value = value.slice(2)),
2772
- getOutlinedModel(response, value, obj, key, createMap)
2900
+ (arrayRoot = value.slice(2)),
2901
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
2773
2902
  );
2774
2903
  case "W":
2775
2904
  return (
2776
- (value = value.slice(2)),
2777
- getOutlinedModel(response, value, obj, key, createSet)
2905
+ (arrayRoot = value.slice(2)),
2906
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
2778
2907
  );
2779
2908
  case "K":
2780
2909
  obj = value.slice(2);
2781
- var formPrefix = response._prefix + obj + "_",
2782
- data = new FormData();
2783
- response._formData.forEach(function (entry, entryKey) {
2784
- entryKey.startsWith(formPrefix) &&
2785
- data.append(entryKey.slice(formPrefix.length), entry);
2786
- });
2787
- return data;
2910
+ obj = response._prefix + obj + "_";
2911
+ key = new FormData();
2912
+ response = response._formData;
2913
+ arrayRoot = Array.from(response.keys());
2914
+ for (value = 0; value < arrayRoot.length; value++)
2915
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
2916
+ for (
2917
+ var entries = response.getAll(reference),
2918
+ newKey = reference.slice(obj.length),
2919
+ j = 0;
2920
+ j < entries.length;
2921
+ j++
2922
+ )
2923
+ key.append(newKey, entries[j]);
2924
+ response.delete(reference);
2925
+ }
2926
+ return key;
2788
2927
  case "i":
2789
2928
  return (
2790
- (value = value.slice(2)),
2791
- getOutlinedModel(response, value, obj, key, extractIterator)
2929
+ (arrayRoot = value.slice(2)),
2930
+ getOutlinedModel(response, arrayRoot, obj, key, null, extractIterator)
2792
2931
  );
2793
2932
  case "I":
2794
2933
  return Infinity;
@@ -2801,35 +2940,147 @@ function parseModelString(response, obj, key, value, reference) {
2801
2940
  case "D":
2802
2941
  return new Date(Date.parse(value.slice(2)));
2803
2942
  case "n":
2804
- return BigInt(value.slice(2));
2943
+ obj = value.slice(2);
2944
+ if (300 < obj.length)
2945
+ throw Error(
2946
+ "BigInt is too large. Received " +
2947
+ obj.length +
2948
+ " digits but the limit is 300."
2949
+ );
2950
+ null !== arrayRoot && bumpArrayCount(arrayRoot, obj.length, response);
2951
+ return BigInt(obj);
2805
2952
  }
2806
2953
  switch (value[1]) {
2807
2954
  case "A":
2808
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
2955
+ return parseTypedArray(
2956
+ response,
2957
+ value,
2958
+ ArrayBuffer,
2959
+ 1,
2960
+ obj,
2961
+ key,
2962
+ arrayRoot
2963
+ );
2809
2964
  case "O":
2810
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
2965
+ return parseTypedArray(
2966
+ response,
2967
+ value,
2968
+ Int8Array,
2969
+ 1,
2970
+ obj,
2971
+ key,
2972
+ arrayRoot
2973
+ );
2811
2974
  case "o":
2812
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
2975
+ return parseTypedArray(
2976
+ response,
2977
+ value,
2978
+ Uint8Array,
2979
+ 1,
2980
+ obj,
2981
+ key,
2982
+ arrayRoot
2983
+ );
2813
2984
  case "U":
2814
- return parseTypedArray(response, value, Uint8ClampedArray, 1, obj, key);
2985
+ return parseTypedArray(
2986
+ response,
2987
+ value,
2988
+ Uint8ClampedArray,
2989
+ 1,
2990
+ obj,
2991
+ key,
2992
+ arrayRoot
2993
+ );
2815
2994
  case "S":
2816
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
2995
+ return parseTypedArray(
2996
+ response,
2997
+ value,
2998
+ Int16Array,
2999
+ 2,
3000
+ obj,
3001
+ key,
3002
+ arrayRoot
3003
+ );
2817
3004
  case "s":
2818
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3005
+ return parseTypedArray(
3006
+ response,
3007
+ value,
3008
+ Uint16Array,
3009
+ 2,
3010
+ obj,
3011
+ key,
3012
+ arrayRoot
3013
+ );
2819
3014
  case "L":
2820
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3015
+ return parseTypedArray(
3016
+ response,
3017
+ value,
3018
+ Int32Array,
3019
+ 4,
3020
+ obj,
3021
+ key,
3022
+ arrayRoot
3023
+ );
2821
3024
  case "l":
2822
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3025
+ return parseTypedArray(
3026
+ response,
3027
+ value,
3028
+ Uint32Array,
3029
+ 4,
3030
+ obj,
3031
+ key,
3032
+ arrayRoot
3033
+ );
2823
3034
  case "G":
2824
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3035
+ return parseTypedArray(
3036
+ response,
3037
+ value,
3038
+ Float32Array,
3039
+ 4,
3040
+ obj,
3041
+ key,
3042
+ arrayRoot
3043
+ );
2825
3044
  case "g":
2826
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3045
+ return parseTypedArray(
3046
+ response,
3047
+ value,
3048
+ Float64Array,
3049
+ 8,
3050
+ obj,
3051
+ key,
3052
+ arrayRoot
3053
+ );
2827
3054
  case "M":
2828
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3055
+ return parseTypedArray(
3056
+ response,
3057
+ value,
3058
+ BigInt64Array,
3059
+ 8,
3060
+ obj,
3061
+ key,
3062
+ arrayRoot
3063
+ );
2829
3064
  case "m":
2830
- return parseTypedArray(response, value, BigUint64Array, 8, obj, key);
3065
+ return parseTypedArray(
3066
+ response,
3067
+ value,
3068
+ BigUint64Array,
3069
+ 8,
3070
+ obj,
3071
+ key,
3072
+ arrayRoot
3073
+ );
2831
3074
  case "V":
2832
- return parseTypedArray(response, value, DataView, 1, obj, key);
3075
+ return parseTypedArray(
3076
+ response,
3077
+ value,
3078
+ DataView,
3079
+ 1,
3080
+ obj,
3081
+ key,
3082
+ arrayRoot
3083
+ );
2833
3084
  case "B":
2834
3085
  return (
2835
3086
  (obj = parseInt(value.slice(2), 16)),
@@ -2847,8 +3098,9 @@ function parseModelString(response, obj, key, value, reference) {
2847
3098
  return parseAsyncIterable(response, value, !0);
2848
3099
  }
2849
3100
  value = value.slice(1);
2850
- return getOutlinedModel(response, value, obj, key, createModel);
3101
+ return getOutlinedModel(response, value, obj, key, arrayRoot, createModel);
2851
3102
  }
3103
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
2852
3104
  return value;
2853
3105
  }
2854
3106
  function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
@@ -2856,13 +3108,17 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
2856
3108
  3 < arguments.length && void 0 !== arguments[3]
2857
3109
  ? arguments[3]
2858
3110
  : new FormData(),
3111
+ arraySizeLimit =
3112
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
2859
3113
  chunks = new Map();
2860
3114
  return {
2861
3115
  _bundlerConfig: bundlerConfig,
2862
3116
  _prefix: formFieldPrefix,
2863
3117
  _formData: backingFormData,
2864
3118
  _chunks: chunks,
2865
- _temporaryReferences: temporaryReferences
3119
+ _temporaryReferences: temporaryReferences,
3120
+ _rootArrayContexts: new WeakMap(),
3121
+ _arraySizeLimit: arraySizeLimit
2866
3122
  };
2867
3123
  }
2868
3124
  function resolveField(response, key, value) {
@@ -2878,13 +3134,22 @@ function resolveField(response, key, value) {
2878
3134
  function close(response) {
2879
3135
  reportGlobalError(response, Error("Connection closed."));
2880
3136
  }
2881
- function loadServerReference(bundlerConfig, id, bound) {
3137
+ function loadServerReference(bundlerConfig, metaData) {
3138
+ var id = metaData.id;
3139
+ if ("string" !== typeof id) return null;
2882
3140
  var serverReference = resolveServerReference(bundlerConfig, id);
2883
3141
  bundlerConfig = preloadModule(serverReference);
2884
- return bound
2885
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3142
+ metaData = metaData.bound;
3143
+ return metaData instanceof Promise
3144
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
2886
3145
  _ref = _ref[0];
2887
3146
  var fn = requireModule(serverReference);
3147
+ if (1e3 < _ref.length)
3148
+ throw Error(
3149
+ "Server Function has too many bound arguments. Received " +
3150
+ _ref.length +
3151
+ " but the limit is 1000."
3152
+ );
2888
3153
  return fn.bind.apply(fn, [null].concat(_ref));
2889
3154
  })
2890
3155
  : bundlerConfig
@@ -2893,8 +3158,19 @@ function loadServerReference(bundlerConfig, id, bound) {
2893
3158
  })
2894
3159
  : Promise.resolve(requireModule(serverReference));
2895
3160
  }
2896
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
2897
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3161
+ function decodeBoundActionMetaData(
3162
+ body,
3163
+ serverManifest,
3164
+ formFieldPrefix,
3165
+ arraySizeLimit
3166
+ ) {
3167
+ body = createResponse(
3168
+ serverManifest,
3169
+ formFieldPrefix,
3170
+ void 0,
3171
+ body,
3172
+ arraySizeLimit
3173
+ );
2898
3174
  close(body);
2899
3175
  body = getChunk(body, 0);
2900
3176
  body.then(function () {});
@@ -2921,16 +3197,24 @@ exports.createTemporaryReferenceSet = function () {
2921
3197
  };
2922
3198
  exports.decodeAction = function (body, serverManifest) {
2923
3199
  var formData = new FormData(),
2924
- action = null;
3200
+ action = null,
3201
+ seenActions = new Set();
2925
3202
  body.forEach(function (value, key) {
2926
3203
  key.startsWith("$ACTION_")
2927
3204
  ? key.startsWith("$ACTION_REF_")
2928
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
3205
+ ? seenActions.has(key) ||
3206
+ (seenActions.add(key),
3207
+ (value = "$ACTION_" + key.slice(12) + ":"),
2929
3208
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
2930
- (action = loadServerReference(serverManifest, value.id, value.bound)))
3209
+ (action = loadServerReference(serverManifest, value)))
2931
3210
  : key.startsWith("$ACTION_ID_") &&
2932
- ((value = key.slice(11)),
2933
- (action = loadServerReference(serverManifest, value, null)))
3211
+ !seenActions.has(key) &&
3212
+ (seenActions.add(key),
3213
+ (value = key.slice(11)),
3214
+ (action = loadServerReference(serverManifest, {
3215
+ id: value,
3216
+ bound: null
3217
+ })))
2934
3218
  : formData.append(key, value);
2935
3219
  });
2936
3220
  return null === action
@@ -2966,7 +3250,8 @@ exports.decodeReply = function (body, turbopackMap, options) {
2966
3250
  turbopackMap,
2967
3251
  "",
2968
3252
  options ? options.temporaryReferences : void 0,
2969
- body
3253
+ body,
3254
+ options ? options.arraySizeLimit : void 0
2970
3255
  );
2971
3256
  turbopackMap = getChunk(body, 0);
2972
3257
  close(body);
@@ -2976,7 +3261,9 @@ exports.decodeReplyFromBusboy = function (busboyStream, turbopackMap, options) {
2976
3261
  var response = createResponse(
2977
3262
  turbopackMap,
2978
3263
  "",
2979
- options ? options.temporaryReferences : void 0
3264
+ options ? options.temporaryReferences : void 0,
3265
+ void 0,
3266
+ options ? options.arraySizeLimit : void 0
2980
3267
  ),
2981
3268
  pendingFiles = 0,
2982
3269
  queuedFields = [];
@@ -3000,13 +3287,13 @@ exports.decodeReplyFromBusboy = function (busboyStream, turbopackMap, options) {
3000
3287
  );
3001
3288
  else {
3002
3289
  pendingFiles++;
3003
- var JSCompiler_object_inline_chunks_233 = [];
3290
+ var JSCompiler_object_inline_chunks_229 = [];
3004
3291
  value.on("data", function (chunk) {
3005
- JSCompiler_object_inline_chunks_233.push(chunk);
3292
+ JSCompiler_object_inline_chunks_229.push(chunk);
3006
3293
  });
3007
3294
  value.on("end", function () {
3008
3295
  try {
3009
- var blob = new Blob(JSCompiler_object_inline_chunks_233, {
3296
+ var blob = new Blob(JSCompiler_object_inline_chunks_229, {
3010
3297
  type: mimeType
3011
3298
  });
3012
3299
  response._formData.append(name, blob, filename);