react-server-dom-parcel 19.2.2 → 19.2.4

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.
@@ -2307,6 +2307,13 @@
2307
2307
  value
2308
2308
  ) {
2309
2309
  task.model = value;
2310
+ "__proto__" === parentPropertyName &&
2311
+ callWithDebugContextInDEV(request, task, function () {
2312
+ console.error(
2313
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
2314
+ describeObjectForErrorMessage(parent, parentPropertyName)
2315
+ );
2316
+ });
2310
2317
  if (value === REACT_ELEMENT_TYPE) return "$";
2311
2318
  if (null === value) return null;
2312
2319
  if ("object" === typeof value) {
@@ -2500,7 +2507,7 @@
2500
2507
  if (value instanceof Date) return "$D" + value.toJSON();
2501
2508
  elementReference = getPrototypeOf(value);
2502
2509
  if (
2503
- elementReference !== ObjectPrototype &&
2510
+ elementReference !== ObjectPrototype$1 &&
2504
2511
  (null === elementReference ||
2505
2512
  null !== getPrototypeOf(elementReference))
2506
2513
  )
@@ -3082,7 +3089,7 @@
3082
3089
  return serializeDebugBlob(request, value);
3083
3090
  if (getIteratorFn(value)) return Array.from(value);
3084
3091
  request = getPrototypeOf(value);
3085
- if (request !== ObjectPrototype && null !== request) {
3092
+ if (request !== ObjectPrototype$1 && null !== request) {
3086
3093
  counter = Object.create(null);
3087
3094
  for (env in value)
3088
3095
  if (hasOwnProperty.call(value, env) || isGetter(request, env))
@@ -3795,12 +3802,12 @@
3795
3802
  this.value = value;
3796
3803
  this.reason = reason;
3797
3804
  }
3798
- function wakeChunk(response, listeners, value) {
3805
+ function wakeChunk(response, listeners, value, chunk) {
3799
3806
  for (var i = 0; i < listeners.length; i++) {
3800
3807
  var listener = listeners[i];
3801
3808
  "function" === typeof listener
3802
3809
  ? listener(value)
3803
- : fulfillReference(response, listener, value);
3810
+ : fulfillReference(response, listener, value, chunk.reason);
3804
3811
  }
3805
3812
  }
3806
3813
  function rejectChunk(response, listeners, error) {
@@ -3811,27 +3818,6 @@
3811
3818
  : rejectReference(response, listener.handler, error);
3812
3819
  }
3813
3820
  }
3814
- function resolveBlockedCycle(resolvedChunk, reference) {
3815
- var referencedChunk = reference.handler.chunk;
3816
- if (null === referencedChunk) return null;
3817
- if (referencedChunk === resolvedChunk) return reference.handler;
3818
- reference = referencedChunk.value;
3819
- if (null !== reference)
3820
- for (
3821
- referencedChunk = 0;
3822
- referencedChunk < reference.length;
3823
- referencedChunk++
3824
- ) {
3825
- var listener = reference[referencedChunk];
3826
- if (
3827
- "function" !== typeof listener &&
3828
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
3829
- null !== listener)
3830
- )
3831
- return listener;
3832
- }
3833
- return null;
3834
- }
3835
3821
  function triggerErrorOnChunk(response, chunk, error) {
3836
3822
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
3837
3823
  chunk.reason.error(error);
@@ -3855,57 +3841,25 @@
3855
3841
  chunk.value = value;
3856
3842
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
3857
3843
  if (null !== resolveListeners)
3858
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
3844
+ switch ((initializeModelChunk(chunk), chunk.status)) {
3859
3845
  case "fulfilled":
3860
- wakeChunk(response, resolveListeners, chunk.value);
3846
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
3861
3847
  break;
3862
3848
  case "blocked":
3863
- for (value = 0; value < resolveListeners.length; value++)
3864
- if (
3865
- ((id = resolveListeners[value]), "function" !== typeof id)
3866
- ) {
3867
- var cyclicHandler = resolveBlockedCycle(chunk, id);
3868
- if (null !== cyclicHandler)
3869
- switch (
3870
- (fulfillReference(response, id, cyclicHandler.value),
3871
- resolveListeners.splice(value, 1),
3872
- value--,
3873
- null !== rejectListeners &&
3874
- ((id = rejectListeners.indexOf(id)),
3875
- -1 !== id && rejectListeners.splice(id, 1)),
3876
- chunk.status)
3877
- ) {
3878
- case "fulfilled":
3879
- wakeChunk(response, resolveListeners, chunk.value);
3880
- break a;
3881
- case "rejected":
3882
- null !== rejectListeners &&
3883
- rejectChunk(response, rejectListeners, chunk.reason);
3884
- break a;
3885
- }
3886
- }
3887
3849
  case "pending":
3888
3850
  if (chunk.value)
3889
- for (
3890
- response = 0;
3891
- response < resolveListeners.length;
3892
- response++
3893
- )
3894
- chunk.value.push(resolveListeners[response]);
3851
+ for (value = 0; value < resolveListeners.length; value++)
3852
+ chunk.value.push(resolveListeners[value]);
3895
3853
  else chunk.value = resolveListeners;
3896
3854
  if (chunk.reason) {
3897
3855
  if (rejectListeners)
3898
- for (
3899
- resolveListeners = 0;
3900
- resolveListeners < rejectListeners.length;
3901
- resolveListeners++
3902
- )
3903
- chunk.reason.push(rejectListeners[resolveListeners]);
3856
+ for (value = 0; value < rejectListeners.length; value++)
3857
+ chunk.reason.push(rejectListeners[value]);
3904
3858
  } else chunk.reason = rejectListeners;
3905
3859
  break;
3906
3860
  case "rejected":
3907
3861
  rejectListeners &&
3908
- wakeChunk(response, rejectListeners, chunk.reason);
3862
+ rejectChunk(response, rejectListeners, chunk.reason);
3909
3863
  }
3910
3864
  }
3911
3865
  }
@@ -3929,15 +3883,51 @@
3929
3883
  );
3930
3884
  }
3931
3885
  function loadServerReference$1(response, metaData, parentObject, key) {
3886
+ function reject(error) {
3887
+ var rejectListeners = blockedPromise.reason,
3888
+ erroredPromise = blockedPromise;
3889
+ erroredPromise.status = "rejected";
3890
+ erroredPromise.value = null;
3891
+ erroredPromise.reason = error;
3892
+ null !== rejectListeners &&
3893
+ rejectChunk(response, rejectListeners, error);
3894
+ rejectReference(response, handler, error);
3895
+ }
3932
3896
  var id = metaData.id;
3933
3897
  if ("string" !== typeof id || "then" === key) return null;
3898
+ var cachedPromise = metaData.$$promise;
3899
+ if (void 0 !== cachedPromise) {
3900
+ if ("fulfilled" === cachedPromise.status)
3901
+ return (
3902
+ (cachedPromise = cachedPromise.value),
3903
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
3904
+ );
3905
+ initializingHandler
3906
+ ? ((id = initializingHandler), id.deps++)
3907
+ : (id = initializingHandler =
3908
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
3909
+ cachedPromise.then(
3910
+ resolveReference.bind(null, response, id, parentObject, key),
3911
+ rejectReference.bind(null, response, id)
3912
+ );
3913
+ return null;
3914
+ }
3915
+ var blockedPromise = new ReactPromise("blocked", null, null);
3916
+ metaData.$$promise = blockedPromise;
3934
3917
  var serverReference = resolveServerReference(response._bundlerConfig, id);
3935
- id = metaData.bound;
3936
- var promise = preloadModule$1(serverReference);
3937
- if (promise)
3938
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
3939
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
3940
- else return requireModule(serverReference);
3918
+ cachedPromise = metaData.bound;
3919
+ if ((id = preloadModule$1(serverReference)))
3920
+ cachedPromise instanceof ReactPromise &&
3921
+ (id = Promise.all([id, cachedPromise]));
3922
+ else if (cachedPromise instanceof ReactPromise)
3923
+ id = Promise.resolve(cachedPromise);
3924
+ else
3925
+ return (
3926
+ (cachedPromise = requireModule(serverReference)),
3927
+ (id = blockedPromise),
3928
+ (id.status = "fulfilled"),
3929
+ (id.value = cachedPromise)
3930
+ );
3941
3931
  if (initializingHandler) {
3942
3932
  var handler = initializingHandler;
3943
3933
  handler.deps++;
@@ -3949,93 +3939,107 @@
3949
3939
  deps: 1,
3950
3940
  errored: !1
3951
3941
  };
3952
- promise.then(
3953
- function () {
3954
- var resolvedValue = requireModule(serverReference);
3955
- if (metaData.bound) {
3956
- var promiseValue = metaData.bound.value;
3957
- promiseValue = Array.isArray(promiseValue)
3958
- ? promiseValue.slice(0)
3959
- : [];
3960
- promiseValue.unshift(null);
3961
- resolvedValue = resolvedValue.bind.apply(
3962
- resolvedValue,
3963
- promiseValue
3942
+ id.then(function () {
3943
+ var resolvedValue = requireModule(serverReference);
3944
+ if (metaData.bound) {
3945
+ var promiseValue = metaData.bound.value;
3946
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
3947
+ if (promiseValue.length > MAX_BOUND_ARGS) {
3948
+ reject(
3949
+ Error(
3950
+ "Server Function has too many bound arguments. Received " +
3951
+ promiseValue.length +
3952
+ " but the limit is " +
3953
+ MAX_BOUND_ARGS +
3954
+ "."
3955
+ )
3964
3956
  );
3957
+ return;
3965
3958
  }
3966
- parentObject[key] = resolvedValue;
3967
- "" === key &&
3968
- null === handler.value &&
3969
- (handler.value = resolvedValue);
3970
- handler.deps--;
3971
- 0 === handler.deps &&
3972
- ((resolvedValue = handler.chunk),
3973
- null !== resolvedValue &&
3974
- "blocked" === resolvedValue.status &&
3975
- ((promiseValue = resolvedValue.value),
3976
- (resolvedValue.status = "fulfilled"),
3977
- (resolvedValue.value = handler.value),
3978
- (resolvedValue.reason = null),
3979
- null !== promiseValue &&
3980
- wakeChunk(response, promiseValue, handler.value)));
3981
- },
3982
- function (error) {
3983
- if (!handler.errored) {
3984
- handler.errored = !0;
3985
- handler.value = null;
3986
- handler.reason = error;
3987
- var chunk = handler.chunk;
3988
- null !== chunk &&
3989
- "blocked" === chunk.status &&
3990
- triggerErrorOnChunk(response, chunk, error);
3991
- }
3959
+ promiseValue.unshift(null);
3960
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
3992
3961
  }
3993
- );
3962
+ promiseValue = blockedPromise.value;
3963
+ var initializedPromise = blockedPromise;
3964
+ initializedPromise.status = "fulfilled";
3965
+ initializedPromise.value = resolvedValue;
3966
+ initializedPromise.reason = null;
3967
+ null !== promiseValue &&
3968
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
3969
+ resolveReference(response, handler, parentObject, key, resolvedValue);
3970
+ }, reject);
3994
3971
  return null;
3995
3972
  }
3996
- function reviveModel(response, parentObj, parentKey, value, reference) {
3973
+ function reviveModel(
3974
+ response,
3975
+ parentObj,
3976
+ parentKey,
3977
+ value,
3978
+ reference,
3979
+ arrayRoot
3980
+ ) {
3997
3981
  if ("string" === typeof value)
3998
3982
  return parseModelString(
3999
3983
  response,
4000
3984
  parentObj,
4001
3985
  parentKey,
4002
3986
  value,
4003
- reference
3987
+ reference,
3988
+ arrayRoot
4004
3989
  );
4005
3990
  if ("object" === typeof value && null !== value)
4006
3991
  if (
4007
3992
  (void 0 !== reference &&
4008
3993
  void 0 !== response._temporaryReferences &&
4009
3994
  response._temporaryReferences.set(value, reference),
4010
- Array.isArray(value))
4011
- )
4012
- for (var i = 0; i < value.length; i++)
4013
- value[i] = reviveModel(
3995
+ isArrayImpl(value))
3996
+ ) {
3997
+ if (null === arrayRoot) {
3998
+ var childContext = { count: 0, fork: !1 };
3999
+ response._rootArrayContexts.set(value, childContext);
4000
+ } else childContext = arrayRoot;
4001
+ 1 < value.length && (childContext.fork = !0);
4002
+ bumpArrayCount(childContext, value.length + 1, response);
4003
+ for (parentObj = 0; parentObj < value.length; parentObj++)
4004
+ value[parentObj] = reviveModel(
4014
4005
  response,
4015
4006
  value,
4016
- "" + i,
4017
- value[i],
4018
- void 0 !== reference ? reference + ":" + i : void 0
4007
+ "" + parentObj,
4008
+ value[parentObj],
4009
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
4010
+ childContext
4019
4011
  );
4020
- else
4021
- for (i in value)
4022
- hasOwnProperty.call(value, i) &&
4023
- ((parentObj =
4024
- void 0 !== reference && -1 === i.indexOf(":")
4025
- ? reference + ":" + i
4026
- : void 0),
4027
- (parentObj = reviveModel(
4028
- response,
4029
- value,
4030
- i,
4031
- value[i],
4032
- parentObj
4033
- )),
4034
- void 0 !== parentObj || "__proto__" === i
4035
- ? (value[i] = parentObj)
4036
- : delete value[i]);
4012
+ } else
4013
+ for (childContext in value)
4014
+ hasOwnProperty.call(value, childContext) &&
4015
+ ("__proto__" === childContext
4016
+ ? delete value[childContext]
4017
+ : ((parentObj =
4018
+ void 0 !== reference && -1 === childContext.indexOf(":")
4019
+ ? reference + ":" + childContext
4020
+ : void 0),
4021
+ (parentObj = reviveModel(
4022
+ response,
4023
+ value,
4024
+ childContext,
4025
+ value[childContext],
4026
+ parentObj,
4027
+ null
4028
+ )),
4029
+ void 0 !== parentObj
4030
+ ? (value[childContext] = parentObj)
4031
+ : delete value[childContext]));
4037
4032
  return value;
4038
4033
  }
4034
+ function bumpArrayCount(arrayContext, slots, response) {
4035
+ if (
4036
+ (arrayContext.count += slots) > response._arraySizeLimit &&
4037
+ arrayContext.fork
4038
+ )
4039
+ throw Error(
4040
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
4041
+ );
4042
+ }
4039
4043
  function initializeModelChunk(chunk) {
4040
4044
  var prevHandler = initializingHandler;
4041
4045
  initializingHandler = null;
@@ -4049,13 +4053,15 @@
4049
4053
  chunk.value = null;
4050
4054
  chunk.reason = null;
4051
4055
  try {
4052
- var rawModel = JSON.parse(resolvedModel),
4053
- value = reviveModel(
4056
+ var rawModel = JSON.parse(resolvedModel);
4057
+ resolvedModel = { count: 0, fork: !1 };
4058
+ var value = reviveModel(
4054
4059
  response,
4055
4060
  { "": rawModel },
4056
4061
  "",
4057
4062
  rawModel,
4058
- _chunk$reason
4063
+ _chunk$reason,
4064
+ resolvedModel
4059
4065
  ),
4060
4066
  resolveListeners = chunk.value;
4061
4067
  if (null !== resolveListeners)
@@ -4067,19 +4073,20 @@
4067
4073
  var listener = resolveListeners[rawModel];
4068
4074
  "function" === typeof listener
4069
4075
  ? listener(value)
4070
- : fulfillReference(response, listener, value);
4076
+ : fulfillReference(response, listener, value, resolvedModel);
4071
4077
  }
4072
4078
  if (null !== initializingHandler) {
4073
4079
  if (initializingHandler.errored) throw initializingHandler.reason;
4074
4080
  if (0 < initializingHandler.deps) {
4075
4081
  initializingHandler.value = value;
4082
+ initializingHandler.reason = resolvedModel;
4076
4083
  initializingHandler.chunk = chunk;
4077
4084
  return;
4078
4085
  }
4079
4086
  }
4080
4087
  chunk.status = "fulfilled";
4081
4088
  chunk.value = value;
4082
- chunk.reason = null;
4089
+ chunk.reason = resolvedModel;
4083
4090
  } catch (error) {
4084
4091
  (chunk.status = "rejected"), (chunk.reason = error);
4085
4092
  } finally {
@@ -4094,7 +4101,8 @@
4094
4101
  ? triggerErrorOnChunk(response, chunk, error)
4095
4102
  : "fulfilled" === chunk.status &&
4096
4103
  null !== chunk.reason &&
4097
- chunk.reason.error(error);
4104
+ ((chunk = chunk.reason),
4105
+ "function" === typeof chunk.error && chunk.error(error));
4098
4106
  });
4099
4107
  }
4100
4108
  function getChunk(response, id) {
@@ -4115,40 +4123,74 @@
4115
4123
  chunks.set(id, chunk));
4116
4124
  return chunk;
4117
4125
  }
4118
- function fulfillReference(response, reference, value) {
4126
+ function fulfillReference(response, reference, value, arrayRoot) {
4119
4127
  var handler = reference.handler,
4120
4128
  parentObject = reference.parentObject,
4121
4129
  key = reference.key,
4122
4130
  map = reference.map,
4123
4131
  path = reference.path;
4124
4132
  try {
4125
- for (var i = 1; i < path.length; i++) {
4133
+ for (
4134
+ var localLength = 0,
4135
+ rootArrayContexts = response._rootArrayContexts,
4136
+ i = 1;
4137
+ i < path.length;
4138
+ i++
4139
+ ) {
4126
4140
  var name = path[i];
4127
4141
  if (
4128
4142
  "object" !== typeof value ||
4129
- !hasOwnProperty.call(value, name) ||
4130
- value instanceof Promise
4143
+ null === value ||
4144
+ (getPrototypeOf(value) !== ObjectPrototype &&
4145
+ getPrototypeOf(value) !== ArrayPrototype) ||
4146
+ !hasOwnProperty.call(value, name)
4131
4147
  )
4132
4148
  throw Error("Invalid reference.");
4133
4149
  value = value[name];
4150
+ if (isArrayImpl(value))
4151
+ (localLength = 0),
4152
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
4153
+ else if (((arrayRoot = null), "string" === typeof value))
4154
+ localLength = value.length;
4155
+ else if ("bigint" === typeof value) {
4156
+ var n = Math.abs(Number(value));
4157
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
4158
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
4134
4159
  }
4135
- var mappedValue = map(response, value, parentObject, key);
4136
- parentObject[key] = mappedValue;
4137
- "" === key && null === handler.value && (handler.value = mappedValue);
4160
+ var resolvedValue = map(response, value, parentObject, key);
4161
+ var referenceArrayRoot = reference.arrayRoot;
4162
+ null !== referenceArrayRoot &&
4163
+ (null !== arrayRoot
4164
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
4165
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
4166
+ : 0 < localLength &&
4167
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4138
4168
  } catch (error) {
4139
- rejectReference(response, reference.handler, error);
4169
+ rejectReference(response, handler, error);
4140
4170
  return;
4141
4171
  }
4172
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4173
+ }
4174
+ function resolveReference(
4175
+ response,
4176
+ handler,
4177
+ parentObject,
4178
+ key,
4179
+ resolvedValue
4180
+ ) {
4181
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
4182
+ "" === key && null === handler.value && (handler.value = resolvedValue);
4142
4183
  handler.deps--;
4143
4184
  0 === handler.deps &&
4144
- ((reference = handler.chunk),
4145
- null !== reference &&
4146
- "blocked" === reference.status &&
4147
- ((value = reference.value),
4148
- (reference.status = "fulfilled"),
4149
- (reference.value = handler.value),
4150
- (reference.reason = handler.reason),
4151
- null !== value && wakeChunk(response, value, handler.value)));
4185
+ ((parentObject = handler.chunk),
4186
+ null !== parentObject &&
4187
+ "blocked" === parentObject.status &&
4188
+ ((key = parentObject.value),
4189
+ (parentObject.status = "fulfilled"),
4190
+ (parentObject.value = handler.value),
4191
+ (parentObject.reason = handler.reason),
4192
+ null !== key &&
4193
+ wakeChunk(response, key, handler.value, parentObject)));
4152
4194
  }
4153
4195
  function rejectReference(response, handler, error) {
4154
4196
  handler.errored ||
@@ -4160,29 +4202,66 @@
4160
4202
  "blocked" === handler.status &&
4161
4203
  triggerErrorOnChunk(response, handler, error));
4162
4204
  }
4163
- function getOutlinedModel(response, reference, parentObject, key, map) {
4205
+ function getOutlinedModel(
4206
+ response,
4207
+ reference,
4208
+ parentObject,
4209
+ key,
4210
+ referenceArrayRoot,
4211
+ map
4212
+ ) {
4164
4213
  reference = reference.split(":");
4165
- var id = parseInt(reference[0], 16);
4166
- id = getChunk(response, id);
4167
- switch (id.status) {
4214
+ var id = parseInt(reference[0], 16),
4215
+ chunk = getChunk(response, id);
4216
+ switch (chunk.status) {
4168
4217
  case "resolved_model":
4169
- initializeModelChunk(id);
4218
+ initializeModelChunk(chunk);
4170
4219
  }
4171
- switch (id.status) {
4220
+ switch (chunk.status) {
4172
4221
  case "fulfilled":
4173
- id = id.value;
4174
- for (var i = 1; i < reference.length; i++) {
4175
- var name = reference[i];
4222
+ id = chunk.value;
4223
+ chunk = chunk.reason;
4224
+ for (
4225
+ var localLength = 0,
4226
+ rootArrayContexts = response._rootArrayContexts,
4227
+ i = 1;
4228
+ i < reference.length;
4229
+ i++
4230
+ ) {
4231
+ localLength = reference[i];
4176
4232
  if (
4177
4233
  "object" !== typeof id ||
4178
- !hasOwnProperty.call(id, name) ||
4179
- id instanceof Promise
4234
+ null === id ||
4235
+ (getPrototypeOf(id) !== ObjectPrototype &&
4236
+ getPrototypeOf(id) !== ArrayPrototype) ||
4237
+ !hasOwnProperty.call(id, localLength)
4180
4238
  )
4181
4239
  throw Error("Invalid reference.");
4182
- id = id[name];
4240
+ id = id[localLength];
4241
+ isArrayImpl(id)
4242
+ ? ((localLength = 0),
4243
+ (chunk = rootArrayContexts.get(id) || chunk))
4244
+ : ((chunk = null),
4245
+ "string" === typeof id
4246
+ ? (localLength = id.length)
4247
+ : "bigint" === typeof id
4248
+ ? ((localLength = Math.abs(Number(id))),
4249
+ (localLength =
4250
+ 0 === localLength
4251
+ ? 1
4252
+ : Math.floor(Math.log10(localLength)) + 1))
4253
+ : (localLength = ArrayBuffer.isView(id)
4254
+ ? id.byteLength
4255
+ : 0));
4183
4256
  }
4184
- return map(response, id, parentObject, key);
4185
- case "pending":
4257
+ parentObject = map(response, id, parentObject, key);
4258
+ null !== referenceArrayRoot &&
4259
+ (null !== chunk
4260
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
4261
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
4262
+ : 0 < localLength &&
4263
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4264
+ return parentObject;
4186
4265
  case "blocked":
4187
4266
  return (
4188
4267
  initializingHandler
@@ -4195,31 +4274,34 @@
4195
4274
  deps: 1,
4196
4275
  errored: !1
4197
4276
  }),
4198
- (parentObject = {
4277
+ (referenceArrayRoot = {
4199
4278
  handler: response,
4200
4279
  parentObject: parentObject,
4201
4280
  key: key,
4202
4281
  map: map,
4203
- path: reference
4282
+ path: reference,
4283
+ arrayRoot: referenceArrayRoot
4204
4284
  }),
4205
- null === id.value
4206
- ? (id.value = [parentObject])
4207
- : id.value.push(parentObject),
4208
- null === id.reason
4209
- ? (id.reason = [parentObject])
4210
- : id.reason.push(parentObject),
4285
+ null === chunk.value
4286
+ ? (chunk.value = [referenceArrayRoot])
4287
+ : chunk.value.push(referenceArrayRoot),
4288
+ null === chunk.reason
4289
+ ? (chunk.reason = [referenceArrayRoot])
4290
+ : chunk.reason.push(referenceArrayRoot),
4211
4291
  null
4212
4292
  );
4293
+ case "pending":
4294
+ throw Error("Invalid forward reference.");
4213
4295
  default:
4214
4296
  return (
4215
4297
  initializingHandler
4216
4298
  ? ((initializingHandler.errored = !0),
4217
4299
  (initializingHandler.value = null),
4218
- (initializingHandler.reason = id.reason))
4300
+ (initializingHandler.reason = chunk.reason))
4219
4301
  : (initializingHandler = {
4220
4302
  chunk: null,
4221
4303
  value: null,
4222
- reason: id.reason,
4304
+ reason: chunk.reason,
4223
4305
  deps: 0,
4224
4306
  errored: !0
4225
4307
  }),
@@ -4228,13 +4310,25 @@
4228
4310
  }
4229
4311
  }
4230
4312
  function createMap(response, model) {
4231
- return new Map(model);
4313
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4314
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4315
+ response = new Map(model);
4316
+ model.$$consumed = !0;
4317
+ return response;
4232
4318
  }
4233
4319
  function createSet(response, model) {
4234
- return new Set(model);
4320
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4321
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4322
+ response = new Set(model);
4323
+ model.$$consumed = !0;
4324
+ return response;
4235
4325
  }
4236
4326
  function extractIterator(response, model) {
4237
- return model[Symbol.iterator]();
4327
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4328
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4329
+ response = model[Symbol.iterator]();
4330
+ model.$$consumed = !0;
4331
+ return response;
4238
4332
  }
4239
4333
  function createModel(response, model, parentObject, key) {
4240
4334
  return "then" === key && "function" === typeof model ? null : model;
@@ -4245,13 +4339,34 @@
4245
4339
  constructor,
4246
4340
  bytesPerElement,
4247
4341
  parentObject,
4248
- parentKey
4342
+ parentKey,
4343
+ referenceArrayRoot
4249
4344
  ) {
4345
+ function reject(error) {
4346
+ if (!handler.errored) {
4347
+ handler.errored = !0;
4348
+ handler.value = null;
4349
+ handler.reason = error;
4350
+ var chunk = handler.chunk;
4351
+ null !== chunk &&
4352
+ "blocked" === chunk.status &&
4353
+ triggerErrorOnChunk(response, chunk, error);
4354
+ }
4355
+ }
4250
4356
  reference = parseInt(reference.slice(2), 16);
4251
- bytesPerElement = response._prefix + reference;
4252
- if (response._chunks.has(reference))
4357
+ var key = response._prefix + reference;
4358
+ bytesPerElement = response._chunks;
4359
+ if (bytesPerElement.has(reference))
4253
4360
  throw Error("Already initialized typed array.");
4254
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4361
+ bytesPerElement.set(
4362
+ reference,
4363
+ new ReactPromise(
4364
+ "rejected",
4365
+ null,
4366
+ Error("Already initialized typed array.")
4367
+ )
4368
+ );
4369
+ reference = response._formData.get(key).arrayBuffer();
4255
4370
  if (initializingHandler) {
4256
4371
  var handler = initializingHandler;
4257
4372
  handler.deps++;
@@ -4263,40 +4378,32 @@
4263
4378
  deps: 1,
4264
4379
  errored: !1
4265
4380
  };
4266
- reference.then(
4267
- function (buffer) {
4268
- buffer =
4381
+ reference.then(function (buffer) {
4382
+ try {
4383
+ null !== referenceArrayRoot &&
4384
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4385
+ var resolvedValue =
4269
4386
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4270
- parentObject[parentKey] = buffer;
4387
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4271
4388
  "" === parentKey &&
4272
4389
  null === handler.value &&
4273
- (handler.value = buffer);
4274
- handler.deps--;
4275
- if (
4276
- 0 === handler.deps &&
4277
- ((buffer = handler.chunk),
4278
- null !== buffer && "blocked" === buffer.status)
4279
- ) {
4280
- var resolveListeners = buffer.value;
4281
- buffer.status = "fulfilled";
4282
- buffer.value = handler.value;
4283
- buffer.reason = null;
4284
- null !== resolveListeners &&
4285
- wakeChunk(response, resolveListeners, handler.value);
4286
- }
4287
- },
4288
- function (error) {
4289
- if (!handler.errored) {
4290
- handler.errored = !0;
4291
- handler.value = null;
4292
- handler.reason = error;
4293
- var chunk = handler.chunk;
4294
- null !== chunk &&
4295
- "blocked" === chunk.status &&
4296
- triggerErrorOnChunk(response, chunk, error);
4297
- }
4390
+ (handler.value = resolvedValue);
4391
+ } catch (x) {
4392
+ reject(x);
4393
+ return;
4298
4394
  }
4299
- );
4395
+ handler.deps--;
4396
+ 0 === handler.deps &&
4397
+ ((buffer = handler.chunk),
4398
+ null !== buffer &&
4399
+ "blocked" === buffer.status &&
4400
+ ((resolvedValue = buffer.value),
4401
+ (buffer.status = "fulfilled"),
4402
+ (buffer.value = handler.value),
4403
+ (buffer.reason = null),
4404
+ null !== resolvedValue &&
4405
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4406
+ }, reject);
4300
4407
  return null;
4301
4408
  }
4302
4409
  function resolveStream(response, id, stream, controller) {
@@ -4314,90 +4421,78 @@
4314
4421
  : controller.enqueueModel(chunks));
4315
4422
  }
4316
4423
  function parseReadableStream(response, reference, type) {
4424
+ function enqueue(value) {
4425
+ "bytes" !== type || ArrayBuffer.isView(value)
4426
+ ? controller.enqueue(value)
4427
+ : flightController.error(Error("Invalid data for bytes stream."));
4428
+ }
4317
4429
  reference = parseInt(reference.slice(2), 16);
4318
4430
  if (response._chunks.has(reference))
4319
4431
  throw Error("Already initialized stream.");
4320
4432
  var controller = null,
4321
- closed = !1;
4322
- type = new ReadableStream({
4323
- type: type,
4324
- start: function (c) {
4325
- controller = c;
4326
- }
4327
- });
4328
- var previousBlockedChunk = null;
4329
- resolveStream(response, reference, type, {
4330
- enqueueModel: function (json) {
4331
- if (null === previousBlockedChunk) {
4332
- var chunk = new ReactPromise(
4333
- "resolved_model",
4334
- json,
4335
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4336
- );
4337
- initializeModelChunk(chunk);
4338
- "fulfilled" === chunk.status
4339
- ? controller.enqueue(chunk.value)
4340
- : (chunk.then(
4341
- function (v) {
4342
- return controller.enqueue(v);
4343
- },
4344
- function (e) {
4345
- return controller.error(e);
4346
- }
4347
- ),
4348
- (previousBlockedChunk = chunk));
4349
- } else {
4350
- chunk = previousBlockedChunk;
4351
- var _chunk = new ReactPromise("pending", null, null);
4352
- _chunk.then(
4353
- function (v) {
4354
- return controller.enqueue(v);
4355
- },
4356
- function (e) {
4357
- return controller.error(e);
4358
- }
4359
- );
4360
- previousBlockedChunk = _chunk;
4361
- chunk.then(function () {
4362
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
4363
- resolveModelChunk(response, _chunk, json, -1);
4364
- });
4433
+ closed = !1,
4434
+ stream = new ReadableStream({
4435
+ type: type,
4436
+ start: function (c) {
4437
+ controller = c;
4365
4438
  }
4366
- },
4367
- close: function () {
4368
- if (!closed)
4369
- if (((closed = !0), null === previousBlockedChunk))
4370
- controller.close();
4371
- else {
4372
- var blockedChunk = previousBlockedChunk;
4373
- previousBlockedChunk = null;
4374
- blockedChunk.then(function () {
4375
- return controller.close();
4376
- });
4377
- }
4378
- },
4379
- error: function (error) {
4380
- if (!closed)
4381
- if (((closed = !0), null === previousBlockedChunk))
4382
- controller.error(error);
4383
- else {
4384
- var blockedChunk = previousBlockedChunk;
4385
- previousBlockedChunk = null;
4386
- blockedChunk.then(function () {
4387
- return controller.error(error);
4439
+ }),
4440
+ previousBlockedChunk = null,
4441
+ flightController = {
4442
+ enqueueModel: function (json) {
4443
+ if (null === previousBlockedChunk) {
4444
+ var chunk = new ReactPromise(
4445
+ "resolved_model",
4446
+ json,
4447
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4448
+ );
4449
+ initializeModelChunk(chunk);
4450
+ "fulfilled" === chunk.status
4451
+ ? enqueue(chunk.value)
4452
+ : (chunk.then(enqueue, flightController.error),
4453
+ (previousBlockedChunk = chunk));
4454
+ } else {
4455
+ chunk = previousBlockedChunk;
4456
+ var _chunk = new ReactPromise("pending", null, null);
4457
+ _chunk.then(enqueue, flightController.error);
4458
+ previousBlockedChunk = _chunk;
4459
+ chunk.then(function () {
4460
+ previousBlockedChunk === _chunk &&
4461
+ (previousBlockedChunk = null);
4462
+ resolveModelChunk(response, _chunk, json, -1);
4388
4463
  });
4389
4464
  }
4390
- }
4391
- });
4392
- return type;
4393
- }
4394
- function asyncIterator() {
4395
- return this;
4465
+ },
4466
+ close: function () {
4467
+ if (!closed)
4468
+ if (((closed = !0), null === previousBlockedChunk))
4469
+ controller.close();
4470
+ else {
4471
+ var blockedChunk = previousBlockedChunk;
4472
+ previousBlockedChunk = null;
4473
+ blockedChunk.then(function () {
4474
+ return controller.close();
4475
+ });
4476
+ }
4477
+ },
4478
+ error: function (error) {
4479
+ if (!closed)
4480
+ if (((closed = !0), null === previousBlockedChunk))
4481
+ controller.error(error);
4482
+ else {
4483
+ var blockedChunk = previousBlockedChunk;
4484
+ previousBlockedChunk = null;
4485
+ blockedChunk.then(function () {
4486
+ return controller.error(error);
4487
+ });
4488
+ }
4489
+ }
4490
+ };
4491
+ resolveStream(response, reference, stream, flightController);
4492
+ return stream;
4396
4493
  }
4397
- function createIterator(next) {
4398
- next = { next: next };
4399
- next[ASYNC_ITERATOR] = asyncIterator;
4400
- return next;
4494
+ function FlightIterator(next) {
4495
+ this.next = next;
4401
4496
  }
4402
4497
  function parseAsyncIterable(response, reference, iterator) {
4403
4498
  reference = parseInt(reference.slice(2), 16);
@@ -4408,7 +4503,7 @@
4408
4503
  nextWriteIndex = 0,
4409
4504
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4410
4505
  var nextReadIndex = 0;
4411
- return createIterator(function (arg) {
4506
+ return new FlightIterator(function (arg) {
4412
4507
  if (void 0 !== arg)
4413
4508
  throw Error(
4414
4509
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -4487,19 +4582,30 @@
4487
4582
  });
4488
4583
  return iterator;
4489
4584
  }
4490
- function parseModelString(response, obj, key, value, reference) {
4585
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
4491
4586
  if ("$" === value[0]) {
4492
4587
  switch (value[1]) {
4493
4588
  case "$":
4494
- return value.slice(1);
4589
+ return (
4590
+ null !== arrayRoot &&
4591
+ bumpArrayCount(arrayRoot, value.length - 1, response),
4592
+ value.slice(1)
4593
+ );
4495
4594
  case "@":
4496
4595
  return (
4497
4596
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
4498
4597
  );
4499
4598
  case "h":
4500
4599
  return (
4501
- (value = value.slice(2)),
4502
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
4600
+ (arrayRoot = value.slice(2)),
4601
+ getOutlinedModel(
4602
+ response,
4603
+ arrayRoot,
4604
+ obj,
4605
+ key,
4606
+ null,
4607
+ loadServerReference$1
4608
+ )
4503
4609
  );
4504
4610
  case "T":
4505
4611
  if (
@@ -4515,27 +4621,44 @@
4515
4621
  );
4516
4622
  case "Q":
4517
4623
  return (
4518
- (value = value.slice(2)),
4519
- getOutlinedModel(response, value, obj, key, createMap)
4624
+ (arrayRoot = value.slice(2)),
4625
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
4520
4626
  );
4521
4627
  case "W":
4522
4628
  return (
4523
- (value = value.slice(2)),
4524
- getOutlinedModel(response, value, obj, key, createSet)
4629
+ (arrayRoot = value.slice(2)),
4630
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
4525
4631
  );
4526
4632
  case "K":
4527
4633
  obj = value.slice(2);
4528
- var formPrefix = response._prefix + obj + "_",
4529
- data = new FormData();
4530
- response._formData.forEach(function (entry, entryKey) {
4531
- entryKey.startsWith(formPrefix) &&
4532
- data.append(entryKey.slice(formPrefix.length), entry);
4533
- });
4534
- return data;
4634
+ obj = response._prefix + obj + "_";
4635
+ key = new FormData();
4636
+ response = response._formData;
4637
+ arrayRoot = Array.from(response.keys());
4638
+ for (value = 0; value < arrayRoot.length; value++)
4639
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
4640
+ for (
4641
+ var entries = response.getAll(reference),
4642
+ newKey = reference.slice(obj.length),
4643
+ j = 0;
4644
+ j < entries.length;
4645
+ j++
4646
+ )
4647
+ key.append(newKey, entries[j]);
4648
+ response.delete(reference);
4649
+ }
4650
+ return key;
4535
4651
  case "i":
4536
4652
  return (
4537
- (value = value.slice(2)),
4538
- getOutlinedModel(response, value, obj, key, extractIterator)
4653
+ (arrayRoot = value.slice(2)),
4654
+ getOutlinedModel(
4655
+ response,
4656
+ arrayRoot,
4657
+ obj,
4658
+ key,
4659
+ null,
4660
+ extractIterator
4661
+ )
4539
4662
  );
4540
4663
  case "I":
4541
4664
  return Infinity;
@@ -4548,15 +4671,48 @@
4548
4671
  case "D":
4549
4672
  return new Date(Date.parse(value.slice(2)));
4550
4673
  case "n":
4551
- return BigInt(value.slice(2));
4552
- }
4553
- switch (value[1]) {
4674
+ obj = value.slice(2);
4675
+ if (obj.length > MAX_BIGINT_DIGITS)
4676
+ throw Error(
4677
+ "BigInt is too large. Received " +
4678
+ obj.length +
4679
+ " digits but the limit is " +
4680
+ MAX_BIGINT_DIGITS +
4681
+ "."
4682
+ );
4683
+ null !== arrayRoot &&
4684
+ bumpArrayCount(arrayRoot, obj.length, response);
4685
+ return BigInt(obj);
4554
4686
  case "A":
4555
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
4687
+ return parseTypedArray(
4688
+ response,
4689
+ value,
4690
+ ArrayBuffer,
4691
+ 1,
4692
+ obj,
4693
+ key,
4694
+ arrayRoot
4695
+ );
4556
4696
  case "O":
4557
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
4697
+ return parseTypedArray(
4698
+ response,
4699
+ value,
4700
+ Int8Array,
4701
+ 1,
4702
+ obj,
4703
+ key,
4704
+ arrayRoot
4705
+ );
4558
4706
  case "o":
4559
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
4707
+ return parseTypedArray(
4708
+ response,
4709
+ value,
4710
+ Uint8Array,
4711
+ 1,
4712
+ obj,
4713
+ key,
4714
+ arrayRoot
4715
+ );
4560
4716
  case "U":
4561
4717
  return parseTypedArray(
4562
4718
  response,
@@ -4564,22 +4720,79 @@
4564
4720
  Uint8ClampedArray,
4565
4721
  1,
4566
4722
  obj,
4567
- key
4723
+ key,
4724
+ arrayRoot
4568
4725
  );
4569
4726
  case "S":
4570
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
4727
+ return parseTypedArray(
4728
+ response,
4729
+ value,
4730
+ Int16Array,
4731
+ 2,
4732
+ obj,
4733
+ key,
4734
+ arrayRoot
4735
+ );
4571
4736
  case "s":
4572
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
4737
+ return parseTypedArray(
4738
+ response,
4739
+ value,
4740
+ Uint16Array,
4741
+ 2,
4742
+ obj,
4743
+ key,
4744
+ arrayRoot
4745
+ );
4573
4746
  case "L":
4574
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
4747
+ return parseTypedArray(
4748
+ response,
4749
+ value,
4750
+ Int32Array,
4751
+ 4,
4752
+ obj,
4753
+ key,
4754
+ arrayRoot
4755
+ );
4575
4756
  case "l":
4576
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
4757
+ return parseTypedArray(
4758
+ response,
4759
+ value,
4760
+ Uint32Array,
4761
+ 4,
4762
+ obj,
4763
+ key,
4764
+ arrayRoot
4765
+ );
4577
4766
  case "G":
4578
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
4767
+ return parseTypedArray(
4768
+ response,
4769
+ value,
4770
+ Float32Array,
4771
+ 4,
4772
+ obj,
4773
+ key,
4774
+ arrayRoot
4775
+ );
4579
4776
  case "g":
4580
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
4777
+ return parseTypedArray(
4778
+ response,
4779
+ value,
4780
+ Float64Array,
4781
+ 8,
4782
+ obj,
4783
+ key,
4784
+ arrayRoot
4785
+ );
4581
4786
  case "M":
4582
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
4787
+ return parseTypedArray(
4788
+ response,
4789
+ value,
4790
+ BigInt64Array,
4791
+ 8,
4792
+ obj,
4793
+ key,
4794
+ arrayRoot
4795
+ );
4583
4796
  case "m":
4584
4797
  return parseTypedArray(
4585
4798
  response,
@@ -4587,17 +4800,24 @@
4587
4800
  BigUint64Array,
4588
4801
  8,
4589
4802
  obj,
4590
- key
4803
+ key,
4804
+ arrayRoot
4591
4805
  );
4592
4806
  case "V":
4593
- return parseTypedArray(response, value, DataView, 1, obj, key);
4807
+ return parseTypedArray(
4808
+ response,
4809
+ value,
4810
+ DataView,
4811
+ 1,
4812
+ obj,
4813
+ key,
4814
+ arrayRoot
4815
+ );
4594
4816
  case "B":
4595
4817
  return (
4596
4818
  (obj = parseInt(value.slice(2), 16)),
4597
4819
  response._formData.get(response._prefix + obj)
4598
4820
  );
4599
- }
4600
- switch (value[1]) {
4601
4821
  case "R":
4602
4822
  return parseReadableStream(response, value, void 0);
4603
4823
  case "r":
@@ -4608,8 +4828,16 @@
4608
4828
  return parseAsyncIterable(response, value, !0);
4609
4829
  }
4610
4830
  value = value.slice(1);
4611
- return getOutlinedModel(response, value, obj, key, createModel);
4831
+ return getOutlinedModel(
4832
+ response,
4833
+ value,
4834
+ obj,
4835
+ key,
4836
+ arrayRoot,
4837
+ createModel
4838
+ );
4612
4839
  }
4840
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
4613
4841
  return value;
4614
4842
  }
4615
4843
  function createResponse(
@@ -4621,6 +4849,8 @@
4621
4849
  3 < arguments.length && void 0 !== arguments[3]
4622
4850
  ? arguments[3]
4623
4851
  : new FormData(),
4852
+ arraySizeLimit =
4853
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
4624
4854
  chunks = new Map();
4625
4855
  return {
4626
4856
  _bundlerConfig: bundlerConfig,
@@ -4629,19 +4859,32 @@
4629
4859
  _chunks: chunks,
4630
4860
  _closed: !1,
4631
4861
  _closedReason: null,
4632
- _temporaryReferences: temporaryReferences
4862
+ _temporaryReferences: temporaryReferences,
4863
+ _rootArrayContexts: new WeakMap(),
4864
+ _arraySizeLimit: arraySizeLimit
4633
4865
  };
4634
4866
  }
4635
4867
  function close(response) {
4636
4868
  reportGlobalError(response, Error("Connection closed."));
4637
4869
  }
4638
- function loadServerReference(bundlerConfig, id, bound) {
4870
+ function loadServerReference(bundlerConfig, metaData) {
4871
+ var id = metaData.id;
4872
+ if ("string" !== typeof id) return null;
4639
4873
  var serverReference = resolveServerReference(bundlerConfig, id);
4640
4874
  bundlerConfig = preloadModule$1(serverReference);
4641
- return bound
4642
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
4875
+ metaData = metaData.bound;
4876
+ return metaData instanceof Promise
4877
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
4643
4878
  _ref = _ref[0];
4644
4879
  var fn = requireModule(serverReference);
4880
+ if (_ref.length > MAX_BOUND_ARGS)
4881
+ throw Error(
4882
+ "Server Function has too many bound arguments. Received " +
4883
+ _ref.length +
4884
+ " but the limit is " +
4885
+ MAX_BOUND_ARGS +
4886
+ "."
4887
+ );
4645
4888
  return fn.bind.apply(fn, [null].concat(_ref));
4646
4889
  })
4647
4890
  : bundlerConfig
@@ -4650,8 +4893,19 @@
4650
4893
  })
4651
4894
  : Promise.resolve(requireModule(serverReference));
4652
4895
  }
4653
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
4654
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
4896
+ function decodeBoundActionMetaData(
4897
+ body,
4898
+ serverManifest,
4899
+ formFieldPrefix,
4900
+ arraySizeLimit
4901
+ ) {
4902
+ body = createResponse(
4903
+ serverManifest,
4904
+ formFieldPrefix,
4905
+ void 0,
4906
+ body,
4907
+ arraySizeLimit
4908
+ );
4655
4909
  close(body);
4656
4910
  body = getChunk(body, 0);
4657
4911
  body.then(function () {});
@@ -4660,20 +4914,24 @@
4660
4914
  }
4661
4915
  function decodeAction$1(body, serverManifest) {
4662
4916
  var formData = new FormData(),
4663
- action = null;
4917
+ action = null,
4918
+ seenActions = new Set();
4664
4919
  body.forEach(function (value, key) {
4665
4920
  key.startsWith("$ACTION_")
4666
4921
  ? key.startsWith("$ACTION_REF_")
4667
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
4922
+ ? seenActions.has(key) ||
4923
+ (seenActions.add(key),
4924
+ (value = "$ACTION_" + key.slice(12) + ":"),
4668
4925
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
4669
- (action = loadServerReference(
4670
- serverManifest,
4671
- value.id,
4672
- value.bound
4673
- )))
4926
+ (action = loadServerReference(serverManifest, value)))
4674
4927
  : key.startsWith("$ACTION_ID_") &&
4675
- ((value = key.slice(11)),
4676
- (action = loadServerReference(serverManifest, value, null)))
4928
+ !seenActions.has(key) &&
4929
+ (seenActions.add(key),
4930
+ (value = key.slice(11)),
4931
+ (action = loadServerReference(serverManifest, {
4932
+ id: value,
4933
+ bound: null
4934
+ })))
4677
4935
  : formData.append(key, value);
4678
4936
  });
4679
4937
  return null === action
@@ -5137,7 +5395,7 @@
5137
5395
  patchConsole(console, "table"),
5138
5396
  patchConsole(console, "trace"),
5139
5397
  patchConsole(console, "warn"));
5140
- var ObjectPrototype = Object.prototype,
5398
+ var ObjectPrototype$1 = Object.prototype,
5141
5399
  stringify = JSON.stringify,
5142
5400
  ABORTING = 12,
5143
5401
  CLOSED = 14,
@@ -5162,15 +5420,23 @@
5162
5420
  case "fulfilled":
5163
5421
  if ("function" === typeof resolve) {
5164
5422
  for (
5165
- var inspectedValue = this.value;
5423
+ var inspectedValue = this.value,
5424
+ cycleProtection = 0,
5425
+ visited = new Set();
5166
5426
  inspectedValue instanceof ReactPromise;
5167
5427
 
5168
5428
  ) {
5169
- if (inspectedValue === this) {
5429
+ cycleProtection++;
5430
+ if (
5431
+ inspectedValue === this ||
5432
+ visited.has(inspectedValue) ||
5433
+ 1e3 < cycleProtection
5434
+ ) {
5170
5435
  "function" === typeof reject &&
5171
5436
  reject(Error("Cannot have cyclic thenables."));
5172
5437
  return;
5173
5438
  }
5439
+ visited.add(inspectedValue);
5174
5440
  if ("fulfilled" === inspectedValue.status)
5175
5441
  inspectedValue = inspectedValue.value;
5176
5442
  else break;
@@ -5191,7 +5457,15 @@
5191
5457
  "function" === typeof reject && reject(this.reason);
5192
5458
  }
5193
5459
  };
5194
- var initializingHandler = null,
5460
+ var ObjectPrototype = Object.prototype,
5461
+ ArrayPrototype = Array.prototype,
5462
+ initializingHandler = null;
5463
+ FlightIterator.prototype = {};
5464
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
5465
+ return this;
5466
+ };
5467
+ var MAX_BIGINT_DIGITS = 300,
5468
+ MAX_BOUND_ARGS = 1e3,
5195
5469
  serverManifest = {};
5196
5470
  exports.createClientReference = function (
5197
5471
  id,
@@ -5226,7 +5500,8 @@
5226
5500
  serverManifest,
5227
5501
  "",
5228
5502
  options ? options.temporaryReferences : void 0,
5229
- body
5503
+ body,
5504
+ options ? options.arraySizeLimit : void 0
5230
5505
  );
5231
5506
  options = getChunk(body, 0);
5232
5507
  close(body);