react-server-dom-webpack 19.1.4 → 19.1.6

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