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