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