react-server-dom-parcel 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.
@@ -2247,6 +2247,13 @@
2247
2247
  value
2248
2248
  ) {
2249
2249
  task.model = value;
2250
+ "__proto__" === parentPropertyName &&
2251
+ callWithDebugContextInDEV(request, task, function () {
2252
+ console.error(
2253
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
2254
+ describeObjectForErrorMessage(parent, parentPropertyName)
2255
+ );
2256
+ });
2250
2257
  if (value === REACT_ELEMENT_TYPE) return "$";
2251
2258
  if (null === value) return null;
2252
2259
  if ("object" === typeof value) {
@@ -2440,7 +2447,7 @@
2440
2447
  if (value instanceof Date) return "$D" + value.toJSON();
2441
2448
  elementReference = getPrototypeOf(value);
2442
2449
  if (
2443
- elementReference !== ObjectPrototype &&
2450
+ elementReference !== ObjectPrototype$1 &&
2444
2451
  (null === elementReference ||
2445
2452
  null !== getPrototypeOf(elementReference))
2446
2453
  )
@@ -3011,7 +3018,7 @@
3011
3018
  return serializeDebugBlob(request, value);
3012
3019
  if (getIteratorFn(value)) return Array.from(value);
3013
3020
  request = getPrototypeOf(value);
3014
- if (request !== ObjectPrototype && null !== request) {
3021
+ if (request !== ObjectPrototype$1 && null !== request) {
3015
3022
  counter = Object.create(null);
3016
3023
  for (env in value)
3017
3024
  if (hasOwnProperty.call(value, env) || isGetter(request, env))
@@ -3720,12 +3727,12 @@
3720
3727
  this.value = value;
3721
3728
  this.reason = reason;
3722
3729
  }
3723
- function wakeChunk(response, listeners, value) {
3730
+ function wakeChunk(response, listeners, value, chunk) {
3724
3731
  for (var i = 0; i < listeners.length; i++) {
3725
3732
  var listener = listeners[i];
3726
3733
  "function" === typeof listener
3727
3734
  ? listener(value)
3728
- : fulfillReference(response, listener, value);
3735
+ : fulfillReference(response, listener, value, chunk.reason);
3729
3736
  }
3730
3737
  }
3731
3738
  function rejectChunk(response, listeners, error) {
@@ -3736,27 +3743,6 @@
3736
3743
  : rejectReference(response, listener.handler, error);
3737
3744
  }
3738
3745
  }
3739
- function resolveBlockedCycle(resolvedChunk, reference) {
3740
- var referencedChunk = reference.handler.chunk;
3741
- if (null === referencedChunk) return null;
3742
- if (referencedChunk === resolvedChunk) return reference.handler;
3743
- reference = referencedChunk.value;
3744
- if (null !== reference)
3745
- for (
3746
- referencedChunk = 0;
3747
- referencedChunk < reference.length;
3748
- referencedChunk++
3749
- ) {
3750
- var listener = reference[referencedChunk];
3751
- if (
3752
- "function" !== typeof listener &&
3753
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
3754
- null !== listener)
3755
- )
3756
- return listener;
3757
- }
3758
- return null;
3759
- }
3760
3746
  function triggerErrorOnChunk(response, chunk, error) {
3761
3747
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
3762
3748
  chunk.reason.error(error);
@@ -3780,57 +3766,25 @@
3780
3766
  chunk.value = value;
3781
3767
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
3782
3768
  if (null !== resolveListeners)
3783
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
3769
+ switch ((initializeModelChunk(chunk), chunk.status)) {
3784
3770
  case "fulfilled":
3785
- wakeChunk(response, resolveListeners, chunk.value);
3771
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
3786
3772
  break;
3787
3773
  case "blocked":
3788
- for (value = 0; value < resolveListeners.length; value++)
3789
- if (
3790
- ((id = resolveListeners[value]), "function" !== typeof id)
3791
- ) {
3792
- var cyclicHandler = resolveBlockedCycle(chunk, id);
3793
- if (null !== cyclicHandler)
3794
- switch (
3795
- (fulfillReference(response, id, cyclicHandler.value),
3796
- resolveListeners.splice(value, 1),
3797
- value--,
3798
- null !== rejectListeners &&
3799
- ((id = rejectListeners.indexOf(id)),
3800
- -1 !== id && rejectListeners.splice(id, 1)),
3801
- chunk.status)
3802
- ) {
3803
- case "fulfilled":
3804
- wakeChunk(response, resolveListeners, chunk.value);
3805
- break a;
3806
- case "rejected":
3807
- null !== rejectListeners &&
3808
- rejectChunk(response, rejectListeners, chunk.reason);
3809
- break a;
3810
- }
3811
- }
3812
3774
  case "pending":
3813
3775
  if (chunk.value)
3814
- for (
3815
- response = 0;
3816
- response < resolveListeners.length;
3817
- response++
3818
- )
3819
- chunk.value.push(resolveListeners[response]);
3776
+ for (value = 0; value < resolveListeners.length; value++)
3777
+ chunk.value.push(resolveListeners[value]);
3820
3778
  else chunk.value = resolveListeners;
3821
3779
  if (chunk.reason) {
3822
3780
  if (rejectListeners)
3823
- for (
3824
- resolveListeners = 0;
3825
- resolveListeners < rejectListeners.length;
3826
- resolveListeners++
3827
- )
3828
- chunk.reason.push(rejectListeners[resolveListeners]);
3781
+ for (value = 0; value < rejectListeners.length; value++)
3782
+ chunk.reason.push(rejectListeners[value]);
3829
3783
  } else chunk.reason = rejectListeners;
3830
3784
  break;
3831
3785
  case "rejected":
3832
3786
  rejectListeners &&
3833
- wakeChunk(response, rejectListeners, chunk.reason);
3787
+ rejectChunk(response, rejectListeners, chunk.reason);
3834
3788
  }
3835
3789
  }
3836
3790
  }
@@ -3854,15 +3808,51 @@
3854
3808
  );
3855
3809
  }
3856
3810
  function loadServerReference$1(response, metaData, parentObject, key) {
3811
+ function reject(error) {
3812
+ var rejectListeners = blockedPromise.reason,
3813
+ erroredPromise = blockedPromise;
3814
+ erroredPromise.status = "rejected";
3815
+ erroredPromise.value = null;
3816
+ erroredPromise.reason = error;
3817
+ null !== rejectListeners &&
3818
+ rejectChunk(response, rejectListeners, error);
3819
+ rejectReference(response, handler, error);
3820
+ }
3857
3821
  var id = metaData.id;
3858
3822
  if ("string" !== typeof id || "then" === key) return null;
3823
+ var cachedPromise = metaData.$$promise;
3824
+ if (void 0 !== cachedPromise) {
3825
+ if ("fulfilled" === cachedPromise.status)
3826
+ return (
3827
+ (cachedPromise = cachedPromise.value),
3828
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
3829
+ );
3830
+ initializingHandler
3831
+ ? ((id = initializingHandler), id.deps++)
3832
+ : (id = initializingHandler =
3833
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
3834
+ cachedPromise.then(
3835
+ resolveReference.bind(null, response, id, parentObject, key),
3836
+ rejectReference.bind(null, response, id)
3837
+ );
3838
+ return null;
3839
+ }
3840
+ var blockedPromise = new ReactPromise("blocked", null, null);
3841
+ metaData.$$promise = blockedPromise;
3859
3842
  var serverReference = resolveServerReference(response._bundlerConfig, id);
3860
- id = metaData.bound;
3861
- var promise = preloadModule$1(serverReference);
3862
- if (promise)
3863
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
3864
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
3865
- else return requireModule(serverReference);
3843
+ cachedPromise = metaData.bound;
3844
+ if ((id = preloadModule$1(serverReference)))
3845
+ cachedPromise instanceof ReactPromise &&
3846
+ (id = Promise.all([id, cachedPromise]));
3847
+ else if (cachedPromise instanceof ReactPromise)
3848
+ id = Promise.resolve(cachedPromise);
3849
+ else
3850
+ return (
3851
+ (cachedPromise = requireModule(serverReference)),
3852
+ (id = blockedPromise),
3853
+ (id.status = "fulfilled"),
3854
+ (id.value = cachedPromise)
3855
+ );
3866
3856
  if (initializingHandler) {
3867
3857
  var handler = initializingHandler;
3868
3858
  handler.deps++;
@@ -3874,93 +3864,107 @@
3874
3864
  deps: 1,
3875
3865
  errored: !1
3876
3866
  };
3877
- promise.then(
3878
- function () {
3879
- var resolvedValue = requireModule(serverReference);
3880
- if (metaData.bound) {
3881
- var promiseValue = metaData.bound.value;
3882
- promiseValue = Array.isArray(promiseValue)
3883
- ? promiseValue.slice(0)
3884
- : [];
3885
- promiseValue.unshift(null);
3886
- resolvedValue = resolvedValue.bind.apply(
3887
- resolvedValue,
3888
- promiseValue
3867
+ id.then(function () {
3868
+ var resolvedValue = requireModule(serverReference);
3869
+ if (metaData.bound) {
3870
+ var promiseValue = metaData.bound.value;
3871
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
3872
+ if (promiseValue.length > MAX_BOUND_ARGS) {
3873
+ reject(
3874
+ Error(
3875
+ "Server Function has too many bound arguments. Received " +
3876
+ promiseValue.length +
3877
+ " but the limit is " +
3878
+ MAX_BOUND_ARGS +
3879
+ "."
3880
+ )
3889
3881
  );
3882
+ return;
3890
3883
  }
3891
- parentObject[key] = resolvedValue;
3892
- "" === key &&
3893
- null === handler.value &&
3894
- (handler.value = resolvedValue);
3895
- handler.deps--;
3896
- 0 === handler.deps &&
3897
- ((resolvedValue = handler.chunk),
3898
- null !== resolvedValue &&
3899
- "blocked" === resolvedValue.status &&
3900
- ((promiseValue = resolvedValue.value),
3901
- (resolvedValue.status = "fulfilled"),
3902
- (resolvedValue.value = handler.value),
3903
- (resolvedValue.reason = null),
3904
- null !== promiseValue &&
3905
- wakeChunk(response, promiseValue, handler.value)));
3906
- },
3907
- function (error) {
3908
- if (!handler.errored) {
3909
- handler.errored = !0;
3910
- handler.value = null;
3911
- handler.reason = error;
3912
- var chunk = handler.chunk;
3913
- null !== chunk &&
3914
- "blocked" === chunk.status &&
3915
- triggerErrorOnChunk(response, chunk, error);
3916
- }
3884
+ promiseValue.unshift(null);
3885
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
3917
3886
  }
3918
- );
3887
+ promiseValue = blockedPromise.value;
3888
+ var initializedPromise = blockedPromise;
3889
+ initializedPromise.status = "fulfilled";
3890
+ initializedPromise.value = resolvedValue;
3891
+ initializedPromise.reason = null;
3892
+ null !== promiseValue &&
3893
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
3894
+ resolveReference(response, handler, parentObject, key, resolvedValue);
3895
+ }, reject);
3919
3896
  return null;
3920
3897
  }
3921
- function reviveModel(response, parentObj, parentKey, value, reference) {
3898
+ function reviveModel(
3899
+ response,
3900
+ parentObj,
3901
+ parentKey,
3902
+ value,
3903
+ reference,
3904
+ arrayRoot
3905
+ ) {
3922
3906
  if ("string" === typeof value)
3923
3907
  return parseModelString(
3924
3908
  response,
3925
3909
  parentObj,
3926
3910
  parentKey,
3927
3911
  value,
3928
- reference
3912
+ reference,
3913
+ arrayRoot
3929
3914
  );
3930
3915
  if ("object" === typeof value && null !== value)
3931
3916
  if (
3932
3917
  (void 0 !== reference &&
3933
3918
  void 0 !== response._temporaryReferences &&
3934
3919
  response._temporaryReferences.set(value, reference),
3935
- Array.isArray(value))
3936
- )
3937
- for (var i = 0; i < value.length; i++)
3938
- value[i] = reviveModel(
3920
+ isArrayImpl(value))
3921
+ ) {
3922
+ if (null === arrayRoot) {
3923
+ var childContext = { count: 0, fork: !1 };
3924
+ response._rootArrayContexts.set(value, childContext);
3925
+ } else childContext = arrayRoot;
3926
+ 1 < value.length && (childContext.fork = !0);
3927
+ bumpArrayCount(childContext, value.length + 1, response);
3928
+ for (parentObj = 0; parentObj < value.length; parentObj++)
3929
+ value[parentObj] = reviveModel(
3939
3930
  response,
3940
3931
  value,
3941
- "" + i,
3942
- value[i],
3943
- void 0 !== reference ? reference + ":" + i : void 0
3932
+ "" + parentObj,
3933
+ value[parentObj],
3934
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
3935
+ childContext
3944
3936
  );
3945
- else
3946
- for (i in value)
3947
- hasOwnProperty.call(value, i) &&
3948
- ((parentObj =
3949
- void 0 !== reference && -1 === i.indexOf(":")
3950
- ? reference + ":" + i
3951
- : void 0),
3952
- (parentObj = reviveModel(
3953
- response,
3954
- value,
3955
- i,
3956
- value[i],
3957
- parentObj
3958
- )),
3959
- void 0 !== parentObj || "__proto__" === i
3960
- ? (value[i] = parentObj)
3961
- : delete value[i]);
3937
+ } else
3938
+ for (childContext in value)
3939
+ hasOwnProperty.call(value, childContext) &&
3940
+ ("__proto__" === childContext
3941
+ ? delete value[childContext]
3942
+ : ((parentObj =
3943
+ void 0 !== reference && -1 === childContext.indexOf(":")
3944
+ ? reference + ":" + childContext
3945
+ : void 0),
3946
+ (parentObj = reviveModel(
3947
+ response,
3948
+ value,
3949
+ childContext,
3950
+ value[childContext],
3951
+ parentObj,
3952
+ null
3953
+ )),
3954
+ void 0 !== parentObj
3955
+ ? (value[childContext] = parentObj)
3956
+ : delete value[childContext]));
3962
3957
  return value;
3963
3958
  }
3959
+ function bumpArrayCount(arrayContext, slots, response) {
3960
+ if (
3961
+ (arrayContext.count += slots) > response._arraySizeLimit &&
3962
+ arrayContext.fork
3963
+ )
3964
+ throw Error(
3965
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
3966
+ );
3967
+ }
3964
3968
  function initializeModelChunk(chunk) {
3965
3969
  var prevHandler = initializingHandler;
3966
3970
  initializingHandler = null;
@@ -3974,13 +3978,15 @@
3974
3978
  chunk.value = null;
3975
3979
  chunk.reason = null;
3976
3980
  try {
3977
- var rawModel = JSON.parse(resolvedModel),
3978
- value = reviveModel(
3981
+ var rawModel = JSON.parse(resolvedModel);
3982
+ resolvedModel = { count: 0, fork: !1 };
3983
+ var value = reviveModel(
3979
3984
  response,
3980
3985
  { "": rawModel },
3981
3986
  "",
3982
3987
  rawModel,
3983
- _chunk$reason
3988
+ _chunk$reason,
3989
+ resolvedModel
3984
3990
  ),
3985
3991
  resolveListeners = chunk.value;
3986
3992
  if (null !== resolveListeners)
@@ -3992,19 +3998,20 @@
3992
3998
  var listener = resolveListeners[rawModel];
3993
3999
  "function" === typeof listener
3994
4000
  ? listener(value)
3995
- : fulfillReference(response, listener, value);
4001
+ : fulfillReference(response, listener, value, resolvedModel);
3996
4002
  }
3997
4003
  if (null !== initializingHandler) {
3998
4004
  if (initializingHandler.errored) throw initializingHandler.reason;
3999
4005
  if (0 < initializingHandler.deps) {
4000
4006
  initializingHandler.value = value;
4007
+ initializingHandler.reason = resolvedModel;
4001
4008
  initializingHandler.chunk = chunk;
4002
4009
  return;
4003
4010
  }
4004
4011
  }
4005
4012
  chunk.status = "fulfilled";
4006
4013
  chunk.value = value;
4007
- chunk.reason = null;
4014
+ chunk.reason = resolvedModel;
4008
4015
  } catch (error) {
4009
4016
  (chunk.status = "rejected"), (chunk.reason = error);
4010
4017
  } finally {
@@ -4019,7 +4026,8 @@
4019
4026
  ? triggerErrorOnChunk(response, chunk, error)
4020
4027
  : "fulfilled" === chunk.status &&
4021
4028
  null !== chunk.reason &&
4022
- chunk.reason.error(error);
4029
+ ((chunk = chunk.reason),
4030
+ "function" === typeof chunk.error && chunk.error(error));
4023
4031
  });
4024
4032
  }
4025
4033
  function getChunk(response, id) {
@@ -4040,40 +4048,74 @@
4040
4048
  chunks.set(id, chunk));
4041
4049
  return chunk;
4042
4050
  }
4043
- function fulfillReference(response, reference, value) {
4051
+ function fulfillReference(response, reference, value, arrayRoot) {
4044
4052
  var handler = reference.handler,
4045
4053
  parentObject = reference.parentObject,
4046
4054
  key = reference.key,
4047
4055
  map = reference.map,
4048
4056
  path = reference.path;
4049
4057
  try {
4050
- for (var i = 1; i < path.length; i++) {
4058
+ for (
4059
+ var localLength = 0,
4060
+ rootArrayContexts = response._rootArrayContexts,
4061
+ i = 1;
4062
+ i < path.length;
4063
+ i++
4064
+ ) {
4051
4065
  var name = path[i];
4052
4066
  if (
4053
4067
  "object" !== typeof value ||
4054
- !hasOwnProperty.call(value, name) ||
4055
- value instanceof Promise
4068
+ null === value ||
4069
+ (getPrototypeOf(value) !== ObjectPrototype &&
4070
+ getPrototypeOf(value) !== ArrayPrototype) ||
4071
+ !hasOwnProperty.call(value, name)
4056
4072
  )
4057
4073
  throw Error("Invalid reference.");
4058
4074
  value = value[name];
4075
+ if (isArrayImpl(value))
4076
+ (localLength = 0),
4077
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
4078
+ else if (((arrayRoot = null), "string" === typeof value))
4079
+ localLength = value.length;
4080
+ else if ("bigint" === typeof value) {
4081
+ var n = Math.abs(Number(value));
4082
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
4083
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
4059
4084
  }
4060
- var mappedValue = map(response, value, parentObject, key);
4061
- parentObject[key] = mappedValue;
4062
- "" === key && null === handler.value && (handler.value = mappedValue);
4085
+ var resolvedValue = map(response, value, parentObject, key);
4086
+ var referenceArrayRoot = reference.arrayRoot;
4087
+ null !== referenceArrayRoot &&
4088
+ (null !== arrayRoot
4089
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
4090
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
4091
+ : 0 < localLength &&
4092
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4063
4093
  } catch (error) {
4064
- rejectReference(response, reference.handler, error);
4094
+ rejectReference(response, handler, error);
4065
4095
  return;
4066
4096
  }
4097
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4098
+ }
4099
+ function resolveReference(
4100
+ response,
4101
+ handler,
4102
+ parentObject,
4103
+ key,
4104
+ resolvedValue
4105
+ ) {
4106
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
4107
+ "" === key && null === handler.value && (handler.value = resolvedValue);
4067
4108
  handler.deps--;
4068
4109
  0 === handler.deps &&
4069
- ((reference = handler.chunk),
4070
- null !== reference &&
4071
- "blocked" === reference.status &&
4072
- ((value = reference.value),
4073
- (reference.status = "fulfilled"),
4074
- (reference.value = handler.value),
4075
- (reference.reason = handler.reason),
4076
- null !== value && wakeChunk(response, value, handler.value)));
4110
+ ((parentObject = handler.chunk),
4111
+ null !== parentObject &&
4112
+ "blocked" === parentObject.status &&
4113
+ ((key = parentObject.value),
4114
+ (parentObject.status = "fulfilled"),
4115
+ (parentObject.value = handler.value),
4116
+ (parentObject.reason = handler.reason),
4117
+ null !== key &&
4118
+ wakeChunk(response, key, handler.value, parentObject)));
4077
4119
  }
4078
4120
  function rejectReference(response, handler, error) {
4079
4121
  handler.errored ||
@@ -4085,29 +4127,66 @@
4085
4127
  "blocked" === handler.status &&
4086
4128
  triggerErrorOnChunk(response, handler, error));
4087
4129
  }
4088
- function getOutlinedModel(response, reference, parentObject, key, map) {
4130
+ function getOutlinedModel(
4131
+ response,
4132
+ reference,
4133
+ parentObject,
4134
+ key,
4135
+ referenceArrayRoot,
4136
+ map
4137
+ ) {
4089
4138
  reference = reference.split(":");
4090
- var id = parseInt(reference[0], 16);
4091
- id = getChunk(response, id);
4092
- switch (id.status) {
4139
+ var id = parseInt(reference[0], 16),
4140
+ chunk = getChunk(response, id);
4141
+ switch (chunk.status) {
4093
4142
  case "resolved_model":
4094
- initializeModelChunk(id);
4143
+ initializeModelChunk(chunk);
4095
4144
  }
4096
- switch (id.status) {
4145
+ switch (chunk.status) {
4097
4146
  case "fulfilled":
4098
- id = id.value;
4099
- for (var i = 1; i < reference.length; i++) {
4100
- var name = reference[i];
4147
+ id = chunk.value;
4148
+ chunk = chunk.reason;
4149
+ for (
4150
+ var localLength = 0,
4151
+ rootArrayContexts = response._rootArrayContexts,
4152
+ i = 1;
4153
+ i < reference.length;
4154
+ i++
4155
+ ) {
4156
+ localLength = reference[i];
4101
4157
  if (
4102
4158
  "object" !== typeof id ||
4103
- !hasOwnProperty.call(id, name) ||
4104
- id instanceof Promise
4159
+ null === id ||
4160
+ (getPrototypeOf(id) !== ObjectPrototype &&
4161
+ getPrototypeOf(id) !== ArrayPrototype) ||
4162
+ !hasOwnProperty.call(id, localLength)
4105
4163
  )
4106
4164
  throw Error("Invalid reference.");
4107
- id = id[name];
4165
+ id = id[localLength];
4166
+ isArrayImpl(id)
4167
+ ? ((localLength = 0),
4168
+ (chunk = rootArrayContexts.get(id) || chunk))
4169
+ : ((chunk = null),
4170
+ "string" === typeof id
4171
+ ? (localLength = id.length)
4172
+ : "bigint" === typeof id
4173
+ ? ((localLength = Math.abs(Number(id))),
4174
+ (localLength =
4175
+ 0 === localLength
4176
+ ? 1
4177
+ : Math.floor(Math.log10(localLength)) + 1))
4178
+ : (localLength = ArrayBuffer.isView(id)
4179
+ ? id.byteLength
4180
+ : 0));
4108
4181
  }
4109
- return map(response, id, parentObject, key);
4110
- case "pending":
4182
+ parentObject = map(response, id, parentObject, key);
4183
+ null !== referenceArrayRoot &&
4184
+ (null !== chunk
4185
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
4186
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
4187
+ : 0 < localLength &&
4188
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4189
+ return parentObject;
4111
4190
  case "blocked":
4112
4191
  return (
4113
4192
  initializingHandler
@@ -4120,31 +4199,34 @@
4120
4199
  deps: 1,
4121
4200
  errored: !1
4122
4201
  }),
4123
- (parentObject = {
4202
+ (referenceArrayRoot = {
4124
4203
  handler: response,
4125
4204
  parentObject: parentObject,
4126
4205
  key: key,
4127
4206
  map: map,
4128
- path: reference
4207
+ path: reference,
4208
+ arrayRoot: referenceArrayRoot
4129
4209
  }),
4130
- null === id.value
4131
- ? (id.value = [parentObject])
4132
- : id.value.push(parentObject),
4133
- null === id.reason
4134
- ? (id.reason = [parentObject])
4135
- : id.reason.push(parentObject),
4210
+ null === chunk.value
4211
+ ? (chunk.value = [referenceArrayRoot])
4212
+ : chunk.value.push(referenceArrayRoot),
4213
+ null === chunk.reason
4214
+ ? (chunk.reason = [referenceArrayRoot])
4215
+ : chunk.reason.push(referenceArrayRoot),
4136
4216
  null
4137
4217
  );
4218
+ case "pending":
4219
+ throw Error("Invalid forward reference.");
4138
4220
  default:
4139
4221
  return (
4140
4222
  initializingHandler
4141
4223
  ? ((initializingHandler.errored = !0),
4142
4224
  (initializingHandler.value = null),
4143
- (initializingHandler.reason = id.reason))
4225
+ (initializingHandler.reason = chunk.reason))
4144
4226
  : (initializingHandler = {
4145
4227
  chunk: null,
4146
4228
  value: null,
4147
- reason: id.reason,
4229
+ reason: chunk.reason,
4148
4230
  deps: 0,
4149
4231
  errored: !0
4150
4232
  }),
@@ -4153,12 +4235,21 @@
4153
4235
  }
4154
4236
  }
4155
4237
  function createMap(response, model) {
4238
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4239
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4240
+ model.$$consumed = !0;
4156
4241
  return new Map(model);
4157
4242
  }
4158
4243
  function createSet(response, model) {
4244
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4245
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4246
+ model.$$consumed = !0;
4159
4247
  return new Set(model);
4160
4248
  }
4161
4249
  function extractIterator(response, model) {
4250
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4251
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4252
+ model.$$consumed = !0;
4162
4253
  return model[Symbol.iterator]();
4163
4254
  }
4164
4255
  function createModel(response, model, parentObject, key) {
@@ -4170,13 +4261,34 @@
4170
4261
  constructor,
4171
4262
  bytesPerElement,
4172
4263
  parentObject,
4173
- parentKey
4264
+ parentKey,
4265
+ referenceArrayRoot
4174
4266
  ) {
4267
+ function reject(error) {
4268
+ if (!handler.errored) {
4269
+ handler.errored = !0;
4270
+ handler.value = null;
4271
+ handler.reason = error;
4272
+ var chunk = handler.chunk;
4273
+ null !== chunk &&
4274
+ "blocked" === chunk.status &&
4275
+ triggerErrorOnChunk(response, chunk, error);
4276
+ }
4277
+ }
4175
4278
  reference = parseInt(reference.slice(2), 16);
4176
- bytesPerElement = response._prefix + reference;
4177
- if (response._chunks.has(reference))
4279
+ var key = response._prefix + reference;
4280
+ bytesPerElement = response._chunks;
4281
+ if (bytesPerElement.has(reference))
4178
4282
  throw Error("Already initialized typed array.");
4179
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4283
+ bytesPerElement.set(
4284
+ reference,
4285
+ new ReactPromise(
4286
+ "rejected",
4287
+ null,
4288
+ Error("Already initialized typed array.")
4289
+ )
4290
+ );
4291
+ reference = response._formData.get(key).arrayBuffer();
4180
4292
  if (initializingHandler) {
4181
4293
  var handler = initializingHandler;
4182
4294
  handler.deps++;
@@ -4188,40 +4300,32 @@
4188
4300
  deps: 1,
4189
4301
  errored: !1
4190
4302
  };
4191
- reference.then(
4192
- function (buffer) {
4193
- buffer =
4303
+ reference.then(function (buffer) {
4304
+ try {
4305
+ null !== referenceArrayRoot &&
4306
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4307
+ var resolvedValue =
4194
4308
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4195
- parentObject[parentKey] = buffer;
4309
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4196
4310
  "" === parentKey &&
4197
4311
  null === handler.value &&
4198
- (handler.value = buffer);
4199
- handler.deps--;
4200
- if (
4201
- 0 === handler.deps &&
4202
- ((buffer = handler.chunk),
4203
- null !== buffer && "blocked" === buffer.status)
4204
- ) {
4205
- var resolveListeners = buffer.value;
4206
- buffer.status = "fulfilled";
4207
- buffer.value = handler.value;
4208
- buffer.reason = null;
4209
- null !== resolveListeners &&
4210
- wakeChunk(response, resolveListeners, handler.value);
4211
- }
4212
- },
4213
- function (error) {
4214
- if (!handler.errored) {
4215
- handler.errored = !0;
4216
- handler.value = null;
4217
- handler.reason = error;
4218
- var chunk = handler.chunk;
4219
- null !== chunk &&
4220
- "blocked" === chunk.status &&
4221
- triggerErrorOnChunk(response, chunk, error);
4222
- }
4312
+ (handler.value = resolvedValue);
4313
+ } catch (x) {
4314
+ reject(x);
4315
+ return;
4223
4316
  }
4224
- );
4317
+ handler.deps--;
4318
+ 0 === handler.deps &&
4319
+ ((buffer = handler.chunk),
4320
+ null !== buffer &&
4321
+ "blocked" === buffer.status &&
4322
+ ((resolvedValue = buffer.value),
4323
+ (buffer.status = "fulfilled"),
4324
+ (buffer.value = handler.value),
4325
+ (buffer.reason = null),
4326
+ null !== resolvedValue &&
4327
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4328
+ }, reject);
4225
4329
  return null;
4226
4330
  }
4227
4331
  function resolveStream(response, id, stream, controller) {
@@ -4239,90 +4343,78 @@
4239
4343
  : controller.enqueueModel(chunks));
4240
4344
  }
4241
4345
  function parseReadableStream(response, reference, type) {
4346
+ function enqueue(value) {
4347
+ "bytes" !== type || ArrayBuffer.isView(value)
4348
+ ? controller.enqueue(value)
4349
+ : flightController.error(Error("Invalid data for bytes stream."));
4350
+ }
4242
4351
  reference = parseInt(reference.slice(2), 16);
4243
4352
  if (response._chunks.has(reference))
4244
4353
  throw Error("Already initialized stream.");
4245
4354
  var controller = null,
4246
- closed = !1;
4247
- type = new ReadableStream({
4248
- type: type,
4249
- start: function (c) {
4250
- controller = c;
4251
- }
4252
- });
4253
- var previousBlockedChunk = null;
4254
- resolveStream(response, reference, type, {
4255
- enqueueModel: function (json) {
4256
- if (null === previousBlockedChunk) {
4257
- var chunk = new ReactPromise(
4258
- "resolved_model",
4259
- json,
4260
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4261
- );
4262
- initializeModelChunk(chunk);
4263
- "fulfilled" === chunk.status
4264
- ? controller.enqueue(chunk.value)
4265
- : (chunk.then(
4266
- function (v) {
4267
- return controller.enqueue(v);
4268
- },
4269
- function (e) {
4270
- return controller.error(e);
4271
- }
4272
- ),
4273
- (previousBlockedChunk = chunk));
4274
- } else {
4275
- chunk = previousBlockedChunk;
4276
- var _chunk = new ReactPromise("pending", null, null);
4277
- _chunk.then(
4278
- function (v) {
4279
- return controller.enqueue(v);
4280
- },
4281
- function (e) {
4282
- return controller.error(e);
4283
- }
4284
- );
4285
- previousBlockedChunk = _chunk;
4286
- chunk.then(function () {
4287
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
4288
- resolveModelChunk(response, _chunk, json, -1);
4289
- });
4355
+ closed = !1,
4356
+ stream = new ReadableStream({
4357
+ type: type,
4358
+ start: function (c) {
4359
+ controller = c;
4290
4360
  }
4291
- },
4292
- close: function () {
4293
- if (!closed)
4294
- if (((closed = !0), null === previousBlockedChunk))
4295
- controller.close();
4296
- else {
4297
- var blockedChunk = previousBlockedChunk;
4298
- previousBlockedChunk = null;
4299
- blockedChunk.then(function () {
4300
- return controller.close();
4301
- });
4302
- }
4303
- },
4304
- error: function (error) {
4305
- if (!closed)
4306
- if (((closed = !0), null === previousBlockedChunk))
4307
- controller.error(error);
4308
- else {
4309
- var blockedChunk = previousBlockedChunk;
4310
- previousBlockedChunk = null;
4311
- blockedChunk.then(function () {
4312
- return controller.error(error);
4361
+ }),
4362
+ previousBlockedChunk = null,
4363
+ flightController = {
4364
+ enqueueModel: function (json) {
4365
+ if (null === previousBlockedChunk) {
4366
+ var chunk = new ReactPromise(
4367
+ "resolved_model",
4368
+ json,
4369
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4370
+ );
4371
+ initializeModelChunk(chunk);
4372
+ "fulfilled" === chunk.status
4373
+ ? enqueue(chunk.value)
4374
+ : (chunk.then(enqueue, flightController.error),
4375
+ (previousBlockedChunk = chunk));
4376
+ } else {
4377
+ chunk = previousBlockedChunk;
4378
+ var _chunk = new ReactPromise("pending", null, null);
4379
+ _chunk.then(enqueue, flightController.error);
4380
+ previousBlockedChunk = _chunk;
4381
+ chunk.then(function () {
4382
+ previousBlockedChunk === _chunk &&
4383
+ (previousBlockedChunk = null);
4384
+ resolveModelChunk(response, _chunk, json, -1);
4313
4385
  });
4314
4386
  }
4315
- }
4316
- });
4317
- return type;
4318
- }
4319
- function asyncIterator() {
4320
- return this;
4387
+ },
4388
+ close: function () {
4389
+ if (!closed)
4390
+ if (((closed = !0), null === previousBlockedChunk))
4391
+ controller.close();
4392
+ else {
4393
+ var blockedChunk = previousBlockedChunk;
4394
+ previousBlockedChunk = null;
4395
+ blockedChunk.then(function () {
4396
+ return controller.close();
4397
+ });
4398
+ }
4399
+ },
4400
+ error: function (error) {
4401
+ if (!closed)
4402
+ if (((closed = !0), null === previousBlockedChunk))
4403
+ controller.error(error);
4404
+ else {
4405
+ var blockedChunk = previousBlockedChunk;
4406
+ previousBlockedChunk = null;
4407
+ blockedChunk.then(function () {
4408
+ return controller.error(error);
4409
+ });
4410
+ }
4411
+ }
4412
+ };
4413
+ resolveStream(response, reference, stream, flightController);
4414
+ return stream;
4321
4415
  }
4322
- function createIterator(next) {
4323
- next = { next: next };
4324
- next[ASYNC_ITERATOR] = asyncIterator;
4325
- return next;
4416
+ function FlightIterator(next) {
4417
+ this.next = next;
4326
4418
  }
4327
4419
  function parseAsyncIterable(response, reference, iterator) {
4328
4420
  reference = parseInt(reference.slice(2), 16);
@@ -4333,7 +4425,7 @@
4333
4425
  nextWriteIndex = 0,
4334
4426
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4335
4427
  var nextReadIndex = 0;
4336
- return createIterator(function (arg) {
4428
+ return new FlightIterator(function (arg) {
4337
4429
  if (void 0 !== arg)
4338
4430
  throw Error(
4339
4431
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -4412,19 +4504,30 @@
4412
4504
  });
4413
4505
  return iterator;
4414
4506
  }
4415
- function parseModelString(response, obj, key, value, reference) {
4507
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
4416
4508
  if ("$" === value[0]) {
4417
4509
  switch (value[1]) {
4418
4510
  case "$":
4419
- return value.slice(1);
4511
+ return (
4512
+ null !== arrayRoot &&
4513
+ bumpArrayCount(arrayRoot, value.length - 1, response),
4514
+ value.slice(1)
4515
+ );
4420
4516
  case "@":
4421
4517
  return (
4422
4518
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
4423
4519
  );
4424
4520
  case "h":
4425
4521
  return (
4426
- (value = value.slice(2)),
4427
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
4522
+ (arrayRoot = value.slice(2)),
4523
+ getOutlinedModel(
4524
+ response,
4525
+ arrayRoot,
4526
+ obj,
4527
+ key,
4528
+ null,
4529
+ loadServerReference$1
4530
+ )
4428
4531
  );
4429
4532
  case "T":
4430
4533
  if (
@@ -4440,27 +4543,44 @@
4440
4543
  );
4441
4544
  case "Q":
4442
4545
  return (
4443
- (value = value.slice(2)),
4444
- getOutlinedModel(response, value, obj, key, createMap)
4546
+ (arrayRoot = value.slice(2)),
4547
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
4445
4548
  );
4446
4549
  case "W":
4447
4550
  return (
4448
- (value = value.slice(2)),
4449
- getOutlinedModel(response, value, obj, key, createSet)
4551
+ (arrayRoot = value.slice(2)),
4552
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
4450
4553
  );
4451
4554
  case "K":
4452
4555
  obj = value.slice(2);
4453
- var formPrefix = response._prefix + obj + "_",
4454
- data = new FormData();
4455
- response._formData.forEach(function (entry, entryKey) {
4456
- entryKey.startsWith(formPrefix) &&
4457
- data.append(entryKey.slice(formPrefix.length), entry);
4458
- });
4459
- return data;
4556
+ obj = response._prefix + obj + "_";
4557
+ key = new FormData();
4558
+ response = response._formData;
4559
+ arrayRoot = Array.from(response.keys());
4560
+ for (value = 0; value < arrayRoot.length; value++)
4561
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
4562
+ for (
4563
+ var entries = response.getAll(reference),
4564
+ newKey = reference.slice(obj.length),
4565
+ j = 0;
4566
+ j < entries.length;
4567
+ j++
4568
+ )
4569
+ key.append(newKey, entries[j]);
4570
+ response.delete(reference);
4571
+ }
4572
+ return key;
4460
4573
  case "i":
4461
4574
  return (
4462
- (value = value.slice(2)),
4463
- getOutlinedModel(response, value, obj, key, extractIterator)
4575
+ (arrayRoot = value.slice(2)),
4576
+ getOutlinedModel(
4577
+ response,
4578
+ arrayRoot,
4579
+ obj,
4580
+ key,
4581
+ null,
4582
+ extractIterator
4583
+ )
4464
4584
  );
4465
4585
  case "I":
4466
4586
  return Infinity;
@@ -4473,15 +4593,48 @@
4473
4593
  case "D":
4474
4594
  return new Date(Date.parse(value.slice(2)));
4475
4595
  case "n":
4476
- return BigInt(value.slice(2));
4477
- }
4478
- switch (value[1]) {
4596
+ obj = value.slice(2);
4597
+ if (obj.length > MAX_BIGINT_DIGITS)
4598
+ throw Error(
4599
+ "BigInt is too large. Received " +
4600
+ obj.length +
4601
+ " digits but the limit is " +
4602
+ MAX_BIGINT_DIGITS +
4603
+ "."
4604
+ );
4605
+ null !== arrayRoot &&
4606
+ bumpArrayCount(arrayRoot, obj.length, response);
4607
+ return BigInt(obj);
4479
4608
  case "A":
4480
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
4609
+ return parseTypedArray(
4610
+ response,
4611
+ value,
4612
+ ArrayBuffer,
4613
+ 1,
4614
+ obj,
4615
+ key,
4616
+ arrayRoot
4617
+ );
4481
4618
  case "O":
4482
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
4619
+ return parseTypedArray(
4620
+ response,
4621
+ value,
4622
+ Int8Array,
4623
+ 1,
4624
+ obj,
4625
+ key,
4626
+ arrayRoot
4627
+ );
4483
4628
  case "o":
4484
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
4629
+ return parseTypedArray(
4630
+ response,
4631
+ value,
4632
+ Uint8Array,
4633
+ 1,
4634
+ obj,
4635
+ key,
4636
+ arrayRoot
4637
+ );
4485
4638
  case "U":
4486
4639
  return parseTypedArray(
4487
4640
  response,
@@ -4489,22 +4642,79 @@
4489
4642
  Uint8ClampedArray,
4490
4643
  1,
4491
4644
  obj,
4492
- key
4645
+ key,
4646
+ arrayRoot
4493
4647
  );
4494
4648
  case "S":
4495
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
4649
+ return parseTypedArray(
4650
+ response,
4651
+ value,
4652
+ Int16Array,
4653
+ 2,
4654
+ obj,
4655
+ key,
4656
+ arrayRoot
4657
+ );
4496
4658
  case "s":
4497
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
4659
+ return parseTypedArray(
4660
+ response,
4661
+ value,
4662
+ Uint16Array,
4663
+ 2,
4664
+ obj,
4665
+ key,
4666
+ arrayRoot
4667
+ );
4498
4668
  case "L":
4499
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
4669
+ return parseTypedArray(
4670
+ response,
4671
+ value,
4672
+ Int32Array,
4673
+ 4,
4674
+ obj,
4675
+ key,
4676
+ arrayRoot
4677
+ );
4500
4678
  case "l":
4501
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
4679
+ return parseTypedArray(
4680
+ response,
4681
+ value,
4682
+ Uint32Array,
4683
+ 4,
4684
+ obj,
4685
+ key,
4686
+ arrayRoot
4687
+ );
4502
4688
  case "G":
4503
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
4689
+ return parseTypedArray(
4690
+ response,
4691
+ value,
4692
+ Float32Array,
4693
+ 4,
4694
+ obj,
4695
+ key,
4696
+ arrayRoot
4697
+ );
4504
4698
  case "g":
4505
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
4699
+ return parseTypedArray(
4700
+ response,
4701
+ value,
4702
+ Float64Array,
4703
+ 8,
4704
+ obj,
4705
+ key,
4706
+ arrayRoot
4707
+ );
4506
4708
  case "M":
4507
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
4709
+ return parseTypedArray(
4710
+ response,
4711
+ value,
4712
+ BigInt64Array,
4713
+ 8,
4714
+ obj,
4715
+ key,
4716
+ arrayRoot
4717
+ );
4508
4718
  case "m":
4509
4719
  return parseTypedArray(
4510
4720
  response,
@@ -4512,17 +4722,24 @@
4512
4722
  BigUint64Array,
4513
4723
  8,
4514
4724
  obj,
4515
- key
4725
+ key,
4726
+ arrayRoot
4516
4727
  );
4517
4728
  case "V":
4518
- return parseTypedArray(response, value, DataView, 1, obj, key);
4729
+ return parseTypedArray(
4730
+ response,
4731
+ value,
4732
+ DataView,
4733
+ 1,
4734
+ obj,
4735
+ key,
4736
+ arrayRoot
4737
+ );
4519
4738
  case "B":
4520
4739
  return (
4521
4740
  (obj = parseInt(value.slice(2), 16)),
4522
4741
  response._formData.get(response._prefix + obj)
4523
4742
  );
4524
- }
4525
- switch (value[1]) {
4526
4743
  case "R":
4527
4744
  return parseReadableStream(response, value, void 0);
4528
4745
  case "r":
@@ -4533,8 +4750,16 @@
4533
4750
  return parseAsyncIterable(response, value, !0);
4534
4751
  }
4535
4752
  value = value.slice(1);
4536
- return getOutlinedModel(response, value, obj, key, createModel);
4753
+ return getOutlinedModel(
4754
+ response,
4755
+ value,
4756
+ obj,
4757
+ key,
4758
+ arrayRoot,
4759
+ createModel
4760
+ );
4537
4761
  }
4762
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
4538
4763
  return value;
4539
4764
  }
4540
4765
  function createResponse(
@@ -4546,6 +4771,8 @@
4546
4771
  3 < arguments.length && void 0 !== arguments[3]
4547
4772
  ? arguments[3]
4548
4773
  : new FormData(),
4774
+ arraySizeLimit =
4775
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
4549
4776
  chunks = new Map();
4550
4777
  return {
4551
4778
  _bundlerConfig: bundlerConfig,
@@ -4554,19 +4781,32 @@
4554
4781
  _chunks: chunks,
4555
4782
  _closed: !1,
4556
4783
  _closedReason: null,
4557
- _temporaryReferences: temporaryReferences
4784
+ _temporaryReferences: temporaryReferences,
4785
+ _rootArrayContexts: new WeakMap(),
4786
+ _arraySizeLimit: arraySizeLimit
4558
4787
  };
4559
4788
  }
4560
4789
  function close(response) {
4561
4790
  reportGlobalError(response, Error("Connection closed."));
4562
4791
  }
4563
- function loadServerReference(bundlerConfig, id, bound) {
4792
+ function loadServerReference(bundlerConfig, metaData) {
4793
+ var id = metaData.id;
4794
+ if ("string" !== typeof id) return null;
4564
4795
  var serverReference = resolveServerReference(bundlerConfig, id);
4565
4796
  bundlerConfig = preloadModule$1(serverReference);
4566
- return bound
4567
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
4797
+ metaData = metaData.bound;
4798
+ return metaData instanceof Promise
4799
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
4568
4800
  _ref = _ref[0];
4569
4801
  var fn = requireModule(serverReference);
4802
+ if (_ref.length > MAX_BOUND_ARGS)
4803
+ throw Error(
4804
+ "Server Function has too many bound arguments. Received " +
4805
+ _ref.length +
4806
+ " but the limit is " +
4807
+ MAX_BOUND_ARGS +
4808
+ "."
4809
+ );
4570
4810
  return fn.bind.apply(fn, [null].concat(_ref));
4571
4811
  })
4572
4812
  : bundlerConfig
@@ -4575,8 +4815,19 @@
4575
4815
  })
4576
4816
  : Promise.resolve(requireModule(serverReference));
4577
4817
  }
4578
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
4579
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
4818
+ function decodeBoundActionMetaData(
4819
+ body,
4820
+ serverManifest,
4821
+ formFieldPrefix,
4822
+ arraySizeLimit
4823
+ ) {
4824
+ body = createResponse(
4825
+ serverManifest,
4826
+ formFieldPrefix,
4827
+ void 0,
4828
+ body,
4829
+ arraySizeLimit
4830
+ );
4580
4831
  close(body);
4581
4832
  body = getChunk(body, 0);
4582
4833
  body.then(function () {});
@@ -4585,20 +4836,24 @@
4585
4836
  }
4586
4837
  function decodeAction$1(body, serverManifest) {
4587
4838
  var formData = new FormData(),
4588
- action = null;
4839
+ action = null,
4840
+ seenActions = new Set();
4589
4841
  body.forEach(function (value, key) {
4590
4842
  key.startsWith("$ACTION_")
4591
4843
  ? key.startsWith("$ACTION_REF_")
4592
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
4844
+ ? seenActions.has(key) ||
4845
+ (seenActions.add(key),
4846
+ (value = "$ACTION_" + key.slice(12) + ":"),
4593
4847
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
4594
- (action = loadServerReference(
4595
- serverManifest,
4596
- value.id,
4597
- value.bound
4598
- )))
4848
+ (action = loadServerReference(serverManifest, value)))
4599
4849
  : key.startsWith("$ACTION_ID_") &&
4600
- ((value = key.slice(11)),
4601
- (action = loadServerReference(serverManifest, value, null)))
4850
+ !seenActions.has(key) &&
4851
+ (seenActions.add(key),
4852
+ (value = key.slice(11)),
4853
+ (action = loadServerReference(serverManifest, {
4854
+ id: value,
4855
+ bound: null
4856
+ })))
4602
4857
  : formData.append(key, value);
4603
4858
  });
4604
4859
  return null === action
@@ -5062,7 +5317,7 @@
5062
5317
  patchConsole(console, "table"),
5063
5318
  patchConsole(console, "trace"),
5064
5319
  patchConsole(console, "warn"));
5065
- var ObjectPrototype = Object.prototype,
5320
+ var ObjectPrototype$1 = Object.prototype,
5066
5321
  stringify = JSON.stringify,
5067
5322
  ABORTING = 12,
5068
5323
  CLOSED = 14,
@@ -5087,16 +5342,23 @@
5087
5342
  case "fulfilled":
5088
5343
  if ("function" === typeof resolve) {
5089
5344
  for (
5090
- var inspectedValue = this.value, cycleProtection = 0;
5345
+ var inspectedValue = this.value,
5346
+ cycleProtection = 0,
5347
+ visited = new Set();
5091
5348
  inspectedValue instanceof ReactPromise;
5092
5349
 
5093
5350
  ) {
5094
5351
  cycleProtection++;
5095
- if (inspectedValue === this || 1e3 < cycleProtection) {
5352
+ if (
5353
+ inspectedValue === this ||
5354
+ visited.has(inspectedValue) ||
5355
+ 1e3 < cycleProtection
5356
+ ) {
5096
5357
  "function" === typeof reject &&
5097
5358
  reject(Error("Cannot have cyclic thenables."));
5098
5359
  return;
5099
5360
  }
5361
+ visited.add(inspectedValue);
5100
5362
  if ("fulfilled" === inspectedValue.status)
5101
5363
  inspectedValue = inspectedValue.value;
5102
5364
  else break;
@@ -5117,7 +5379,15 @@
5117
5379
  "function" === typeof reject && reject(this.reason);
5118
5380
  }
5119
5381
  };
5120
- var initializingHandler = null,
5382
+ var ObjectPrototype = Object.prototype,
5383
+ ArrayPrototype = Array.prototype,
5384
+ initializingHandler = null;
5385
+ FlightIterator.prototype = {};
5386
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
5387
+ return this;
5388
+ };
5389
+ var MAX_BIGINT_DIGITS = 300,
5390
+ MAX_BOUND_ARGS = 1e3,
5121
5391
  serverManifest = {};
5122
5392
  exports.createClientReference = function (
5123
5393
  id,
@@ -5152,7 +5422,8 @@
5152
5422
  serverManifest,
5153
5423
  "",
5154
5424
  options ? options.temporaryReferences : void 0,
5155
- body
5425
+ body,
5426
+ options ? options.arraySizeLimit : void 0
5156
5427
  );
5157
5428
  options = getChunk(body, 0);
5158
5429
  close(body);