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