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