react-server-dom-webpack 19.0.2 → 19.0.4

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.
@@ -707,7 +707,7 @@ function describeObjectForErrorMessage(objectOrArray, expandedName) {
707
707
  "\n " + str + "\n " + objectOrArray)
708
708
  : "\n " + str;
709
709
  }
710
- var ObjectPrototype = Object.prototype,
710
+ var ObjectPrototype$1 = Object.prototype,
711
711
  stringify = JSON.stringify;
712
712
  function defaultErrorHandler(error) {
713
713
  console.error(error);
@@ -1534,7 +1534,7 @@ function renderModelDestructive(
1534
1534
  if (value instanceof Date) return "$D" + value.toJSON();
1535
1535
  request = getPrototypeOf(value);
1536
1536
  if (
1537
- request !== ObjectPrototype &&
1537
+ request !== ObjectPrototype$1 &&
1538
1538
  (null === request || null !== getPrototypeOf(request))
1539
1539
  )
1540
1540
  throw Error(
@@ -2028,15 +2028,23 @@ ReactPromise.prototype.then = function (resolve, reject) {
2028
2028
  case "fulfilled":
2029
2029
  if ("function" === typeof resolve) {
2030
2030
  for (
2031
- var inspectedValue = this.value;
2031
+ var inspectedValue = this.value,
2032
+ cycleProtection = 0,
2033
+ visited = new Set();
2032
2034
  inspectedValue instanceof ReactPromise;
2033
2035
 
2034
2036
  ) {
2035
- if (inspectedValue === this) {
2037
+ cycleProtection++;
2038
+ if (
2039
+ inspectedValue === this ||
2040
+ visited.has(inspectedValue) ||
2041
+ 1e3 < cycleProtection
2042
+ ) {
2036
2043
  "function" === typeof reject &&
2037
2044
  reject(Error("Cannot have cyclic thenables."));
2038
2045
  return;
2039
2046
  }
2047
+ visited.add(inspectedValue);
2040
2048
  if ("fulfilled" === inspectedValue.status)
2041
2049
  inspectedValue = inspectedValue.value;
2042
2050
  else break;
@@ -2055,12 +2063,14 @@ ReactPromise.prototype.then = function (resolve, reject) {
2055
2063
  "function" === typeof reject && reject(this.reason);
2056
2064
  }
2057
2065
  };
2058
- function wakeChunk(response, listeners, value) {
2066
+ var ObjectPrototype = Object.prototype,
2067
+ ArrayPrototype = Array.prototype;
2068
+ function wakeChunk(response, listeners, value, chunk) {
2059
2069
  for (var i = 0; i < listeners.length; i++) {
2060
2070
  var listener = listeners[i];
2061
2071
  "function" === typeof listener
2062
2072
  ? listener(value)
2063
- : fulfillReference(response, listener, value);
2073
+ : fulfillReference(response, listener, value, chunk.reason);
2064
2074
  }
2065
2075
  }
2066
2076
  function rejectChunk(response, listeners, error) {
@@ -2071,27 +2081,6 @@ function rejectChunk(response, listeners, error) {
2071
2081
  : rejectReference(response, listener.handler, error);
2072
2082
  }
2073
2083
  }
2074
- function resolveBlockedCycle(resolvedChunk, reference) {
2075
- var referencedChunk = reference.handler.chunk;
2076
- if (null === referencedChunk) return null;
2077
- if (referencedChunk === resolvedChunk) return reference.handler;
2078
- reference = referencedChunk.value;
2079
- if (null !== reference)
2080
- for (
2081
- referencedChunk = 0;
2082
- referencedChunk < reference.length;
2083
- referencedChunk++
2084
- ) {
2085
- var listener = reference[referencedChunk];
2086
- if (
2087
- "function" !== typeof listener &&
2088
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2089
- null !== listener)
2090
- )
2091
- return listener;
2092
- }
2093
- return null;
2094
- }
2095
2084
  function triggerErrorOnChunk(response, chunk, error) {
2096
2085
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2097
2086
  chunk.reason.error(error);
@@ -2127,33 +2116,11 @@ function resolveModelChunk(response, chunk, value, id) {
2127
2116
  chunk.reason =
2128
2117
  ((value.id = id), (value[RESPONSE_SYMBOL] = response), value);
2129
2118
  if (null !== resolveListeners)
2130
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
2119
+ switch ((initializeModelChunk(chunk), chunk.status)) {
2131
2120
  case "fulfilled":
2132
- wakeChunk(response, resolveListeners, chunk.value);
2121
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
2133
2122
  break;
2134
2123
  case "blocked":
2135
- for (value = 0; value < resolveListeners.length; value++)
2136
- if (((id = resolveListeners[value]), "function" !== typeof id)) {
2137
- var cyclicHandler = resolveBlockedCycle(chunk, id);
2138
- if (null !== cyclicHandler)
2139
- switch (
2140
- (fulfillReference(response, id, cyclicHandler.value),
2141
- resolveListeners.splice(value, 1),
2142
- value--,
2143
- null !== rejectListeners &&
2144
- ((id = rejectListeners.indexOf(id)),
2145
- -1 !== id && rejectListeners.splice(id, 1)),
2146
- chunk.status)
2147
- ) {
2148
- case "fulfilled":
2149
- wakeChunk(response, resolveListeners, chunk.value);
2150
- break a;
2151
- case "rejected":
2152
- null !== rejectListeners &&
2153
- rejectChunk(response, rejectListeners, chunk.reason);
2154
- break a;
2155
- }
2156
- }
2157
2124
  case "pending":
2158
2125
  if (chunk.value)
2159
2126
  for (response = 0; response < resolveListeners.length; response++)
@@ -2170,7 +2137,8 @@ function resolveModelChunk(response, chunk, value, id) {
2170
2137
  } else chunk.reason = rejectListeners;
2171
2138
  break;
2172
2139
  case "rejected":
2173
- rejectListeners && wakeChunk(response, rejectListeners, chunk.reason);
2140
+ rejectListeners &&
2141
+ rejectChunk(response, rejectListeners, chunk.reason);
2174
2142
  }
2175
2143
  }
2176
2144
  }
@@ -2193,15 +2161,50 @@ function resolveIteratorResultChunk(response, chunk, value, done) {
2193
2161
  );
2194
2162
  }
2195
2163
  function loadServerReference$1(response, metaData, parentObject, key) {
2164
+ function reject(error) {
2165
+ var rejectListeners = blockedPromise.reason,
2166
+ erroredPromise = blockedPromise;
2167
+ erroredPromise.status = "rejected";
2168
+ erroredPromise.value = null;
2169
+ erroredPromise.reason = error;
2170
+ null !== rejectListeners && rejectChunk(response, rejectListeners, error);
2171
+ rejectReference(response, handler, error);
2172
+ }
2196
2173
  var id = metaData.id;
2197
2174
  if ("string" !== typeof id || "then" === key) return null;
2175
+ var cachedPromise = metaData.$$promise;
2176
+ if (void 0 !== cachedPromise) {
2177
+ if ("fulfilled" === cachedPromise.status)
2178
+ return (
2179
+ (cachedPromise = cachedPromise.value),
2180
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
2181
+ );
2182
+ initializingHandler
2183
+ ? ((id = initializingHandler), id.deps++)
2184
+ : (id = initializingHandler =
2185
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2186
+ cachedPromise.then(
2187
+ resolveReference.bind(null, response, id, parentObject, key),
2188
+ rejectReference.bind(null, response, id)
2189
+ );
2190
+ return null;
2191
+ }
2192
+ var blockedPromise = new ReactPromise("blocked", null, null);
2193
+ metaData.$$promise = blockedPromise;
2198
2194
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2199
- id = metaData.bound;
2200
- var promise = preloadModule(serverReference);
2201
- if (promise)
2202
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2203
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2204
- else return requireModule(serverReference);
2195
+ cachedPromise = metaData.bound;
2196
+ if ((id = preloadModule(serverReference)))
2197
+ cachedPromise instanceof ReactPromise &&
2198
+ (id = Promise.all([id, cachedPromise]));
2199
+ else if (cachedPromise instanceof ReactPromise)
2200
+ id = Promise.resolve(cachedPromise);
2201
+ else
2202
+ return (
2203
+ (cachedPromise = requireModule(serverReference)),
2204
+ (id = blockedPromise),
2205
+ (id.status = "fulfilled"),
2206
+ (id.value = cachedPromise)
2207
+ );
2205
2208
  if (initializingHandler) {
2206
2209
  var handler = initializingHandler;
2207
2210
  handler.deps++;
@@ -2213,74 +2216,105 @@ function loadServerReference$1(response, metaData, parentObject, key) {
2213
2216
  deps: 1,
2214
2217
  errored: !1
2215
2218
  };
2216
- promise.then(
2217
- function () {
2218
- var resolvedValue = requireModule(serverReference);
2219
- if (metaData.bound) {
2220
- var promiseValue = metaData.bound.value;
2221
- promiseValue = Array.isArray(promiseValue) ? promiseValue.slice(0) : [];
2222
- promiseValue.unshift(null);
2223
- resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2224
- }
2225
- parentObject[key] = resolvedValue;
2226
- "" === key && null === handler.value && (handler.value = resolvedValue);
2227
- handler.deps--;
2228
- 0 === handler.deps &&
2229
- ((resolvedValue = handler.chunk),
2230
- null !== resolvedValue &&
2231
- "blocked" === resolvedValue.status &&
2232
- ((promiseValue = resolvedValue.value),
2233
- (resolvedValue.status = "fulfilled"),
2234
- (resolvedValue.value = handler.value),
2235
- (resolvedValue.reason = null),
2236
- null !== promiseValue &&
2237
- wakeChunk(response, promiseValue, handler.value)));
2238
- },
2239
- function (error) {
2240
- if (!handler.errored) {
2241
- handler.errored = !0;
2242
- handler.value = null;
2243
- handler.reason = error;
2244
- var chunk = handler.chunk;
2245
- null !== chunk &&
2246
- "blocked" === chunk.status &&
2247
- triggerErrorOnChunk(response, chunk, error);
2219
+ id.then(function () {
2220
+ var resolvedValue = requireModule(serverReference);
2221
+ if (metaData.bound) {
2222
+ var promiseValue = metaData.bound.value;
2223
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
2224
+ if (1e3 < promiseValue.length) {
2225
+ reject(
2226
+ Error(
2227
+ "Server Function has too many bound arguments. Received " +
2228
+ promiseValue.length +
2229
+ " but the limit is 1000."
2230
+ )
2231
+ );
2232
+ return;
2248
2233
  }
2234
+ promiseValue.unshift(null);
2235
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2249
2236
  }
2250
- );
2237
+ promiseValue = blockedPromise.value;
2238
+ var initializedPromise = blockedPromise;
2239
+ initializedPromise.status = "fulfilled";
2240
+ initializedPromise.value = resolvedValue;
2241
+ initializedPromise.reason = null;
2242
+ null !== promiseValue &&
2243
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
2244
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2245
+ }, reject);
2251
2246
  return null;
2252
2247
  }
2253
- function reviveModel(response, parentObj, parentKey, value, reference) {
2248
+ function reviveModel(
2249
+ response,
2250
+ parentObj,
2251
+ parentKey,
2252
+ value,
2253
+ reference,
2254
+ arrayRoot
2255
+ ) {
2254
2256
  if ("string" === typeof value)
2255
- return parseModelString(response, parentObj, parentKey, value, reference);
2257
+ return parseModelString(
2258
+ response,
2259
+ parentObj,
2260
+ parentKey,
2261
+ value,
2262
+ reference,
2263
+ arrayRoot
2264
+ );
2256
2265
  if ("object" === typeof value && null !== value)
2257
2266
  if (
2258
2267
  (void 0 !== reference &&
2259
2268
  void 0 !== response._temporaryReferences &&
2260
2269
  response._temporaryReferences.set(value, reference),
2261
- Array.isArray(value))
2262
- )
2263
- for (var i = 0; i < value.length; i++)
2264
- value[i] = reviveModel(
2270
+ isArrayImpl(value))
2271
+ ) {
2272
+ if (null === arrayRoot) {
2273
+ var childContext = { count: 0, fork: !1 };
2274
+ response._rootArrayContexts.set(value, childContext);
2275
+ } else childContext = arrayRoot;
2276
+ 1 < value.length && (childContext.fork = !0);
2277
+ bumpArrayCount(childContext, value.length + 1, response);
2278
+ for (parentObj = 0; parentObj < value.length; parentObj++)
2279
+ value[parentObj] = reviveModel(
2265
2280
  response,
2266
2281
  value,
2267
- "" + i,
2268
- value[i],
2269
- void 0 !== reference ? reference + ":" + i : void 0
2282
+ "" + parentObj,
2283
+ value[parentObj],
2284
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
2285
+ childContext
2270
2286
  );
2271
- else
2272
- for (i in value)
2273
- hasOwnProperty.call(value, i) &&
2274
- ((parentObj =
2275
- void 0 !== reference && -1 === i.indexOf(":")
2276
- ? reference + ":" + i
2277
- : void 0),
2278
- (parentObj = reviveModel(response, value, i, value[i], parentObj)),
2279
- void 0 !== parentObj || "__proto__" === i
2280
- ? (value[i] = parentObj)
2281
- : delete value[i]);
2287
+ } else
2288
+ for (childContext in value)
2289
+ hasOwnProperty.call(value, childContext) &&
2290
+ ("__proto__" === childContext
2291
+ ? delete value[childContext]
2292
+ : ((parentObj =
2293
+ void 0 !== reference && -1 === childContext.indexOf(":")
2294
+ ? reference + ":" + childContext
2295
+ : void 0),
2296
+ (parentObj = reviveModel(
2297
+ response,
2298
+ value,
2299
+ childContext,
2300
+ value[childContext],
2301
+ parentObj,
2302
+ null
2303
+ )),
2304
+ void 0 !== parentObj
2305
+ ? (value[childContext] = parentObj)
2306
+ : delete value[childContext]));
2282
2307
  return value;
2283
2308
  }
2309
+ function bumpArrayCount(arrayContext, slots, response) {
2310
+ if (
2311
+ (arrayContext.count += slots) > response._arraySizeLimit &&
2312
+ arrayContext.fork
2313
+ )
2314
+ throw Error(
2315
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
2316
+ );
2317
+ }
2284
2318
  var initializingHandler = null;
2285
2319
  function initializeModelChunk(chunk) {
2286
2320
  var prevHandler = initializingHandler;
@@ -2294,13 +2328,15 @@ function initializeModelChunk(chunk) {
2294
2328
  chunk.value = null;
2295
2329
  chunk.reason = null;
2296
2330
  try {
2297
- var rawModel = JSON.parse(resolvedModel),
2298
- value = reviveModel(
2331
+ var rawModel = JSON.parse(resolvedModel);
2332
+ resolvedModel = { count: 0, fork: !1 };
2333
+ var value = reviveModel(
2299
2334
  response,
2300
2335
  { "": rawModel },
2301
2336
  "",
2302
2337
  rawModel,
2303
- _chunk$reason
2338
+ _chunk$reason,
2339
+ resolvedModel
2304
2340
  ),
2305
2341
  resolveListeners = chunk.value;
2306
2342
  if (null !== resolveListeners)
@@ -2312,19 +2348,20 @@ function initializeModelChunk(chunk) {
2312
2348
  var listener = resolveListeners[rawModel];
2313
2349
  "function" === typeof listener
2314
2350
  ? listener(value)
2315
- : fulfillReference(response, listener, value);
2351
+ : fulfillReference(response, listener, value, resolvedModel);
2316
2352
  }
2317
2353
  if (null !== initializingHandler) {
2318
2354
  if (initializingHandler.errored) throw initializingHandler.reason;
2319
2355
  if (0 < initializingHandler.deps) {
2320
2356
  initializingHandler.value = value;
2357
+ initializingHandler.reason = resolvedModel;
2321
2358
  initializingHandler.chunk = chunk;
2322
2359
  return;
2323
2360
  }
2324
2361
  }
2325
2362
  chunk.status = "fulfilled";
2326
2363
  chunk.value = value;
2327
- chunk.reason = null;
2364
+ chunk.reason = resolvedModel;
2328
2365
  } catch (error) {
2329
2366
  (chunk.status = "rejected"), (chunk.reason = error);
2330
2367
  } finally {
@@ -2337,7 +2374,8 @@ function reportGlobalError(response, error) {
2337
2374
  ? triggerErrorOnChunk(response, chunk, error)
2338
2375
  : "fulfilled" === chunk.status &&
2339
2376
  null !== chunk.reason &&
2340
- chunk.reason.error(error);
2377
+ ((chunk = chunk.reason),
2378
+ "function" === typeof chunk.error && chunk.error(error));
2341
2379
  });
2342
2380
  }
2343
2381
  function getChunk(response, id) {
@@ -2352,40 +2390,67 @@ function getChunk(response, id) {
2352
2390
  chunks.set(id, chunk));
2353
2391
  return chunk;
2354
2392
  }
2355
- function fulfillReference(response, reference, value) {
2393
+ function fulfillReference(response, reference, value, arrayRoot) {
2356
2394
  var handler = reference.handler,
2357
2395
  parentObject = reference.parentObject,
2358
2396
  key = reference.key,
2359
2397
  map = reference.map,
2360
2398
  path = reference.path;
2361
2399
  try {
2362
- for (var i = 1; i < path.length; i++) {
2400
+ for (
2401
+ var localLength = 0,
2402
+ rootArrayContexts = response._rootArrayContexts,
2403
+ i = 1;
2404
+ i < path.length;
2405
+ i++
2406
+ ) {
2363
2407
  var name = path[i];
2364
2408
  if (
2365
2409
  "object" !== typeof value ||
2366
- !hasOwnProperty.call(value, name) ||
2367
- value instanceof Promise
2410
+ null === value ||
2411
+ (getPrototypeOf(value) !== ObjectPrototype &&
2412
+ getPrototypeOf(value) !== ArrayPrototype) ||
2413
+ !hasOwnProperty.call(value, name)
2368
2414
  )
2369
2415
  throw Error("Invalid reference.");
2370
2416
  value = value[name];
2417
+ if (isArrayImpl(value))
2418
+ (localLength = 0),
2419
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
2420
+ else if (((arrayRoot = null), "string" === typeof value))
2421
+ localLength = value.length;
2422
+ else if ("bigint" === typeof value) {
2423
+ var n = Math.abs(Number(value));
2424
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
2425
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
2371
2426
  }
2372
- var mappedValue = map(response, value, parentObject, key);
2373
- parentObject[key] = mappedValue;
2374
- "" === key && null === handler.value && (handler.value = mappedValue);
2427
+ var resolvedValue = map(response, value, parentObject, key);
2428
+ var referenceArrayRoot = reference.arrayRoot;
2429
+ null !== referenceArrayRoot &&
2430
+ (null !== arrayRoot
2431
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
2432
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
2433
+ : 0 < localLength &&
2434
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2375
2435
  } catch (error) {
2376
- rejectReference(response, reference.handler, error);
2436
+ rejectReference(response, handler, error);
2377
2437
  return;
2378
2438
  }
2439
+ resolveReference(response, handler, parentObject, key, resolvedValue);
2440
+ }
2441
+ function resolveReference(response, handler, parentObject, key, resolvedValue) {
2442
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
2443
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2379
2444
  handler.deps--;
2380
2445
  0 === handler.deps &&
2381
- ((reference = handler.chunk),
2382
- null !== reference &&
2383
- "blocked" === reference.status &&
2384
- ((value = reference.value),
2385
- (reference.status = "fulfilled"),
2386
- (reference.value = handler.value),
2387
- (reference.reason = handler.reason),
2388
- null !== value && wakeChunk(response, value, handler.value)));
2446
+ ((parentObject = handler.chunk),
2447
+ null !== parentObject &&
2448
+ "blocked" === parentObject.status &&
2449
+ ((key = parentObject.value),
2450
+ (parentObject.status = "fulfilled"),
2451
+ (parentObject.value = handler.value),
2452
+ (parentObject.reason = handler.reason),
2453
+ null !== key && wakeChunk(response, key, handler.value, parentObject)));
2389
2454
  }
2390
2455
  function rejectReference(response, handler, error) {
2391
2456
  handler.errored ||
@@ -2397,60 +2462,97 @@ function rejectReference(response, handler, error) {
2397
2462
  "blocked" === handler.status &&
2398
2463
  triggerErrorOnChunk(response, handler, error));
2399
2464
  }
2400
- function getOutlinedModel(response, reference, parentObject, key, map) {
2465
+ function getOutlinedModel(
2466
+ response,
2467
+ reference,
2468
+ parentObject,
2469
+ key,
2470
+ referenceArrayRoot,
2471
+ map
2472
+ ) {
2401
2473
  reference = reference.split(":");
2402
- var id = parseInt(reference[0], 16);
2403
- id = getChunk(response, id);
2404
- switch (id.status) {
2474
+ var id = parseInt(reference[0], 16),
2475
+ chunk = getChunk(response, id);
2476
+ switch (chunk.status) {
2405
2477
  case "resolved_model":
2406
- initializeModelChunk(id);
2478
+ initializeModelChunk(chunk);
2407
2479
  }
2408
- switch (id.status) {
2480
+ switch (chunk.status) {
2409
2481
  case "fulfilled":
2410
- id = id.value;
2411
- for (var i = 1; i < reference.length; i++) {
2412
- var name = reference[i];
2482
+ id = chunk.value;
2483
+ chunk = chunk.reason;
2484
+ for (
2485
+ var localLength = 0,
2486
+ rootArrayContexts = response._rootArrayContexts,
2487
+ i = 1;
2488
+ i < reference.length;
2489
+ i++
2490
+ ) {
2491
+ localLength = reference[i];
2413
2492
  if (
2414
2493
  "object" !== typeof id ||
2415
- !hasOwnProperty.call(id, name) ||
2416
- id instanceof Promise
2494
+ null === id ||
2495
+ (getPrototypeOf(id) !== ObjectPrototype &&
2496
+ getPrototypeOf(id) !== ArrayPrototype) ||
2497
+ !hasOwnProperty.call(id, localLength)
2417
2498
  )
2418
2499
  throw Error("Invalid reference.");
2419
- id = id[name];
2500
+ id = id[localLength];
2501
+ isArrayImpl(id)
2502
+ ? ((localLength = 0), (chunk = rootArrayContexts.get(id) || chunk))
2503
+ : ((chunk = null),
2504
+ "string" === typeof id
2505
+ ? (localLength = id.length)
2506
+ : "bigint" === typeof id
2507
+ ? ((localLength = Math.abs(Number(id))),
2508
+ (localLength =
2509
+ 0 === localLength
2510
+ ? 1
2511
+ : Math.floor(Math.log10(localLength)) + 1))
2512
+ : (localLength = ArrayBuffer.isView(id) ? id.byteLength : 0));
2420
2513
  }
2421
- return map(response, id, parentObject, key);
2422
- case "pending":
2514
+ parentObject = map(response, id, parentObject, key);
2515
+ null !== referenceArrayRoot &&
2516
+ (null !== chunk
2517
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
2518
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
2519
+ : 0 < localLength &&
2520
+ bumpArrayCount(referenceArrayRoot, localLength, response));
2521
+ return parentObject;
2423
2522
  case "blocked":
2424
2523
  return (
2425
2524
  initializingHandler
2426
2525
  ? ((response = initializingHandler), response.deps++)
2427
2526
  : (response = initializingHandler =
2428
2527
  { chunk: null, value: null, reason: null, deps: 1, errored: !1 }),
2429
- (parentObject = {
2528
+ (referenceArrayRoot = {
2430
2529
  handler: response,
2431
2530
  parentObject: parentObject,
2432
2531
  key: key,
2433
2532
  map: map,
2434
- path: reference
2533
+ path: reference,
2534
+ arrayRoot: referenceArrayRoot
2435
2535
  }),
2436
- null === id.value
2437
- ? (id.value = [parentObject])
2438
- : id.value.push(parentObject),
2439
- null === id.reason
2440
- ? (id.reason = [parentObject])
2441
- : id.reason.push(parentObject),
2536
+ null === chunk.value
2537
+ ? (chunk.value = [referenceArrayRoot])
2538
+ : chunk.value.push(referenceArrayRoot),
2539
+ null === chunk.reason
2540
+ ? (chunk.reason = [referenceArrayRoot])
2541
+ : chunk.reason.push(referenceArrayRoot),
2442
2542
  null
2443
2543
  );
2544
+ case "pending":
2545
+ throw Error("Invalid forward reference.");
2444
2546
  default:
2445
2547
  return (
2446
2548
  initializingHandler
2447
2549
  ? ((initializingHandler.errored = !0),
2448
2550
  (initializingHandler.value = null),
2449
- (initializingHandler.reason = id.reason))
2551
+ (initializingHandler.reason = chunk.reason))
2450
2552
  : (initializingHandler = {
2451
2553
  chunk: null,
2452
2554
  value: null,
2453
- reason: id.reason,
2555
+ reason: chunk.reason,
2454
2556
  deps: 0,
2455
2557
  errored: !0
2456
2558
  }),
@@ -2459,13 +2561,25 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
2459
2561
  }
2460
2562
  }
2461
2563
  function createMap(response, model) {
2462
- return new Map(model);
2564
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
2565
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
2566
+ response = new Map(model);
2567
+ model.$$consumed = !0;
2568
+ return response;
2463
2569
  }
2464
2570
  function createSet(response, model) {
2465
- return new Set(model);
2571
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
2572
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
2573
+ response = new Set(model);
2574
+ model.$$consumed = !0;
2575
+ return response;
2466
2576
  }
2467
2577
  function extractIterator(response, model) {
2468
- return model[Symbol.iterator]();
2578
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
2579
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
2580
+ response = model[Symbol.iterator]();
2581
+ model.$$consumed = !0;
2582
+ return response;
2469
2583
  }
2470
2584
  function createModel(response, model, parentObject, key) {
2471
2585
  return "then" === key && "function" === typeof model ? null : model;
@@ -2476,13 +2590,34 @@ function parseTypedArray(
2476
2590
  constructor,
2477
2591
  bytesPerElement,
2478
2592
  parentObject,
2479
- parentKey
2593
+ parentKey,
2594
+ referenceArrayRoot
2480
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
+ }
2481
2607
  reference = parseInt(reference.slice(2), 16);
2482
- bytesPerElement = response._prefix + reference;
2483
- if (response._chunks.has(reference))
2608
+ var key = response._prefix + reference;
2609
+ bytesPerElement = response._chunks;
2610
+ if (bytesPerElement.has(reference))
2484
2611
  throw Error("Already initialized typed array.");
2485
- 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();
2486
2621
  if (initializingHandler) {
2487
2622
  var handler = initializingHandler;
2488
2623
  handler.deps++;
@@ -2494,37 +2629,32 @@ function parseTypedArray(
2494
2629
  deps: 1,
2495
2630
  errored: !1
2496
2631
  };
2497
- reference.then(
2498
- function (buffer) {
2499
- buffer = constructor === ArrayBuffer ? buffer : new constructor(buffer);
2500
- parentObject[parentKey] = buffer;
2501
- "" === parentKey && null === handler.value && (handler.value = buffer);
2502
- handler.deps--;
2503
- if (
2504
- 0 === handler.deps &&
2505
- ((buffer = handler.chunk),
2506
- null !== buffer && "blocked" === buffer.status)
2507
- ) {
2508
- var resolveListeners = buffer.value;
2509
- buffer.status = "fulfilled";
2510
- buffer.value = handler.value;
2511
- buffer.reason = null;
2512
- null !== resolveListeners &&
2513
- wakeChunk(response, resolveListeners, handler.value);
2514
- }
2515
- },
2516
- function (error) {
2517
- if (!handler.errored) {
2518
- handler.errored = !0;
2519
- handler.value = null;
2520
- handler.reason = error;
2521
- var chunk = handler.chunk;
2522
- null !== chunk &&
2523
- "blocked" === chunk.status &&
2524
- triggerErrorOnChunk(response, chunk, error);
2525
- }
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;
2526
2645
  }
2527
- );
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);
2528
2658
  return null;
2529
2659
  }
2530
2660
  function resolveStream(response, id, stream, controller) {
@@ -2540,86 +2670,78 @@ function resolveStream(response, id, stream, controller) {
2540
2670
  : controller.enqueueModel(chunks));
2541
2671
  }
2542
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
+ }
2543
2678
  reference = parseInt(reference.slice(2), 16);
2544
2679
  if (response._chunks.has(reference))
2545
2680
  throw Error("Already initialized stream.");
2546
2681
  var controller = null,
2547
- closed = !1;
2548
- type = new ReadableStream({
2549
- type: type,
2550
- start: function (c) {
2551
- controller = c;
2552
- }
2553
- });
2554
- var previousBlockedChunk = null;
2555
- resolveStream(response, reference, type, {
2556
- enqueueModel: function (json) {
2557
- if (null === previousBlockedChunk) {
2558
- var chunk = createResolvedModelChunk(response, json, -1);
2559
- initializeModelChunk(chunk);
2560
- "fulfilled" === chunk.status
2561
- ? controller.enqueue(chunk.value)
2562
- : (chunk.then(
2563
- function (v) {
2564
- return controller.enqueue(v);
2565
- },
2566
- function (e) {
2567
- return controller.error(e);
2568
- }
2569
- ),
2570
- (previousBlockedChunk = chunk));
2571
- } else {
2572
- chunk = previousBlockedChunk;
2573
- var chunk$31 = new ReactPromise("pending", null, null);
2574
- chunk$31.then(
2575
- function (v) {
2576
- return controller.enqueue(v);
2577
- },
2578
- function (e) {
2579
- return controller.error(e);
2580
- }
2581
- );
2582
- previousBlockedChunk = chunk$31;
2583
- chunk.then(function () {
2584
- previousBlockedChunk === chunk$31 && (previousBlockedChunk = null);
2585
- resolveModelChunk(response, chunk$31, json, -1);
2586
- });
2682
+ closed = !1,
2683
+ stream = new ReadableStream({
2684
+ type: type,
2685
+ start: function (c) {
2686
+ controller = c;
2587
2687
  }
2588
- },
2589
- close: function () {
2590
- if (!closed)
2591
- if (((closed = !0), null === previousBlockedChunk)) controller.close();
2592
- else {
2593
- var blockedChunk = previousBlockedChunk;
2594
- previousBlockedChunk = null;
2595
- blockedChunk.then(function () {
2596
- return controller.close();
2597
- });
2598
- }
2599
- },
2600
- error: function (error) {
2601
- if (!closed)
2602
- if (((closed = !0), null === previousBlockedChunk))
2603
- controller.error(error);
2604
- else {
2605
- var blockedChunk = previousBlockedChunk;
2606
- previousBlockedChunk = null;
2607
- blockedChunk.then(function () {
2608
- 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);
2609
2707
  });
2610
2708
  }
2611
- }
2612
- });
2613
- return type;
2614
- }
2615
- function asyncIterator() {
2616
- 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;
2617
2737
  }
2618
- function createIterator(next) {
2619
- next = { next: next };
2620
- next[ASYNC_ITERATOR] = asyncIterator;
2621
- return next;
2738
+ function FlightIterator(next) {
2739
+ this.next = next;
2622
2740
  }
2741
+ FlightIterator.prototype = {};
2742
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
2743
+ return this;
2744
+ };
2623
2745
  function parseAsyncIterable(response, reference, iterator) {
2624
2746
  reference = parseInt(reference.slice(2), 16);
2625
2747
  if (response._chunks.has(reference))
@@ -2631,7 +2753,7 @@ function parseAsyncIterable(response, reference, iterator) {
2631
2753
  $jscomp$compprop5 =
2632
2754
  (($jscomp$compprop5[ASYNC_ITERATOR] = function () {
2633
2755
  var nextReadIndex = 0;
2634
- return createIterator(function (arg) {
2756
+ return new FlightIterator(function (arg) {
2635
2757
  if (void 0 !== arg)
2636
2758
  throw Error(
2637
2759
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -2711,17 +2833,28 @@ function parseAsyncIterable(response, reference, iterator) {
2711
2833
  });
2712
2834
  return iterator;
2713
2835
  }
2714
- function parseModelString(response, obj, key, value, reference) {
2836
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
2715
2837
  if ("$" === value[0]) {
2716
2838
  switch (value[1]) {
2717
2839
  case "$":
2718
- return value.slice(1);
2840
+ return (
2841
+ null !== arrayRoot &&
2842
+ bumpArrayCount(arrayRoot, value.length - 1, response),
2843
+ value.slice(1)
2844
+ );
2719
2845
  case "@":
2720
2846
  return (obj = parseInt(value.slice(2), 16)), getChunk(response, obj);
2721
2847
  case "h":
2722
2848
  return (
2723
- (value = value.slice(2)),
2724
- 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
+ )
2725
2858
  );
2726
2859
  case "T":
2727
2860
  if (void 0 === reference || void 0 === response._temporaryReferences)
@@ -2734,27 +2867,37 @@ function parseModelString(response, obj, key, value, reference) {
2734
2867
  );
2735
2868
  case "Q":
2736
2869
  return (
2737
- (value = value.slice(2)),
2738
- getOutlinedModel(response, value, obj, key, createMap)
2870
+ (arrayRoot = value.slice(2)),
2871
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
2739
2872
  );
2740
2873
  case "W":
2741
2874
  return (
2742
- (value = value.slice(2)),
2743
- getOutlinedModel(response, value, obj, key, createSet)
2875
+ (arrayRoot = value.slice(2)),
2876
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
2744
2877
  );
2745
2878
  case "K":
2746
2879
  obj = value.slice(2);
2747
- var formPrefix = response._prefix + obj + "_",
2748
- data = new FormData();
2749
- response._formData.forEach(function (entry, entryKey) {
2750
- entryKey.startsWith(formPrefix) &&
2751
- data.append(entryKey.slice(formPrefix.length), entry);
2752
- });
2753
- 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;
2754
2897
  case "i":
2755
2898
  return (
2756
- (value = value.slice(2)),
2757
- getOutlinedModel(response, value, obj, key, extractIterator)
2899
+ (arrayRoot = value.slice(2)),
2900
+ getOutlinedModel(response, arrayRoot, obj, key, null, extractIterator)
2758
2901
  );
2759
2902
  case "I":
2760
2903
  return Infinity;
@@ -2767,35 +2910,147 @@ function parseModelString(response, obj, key, value, reference) {
2767
2910
  case "D":
2768
2911
  return new Date(Date.parse(value.slice(2)));
2769
2912
  case "n":
2770
- 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);
2771
2922
  }
2772
2923
  switch (value[1]) {
2773
2924
  case "A":
2774
- 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
+ );
2775
2934
  case "O":
2776
- 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
+ );
2777
2944
  case "o":
2778
- 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
+ );
2779
2954
  case "U":
2780
- 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
+ );
2781
2964
  case "S":
2782
- 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
+ );
2783
2974
  case "s":
2784
- 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
+ );
2785
2984
  case "L":
2786
- 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
+ );
2787
2994
  case "l":
2788
- 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
+ );
2789
3004
  case "G":
2790
- 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
+ );
2791
3014
  case "g":
2792
- 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
+ );
2793
3024
  case "M":
2794
- 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
+ );
2795
3034
  case "m":
2796
- 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
+ );
2797
3044
  case "V":
2798
- 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
+ );
2799
3054
  case "B":
2800
3055
  return (
2801
3056
  (obj = parseInt(value.slice(2), 16)),
@@ -2813,8 +3068,9 @@ function parseModelString(response, obj, key, value, reference) {
2813
3068
  return parseAsyncIterable(response, value, !0);
2814
3069
  }
2815
3070
  value = value.slice(1);
2816
- return getOutlinedModel(response, value, obj, key, createModel);
3071
+ return getOutlinedModel(response, value, obj, key, arrayRoot, createModel);
2817
3072
  }
3073
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
2818
3074
  return value;
2819
3075
  }
2820
3076
  function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
@@ -2822,25 +3078,38 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
2822
3078
  3 < arguments.length && void 0 !== arguments[3]
2823
3079
  ? arguments[3]
2824
3080
  : new FormData(),
3081
+ arraySizeLimit =
3082
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
2825
3083
  chunks = new Map();
2826
3084
  return {
2827
3085
  _bundlerConfig: bundlerConfig,
2828
3086
  _prefix: formFieldPrefix,
2829
3087
  _formData: backingFormData,
2830
3088
  _chunks: chunks,
2831
- _temporaryReferences: temporaryReferences
3089
+ _temporaryReferences: temporaryReferences,
3090
+ _rootArrayContexts: new WeakMap(),
3091
+ _arraySizeLimit: arraySizeLimit
2832
3092
  };
2833
3093
  }
2834
3094
  function close(response) {
2835
3095
  reportGlobalError(response, Error("Connection closed."));
2836
3096
  }
2837
- function loadServerReference(bundlerConfig, id, bound) {
3097
+ function loadServerReference(bundlerConfig, metaData) {
3098
+ var id = metaData.id;
3099
+ if ("string" !== typeof id) return null;
2838
3100
  var serverReference = resolveServerReference(bundlerConfig, id);
2839
3101
  bundlerConfig = preloadModule(serverReference);
2840
- return bound
2841
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3102
+ metaData = metaData.bound;
3103
+ return metaData instanceof Promise
3104
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
2842
3105
  _ref = _ref[0];
2843
3106
  var fn = requireModule(serverReference);
3107
+ if (1e3 < _ref.length)
3108
+ throw Error(
3109
+ "Server Function has too many bound arguments. Received " +
3110
+ _ref.length +
3111
+ " but the limit is 1000."
3112
+ );
2844
3113
  return fn.bind.apply(fn, [null].concat(_ref));
2845
3114
  })
2846
3115
  : bundlerConfig
@@ -2849,8 +3118,19 @@ function loadServerReference(bundlerConfig, id, bound) {
2849
3118
  })
2850
3119
  : Promise.resolve(requireModule(serverReference));
2851
3120
  }
2852
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
2853
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3121
+ function decodeBoundActionMetaData(
3122
+ body,
3123
+ serverManifest,
3124
+ formFieldPrefix,
3125
+ arraySizeLimit
3126
+ ) {
3127
+ body = createResponse(
3128
+ serverManifest,
3129
+ formFieldPrefix,
3130
+ void 0,
3131
+ body,
3132
+ arraySizeLimit
3133
+ );
2854
3134
  close(body);
2855
3135
  body = getChunk(body, 0);
2856
3136
  body.then(function () {});
@@ -2866,16 +3146,24 @@ exports.createTemporaryReferenceSet = function () {
2866
3146
  };
2867
3147
  exports.decodeAction = function (body, serverManifest) {
2868
3148
  var formData = new FormData(),
2869
- action = null;
3149
+ action = null,
3150
+ seenActions = new Set();
2870
3151
  body.forEach(function (value, key) {
2871
3152
  key.startsWith("$ACTION_")
2872
3153
  ? key.startsWith("$ACTION_REF_")
2873
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
3154
+ ? seenActions.has(key) ||
3155
+ (seenActions.add(key),
3156
+ (value = "$ACTION_" + key.slice(12) + ":"),
2874
3157
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
2875
- (action = loadServerReference(serverManifest, value.id, value.bound)))
3158
+ (action = loadServerReference(serverManifest, value)))
2876
3159
  : key.startsWith("$ACTION_ID_") &&
2877
- ((value = key.slice(11)),
2878
- (action = loadServerReference(serverManifest, value, null)))
3160
+ !seenActions.has(key) &&
3161
+ (seenActions.add(key),
3162
+ (value = key.slice(11)),
3163
+ (action = loadServerReference(serverManifest, {
3164
+ id: value,
3165
+ bound: null
3166
+ })))
2879
3167
  : formData.append(key, value);
2880
3168
  });
2881
3169
  return null === action
@@ -2911,7 +3199,8 @@ exports.decodeReply = function (body, webpackMap, options) {
2911
3199
  webpackMap,
2912
3200
  "",
2913
3201
  options ? options.temporaryReferences : void 0,
2914
- body
3202
+ body,
3203
+ options ? options.arraySizeLimit : void 0
2915
3204
  );
2916
3205
  webpackMap = getChunk(body, 0);
2917
3206
  close(body);