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