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