react-server-dom-turbopack 19.1.4 → 19.1.6

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