react-server-dom-webpack 19.1.4 → 19.1.6

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