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