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