react-server-dom-webpack 19.0.3 → 19.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,12 +2559,21 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
2458
2559
  }
2459
2560
  }
2460
2561
  function createMap(response, model) {
2562
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
2563
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
2564
+ model.$$consumed = !0;
2461
2565
  return new Map(model);
2462
2566
  }
2463
2567
  function createSet(response, model) {
2568
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
2569
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
2570
+ model.$$consumed = !0;
2464
2571
  return new Set(model);
2465
2572
  }
2466
2573
  function extractIterator(response, model) {
2574
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
2575
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
2576
+ model.$$consumed = !0;
2467
2577
  return model[Symbol.iterator]();
2468
2578
  }
2469
2579
  function createModel(response, model, parentObject, key) {
@@ -2475,13 +2585,34 @@ function parseTypedArray(
2475
2585
  constructor,
2476
2586
  bytesPerElement,
2477
2587
  parentObject,
2478
- parentKey
2588
+ parentKey,
2589
+ referenceArrayRoot
2479
2590
  ) {
2591
+ function reject(error) {
2592
+ if (!handler.errored) {
2593
+ handler.errored = !0;
2594
+ handler.value = null;
2595
+ handler.reason = error;
2596
+ var chunk = handler.chunk;
2597
+ null !== chunk &&
2598
+ "blocked" === chunk.status &&
2599
+ triggerErrorOnChunk(response, chunk, error);
2600
+ }
2601
+ }
2480
2602
  reference = parseInt(reference.slice(2), 16);
2481
- bytesPerElement = response._prefix + reference;
2482
- if (response._chunks.has(reference))
2603
+ var key = response._prefix + reference;
2604
+ bytesPerElement = response._chunks;
2605
+ if (bytesPerElement.has(reference))
2483
2606
  throw Error("Already initialized typed array.");
2484
- reference = response._formData.get(bytesPerElement).arrayBuffer();
2607
+ bytesPerElement.set(
2608
+ reference,
2609
+ new ReactPromise(
2610
+ "rejected",
2611
+ null,
2612
+ Error("Already initialized typed array.")
2613
+ )
2614
+ );
2615
+ reference = response._formData.get(key).arrayBuffer();
2485
2616
  if (initializingHandler) {
2486
2617
  var handler = initializingHandler;
2487
2618
  handler.deps++;
@@ -2493,37 +2624,32 @@ function parseTypedArray(
2493
2624
  deps: 1,
2494
2625
  errored: !1
2495
2626
  };
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
- }
2627
+ reference.then(function (buffer) {
2628
+ try {
2629
+ null !== referenceArrayRoot &&
2630
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
2631
+ var resolvedValue =
2632
+ constructor === ArrayBuffer ? buffer : new constructor(buffer);
2633
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
2634
+ "" === parentKey &&
2635
+ null === handler.value &&
2636
+ (handler.value = resolvedValue);
2637
+ } catch (x) {
2638
+ reject(x);
2639
+ return;
2525
2640
  }
2526
- );
2641
+ handler.deps--;
2642
+ 0 === handler.deps &&
2643
+ ((buffer = handler.chunk),
2644
+ null !== buffer &&
2645
+ "blocked" === buffer.status &&
2646
+ ((resolvedValue = buffer.value),
2647
+ (buffer.status = "fulfilled"),
2648
+ (buffer.value = handler.value),
2649
+ (buffer.reason = null),
2650
+ null !== resolvedValue &&
2651
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
2652
+ }, reject);
2527
2653
  return null;
2528
2654
  }
2529
2655
  function resolveStream(response, id, stream, controller) {
@@ -2539,86 +2665,78 @@ function resolveStream(response, id, stream, controller) {
2539
2665
  : controller.enqueueModel(chunks));
2540
2666
  }
2541
2667
  function parseReadableStream(response, reference, type) {
2668
+ function enqueue(value) {
2669
+ "bytes" !== type || ArrayBuffer.isView(value)
2670
+ ? controller.enqueue(value)
2671
+ : flightController.error(Error("Invalid data for bytes stream."));
2672
+ }
2542
2673
  reference = parseInt(reference.slice(2), 16);
2543
2674
  if (response._chunks.has(reference))
2544
2675
  throw Error("Already initialized stream.");
2545
2676
  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
- });
2677
+ closed = !1,
2678
+ stream = new ReadableStream({
2679
+ type: type,
2680
+ start: function (c) {
2681
+ controller = c;
2586
2682
  }
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);
2683
+ }),
2684
+ previousBlockedChunk = null,
2685
+ flightController = {
2686
+ enqueueModel: function (json) {
2687
+ if (null === previousBlockedChunk) {
2688
+ var chunk = createResolvedModelChunk(response, json, -1);
2689
+ initializeModelChunk(chunk);
2690
+ "fulfilled" === chunk.status
2691
+ ? enqueue(chunk.value)
2692
+ : (chunk.then(enqueue, flightController.error),
2693
+ (previousBlockedChunk = chunk));
2694
+ } else {
2695
+ chunk = previousBlockedChunk;
2696
+ var chunk$32 = new ReactPromise("pending", null, null);
2697
+ chunk$32.then(enqueue, flightController.error);
2698
+ previousBlockedChunk = chunk$32;
2699
+ chunk.then(function () {
2700
+ previousBlockedChunk === chunk$32 && (previousBlockedChunk = null);
2701
+ resolveModelChunk(response, chunk$32, json, -1);
2608
2702
  });
2609
2703
  }
2610
- }
2611
- });
2612
- return type;
2613
- }
2614
- function asyncIterator() {
2615
- return this;
2704
+ },
2705
+ close: function () {
2706
+ if (!closed)
2707
+ if (((closed = !0), null === previousBlockedChunk))
2708
+ controller.close();
2709
+ else {
2710
+ var blockedChunk = previousBlockedChunk;
2711
+ previousBlockedChunk = null;
2712
+ blockedChunk.then(function () {
2713
+ return controller.close();
2714
+ });
2715
+ }
2716
+ },
2717
+ error: function (error) {
2718
+ if (!closed)
2719
+ if (((closed = !0), null === previousBlockedChunk))
2720
+ controller.error(error);
2721
+ else {
2722
+ var blockedChunk = previousBlockedChunk;
2723
+ previousBlockedChunk = null;
2724
+ blockedChunk.then(function () {
2725
+ return controller.error(error);
2726
+ });
2727
+ }
2728
+ }
2729
+ };
2730
+ resolveStream(response, reference, stream, flightController);
2731
+ return stream;
2616
2732
  }
2617
- function createIterator(next) {
2618
- next = { next: next };
2619
- next[ASYNC_ITERATOR] = asyncIterator;
2620
- return next;
2733
+ function FlightIterator(next) {
2734
+ this.next = next;
2621
2735
  }
2736
+ FlightIterator.prototype = {};
2737
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
2738
+ return this;
2739
+ };
2622
2740
  function parseAsyncIterable(response, reference, iterator) {
2623
2741
  reference = parseInt(reference.slice(2), 16);
2624
2742
  if (response._chunks.has(reference))
@@ -2630,7 +2748,7 @@ function parseAsyncIterable(response, reference, iterator) {
2630
2748
  $jscomp$compprop5 =
2631
2749
  (($jscomp$compprop5[ASYNC_ITERATOR] = function () {
2632
2750
  var nextReadIndex = 0;
2633
- return createIterator(function (arg) {
2751
+ return new FlightIterator(function (arg) {
2634
2752
  if (void 0 !== arg)
2635
2753
  throw Error(
2636
2754
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -2710,17 +2828,28 @@ function parseAsyncIterable(response, reference, iterator) {
2710
2828
  });
2711
2829
  return iterator;
2712
2830
  }
2713
- function parseModelString(response, obj, key, value, reference) {
2831
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
2714
2832
  if ("$" === value[0]) {
2715
2833
  switch (value[1]) {
2716
2834
  case "$":
2717
- return value.slice(1);
2835
+ return (
2836
+ null !== arrayRoot &&
2837
+ bumpArrayCount(arrayRoot, value.length - 1, response),
2838
+ value.slice(1)
2839
+ );
2718
2840
  case "@":
2719
2841
  return (obj = parseInt(value.slice(2), 16)), getChunk(response, obj);
2720
2842
  case "h":
2721
2843
  return (
2722
- (value = value.slice(2)),
2723
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
2844
+ (arrayRoot = value.slice(2)),
2845
+ getOutlinedModel(
2846
+ response,
2847
+ arrayRoot,
2848
+ obj,
2849
+ key,
2850
+ null,
2851
+ loadServerReference$1
2852
+ )
2724
2853
  );
2725
2854
  case "T":
2726
2855
  if (void 0 === reference || void 0 === response._temporaryReferences)
@@ -2733,27 +2862,37 @@ function parseModelString(response, obj, key, value, reference) {
2733
2862
  );
2734
2863
  case "Q":
2735
2864
  return (
2736
- (value = value.slice(2)),
2737
- getOutlinedModel(response, value, obj, key, createMap)
2865
+ (arrayRoot = value.slice(2)),
2866
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
2738
2867
  );
2739
2868
  case "W":
2740
2869
  return (
2741
- (value = value.slice(2)),
2742
- getOutlinedModel(response, value, obj, key, createSet)
2870
+ (arrayRoot = value.slice(2)),
2871
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
2743
2872
  );
2744
2873
  case "K":
2745
2874
  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;
2875
+ obj = response._prefix + obj + "_";
2876
+ key = new FormData();
2877
+ response = response._formData;
2878
+ arrayRoot = Array.from(response.keys());
2879
+ for (value = 0; value < arrayRoot.length; value++)
2880
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
2881
+ for (
2882
+ var entries = response.getAll(reference),
2883
+ newKey = reference.slice(obj.length),
2884
+ j = 0;
2885
+ j < entries.length;
2886
+ j++
2887
+ )
2888
+ key.append(newKey, entries[j]);
2889
+ response.delete(reference);
2890
+ }
2891
+ return key;
2753
2892
  case "i":
2754
2893
  return (
2755
- (value = value.slice(2)),
2756
- getOutlinedModel(response, value, obj, key, extractIterator)
2894
+ (arrayRoot = value.slice(2)),
2895
+ getOutlinedModel(response, arrayRoot, obj, key, null, extractIterator)
2757
2896
  );
2758
2897
  case "I":
2759
2898
  return Infinity;
@@ -2766,35 +2905,147 @@ function parseModelString(response, obj, key, value, reference) {
2766
2905
  case "D":
2767
2906
  return new Date(Date.parse(value.slice(2)));
2768
2907
  case "n":
2769
- return BigInt(value.slice(2));
2908
+ obj = value.slice(2);
2909
+ if (300 < obj.length)
2910
+ throw Error(
2911
+ "BigInt is too large. Received " +
2912
+ obj.length +
2913
+ " digits but the limit is 300."
2914
+ );
2915
+ null !== arrayRoot && bumpArrayCount(arrayRoot, obj.length, response);
2916
+ return BigInt(obj);
2770
2917
  }
2771
2918
  switch (value[1]) {
2772
2919
  case "A":
2773
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
2920
+ return parseTypedArray(
2921
+ response,
2922
+ value,
2923
+ ArrayBuffer,
2924
+ 1,
2925
+ obj,
2926
+ key,
2927
+ arrayRoot
2928
+ );
2774
2929
  case "O":
2775
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
2930
+ return parseTypedArray(
2931
+ response,
2932
+ value,
2933
+ Int8Array,
2934
+ 1,
2935
+ obj,
2936
+ key,
2937
+ arrayRoot
2938
+ );
2776
2939
  case "o":
2777
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
2940
+ return parseTypedArray(
2941
+ response,
2942
+ value,
2943
+ Uint8Array,
2944
+ 1,
2945
+ obj,
2946
+ key,
2947
+ arrayRoot
2948
+ );
2778
2949
  case "U":
2779
- return parseTypedArray(response, value, Uint8ClampedArray, 1, obj, key);
2950
+ return parseTypedArray(
2951
+ response,
2952
+ value,
2953
+ Uint8ClampedArray,
2954
+ 1,
2955
+ obj,
2956
+ key,
2957
+ arrayRoot
2958
+ );
2780
2959
  case "S":
2781
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
2960
+ return parseTypedArray(
2961
+ response,
2962
+ value,
2963
+ Int16Array,
2964
+ 2,
2965
+ obj,
2966
+ key,
2967
+ arrayRoot
2968
+ );
2782
2969
  case "s":
2783
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
2970
+ return parseTypedArray(
2971
+ response,
2972
+ value,
2973
+ Uint16Array,
2974
+ 2,
2975
+ obj,
2976
+ key,
2977
+ arrayRoot
2978
+ );
2784
2979
  case "L":
2785
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
2980
+ return parseTypedArray(
2981
+ response,
2982
+ value,
2983
+ Int32Array,
2984
+ 4,
2985
+ obj,
2986
+ key,
2987
+ arrayRoot
2988
+ );
2786
2989
  case "l":
2787
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
2990
+ return parseTypedArray(
2991
+ response,
2992
+ value,
2993
+ Uint32Array,
2994
+ 4,
2995
+ obj,
2996
+ key,
2997
+ arrayRoot
2998
+ );
2788
2999
  case "G":
2789
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
3000
+ return parseTypedArray(
3001
+ response,
3002
+ value,
3003
+ Float32Array,
3004
+ 4,
3005
+ obj,
3006
+ key,
3007
+ arrayRoot
3008
+ );
2790
3009
  case "g":
2791
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
3010
+ return parseTypedArray(
3011
+ response,
3012
+ value,
3013
+ Float64Array,
3014
+ 8,
3015
+ obj,
3016
+ key,
3017
+ arrayRoot
3018
+ );
2792
3019
  case "M":
2793
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
3020
+ return parseTypedArray(
3021
+ response,
3022
+ value,
3023
+ BigInt64Array,
3024
+ 8,
3025
+ obj,
3026
+ key,
3027
+ arrayRoot
3028
+ );
2794
3029
  case "m":
2795
- return parseTypedArray(response, value, BigUint64Array, 8, obj, key);
3030
+ return parseTypedArray(
3031
+ response,
3032
+ value,
3033
+ BigUint64Array,
3034
+ 8,
3035
+ obj,
3036
+ key,
3037
+ arrayRoot
3038
+ );
2796
3039
  case "V":
2797
- return parseTypedArray(response, value, DataView, 1, obj, key);
3040
+ return parseTypedArray(
3041
+ response,
3042
+ value,
3043
+ DataView,
3044
+ 1,
3045
+ obj,
3046
+ key,
3047
+ arrayRoot
3048
+ );
2798
3049
  case "B":
2799
3050
  return (
2800
3051
  (obj = parseInt(value.slice(2), 16)),
@@ -2812,8 +3063,9 @@ function parseModelString(response, obj, key, value, reference) {
2812
3063
  return parseAsyncIterable(response, value, !0);
2813
3064
  }
2814
3065
  value = value.slice(1);
2815
- return getOutlinedModel(response, value, obj, key, createModel);
3066
+ return getOutlinedModel(response, value, obj, key, arrayRoot, createModel);
2816
3067
  }
3068
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
2817
3069
  return value;
2818
3070
  }
2819
3071
  function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
@@ -2821,25 +3073,38 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
2821
3073
  3 < arguments.length && void 0 !== arguments[3]
2822
3074
  ? arguments[3]
2823
3075
  : new FormData(),
3076
+ arraySizeLimit =
3077
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
2824
3078
  chunks = new Map();
2825
3079
  return {
2826
3080
  _bundlerConfig: bundlerConfig,
2827
3081
  _prefix: formFieldPrefix,
2828
3082
  _formData: backingFormData,
2829
3083
  _chunks: chunks,
2830
- _temporaryReferences: temporaryReferences
3084
+ _temporaryReferences: temporaryReferences,
3085
+ _rootArrayContexts: new WeakMap(),
3086
+ _arraySizeLimit: arraySizeLimit
2831
3087
  };
2832
3088
  }
2833
3089
  function close(response) {
2834
3090
  reportGlobalError(response, Error("Connection closed."));
2835
3091
  }
2836
- function loadServerReference(bundlerConfig, id, bound) {
3092
+ function loadServerReference(bundlerConfig, metaData) {
3093
+ var id = metaData.id;
3094
+ if ("string" !== typeof id) return null;
2837
3095
  var serverReference = resolveServerReference(bundlerConfig, id);
2838
3096
  bundlerConfig = preloadModule(serverReference);
2839
- return bound
2840
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
3097
+ metaData = metaData.bound;
3098
+ return metaData instanceof Promise
3099
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
2841
3100
  _ref = _ref[0];
2842
3101
  var fn = requireModule(serverReference);
3102
+ if (1e3 < _ref.length)
3103
+ throw Error(
3104
+ "Server Function has too many bound arguments. Received " +
3105
+ _ref.length +
3106
+ " but the limit is 1000."
3107
+ );
2843
3108
  return fn.bind.apply(fn, [null].concat(_ref));
2844
3109
  })
2845
3110
  : bundlerConfig
@@ -2848,8 +3113,19 @@ function loadServerReference(bundlerConfig, id, bound) {
2848
3113
  })
2849
3114
  : Promise.resolve(requireModule(serverReference));
2850
3115
  }
2851
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
2852
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
3116
+ function decodeBoundActionMetaData(
3117
+ body,
3118
+ serverManifest,
3119
+ formFieldPrefix,
3120
+ arraySizeLimit
3121
+ ) {
3122
+ body = createResponse(
3123
+ serverManifest,
3124
+ formFieldPrefix,
3125
+ void 0,
3126
+ body,
3127
+ arraySizeLimit
3128
+ );
2853
3129
  close(body);
2854
3130
  body = getChunk(body, 0);
2855
3131
  body.then(function () {});
@@ -2865,16 +3141,24 @@ exports.createTemporaryReferenceSet = function () {
2865
3141
  };
2866
3142
  exports.decodeAction = function (body, serverManifest) {
2867
3143
  var formData = new FormData(),
2868
- action = null;
3144
+ action = null,
3145
+ seenActions = new Set();
2869
3146
  body.forEach(function (value, key) {
2870
3147
  key.startsWith("$ACTION_")
2871
3148
  ? key.startsWith("$ACTION_REF_")
2872
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
3149
+ ? seenActions.has(key) ||
3150
+ (seenActions.add(key),
3151
+ (value = "$ACTION_" + key.slice(12) + ":"),
2873
3152
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
2874
- (action = loadServerReference(serverManifest, value.id, value.bound)))
3153
+ (action = loadServerReference(serverManifest, value)))
2875
3154
  : key.startsWith("$ACTION_ID_") &&
2876
- ((value = key.slice(11)),
2877
- (action = loadServerReference(serverManifest, value, null)))
3155
+ !seenActions.has(key) &&
3156
+ (seenActions.add(key),
3157
+ (value = key.slice(11)),
3158
+ (action = loadServerReference(serverManifest, {
3159
+ id: value,
3160
+ bound: null
3161
+ })))
2878
3162
  : formData.append(key, value);
2879
3163
  });
2880
3164
  return null === action
@@ -2910,7 +3194,8 @@ exports.decodeReply = function (body, webpackMap, options) {
2910
3194
  webpackMap,
2911
3195
  "",
2912
3196
  options ? options.temporaryReferences : void 0,
2913
- body
3197
+ body,
3198
+ options ? options.arraySizeLimit : void 0
2914
3199
  );
2915
3200
  webpackMap = getChunk(body, 0);
2916
3201
  close(body);