react-server-dom-parcel 19.2.3 → 19.2.4

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,13 +2588,25 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
2487
2588
  }
2488
2589
  }
2489
2590
  function createMap(response, model) {
2490
- return new Map(model);
2591
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
2592
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
2593
+ response = new Map(model);
2594
+ model.$$consumed = !0;
2595
+ return response;
2491
2596
  }
2492
2597
  function createSet(response, model) {
2493
- return new Set(model);
2598
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
2599
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
2600
+ response = new Set(model);
2601
+ model.$$consumed = !0;
2602
+ return response;
2494
2603
  }
2495
2604
  function extractIterator(response, model) {
2496
- return model[Symbol.iterator]();
2605
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
2606
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
2607
+ response = model[Symbol.iterator]();
2608
+ model.$$consumed = !0;
2609
+ return response;
2497
2610
  }
2498
2611
  function createModel(response, model, parentObject, key) {
2499
2612
  return "then" === key && "function" === typeof model ? null : model;
@@ -2504,13 +2617,34 @@ function parseTypedArray(
2504
2617
  constructor,
2505
2618
  bytesPerElement,
2506
2619
  parentObject,
2507
- parentKey
2620
+ parentKey,
2621
+ referenceArrayRoot
2508
2622
  ) {
2623
+ function reject(error) {
2624
+ if (!handler.errored) {
2625
+ handler.errored = !0;
2626
+ handler.value = null;
2627
+ handler.reason = error;
2628
+ var chunk = handler.chunk;
2629
+ null !== chunk &&
2630
+ "blocked" === chunk.status &&
2631
+ triggerErrorOnChunk(response, chunk, error);
2632
+ }
2633
+ }
2509
2634
  reference = parseInt(reference.slice(2), 16);
2510
- bytesPerElement = response._prefix + reference;
2511
- if (response._chunks.has(reference))
2635
+ var key = response._prefix + reference;
2636
+ bytesPerElement = response._chunks;
2637
+ if (bytesPerElement.has(reference))
2512
2638
  throw Error("Already initialized typed array.");
2513
- reference = response._formData.get(bytesPerElement).arrayBuffer();
2639
+ bytesPerElement.set(
2640
+ reference,
2641
+ new ReactPromise(
2642
+ "rejected",
2643
+ null,
2644
+ Error("Already initialized typed array.")
2645
+ )
2646
+ );
2647
+ reference = response._formData.get(key).arrayBuffer();
2514
2648
  if (initializingHandler) {
2515
2649
  var handler = initializingHandler;
2516
2650
  handler.deps++;
@@ -2522,37 +2656,32 @@ function parseTypedArray(
2522
2656
  deps: 1,
2523
2657
  errored: !1
2524
2658
  };
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
- }
2659
+ reference.then(function (buffer) {
2660
+ try {
2661
+ null !== referenceArrayRoot &&
2662
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
2663
+ var resolvedValue =
2664
+ constructor === ArrayBuffer ? buffer : new constructor(buffer);
2665
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
2666
+ "" === parentKey &&
2667
+ null === handler.value &&
2668
+ (handler.value = resolvedValue);
2669
+ } catch (x) {
2670
+ reject(x);
2671
+ return;
2554
2672
  }
2555
- );
2673
+ handler.deps--;
2674
+ 0 === handler.deps &&
2675
+ ((buffer = handler.chunk),
2676
+ null !== buffer &&
2677
+ "blocked" === buffer.status &&
2678
+ ((resolvedValue = buffer.value),
2679
+ (buffer.status = "fulfilled"),
2680
+ (buffer.value = handler.value),
2681
+ (buffer.reason = null),
2682
+ null !== resolvedValue &&
2683
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
2684
+ }, reject);
2556
2685
  return null;
2557
2686
  }
2558
2687
  function resolveStream(response, id, stream, controller) {
@@ -2568,86 +2697,78 @@ function resolveStream(response, id, stream, controller) {
2568
2697
  : controller.enqueueModel(chunks));
2569
2698
  }
2570
2699
  function parseReadableStream(response, reference, type) {
2700
+ function enqueue(value) {
2701
+ "bytes" !== type || ArrayBuffer.isView(value)
2702
+ ? controller.enqueue(value)
2703
+ : flightController.error(Error("Invalid data for bytes stream."));
2704
+ }
2571
2705
  reference = parseInt(reference.slice(2), 16);
2572
2706
  if (response._chunks.has(reference))
2573
2707
  throw Error("Already initialized stream.");
2574
2708
  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
- });
2709
+ closed = !1,
2710
+ stream = new ReadableStream({
2711
+ type: type,
2712
+ start: function (c) {
2713
+ controller = c;
2615
2714
  }
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);
2715
+ }),
2716
+ previousBlockedChunk = null,
2717
+ flightController = {
2718
+ enqueueModel: function (json) {
2719
+ if (null === previousBlockedChunk) {
2720
+ var chunk = createResolvedModelChunk(response, json, -1);
2721
+ initializeModelChunk(chunk);
2722
+ "fulfilled" === chunk.status
2723
+ ? enqueue(chunk.value)
2724
+ : (chunk.then(enqueue, flightController.error),
2725
+ (previousBlockedChunk = chunk));
2726
+ } else {
2727
+ chunk = previousBlockedChunk;
2728
+ var chunk$31 = new ReactPromise("pending", null, null);
2729
+ chunk$31.then(enqueue, flightController.error);
2730
+ previousBlockedChunk = chunk$31;
2731
+ chunk.then(function () {
2732
+ previousBlockedChunk === chunk$31 && (previousBlockedChunk = null);
2733
+ resolveModelChunk(response, chunk$31, json, -1);
2637
2734
  });
2638
2735
  }
2639
- }
2640
- });
2641
- return type;
2642
- }
2643
- function asyncIterator() {
2644
- return this;
2736
+ },
2737
+ close: function () {
2738
+ if (!closed)
2739
+ if (((closed = !0), null === previousBlockedChunk))
2740
+ controller.close();
2741
+ else {
2742
+ var blockedChunk = previousBlockedChunk;
2743
+ previousBlockedChunk = null;
2744
+ blockedChunk.then(function () {
2745
+ return controller.close();
2746
+ });
2747
+ }
2748
+ },
2749
+ error: function (error) {
2750
+ if (!closed)
2751
+ if (((closed = !0), null === previousBlockedChunk))
2752
+ controller.error(error);
2753
+ else {
2754
+ var blockedChunk = previousBlockedChunk;
2755
+ previousBlockedChunk = null;
2756
+ blockedChunk.then(function () {
2757
+ return controller.error(error);
2758
+ });
2759
+ }
2760
+ }
2761
+ };
2762
+ resolveStream(response, reference, stream, flightController);
2763
+ return stream;
2645
2764
  }
2646
- function createIterator(next) {
2647
- next = { next: next };
2648
- next[ASYNC_ITERATOR] = asyncIterator;
2649
- return next;
2765
+ function FlightIterator(next) {
2766
+ this.next = next;
2650
2767
  }
2768
+ FlightIterator.prototype = {};
2769
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
2770
+ return this;
2771
+ };
2651
2772
  function parseAsyncIterable(response, reference, iterator) {
2652
2773
  reference = parseInt(reference.slice(2), 16);
2653
2774
  if (response._chunks.has(reference))
@@ -2659,7 +2780,7 @@ function parseAsyncIterable(response, reference, iterator) {
2659
2780
  $jscomp$compprop5 =
2660
2781
  (($jscomp$compprop5[ASYNC_ITERATOR] = function () {
2661
2782
  var nextReadIndex = 0;
2662
- return createIterator(function (arg) {
2783
+ return new FlightIterator(function (arg) {
2663
2784
  if (void 0 !== arg)
2664
2785
  throw Error(
2665
2786
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -2739,17 +2860,28 @@ function parseAsyncIterable(response, reference, iterator) {
2739
2860
  });
2740
2861
  return iterator;
2741
2862
  }
2742
- function parseModelString(response, obj, key, value, reference) {
2863
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
2743
2864
  if ("$" === value[0]) {
2744
2865
  switch (value[1]) {
2745
2866
  case "$":
2746
- return value.slice(1);
2867
+ return (
2868
+ null !== arrayRoot &&
2869
+ bumpArrayCount(arrayRoot, value.length - 1, response),
2870
+ value.slice(1)
2871
+ );
2747
2872
  case "@":
2748
2873
  return (obj = parseInt(value.slice(2), 16)), getChunk(response, obj);
2749
2874
  case "h":
2750
2875
  return (
2751
- (value = value.slice(2)),
2752
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
2876
+ (arrayRoot = value.slice(2)),
2877
+ getOutlinedModel(
2878
+ response,
2879
+ arrayRoot,
2880
+ obj,
2881
+ key,
2882
+ null,
2883
+ loadServerReference$1
2884
+ )
2753
2885
  );
2754
2886
  case "T":
2755
2887
  if (void 0 === reference || void 0 === response._temporaryReferences)
@@ -2762,27 +2894,37 @@ function parseModelString(response, obj, key, value, reference) {
2762
2894
  );
2763
2895
  case "Q":
2764
2896
  return (
2765
- (value = value.slice(2)),
2766
- getOutlinedModel(response, value, obj, key, createMap)
2897
+ (arrayRoot = value.slice(2)),
2898
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
2767
2899
  );
2768
2900
  case "W":
2769
2901
  return (
2770
- (value = value.slice(2)),
2771
- getOutlinedModel(response, value, obj, key, createSet)
2902
+ (arrayRoot = value.slice(2)),
2903
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
2772
2904
  );
2773
2905
  case "K":
2774
2906
  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;
2907
+ obj = response._prefix + obj + "_";
2908
+ key = new FormData();
2909
+ response = response._formData;
2910
+ arrayRoot = Array.from(response.keys());
2911
+ for (value = 0; value < arrayRoot.length; value++)
2912
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
2913
+ for (
2914
+ var entries = response.getAll(reference),
2915
+ newKey = reference.slice(obj.length),
2916
+ j = 0;
2917
+ j < entries.length;
2918
+ j++
2919
+ )
2920
+ key.append(newKey, entries[j]);
2921
+ response.delete(reference);
2922
+ }
2923
+ return key;
2782
2924
  case "i":
2783
2925
  return (
2784
- (value = value.slice(2)),
2785
- getOutlinedModel(response, value, obj, key, extractIterator)
2926
+ (arrayRoot = value.slice(2)),
2927
+ getOutlinedModel(response, arrayRoot, obj, key, null, extractIterator)
2786
2928
  );
2787
2929
  case "I":
2788
2930
  return Infinity;
@@ -2795,42 +2937,150 @@ function parseModelString(response, obj, key, value, reference) {
2795
2937
  case "D":
2796
2938
  return new Date(Date.parse(value.slice(2)));
2797
2939
  case "n":
2798
- return BigInt(value.slice(2));
2799
- }
2800
- switch (value[1]) {
2940
+ obj = value.slice(2);
2941
+ if (300 < obj.length)
2942
+ throw Error(
2943
+ "BigInt is too large. Received " +
2944
+ obj.length +
2945
+ " digits but the limit is 300."
2946
+ );
2947
+ null !== arrayRoot && bumpArrayCount(arrayRoot, obj.length, response);
2948
+ return BigInt(obj);
2801
2949
  case "A":
2802
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
2950
+ return parseTypedArray(
2951
+ response,
2952
+ value,
2953
+ ArrayBuffer,
2954
+ 1,
2955
+ obj,
2956
+ key,
2957
+ arrayRoot
2958
+ );
2803
2959
  case "O":
2804
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
2960
+ return parseTypedArray(
2961
+ response,
2962
+ value,
2963
+ Int8Array,
2964
+ 1,
2965
+ obj,
2966
+ key,
2967
+ arrayRoot
2968
+ );
2805
2969
  case "o":
2806
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
2970
+ return parseTypedArray(
2971
+ response,
2972
+ value,
2973
+ Uint8Array,
2974
+ 1,
2975
+ obj,
2976
+ key,
2977
+ arrayRoot
2978
+ );
2807
2979
  case "U":
2808
- return parseTypedArray(response, value, Uint8ClampedArray, 1, obj, key);
2980
+ return parseTypedArray(
2981
+ response,
2982
+ value,
2983
+ Uint8ClampedArray,
2984
+ 1,
2985
+ obj,
2986
+ key,
2987
+ arrayRoot
2988
+ );
2809
2989
  case "S":
2810
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
2990
+ return parseTypedArray(
2991
+ response,
2992
+ value,
2993
+ Int16Array,
2994
+ 2,
2995
+ obj,
2996
+ key,
2997
+ arrayRoot
2998
+ );
2811
2999
  case "s":
2812
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
3000
+ return parseTypedArray(
3001
+ response,
3002
+ value,
3003
+ Uint16Array,
3004
+ 2,
3005
+ obj,
3006
+ key,
3007
+ arrayRoot
3008
+ );
2813
3009
  case "L":
2814
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
3010
+ return parseTypedArray(
3011
+ response,
3012
+ value,
3013
+ Int32Array,
3014
+ 4,
3015
+ obj,
3016
+ key,
3017
+ arrayRoot
3018
+ );
2815
3019
  case "l":
2816
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
3020
+ return parseTypedArray(
3021
+ response,
3022
+ value,
3023
+ Uint32Array,
3024
+ 4,
3025
+ obj,
3026
+ key,
3027
+ arrayRoot
3028
+ );
2817
3029
  case "G":
2818
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3030
+ return parseTypedArray(
3031
+ response,
3032
+ value,
3033
+ Float32Array,
3034
+ 4,
3035
+ obj,
3036
+ key,
3037
+ arrayRoot
3038
+ );
2819
3039
  case "g":
2820
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3040
+ return parseTypedArray(
3041
+ response,
3042
+ value,
3043
+ Float64Array,
3044
+ 8,
3045
+ obj,
3046
+ key,
3047
+ arrayRoot
3048
+ );
2821
3049
  case "M":
2822
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3050
+ return parseTypedArray(
3051
+ response,
3052
+ value,
3053
+ BigInt64Array,
3054
+ 8,
3055
+ obj,
3056
+ key,
3057
+ arrayRoot
3058
+ );
2823
3059
  case "m":
2824
- return parseTypedArray(response, value, BigUint64Array, 8, obj, key);
3060
+ return parseTypedArray(
3061
+ response,
3062
+ value,
3063
+ BigUint64Array,
3064
+ 8,
3065
+ obj,
3066
+ key,
3067
+ arrayRoot
3068
+ );
2825
3069
  case "V":
2826
- return parseTypedArray(response, value, DataView, 1, obj, key);
3070
+ return parseTypedArray(
3071
+ response,
3072
+ value,
3073
+ DataView,
3074
+ 1,
3075
+ obj,
3076
+ key,
3077
+ arrayRoot
3078
+ );
2827
3079
  case "B":
2828
3080
  return (
2829
3081
  (obj = parseInt(value.slice(2), 16)),
2830
3082
  response._formData.get(response._prefix + obj)
2831
3083
  );
2832
- }
2833
- switch (value[1]) {
2834
3084
  case "R":
2835
3085
  return parseReadableStream(response, value, void 0);
2836
3086
  case "r":
@@ -2841,8 +3091,9 @@ function parseModelString(response, obj, key, value, reference) {
2841
3091
  return parseAsyncIterable(response, value, !0);
2842
3092
  }
2843
3093
  value = value.slice(1);
2844
- return getOutlinedModel(response, value, obj, key, createModel);
3094
+ return getOutlinedModel(response, value, obj, key, arrayRoot, createModel);
2845
3095
  }
3096
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
2846
3097
  return value;
2847
3098
  }
2848
3099
  function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
@@ -2850,6 +3101,8 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
2850
3101
  3 < arguments.length && void 0 !== arguments[3]
2851
3102
  ? arguments[3]
2852
3103
  : new FormData(),
3104
+ arraySizeLimit =
3105
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
2853
3106
  chunks = new Map();
2854
3107
  return {
2855
3108
  _bundlerConfig: bundlerConfig,
@@ -2858,19 +3111,30 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
2858
3111
  _chunks: chunks,
2859
3112
  _closed: !1,
2860
3113
  _closedReason: null,
2861
- _temporaryReferences: temporaryReferences
3114
+ _temporaryReferences: temporaryReferences,
3115
+ _rootArrayContexts: new WeakMap(),
3116
+ _arraySizeLimit: arraySizeLimit
2862
3117
  };
2863
3118
  }
2864
3119
  function close(response) {
2865
3120
  reportGlobalError(response, Error("Connection closed."));
2866
3121
  }
2867
- function loadServerReference(bundlerConfig, id, bound) {
3122
+ function loadServerReference(bundlerConfig, metaData) {
3123
+ var id = metaData.id;
3124
+ if ("string" !== typeof id) return null;
2868
3125
  var serverReference = resolveServerReference(bundlerConfig, id);
2869
3126
  bundlerConfig = preloadModule$1(serverReference);
2870
- return bound
2871
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3127
+ metaData = metaData.bound;
3128
+ return metaData instanceof Promise
3129
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
2872
3130
  _ref = _ref[0];
2873
3131
  var fn = requireModule(serverReference);
3132
+ if (1e3 < _ref.length)
3133
+ throw Error(
3134
+ "Server Function has too many bound arguments. Received " +
3135
+ _ref.length +
3136
+ " but the limit is 1000."
3137
+ );
2874
3138
  return fn.bind.apply(fn, [null].concat(_ref));
2875
3139
  })
2876
3140
  : bundlerConfig
@@ -2879,8 +3143,19 @@ function loadServerReference(bundlerConfig, id, bound) {
2879
3143
  })
2880
3144
  : Promise.resolve(requireModule(serverReference));
2881
3145
  }
2882
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
2883
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3146
+ function decodeBoundActionMetaData(
3147
+ body,
3148
+ serverManifest,
3149
+ formFieldPrefix,
3150
+ arraySizeLimit
3151
+ ) {
3152
+ body = createResponse(
3153
+ serverManifest,
3154
+ formFieldPrefix,
3155
+ void 0,
3156
+ body,
3157
+ arraySizeLimit
3158
+ );
2884
3159
  close(body);
2885
3160
  body = getChunk(body, 0);
2886
3161
  body.then(function () {});
@@ -2889,16 +3164,24 @@ function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
2889
3164
  }
2890
3165
  function decodeAction$1(body, serverManifest) {
2891
3166
  var formData = new FormData(),
2892
- action = null;
3167
+ action = null,
3168
+ seenActions = new Set();
2893
3169
  body.forEach(function (value, key) {
2894
3170
  key.startsWith("$ACTION_")
2895
3171
  ? key.startsWith("$ACTION_REF_")
2896
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
3172
+ ? seenActions.has(key) ||
3173
+ (seenActions.add(key),
3174
+ (value = "$ACTION_" + key.slice(12) + ":"),
2897
3175
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
2898
- (action = loadServerReference(serverManifest, value.id, value.bound)))
3176
+ (action = loadServerReference(serverManifest, value)))
2899
3177
  : key.startsWith("$ACTION_ID_") &&
2900
- ((value = key.slice(11)),
2901
- (action = loadServerReference(serverManifest, value, null)))
3178
+ !seenActions.has(key) &&
3179
+ (seenActions.add(key),
3180
+ (value = key.slice(11)),
3181
+ (action = loadServerReference(serverManifest, {
3182
+ id: value,
3183
+ bound: null
3184
+ })))
2902
3185
  : formData.append(key, value);
2903
3186
  });
2904
3187
  return null === action
@@ -2953,7 +3236,8 @@ exports.decodeReply = function (body, options) {
2953
3236
  serverManifest,
2954
3237
  "",
2955
3238
  options ? options.temporaryReferences : void 0,
2956
- body
3239
+ body,
3240
+ options ? options.arraySizeLimit : void 0
2957
3241
  );
2958
3242
  options = getChunk(body, 0);
2959
3243
  close(body);