react-server-dom-webpack 19.2.3 → 19.2.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.
@@ -2324,6 +2324,13 @@
2324
2324
  value
2325
2325
  ) {
2326
2326
  task.model = value;
2327
+ "__proto__" === parentPropertyName &&
2328
+ callWithDebugContextInDEV(request, task, function () {
2329
+ console.error(
2330
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
2331
+ describeObjectForErrorMessage(parent, parentPropertyName)
2332
+ );
2333
+ });
2327
2334
  if (value === REACT_ELEMENT_TYPE) return "$";
2328
2335
  if (null === value) return null;
2329
2336
  if ("object" === typeof value) {
@@ -2517,7 +2524,7 @@
2517
2524
  if (value instanceof Date) return "$D" + value.toJSON();
2518
2525
  elementReference = getPrototypeOf(value);
2519
2526
  if (
2520
- elementReference !== ObjectPrototype &&
2527
+ elementReference !== ObjectPrototype$1 &&
2521
2528
  (null === elementReference ||
2522
2529
  null !== getPrototypeOf(elementReference))
2523
2530
  )
@@ -3088,7 +3095,7 @@
3088
3095
  return serializeDebugBlob(request, value);
3089
3096
  if (getIteratorFn(value)) return Array.from(value);
3090
3097
  request = getPrototypeOf(value);
3091
- if (request !== ObjectPrototype && null !== request) {
3098
+ if (request !== ObjectPrototype$1 && null !== request) {
3092
3099
  counter = Object.create(null);
3093
3100
  for (env in value)
3094
3101
  if (hasOwnProperty.call(value, env) || isGetter(request, env))
@@ -3877,12 +3884,12 @@
3877
3884
  this.value = value;
3878
3885
  this.reason = reason;
3879
3886
  }
3880
- function wakeChunk(response, listeners, value) {
3887
+ function wakeChunk(response, listeners, value, chunk) {
3881
3888
  for (var i = 0; i < listeners.length; i++) {
3882
3889
  var listener = listeners[i];
3883
3890
  "function" === typeof listener
3884
3891
  ? listener(value)
3885
- : fulfillReference(response, listener, value);
3892
+ : fulfillReference(response, listener, value, chunk.reason);
3886
3893
  }
3887
3894
  }
3888
3895
  function rejectChunk(response, listeners, error) {
@@ -3893,27 +3900,6 @@
3893
3900
  : rejectReference(response, listener.handler, error);
3894
3901
  }
3895
3902
  }
3896
- function resolveBlockedCycle(resolvedChunk, reference) {
3897
- var referencedChunk = reference.handler.chunk;
3898
- if (null === referencedChunk) return null;
3899
- if (referencedChunk === resolvedChunk) return reference.handler;
3900
- reference = referencedChunk.value;
3901
- if (null !== reference)
3902
- for (
3903
- referencedChunk = 0;
3904
- referencedChunk < reference.length;
3905
- referencedChunk++
3906
- ) {
3907
- var listener = reference[referencedChunk];
3908
- if (
3909
- "function" !== typeof listener &&
3910
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
3911
- null !== listener)
3912
- )
3913
- return listener;
3914
- }
3915
- return null;
3916
- }
3917
3903
  function triggerErrorOnChunk(response, chunk, error) {
3918
3904
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
3919
3905
  chunk.reason.error(error);
@@ -3937,57 +3923,25 @@
3937
3923
  chunk.value = value;
3938
3924
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
3939
3925
  if (null !== resolveListeners)
3940
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
3926
+ switch ((initializeModelChunk(chunk), chunk.status)) {
3941
3927
  case "fulfilled":
3942
- wakeChunk(response, resolveListeners, chunk.value);
3928
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
3943
3929
  break;
3944
3930
  case "blocked":
3945
- for (value = 0; value < resolveListeners.length; value++)
3946
- if (
3947
- ((id = resolveListeners[value]), "function" !== typeof id)
3948
- ) {
3949
- var cyclicHandler = resolveBlockedCycle(chunk, id);
3950
- if (null !== cyclicHandler)
3951
- switch (
3952
- (fulfillReference(response, id, cyclicHandler.value),
3953
- resolveListeners.splice(value, 1),
3954
- value--,
3955
- null !== rejectListeners &&
3956
- ((id = rejectListeners.indexOf(id)),
3957
- -1 !== id && rejectListeners.splice(id, 1)),
3958
- chunk.status)
3959
- ) {
3960
- case "fulfilled":
3961
- wakeChunk(response, resolveListeners, chunk.value);
3962
- break a;
3963
- case "rejected":
3964
- null !== rejectListeners &&
3965
- rejectChunk(response, rejectListeners, chunk.reason);
3966
- break a;
3967
- }
3968
- }
3969
3931
  case "pending":
3970
3932
  if (chunk.value)
3971
- for (
3972
- response = 0;
3973
- response < resolveListeners.length;
3974
- response++
3975
- )
3976
- chunk.value.push(resolveListeners[response]);
3933
+ for (value = 0; value < resolveListeners.length; value++)
3934
+ chunk.value.push(resolveListeners[value]);
3977
3935
  else chunk.value = resolveListeners;
3978
3936
  if (chunk.reason) {
3979
3937
  if (rejectListeners)
3980
- for (
3981
- resolveListeners = 0;
3982
- resolveListeners < rejectListeners.length;
3983
- resolveListeners++
3984
- )
3985
- chunk.reason.push(rejectListeners[resolveListeners]);
3938
+ for (value = 0; value < rejectListeners.length; value++)
3939
+ chunk.reason.push(rejectListeners[value]);
3986
3940
  } else chunk.reason = rejectListeners;
3987
3941
  break;
3988
3942
  case "rejected":
3989
3943
  rejectListeners &&
3990
- wakeChunk(response, rejectListeners, chunk.reason);
3944
+ rejectChunk(response, rejectListeners, chunk.reason);
3991
3945
  }
3992
3946
  }
3993
3947
  }
@@ -4011,15 +3965,51 @@
4011
3965
  );
4012
3966
  }
4013
3967
  function loadServerReference$1(response, metaData, parentObject, key) {
3968
+ function reject(error) {
3969
+ var rejectListeners = blockedPromise.reason,
3970
+ erroredPromise = blockedPromise;
3971
+ erroredPromise.status = "rejected";
3972
+ erroredPromise.value = null;
3973
+ erroredPromise.reason = error;
3974
+ null !== rejectListeners &&
3975
+ rejectChunk(response, rejectListeners, error);
3976
+ rejectReference(response, handler, error);
3977
+ }
4014
3978
  var id = metaData.id;
4015
3979
  if ("string" !== typeof id || "then" === key) return null;
3980
+ var cachedPromise = metaData.$$promise;
3981
+ if (void 0 !== cachedPromise) {
3982
+ if ("fulfilled" === cachedPromise.status)
3983
+ return (
3984
+ (cachedPromise = cachedPromise.value),
3985
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
3986
+ );
3987
+ initializingHandler
3988
+ ? ((id = initializingHandler), id.deps++)
3989
+ : (id = initializingHandler =
3990
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
3991
+ cachedPromise.then(
3992
+ resolveReference.bind(null, response, id, parentObject, key),
3993
+ rejectReference.bind(null, response, id)
3994
+ );
3995
+ return null;
3996
+ }
3997
+ var blockedPromise = new ReactPromise("blocked", null, null);
3998
+ metaData.$$promise = blockedPromise;
4016
3999
  var serverReference = resolveServerReference(response._bundlerConfig, id);
4017
- id = metaData.bound;
4018
- var promise = preloadModule(serverReference);
4019
- if (promise)
4020
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
4021
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
4022
- else return requireModule(serverReference);
4000
+ cachedPromise = metaData.bound;
4001
+ if ((id = preloadModule(serverReference)))
4002
+ cachedPromise instanceof ReactPromise &&
4003
+ (id = Promise.all([id, cachedPromise]));
4004
+ else if (cachedPromise instanceof ReactPromise)
4005
+ id = Promise.resolve(cachedPromise);
4006
+ else
4007
+ return (
4008
+ (cachedPromise = requireModule(serverReference)),
4009
+ (id = blockedPromise),
4010
+ (id.status = "fulfilled"),
4011
+ (id.value = cachedPromise)
4012
+ );
4023
4013
  if (initializingHandler) {
4024
4014
  var handler = initializingHandler;
4025
4015
  handler.deps++;
@@ -4031,93 +4021,107 @@
4031
4021
  deps: 1,
4032
4022
  errored: !1
4033
4023
  };
4034
- promise.then(
4035
- function () {
4036
- var resolvedValue = requireModule(serverReference);
4037
- if (metaData.bound) {
4038
- var promiseValue = metaData.bound.value;
4039
- promiseValue = Array.isArray(promiseValue)
4040
- ? promiseValue.slice(0)
4041
- : [];
4042
- promiseValue.unshift(null);
4043
- resolvedValue = resolvedValue.bind.apply(
4044
- resolvedValue,
4045
- promiseValue
4024
+ id.then(function () {
4025
+ var resolvedValue = requireModule(serverReference);
4026
+ if (metaData.bound) {
4027
+ var promiseValue = metaData.bound.value;
4028
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
4029
+ if (promiseValue.length > MAX_BOUND_ARGS) {
4030
+ reject(
4031
+ Error(
4032
+ "Server Function has too many bound arguments. Received " +
4033
+ promiseValue.length +
4034
+ " but the limit is " +
4035
+ MAX_BOUND_ARGS +
4036
+ "."
4037
+ )
4046
4038
  );
4039
+ return;
4047
4040
  }
4048
- parentObject[key] = resolvedValue;
4049
- "" === key &&
4050
- null === handler.value &&
4051
- (handler.value = resolvedValue);
4052
- handler.deps--;
4053
- 0 === handler.deps &&
4054
- ((resolvedValue = handler.chunk),
4055
- null !== resolvedValue &&
4056
- "blocked" === resolvedValue.status &&
4057
- ((promiseValue = resolvedValue.value),
4058
- (resolvedValue.status = "fulfilled"),
4059
- (resolvedValue.value = handler.value),
4060
- (resolvedValue.reason = null),
4061
- null !== promiseValue &&
4062
- wakeChunk(response, promiseValue, handler.value)));
4063
- },
4064
- function (error) {
4065
- if (!handler.errored) {
4066
- handler.errored = !0;
4067
- handler.value = null;
4068
- handler.reason = error;
4069
- var chunk = handler.chunk;
4070
- null !== chunk &&
4071
- "blocked" === chunk.status &&
4072
- triggerErrorOnChunk(response, chunk, error);
4073
- }
4041
+ promiseValue.unshift(null);
4042
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
4074
4043
  }
4075
- );
4044
+ promiseValue = blockedPromise.value;
4045
+ var initializedPromise = blockedPromise;
4046
+ initializedPromise.status = "fulfilled";
4047
+ initializedPromise.value = resolvedValue;
4048
+ initializedPromise.reason = null;
4049
+ null !== promiseValue &&
4050
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
4051
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4052
+ }, reject);
4076
4053
  return null;
4077
4054
  }
4078
- function reviveModel(response, parentObj, parentKey, value, reference) {
4055
+ function reviveModel(
4056
+ response,
4057
+ parentObj,
4058
+ parentKey,
4059
+ value,
4060
+ reference,
4061
+ arrayRoot
4062
+ ) {
4079
4063
  if ("string" === typeof value)
4080
4064
  return parseModelString(
4081
4065
  response,
4082
4066
  parentObj,
4083
4067
  parentKey,
4084
4068
  value,
4085
- reference
4069
+ reference,
4070
+ arrayRoot
4086
4071
  );
4087
4072
  if ("object" === typeof value && null !== value)
4088
4073
  if (
4089
4074
  (void 0 !== reference &&
4090
4075
  void 0 !== response._temporaryReferences &&
4091
4076
  response._temporaryReferences.set(value, reference),
4092
- Array.isArray(value))
4093
- )
4094
- for (var i = 0; i < value.length; i++)
4095
- value[i] = reviveModel(
4077
+ isArrayImpl(value))
4078
+ ) {
4079
+ if (null === arrayRoot) {
4080
+ var childContext = { count: 0, fork: !1 };
4081
+ response._rootArrayContexts.set(value, childContext);
4082
+ } else childContext = arrayRoot;
4083
+ 1 < value.length && (childContext.fork = !0);
4084
+ bumpArrayCount(childContext, value.length + 1, response);
4085
+ for (parentObj = 0; parentObj < value.length; parentObj++)
4086
+ value[parentObj] = reviveModel(
4096
4087
  response,
4097
4088
  value,
4098
- "" + i,
4099
- value[i],
4100
- void 0 !== reference ? reference + ":" + i : void 0
4089
+ "" + parentObj,
4090
+ value[parentObj],
4091
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
4092
+ childContext
4101
4093
  );
4102
- else
4103
- for (i in value)
4104
- hasOwnProperty.call(value, i) &&
4105
- ((parentObj =
4106
- void 0 !== reference && -1 === i.indexOf(":")
4107
- ? reference + ":" + i
4108
- : void 0),
4109
- (parentObj = reviveModel(
4110
- response,
4111
- value,
4112
- i,
4113
- value[i],
4114
- parentObj
4115
- )),
4116
- void 0 !== parentObj || "__proto__" === i
4117
- ? (value[i] = parentObj)
4118
- : delete value[i]);
4094
+ } else
4095
+ for (childContext in value)
4096
+ hasOwnProperty.call(value, childContext) &&
4097
+ ("__proto__" === childContext
4098
+ ? delete value[childContext]
4099
+ : ((parentObj =
4100
+ void 0 !== reference && -1 === childContext.indexOf(":")
4101
+ ? reference + ":" + childContext
4102
+ : void 0),
4103
+ (parentObj = reviveModel(
4104
+ response,
4105
+ value,
4106
+ childContext,
4107
+ value[childContext],
4108
+ parentObj,
4109
+ null
4110
+ )),
4111
+ void 0 !== parentObj
4112
+ ? (value[childContext] = parentObj)
4113
+ : delete value[childContext]));
4119
4114
  return value;
4120
4115
  }
4116
+ function bumpArrayCount(arrayContext, slots, response) {
4117
+ if (
4118
+ (arrayContext.count += slots) > response._arraySizeLimit &&
4119
+ arrayContext.fork
4120
+ )
4121
+ throw Error(
4122
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
4123
+ );
4124
+ }
4121
4125
  function initializeModelChunk(chunk) {
4122
4126
  var prevHandler = initializingHandler;
4123
4127
  initializingHandler = null;
@@ -4131,13 +4135,15 @@
4131
4135
  chunk.value = null;
4132
4136
  chunk.reason = null;
4133
4137
  try {
4134
- var rawModel = JSON.parse(resolvedModel),
4135
- value = reviveModel(
4138
+ var rawModel = JSON.parse(resolvedModel);
4139
+ resolvedModel = { count: 0, fork: !1 };
4140
+ var value = reviveModel(
4136
4141
  response,
4137
4142
  { "": rawModel },
4138
4143
  "",
4139
4144
  rawModel,
4140
- _chunk$reason
4145
+ _chunk$reason,
4146
+ resolvedModel
4141
4147
  ),
4142
4148
  resolveListeners = chunk.value;
4143
4149
  if (null !== resolveListeners)
@@ -4149,19 +4155,20 @@
4149
4155
  var listener = resolveListeners[rawModel];
4150
4156
  "function" === typeof listener
4151
4157
  ? listener(value)
4152
- : fulfillReference(response, listener, value);
4158
+ : fulfillReference(response, listener, value, resolvedModel);
4153
4159
  }
4154
4160
  if (null !== initializingHandler) {
4155
4161
  if (initializingHandler.errored) throw initializingHandler.reason;
4156
4162
  if (0 < initializingHandler.deps) {
4157
4163
  initializingHandler.value = value;
4164
+ initializingHandler.reason = resolvedModel;
4158
4165
  initializingHandler.chunk = chunk;
4159
4166
  return;
4160
4167
  }
4161
4168
  }
4162
4169
  chunk.status = "fulfilled";
4163
4170
  chunk.value = value;
4164
- chunk.reason = null;
4171
+ chunk.reason = resolvedModel;
4165
4172
  } catch (error) {
4166
4173
  (chunk.status = "rejected"), (chunk.reason = error);
4167
4174
  } finally {
@@ -4176,7 +4183,8 @@
4176
4183
  ? triggerErrorOnChunk(response, chunk, error)
4177
4184
  : "fulfilled" === chunk.status &&
4178
4185
  null !== chunk.reason &&
4179
- chunk.reason.error(error);
4186
+ ((chunk = chunk.reason),
4187
+ "function" === typeof chunk.error && chunk.error(error));
4180
4188
  });
4181
4189
  }
4182
4190
  function getChunk(response, id) {
@@ -4197,40 +4205,74 @@
4197
4205
  chunks.set(id, chunk));
4198
4206
  return chunk;
4199
4207
  }
4200
- function fulfillReference(response, reference, value) {
4208
+ function fulfillReference(response, reference, value, arrayRoot) {
4201
4209
  var handler = reference.handler,
4202
4210
  parentObject = reference.parentObject,
4203
4211
  key = reference.key,
4204
4212
  map = reference.map,
4205
4213
  path = reference.path;
4206
4214
  try {
4207
- for (var i = 1; i < path.length; i++) {
4215
+ for (
4216
+ var localLength = 0,
4217
+ rootArrayContexts = response._rootArrayContexts,
4218
+ i = 1;
4219
+ i < path.length;
4220
+ i++
4221
+ ) {
4208
4222
  var name = path[i];
4209
4223
  if (
4210
4224
  "object" !== typeof value ||
4211
- !hasOwnProperty.call(value, name) ||
4212
- value instanceof Promise
4225
+ null === value ||
4226
+ (getPrototypeOf(value) !== ObjectPrototype &&
4227
+ getPrototypeOf(value) !== ArrayPrototype) ||
4228
+ !hasOwnProperty.call(value, name)
4213
4229
  )
4214
4230
  throw Error("Invalid reference.");
4215
4231
  value = value[name];
4232
+ if (isArrayImpl(value))
4233
+ (localLength = 0),
4234
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
4235
+ else if (((arrayRoot = null), "string" === typeof value))
4236
+ localLength = value.length;
4237
+ else if ("bigint" === typeof value) {
4238
+ var n = Math.abs(Number(value));
4239
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
4240
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
4216
4241
  }
4217
- var mappedValue = map(response, value, parentObject, key);
4218
- parentObject[key] = mappedValue;
4219
- "" === key && null === handler.value && (handler.value = mappedValue);
4242
+ var resolvedValue = map(response, value, parentObject, key);
4243
+ var referenceArrayRoot = reference.arrayRoot;
4244
+ null !== referenceArrayRoot &&
4245
+ (null !== arrayRoot
4246
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
4247
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
4248
+ : 0 < localLength &&
4249
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4220
4250
  } catch (error) {
4221
- rejectReference(response, reference.handler, error);
4251
+ rejectReference(response, handler, error);
4222
4252
  return;
4223
4253
  }
4254
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4255
+ }
4256
+ function resolveReference(
4257
+ response,
4258
+ handler,
4259
+ parentObject,
4260
+ key,
4261
+ resolvedValue
4262
+ ) {
4263
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
4264
+ "" === key && null === handler.value && (handler.value = resolvedValue);
4224
4265
  handler.deps--;
4225
4266
  0 === handler.deps &&
4226
- ((reference = handler.chunk),
4227
- null !== reference &&
4228
- "blocked" === reference.status &&
4229
- ((value = reference.value),
4230
- (reference.status = "fulfilled"),
4231
- (reference.value = handler.value),
4232
- (reference.reason = handler.reason),
4233
- null !== value && wakeChunk(response, value, handler.value)));
4267
+ ((parentObject = handler.chunk),
4268
+ null !== parentObject &&
4269
+ "blocked" === parentObject.status &&
4270
+ ((key = parentObject.value),
4271
+ (parentObject.status = "fulfilled"),
4272
+ (parentObject.value = handler.value),
4273
+ (parentObject.reason = handler.reason),
4274
+ null !== key &&
4275
+ wakeChunk(response, key, handler.value, parentObject)));
4234
4276
  }
4235
4277
  function rejectReference(response, handler, error) {
4236
4278
  handler.errored ||
@@ -4242,29 +4284,66 @@
4242
4284
  "blocked" === handler.status &&
4243
4285
  triggerErrorOnChunk(response, handler, error));
4244
4286
  }
4245
- function getOutlinedModel(response, reference, parentObject, key, map) {
4287
+ function getOutlinedModel(
4288
+ response,
4289
+ reference,
4290
+ parentObject,
4291
+ key,
4292
+ referenceArrayRoot,
4293
+ map
4294
+ ) {
4246
4295
  reference = reference.split(":");
4247
- var id = parseInt(reference[0], 16);
4248
- id = getChunk(response, id);
4249
- switch (id.status) {
4296
+ var id = parseInt(reference[0], 16),
4297
+ chunk = getChunk(response, id);
4298
+ switch (chunk.status) {
4250
4299
  case "resolved_model":
4251
- initializeModelChunk(id);
4300
+ initializeModelChunk(chunk);
4252
4301
  }
4253
- switch (id.status) {
4302
+ switch (chunk.status) {
4254
4303
  case "fulfilled":
4255
- id = id.value;
4256
- for (var i = 1; i < reference.length; i++) {
4257
- var name = reference[i];
4304
+ id = chunk.value;
4305
+ chunk = chunk.reason;
4306
+ for (
4307
+ var localLength = 0,
4308
+ rootArrayContexts = response._rootArrayContexts,
4309
+ i = 1;
4310
+ i < reference.length;
4311
+ i++
4312
+ ) {
4313
+ localLength = reference[i];
4258
4314
  if (
4259
4315
  "object" !== typeof id ||
4260
- !hasOwnProperty.call(id, name) ||
4261
- id instanceof Promise
4316
+ null === id ||
4317
+ (getPrototypeOf(id) !== ObjectPrototype &&
4318
+ getPrototypeOf(id) !== ArrayPrototype) ||
4319
+ !hasOwnProperty.call(id, localLength)
4262
4320
  )
4263
4321
  throw Error("Invalid reference.");
4264
- id = id[name];
4322
+ id = id[localLength];
4323
+ isArrayImpl(id)
4324
+ ? ((localLength = 0),
4325
+ (chunk = rootArrayContexts.get(id) || chunk))
4326
+ : ((chunk = null),
4327
+ "string" === typeof id
4328
+ ? (localLength = id.length)
4329
+ : "bigint" === typeof id
4330
+ ? ((localLength = Math.abs(Number(id))),
4331
+ (localLength =
4332
+ 0 === localLength
4333
+ ? 1
4334
+ : Math.floor(Math.log10(localLength)) + 1))
4335
+ : (localLength = ArrayBuffer.isView(id)
4336
+ ? id.byteLength
4337
+ : 0));
4265
4338
  }
4266
- return map(response, id, parentObject, key);
4267
- case "pending":
4339
+ parentObject = map(response, id, parentObject, key);
4340
+ null !== referenceArrayRoot &&
4341
+ (null !== chunk
4342
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
4343
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
4344
+ : 0 < localLength &&
4345
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4346
+ return parentObject;
4268
4347
  case "blocked":
4269
4348
  return (
4270
4349
  initializingHandler
@@ -4277,31 +4356,34 @@
4277
4356
  deps: 1,
4278
4357
  errored: !1
4279
4358
  }),
4280
- (parentObject = {
4359
+ (referenceArrayRoot = {
4281
4360
  handler: response,
4282
4361
  parentObject: parentObject,
4283
4362
  key: key,
4284
4363
  map: map,
4285
- path: reference
4364
+ path: reference,
4365
+ arrayRoot: referenceArrayRoot
4286
4366
  }),
4287
- null === id.value
4288
- ? (id.value = [parentObject])
4289
- : id.value.push(parentObject),
4290
- null === id.reason
4291
- ? (id.reason = [parentObject])
4292
- : id.reason.push(parentObject),
4367
+ null === chunk.value
4368
+ ? (chunk.value = [referenceArrayRoot])
4369
+ : chunk.value.push(referenceArrayRoot),
4370
+ null === chunk.reason
4371
+ ? (chunk.reason = [referenceArrayRoot])
4372
+ : chunk.reason.push(referenceArrayRoot),
4293
4373
  null
4294
4374
  );
4375
+ case "pending":
4376
+ throw Error("Invalid forward reference.");
4295
4377
  default:
4296
4378
  return (
4297
4379
  initializingHandler
4298
4380
  ? ((initializingHandler.errored = !0),
4299
4381
  (initializingHandler.value = null),
4300
- (initializingHandler.reason = id.reason))
4382
+ (initializingHandler.reason = chunk.reason))
4301
4383
  : (initializingHandler = {
4302
4384
  chunk: null,
4303
4385
  value: null,
4304
- reason: id.reason,
4386
+ reason: chunk.reason,
4305
4387
  deps: 0,
4306
4388
  errored: !0
4307
4389
  }),
@@ -4310,12 +4392,21 @@
4310
4392
  }
4311
4393
  }
4312
4394
  function createMap(response, model) {
4395
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4396
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4397
+ model.$$consumed = !0;
4313
4398
  return new Map(model);
4314
4399
  }
4315
4400
  function createSet(response, model) {
4401
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4402
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4403
+ model.$$consumed = !0;
4316
4404
  return new Set(model);
4317
4405
  }
4318
4406
  function extractIterator(response, model) {
4407
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4408
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4409
+ model.$$consumed = !0;
4319
4410
  return model[Symbol.iterator]();
4320
4411
  }
4321
4412
  function createModel(response, model, parentObject, key) {
@@ -4327,13 +4418,34 @@
4327
4418
  constructor,
4328
4419
  bytesPerElement,
4329
4420
  parentObject,
4330
- parentKey
4421
+ parentKey,
4422
+ referenceArrayRoot
4331
4423
  ) {
4424
+ function reject(error) {
4425
+ if (!handler.errored) {
4426
+ handler.errored = !0;
4427
+ handler.value = null;
4428
+ handler.reason = error;
4429
+ var chunk = handler.chunk;
4430
+ null !== chunk &&
4431
+ "blocked" === chunk.status &&
4432
+ triggerErrorOnChunk(response, chunk, error);
4433
+ }
4434
+ }
4332
4435
  reference = parseInt(reference.slice(2), 16);
4333
- bytesPerElement = response._prefix + reference;
4334
- if (response._chunks.has(reference))
4436
+ var key = response._prefix + reference;
4437
+ bytesPerElement = response._chunks;
4438
+ if (bytesPerElement.has(reference))
4335
4439
  throw Error("Already initialized typed array.");
4336
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4440
+ bytesPerElement.set(
4441
+ reference,
4442
+ new ReactPromise(
4443
+ "rejected",
4444
+ null,
4445
+ Error("Already initialized typed array.")
4446
+ )
4447
+ );
4448
+ reference = response._formData.get(key).arrayBuffer();
4337
4449
  if (initializingHandler) {
4338
4450
  var handler = initializingHandler;
4339
4451
  handler.deps++;
@@ -4345,40 +4457,32 @@
4345
4457
  deps: 1,
4346
4458
  errored: !1
4347
4459
  };
4348
- reference.then(
4349
- function (buffer) {
4350
- buffer =
4460
+ reference.then(function (buffer) {
4461
+ try {
4462
+ null !== referenceArrayRoot &&
4463
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4464
+ var resolvedValue =
4351
4465
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4352
- parentObject[parentKey] = buffer;
4466
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4353
4467
  "" === parentKey &&
4354
4468
  null === handler.value &&
4355
- (handler.value = buffer);
4356
- handler.deps--;
4357
- if (
4358
- 0 === handler.deps &&
4359
- ((buffer = handler.chunk),
4360
- null !== buffer && "blocked" === buffer.status)
4361
- ) {
4362
- var resolveListeners = buffer.value;
4363
- buffer.status = "fulfilled";
4364
- buffer.value = handler.value;
4365
- buffer.reason = null;
4366
- null !== resolveListeners &&
4367
- wakeChunk(response, resolveListeners, handler.value);
4368
- }
4369
- },
4370
- function (error) {
4371
- if (!handler.errored) {
4372
- handler.errored = !0;
4373
- handler.value = null;
4374
- handler.reason = error;
4375
- var chunk = handler.chunk;
4376
- null !== chunk &&
4377
- "blocked" === chunk.status &&
4378
- triggerErrorOnChunk(response, chunk, error);
4379
- }
4469
+ (handler.value = resolvedValue);
4470
+ } catch (x) {
4471
+ reject(x);
4472
+ return;
4380
4473
  }
4381
- );
4474
+ handler.deps--;
4475
+ 0 === handler.deps &&
4476
+ ((buffer = handler.chunk),
4477
+ null !== buffer &&
4478
+ "blocked" === buffer.status &&
4479
+ ((resolvedValue = buffer.value),
4480
+ (buffer.status = "fulfilled"),
4481
+ (buffer.value = handler.value),
4482
+ (buffer.reason = null),
4483
+ null !== resolvedValue &&
4484
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4485
+ }, reject);
4382
4486
  return null;
4383
4487
  }
4384
4488
  function resolveStream(response, id, stream, controller) {
@@ -4396,90 +4500,78 @@
4396
4500
  : controller.enqueueModel(chunks));
4397
4501
  }
4398
4502
  function parseReadableStream(response, reference, type) {
4503
+ function enqueue(value) {
4504
+ "bytes" !== type || ArrayBuffer.isView(value)
4505
+ ? controller.enqueue(value)
4506
+ : flightController.error(Error("Invalid data for bytes stream."));
4507
+ }
4399
4508
  reference = parseInt(reference.slice(2), 16);
4400
4509
  if (response._chunks.has(reference))
4401
4510
  throw Error("Already initialized stream.");
4402
4511
  var controller = null,
4403
- closed = !1;
4404
- type = new ReadableStream({
4405
- type: type,
4406
- start: function (c) {
4407
- controller = c;
4408
- }
4409
- });
4410
- var previousBlockedChunk = null;
4411
- resolveStream(response, reference, type, {
4412
- enqueueModel: function (json) {
4413
- if (null === previousBlockedChunk) {
4414
- var chunk = new ReactPromise(
4415
- "resolved_model",
4416
- json,
4417
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4418
- );
4419
- initializeModelChunk(chunk);
4420
- "fulfilled" === chunk.status
4421
- ? controller.enqueue(chunk.value)
4422
- : (chunk.then(
4423
- function (v) {
4424
- return controller.enqueue(v);
4425
- },
4426
- function (e) {
4427
- return controller.error(e);
4428
- }
4429
- ),
4430
- (previousBlockedChunk = chunk));
4431
- } else {
4432
- chunk = previousBlockedChunk;
4433
- var _chunk = new ReactPromise("pending", null, null);
4434
- _chunk.then(
4435
- function (v) {
4436
- return controller.enqueue(v);
4437
- },
4438
- function (e) {
4439
- return controller.error(e);
4440
- }
4441
- );
4442
- previousBlockedChunk = _chunk;
4443
- chunk.then(function () {
4444
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
4445
- resolveModelChunk(response, _chunk, json, -1);
4446
- });
4512
+ closed = !1,
4513
+ stream = new ReadableStream({
4514
+ type: type,
4515
+ start: function (c) {
4516
+ controller = c;
4447
4517
  }
4448
- },
4449
- close: function () {
4450
- if (!closed)
4451
- if (((closed = !0), null === previousBlockedChunk))
4452
- controller.close();
4453
- else {
4454
- var blockedChunk = previousBlockedChunk;
4455
- previousBlockedChunk = null;
4456
- blockedChunk.then(function () {
4457
- return controller.close();
4458
- });
4459
- }
4460
- },
4461
- error: function (error) {
4462
- if (!closed)
4463
- if (((closed = !0), null === previousBlockedChunk))
4464
- controller.error(error);
4465
- else {
4466
- var blockedChunk = previousBlockedChunk;
4467
- previousBlockedChunk = null;
4468
- blockedChunk.then(function () {
4469
- return controller.error(error);
4518
+ }),
4519
+ previousBlockedChunk = null,
4520
+ flightController = {
4521
+ enqueueModel: function (json) {
4522
+ if (null === previousBlockedChunk) {
4523
+ var chunk = new ReactPromise(
4524
+ "resolved_model",
4525
+ json,
4526
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4527
+ );
4528
+ initializeModelChunk(chunk);
4529
+ "fulfilled" === chunk.status
4530
+ ? enqueue(chunk.value)
4531
+ : (chunk.then(enqueue, flightController.error),
4532
+ (previousBlockedChunk = chunk));
4533
+ } else {
4534
+ chunk = previousBlockedChunk;
4535
+ var _chunk = new ReactPromise("pending", null, null);
4536
+ _chunk.then(enqueue, flightController.error);
4537
+ previousBlockedChunk = _chunk;
4538
+ chunk.then(function () {
4539
+ previousBlockedChunk === _chunk &&
4540
+ (previousBlockedChunk = null);
4541
+ resolveModelChunk(response, _chunk, json, -1);
4470
4542
  });
4471
4543
  }
4472
- }
4473
- });
4474
- return type;
4475
- }
4476
- function asyncIterator() {
4477
- return this;
4544
+ },
4545
+ close: function () {
4546
+ if (!closed)
4547
+ if (((closed = !0), null === previousBlockedChunk))
4548
+ controller.close();
4549
+ else {
4550
+ var blockedChunk = previousBlockedChunk;
4551
+ previousBlockedChunk = null;
4552
+ blockedChunk.then(function () {
4553
+ return controller.close();
4554
+ });
4555
+ }
4556
+ },
4557
+ error: function (error) {
4558
+ if (!closed)
4559
+ if (((closed = !0), null === previousBlockedChunk))
4560
+ controller.error(error);
4561
+ else {
4562
+ var blockedChunk = previousBlockedChunk;
4563
+ previousBlockedChunk = null;
4564
+ blockedChunk.then(function () {
4565
+ return controller.error(error);
4566
+ });
4567
+ }
4568
+ }
4569
+ };
4570
+ resolveStream(response, reference, stream, flightController);
4571
+ return stream;
4478
4572
  }
4479
- function createIterator(next) {
4480
- next = { next: next };
4481
- next[ASYNC_ITERATOR] = asyncIterator;
4482
- return next;
4573
+ function FlightIterator(next) {
4574
+ this.next = next;
4483
4575
  }
4484
4576
  function parseAsyncIterable(response, reference, iterator) {
4485
4577
  reference = parseInt(reference.slice(2), 16);
@@ -4490,7 +4582,7 @@
4490
4582
  nextWriteIndex = 0,
4491
4583
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4492
4584
  var nextReadIndex = 0;
4493
- return createIterator(function (arg) {
4585
+ return new FlightIterator(function (arg) {
4494
4586
  if (void 0 !== arg)
4495
4587
  throw Error(
4496
4588
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -4569,19 +4661,30 @@
4569
4661
  });
4570
4662
  return iterator;
4571
4663
  }
4572
- function parseModelString(response, obj, key, value, reference) {
4664
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
4573
4665
  if ("$" === value[0]) {
4574
4666
  switch (value[1]) {
4575
4667
  case "$":
4576
- return value.slice(1);
4668
+ return (
4669
+ null !== arrayRoot &&
4670
+ bumpArrayCount(arrayRoot, value.length - 1, response),
4671
+ value.slice(1)
4672
+ );
4577
4673
  case "@":
4578
4674
  return (
4579
4675
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
4580
4676
  );
4581
4677
  case "h":
4582
4678
  return (
4583
- (value = value.slice(2)),
4584
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
4679
+ (arrayRoot = value.slice(2)),
4680
+ getOutlinedModel(
4681
+ response,
4682
+ arrayRoot,
4683
+ obj,
4684
+ key,
4685
+ null,
4686
+ loadServerReference$1
4687
+ )
4585
4688
  );
4586
4689
  case "T":
4587
4690
  if (
@@ -4597,27 +4700,44 @@
4597
4700
  );
4598
4701
  case "Q":
4599
4702
  return (
4600
- (value = value.slice(2)),
4601
- getOutlinedModel(response, value, obj, key, createMap)
4703
+ (arrayRoot = value.slice(2)),
4704
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
4602
4705
  );
4603
4706
  case "W":
4604
4707
  return (
4605
- (value = value.slice(2)),
4606
- getOutlinedModel(response, value, obj, key, createSet)
4708
+ (arrayRoot = value.slice(2)),
4709
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
4607
4710
  );
4608
4711
  case "K":
4609
4712
  obj = value.slice(2);
4610
- var formPrefix = response._prefix + obj + "_",
4611
- data = new FormData();
4612
- response._formData.forEach(function (entry, entryKey) {
4613
- entryKey.startsWith(formPrefix) &&
4614
- data.append(entryKey.slice(formPrefix.length), entry);
4615
- });
4616
- return data;
4713
+ obj = response._prefix + obj + "_";
4714
+ key = new FormData();
4715
+ response = response._formData;
4716
+ arrayRoot = Array.from(response.keys());
4717
+ for (value = 0; value < arrayRoot.length; value++)
4718
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
4719
+ for (
4720
+ var entries = response.getAll(reference),
4721
+ newKey = reference.slice(obj.length),
4722
+ j = 0;
4723
+ j < entries.length;
4724
+ j++
4725
+ )
4726
+ key.append(newKey, entries[j]);
4727
+ response.delete(reference);
4728
+ }
4729
+ return key;
4617
4730
  case "i":
4618
4731
  return (
4619
- (value = value.slice(2)),
4620
- getOutlinedModel(response, value, obj, key, extractIterator)
4732
+ (arrayRoot = value.slice(2)),
4733
+ getOutlinedModel(
4734
+ response,
4735
+ arrayRoot,
4736
+ obj,
4737
+ key,
4738
+ null,
4739
+ extractIterator
4740
+ )
4621
4741
  );
4622
4742
  case "I":
4623
4743
  return Infinity;
@@ -4630,15 +4750,48 @@
4630
4750
  case "D":
4631
4751
  return new Date(Date.parse(value.slice(2)));
4632
4752
  case "n":
4633
- return BigInt(value.slice(2));
4634
- }
4635
- switch (value[1]) {
4753
+ obj = value.slice(2);
4754
+ if (obj.length > MAX_BIGINT_DIGITS)
4755
+ throw Error(
4756
+ "BigInt is too large. Received " +
4757
+ obj.length +
4758
+ " digits but the limit is " +
4759
+ MAX_BIGINT_DIGITS +
4760
+ "."
4761
+ );
4762
+ null !== arrayRoot &&
4763
+ bumpArrayCount(arrayRoot, obj.length, response);
4764
+ return BigInt(obj);
4636
4765
  case "A":
4637
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
4766
+ return parseTypedArray(
4767
+ response,
4768
+ value,
4769
+ ArrayBuffer,
4770
+ 1,
4771
+ obj,
4772
+ key,
4773
+ arrayRoot
4774
+ );
4638
4775
  case "O":
4639
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
4776
+ return parseTypedArray(
4777
+ response,
4778
+ value,
4779
+ Int8Array,
4780
+ 1,
4781
+ obj,
4782
+ key,
4783
+ arrayRoot
4784
+ );
4640
4785
  case "o":
4641
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
4786
+ return parseTypedArray(
4787
+ response,
4788
+ value,
4789
+ Uint8Array,
4790
+ 1,
4791
+ obj,
4792
+ key,
4793
+ arrayRoot
4794
+ );
4642
4795
  case "U":
4643
4796
  return parseTypedArray(
4644
4797
  response,
@@ -4646,22 +4799,79 @@
4646
4799
  Uint8ClampedArray,
4647
4800
  1,
4648
4801
  obj,
4649
- key
4802
+ key,
4803
+ arrayRoot
4650
4804
  );
4651
4805
  case "S":
4652
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
4806
+ return parseTypedArray(
4807
+ response,
4808
+ value,
4809
+ Int16Array,
4810
+ 2,
4811
+ obj,
4812
+ key,
4813
+ arrayRoot
4814
+ );
4653
4815
  case "s":
4654
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
4816
+ return parseTypedArray(
4817
+ response,
4818
+ value,
4819
+ Uint16Array,
4820
+ 2,
4821
+ obj,
4822
+ key,
4823
+ arrayRoot
4824
+ );
4655
4825
  case "L":
4656
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
4826
+ return parseTypedArray(
4827
+ response,
4828
+ value,
4829
+ Int32Array,
4830
+ 4,
4831
+ obj,
4832
+ key,
4833
+ arrayRoot
4834
+ );
4657
4835
  case "l":
4658
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
4836
+ return parseTypedArray(
4837
+ response,
4838
+ value,
4839
+ Uint32Array,
4840
+ 4,
4841
+ obj,
4842
+ key,
4843
+ arrayRoot
4844
+ );
4659
4845
  case "G":
4660
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
4846
+ return parseTypedArray(
4847
+ response,
4848
+ value,
4849
+ Float32Array,
4850
+ 4,
4851
+ obj,
4852
+ key,
4853
+ arrayRoot
4854
+ );
4661
4855
  case "g":
4662
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
4856
+ return parseTypedArray(
4857
+ response,
4858
+ value,
4859
+ Float64Array,
4860
+ 8,
4861
+ obj,
4862
+ key,
4863
+ arrayRoot
4864
+ );
4663
4865
  case "M":
4664
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
4866
+ return parseTypedArray(
4867
+ response,
4868
+ value,
4869
+ BigInt64Array,
4870
+ 8,
4871
+ obj,
4872
+ key,
4873
+ arrayRoot
4874
+ );
4665
4875
  case "m":
4666
4876
  return parseTypedArray(
4667
4877
  response,
@@ -4669,17 +4879,24 @@
4669
4879
  BigUint64Array,
4670
4880
  8,
4671
4881
  obj,
4672
- key
4882
+ key,
4883
+ arrayRoot
4673
4884
  );
4674
4885
  case "V":
4675
- return parseTypedArray(response, value, DataView, 1, obj, key);
4886
+ return parseTypedArray(
4887
+ response,
4888
+ value,
4889
+ DataView,
4890
+ 1,
4891
+ obj,
4892
+ key,
4893
+ arrayRoot
4894
+ );
4676
4895
  case "B":
4677
4896
  return (
4678
4897
  (obj = parseInt(value.slice(2), 16)),
4679
4898
  response._formData.get(response._prefix + obj)
4680
4899
  );
4681
- }
4682
- switch (value[1]) {
4683
4900
  case "R":
4684
4901
  return parseReadableStream(response, value, void 0);
4685
4902
  case "r":
@@ -4690,8 +4907,16 @@
4690
4907
  return parseAsyncIterable(response, value, !0);
4691
4908
  }
4692
4909
  value = value.slice(1);
4693
- return getOutlinedModel(response, value, obj, key, createModel);
4910
+ return getOutlinedModel(
4911
+ response,
4912
+ value,
4913
+ obj,
4914
+ key,
4915
+ arrayRoot,
4916
+ createModel
4917
+ );
4694
4918
  }
4919
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
4695
4920
  return value;
4696
4921
  }
4697
4922
  function createResponse(
@@ -4703,6 +4928,8 @@
4703
4928
  3 < arguments.length && void 0 !== arguments[3]
4704
4929
  ? arguments[3]
4705
4930
  : new FormData(),
4931
+ arraySizeLimit =
4932
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
4706
4933
  chunks = new Map();
4707
4934
  return {
4708
4935
  _bundlerConfig: bundlerConfig,
@@ -4711,19 +4938,32 @@
4711
4938
  _chunks: chunks,
4712
4939
  _closed: !1,
4713
4940
  _closedReason: null,
4714
- _temporaryReferences: temporaryReferences
4941
+ _temporaryReferences: temporaryReferences,
4942
+ _rootArrayContexts: new WeakMap(),
4943
+ _arraySizeLimit: arraySizeLimit
4715
4944
  };
4716
4945
  }
4717
4946
  function close(response) {
4718
4947
  reportGlobalError(response, Error("Connection closed."));
4719
4948
  }
4720
- function loadServerReference(bundlerConfig, id, bound) {
4949
+ function loadServerReference(bundlerConfig, metaData) {
4950
+ var id = metaData.id;
4951
+ if ("string" !== typeof id) return null;
4721
4952
  var serverReference = resolveServerReference(bundlerConfig, id);
4722
4953
  bundlerConfig = preloadModule(serverReference);
4723
- return bound
4724
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
4954
+ metaData = metaData.bound;
4955
+ return metaData instanceof Promise
4956
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
4725
4957
  _ref = _ref[0];
4726
4958
  var fn = requireModule(serverReference);
4959
+ if (_ref.length > MAX_BOUND_ARGS)
4960
+ throw Error(
4961
+ "Server Function has too many bound arguments. Received " +
4962
+ _ref.length +
4963
+ " but the limit is " +
4964
+ MAX_BOUND_ARGS +
4965
+ "."
4966
+ );
4727
4967
  return fn.bind.apply(fn, [null].concat(_ref));
4728
4968
  })
4729
4969
  : bundlerConfig
@@ -4732,8 +4972,19 @@
4732
4972
  })
4733
4973
  : Promise.resolve(requireModule(serverReference));
4734
4974
  }
4735
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
4736
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
4975
+ function decodeBoundActionMetaData(
4976
+ body,
4977
+ serverManifest,
4978
+ formFieldPrefix,
4979
+ arraySizeLimit
4980
+ ) {
4981
+ body = createResponse(
4982
+ serverManifest,
4983
+ formFieldPrefix,
4984
+ void 0,
4985
+ body,
4986
+ arraySizeLimit
4987
+ );
4737
4988
  close(body);
4738
4989
  body = getChunk(body, 0);
4739
4990
  body.then(function () {});
@@ -5243,7 +5494,7 @@
5243
5494
  patchConsole(console, "table"),
5244
5495
  patchConsole(console, "trace"),
5245
5496
  patchConsole(console, "warn"));
5246
- var ObjectPrototype = Object.prototype,
5497
+ var ObjectPrototype$1 = Object.prototype,
5247
5498
  stringify = JSON.stringify,
5248
5499
  ABORTING = 12,
5249
5500
  CLOSED = 14,
@@ -5278,16 +5529,23 @@
5278
5529
  case "fulfilled":
5279
5530
  if ("function" === typeof resolve) {
5280
5531
  for (
5281
- var inspectedValue = this.value, cycleProtection = 0;
5532
+ var inspectedValue = this.value,
5533
+ cycleProtection = 0,
5534
+ visited = new Set();
5282
5535
  inspectedValue instanceof ReactPromise;
5283
5536
 
5284
5537
  ) {
5285
5538
  cycleProtection++;
5286
- if (inspectedValue === this || 1e3 < cycleProtection) {
5539
+ if (
5540
+ inspectedValue === this ||
5541
+ visited.has(inspectedValue) ||
5542
+ 1e3 < cycleProtection
5543
+ ) {
5287
5544
  "function" === typeof reject &&
5288
5545
  reject(Error("Cannot have cyclic thenables."));
5289
5546
  return;
5290
5547
  }
5548
+ visited.add(inspectedValue);
5291
5549
  if ("fulfilled" === inspectedValue.status)
5292
5550
  inspectedValue = inspectedValue.value;
5293
5551
  else break;
@@ -5308,7 +5566,15 @@
5308
5566
  "function" === typeof reject && reject(this.reason);
5309
5567
  }
5310
5568
  };
5311
- var initializingHandler = null;
5569
+ var ObjectPrototype = Object.prototype,
5570
+ ArrayPrototype = Array.prototype,
5571
+ initializingHandler = null;
5572
+ FlightIterator.prototype = {};
5573
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
5574
+ return this;
5575
+ };
5576
+ var MAX_BIGINT_DIGITS = 300,
5577
+ MAX_BOUND_ARGS = 1e3;
5312
5578
  exports.createClientModuleProxy = function (moduleId) {
5313
5579
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
5314
5580
  return new Proxy(moduleId, proxyHandlers$1);
@@ -5318,20 +5584,24 @@
5318
5584
  };
5319
5585
  exports.decodeAction = function (body, serverManifest) {
5320
5586
  var formData = new FormData(),
5321
- action = null;
5587
+ action = null,
5588
+ seenActions = new Set();
5322
5589
  body.forEach(function (value, key) {
5323
5590
  key.startsWith("$ACTION_")
5324
5591
  ? key.startsWith("$ACTION_REF_")
5325
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
5592
+ ? seenActions.has(key) ||
5593
+ (seenActions.add(key),
5594
+ (value = "$ACTION_" + key.slice(12) + ":"),
5326
5595
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
5327
- (action = loadServerReference(
5328
- serverManifest,
5329
- value.id,
5330
- value.bound
5331
- )))
5596
+ (action = loadServerReference(serverManifest, value)))
5332
5597
  : key.startsWith("$ACTION_ID_") &&
5333
- ((value = key.slice(11)),
5334
- (action = loadServerReference(serverManifest, value, null)))
5598
+ !seenActions.has(key) &&
5599
+ (seenActions.add(key),
5600
+ (value = key.slice(11)),
5601
+ (action = loadServerReference(serverManifest, {
5602
+ id: value,
5603
+ bound: null
5604
+ })))
5335
5605
  : formData.append(key, value);
5336
5606
  });
5337
5607
  return null === action
@@ -5367,7 +5637,8 @@
5367
5637
  webpackMap,
5368
5638
  "",
5369
5639
  options ? options.temporaryReferences : void 0,
5370
- body
5640
+ body,
5641
+ options ? options.arraySizeLimit : void 0
5371
5642
  );
5372
5643
  webpackMap = getChunk(body, 0);
5373
5644
  close(body);