react-server-dom-webpack 19.0.3 → 19.0.5

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