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