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