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