@vitejs/plugin-rsc 0.5.16 → 0.5.18

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.
Files changed (55) hide show
  1. package/dist/browser.d.ts +2 -2
  2. package/dist/{cjs-DH9Oa3zy.js → cjs-D2v1gYgq.js} +33 -24
  3. package/dist/core/browser.d.ts +1 -1
  4. package/dist/core/browser.js +2 -2
  5. package/dist/core/plugin.js +1 -1
  6. package/dist/core/rsc.d.ts +1 -1
  7. package/dist/core/rsc.js +1 -1
  8. package/dist/core/ssr.d.ts +1 -1
  9. package/dist/core/ssr.js +2 -2
  10. package/dist/{dist-DZUJDIM2.js → dist-yW9-EeG1.js} +1 -1
  11. package/dist/index-CLmWsR1c.d.ts +584 -0
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.js +4 -4
  14. package/dist/{picocolors-kt7Y18A3.js → picocolors-BRyoHAlU.js} +1 -1
  15. package/dist/plugin-BGmSmdwL.js +27 -0
  16. package/dist/{plugin-DBWiu_Dx.js → plugin-Cp12dr0Z.js} +408 -329
  17. package/dist/{plugin-V6VFxi_0.d.ts → plugin-K7i9F4Fd.d.ts} +6 -12
  18. package/dist/plugin.d.ts +2 -2
  19. package/dist/plugin.js +4 -4
  20. package/dist/plugins/cjs.js +1 -1
  21. package/dist/react/browser.d.ts +2 -2
  22. package/dist/react/rsc.js +1 -1
  23. package/dist/{rsc-BCFg12vs.js → rsc-Bhp6O2qz.js} +3 -3
  24. package/dist/rsc.d.ts +2 -2
  25. package/dist/rsc.js +2 -2
  26. package/dist/ssr.d.ts +2 -3
  27. package/dist/ssr.js +1 -1
  28. package/dist/transforms/index.d.ts +1 -1
  29. package/dist/transforms/index.js +1 -1
  30. package/dist/{transforms-D4jDIHgD.js → transforms-B2EJTNXG.js} +2 -2
  31. package/dist/utils/encryption-runtime.js +3 -3
  32. package/dist/utils/rpc.js +1 -1
  33. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.browser.development.js +129 -110
  34. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.browser.production.js +67 -55
  35. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.edge.development.js +127 -108
  36. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.edge.production.js +67 -55
  37. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.node.development.js +127 -108
  38. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.node.production.js +67 -55
  39. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.browser.development.js +625 -351
  40. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.browser.production.js +598 -314
  41. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.edge.development.js +628 -352
  42. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.edge.production.js +601 -315
  43. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.node.development.js +634 -356
  44. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.node.production.js +607 -319
  45. package/dist/vendor/react-server-dom/package.json +3 -3
  46. package/package.json +10 -8
  47. package/dist/index-DJ0AhQ9B.d.ts +0 -90
  48. package/dist/plugin-B1AJWrMi.js +0 -24
  49. /package/dist/{browser-BmyjVnfA.d.ts → browser-s-WcB8A7.d.ts} +0 -0
  50. /package/dist/{chunk-BFhhoFQb.js → chunk-Dj_d7TT4.js} +0 -0
  51. /package/dist/{encryption-utils-BPYvebX4.js → encryption-utils-DdqSKS_O.js} +0 -0
  52. /package/dist/{index-DqoQPvhP.d.ts → index-now_lP2V.d.ts} +0 -0
  53. /package/dist/{rpc-DbBe389F.js → rpc-EIuXyQpO.js} +0 -0
  54. /package/dist/{shared-Chot7h9j.js → shared-CGK4coF3.js} +0 -0
  55. /package/dist/{shared-DEpnONZf.js → shared-rtJPs0Yj.js} +0 -0
@@ -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,13 +4392,25 @@
4310
4392
  }
4311
4393
  }
4312
4394
  function createMap(response, model) {
4313
- return new Map(model);
4395
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4396
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4397
+ response = new Map(model);
4398
+ model.$$consumed = !0;
4399
+ return response;
4314
4400
  }
4315
4401
  function createSet(response, model) {
4316
- return new Set(model);
4402
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4403
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4404
+ response = new Set(model);
4405
+ model.$$consumed = !0;
4406
+ return response;
4317
4407
  }
4318
4408
  function extractIterator(response, model) {
4319
- return model[Symbol.iterator]();
4409
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4410
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4411
+ response = model[Symbol.iterator]();
4412
+ model.$$consumed = !0;
4413
+ return response;
4320
4414
  }
4321
4415
  function createModel(response, model, parentObject, key) {
4322
4416
  return "then" === key && "function" === typeof model ? null : model;
@@ -4327,13 +4421,34 @@
4327
4421
  constructor,
4328
4422
  bytesPerElement,
4329
4423
  parentObject,
4330
- parentKey
4424
+ parentKey,
4425
+ referenceArrayRoot
4331
4426
  ) {
4427
+ function reject(error) {
4428
+ if (!handler.errored) {
4429
+ handler.errored = !0;
4430
+ handler.value = null;
4431
+ handler.reason = error;
4432
+ var chunk = handler.chunk;
4433
+ null !== chunk &&
4434
+ "blocked" === chunk.status &&
4435
+ triggerErrorOnChunk(response, chunk, error);
4436
+ }
4437
+ }
4332
4438
  reference = parseInt(reference.slice(2), 16);
4333
- bytesPerElement = response._prefix + reference;
4334
- if (response._chunks.has(reference))
4439
+ var key = response._prefix + reference;
4440
+ bytesPerElement = response._chunks;
4441
+ if (bytesPerElement.has(reference))
4335
4442
  throw Error("Already initialized typed array.");
4336
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4443
+ bytesPerElement.set(
4444
+ reference,
4445
+ new ReactPromise(
4446
+ "rejected",
4447
+ null,
4448
+ Error("Already initialized typed array.")
4449
+ )
4450
+ );
4451
+ reference = response._formData.get(key).arrayBuffer();
4337
4452
  if (initializingHandler) {
4338
4453
  var handler = initializingHandler;
4339
4454
  handler.deps++;
@@ -4345,40 +4460,32 @@
4345
4460
  deps: 1,
4346
4461
  errored: !1
4347
4462
  };
4348
- reference.then(
4349
- function (buffer) {
4350
- buffer =
4463
+ reference.then(function (buffer) {
4464
+ try {
4465
+ null !== referenceArrayRoot &&
4466
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4467
+ var resolvedValue =
4351
4468
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4352
- parentObject[parentKey] = buffer;
4469
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4353
4470
  "" === parentKey &&
4354
4471
  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
- }
4472
+ (handler.value = resolvedValue);
4473
+ } catch (x) {
4474
+ reject(x);
4475
+ return;
4380
4476
  }
4381
- );
4477
+ handler.deps--;
4478
+ 0 === handler.deps &&
4479
+ ((buffer = handler.chunk),
4480
+ null !== buffer &&
4481
+ "blocked" === buffer.status &&
4482
+ ((resolvedValue = buffer.value),
4483
+ (buffer.status = "fulfilled"),
4484
+ (buffer.value = handler.value),
4485
+ (buffer.reason = null),
4486
+ null !== resolvedValue &&
4487
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4488
+ }, reject);
4382
4489
  return null;
4383
4490
  }
4384
4491
  function resolveStream(response, id, stream, controller) {
@@ -4396,90 +4503,78 @@
4396
4503
  : controller.enqueueModel(chunks));
4397
4504
  }
4398
4505
  function parseReadableStream(response, reference, type) {
4506
+ function enqueue(value) {
4507
+ "bytes" !== type || ArrayBuffer.isView(value)
4508
+ ? controller.enqueue(value)
4509
+ : flightController.error(Error("Invalid data for bytes stream."));
4510
+ }
4399
4511
  reference = parseInt(reference.slice(2), 16);
4400
4512
  if (response._chunks.has(reference))
4401
4513
  throw Error("Already initialized stream.");
4402
4514
  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
- });
4515
+ closed = !1,
4516
+ stream = new ReadableStream({
4517
+ type: type,
4518
+ start: function (c) {
4519
+ controller = c;
4447
4520
  }
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);
4521
+ }),
4522
+ previousBlockedChunk = null,
4523
+ flightController = {
4524
+ enqueueModel: function (json) {
4525
+ if (null === previousBlockedChunk) {
4526
+ var chunk = new ReactPromise(
4527
+ "resolved_model",
4528
+ json,
4529
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4530
+ );
4531
+ initializeModelChunk(chunk);
4532
+ "fulfilled" === chunk.status
4533
+ ? enqueue(chunk.value)
4534
+ : (chunk.then(enqueue, flightController.error),
4535
+ (previousBlockedChunk = chunk));
4536
+ } else {
4537
+ chunk = previousBlockedChunk;
4538
+ var _chunk = new ReactPromise("pending", null, null);
4539
+ _chunk.then(enqueue, flightController.error);
4540
+ previousBlockedChunk = _chunk;
4541
+ chunk.then(function () {
4542
+ previousBlockedChunk === _chunk &&
4543
+ (previousBlockedChunk = null);
4544
+ resolveModelChunk(response, _chunk, json, -1);
4470
4545
  });
4471
4546
  }
4472
- }
4473
- });
4474
- return type;
4475
- }
4476
- function asyncIterator() {
4477
- return this;
4547
+ },
4548
+ close: function () {
4549
+ if (!closed)
4550
+ if (((closed = !0), null === previousBlockedChunk))
4551
+ controller.close();
4552
+ else {
4553
+ var blockedChunk = previousBlockedChunk;
4554
+ previousBlockedChunk = null;
4555
+ blockedChunk.then(function () {
4556
+ return controller.close();
4557
+ });
4558
+ }
4559
+ },
4560
+ error: function (error) {
4561
+ if (!closed)
4562
+ if (((closed = !0), null === previousBlockedChunk))
4563
+ controller.error(error);
4564
+ else {
4565
+ var blockedChunk = previousBlockedChunk;
4566
+ previousBlockedChunk = null;
4567
+ blockedChunk.then(function () {
4568
+ return controller.error(error);
4569
+ });
4570
+ }
4571
+ }
4572
+ };
4573
+ resolveStream(response, reference, stream, flightController);
4574
+ return stream;
4478
4575
  }
4479
- function createIterator(next) {
4480
- next = { next: next };
4481
- next[ASYNC_ITERATOR] = asyncIterator;
4482
- return next;
4576
+ function FlightIterator(next) {
4577
+ this.next = next;
4483
4578
  }
4484
4579
  function parseAsyncIterable(response, reference, iterator) {
4485
4580
  reference = parseInt(reference.slice(2), 16);
@@ -4490,7 +4585,7 @@
4490
4585
  nextWriteIndex = 0,
4491
4586
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4492
4587
  var nextReadIndex = 0;
4493
- return createIterator(function (arg) {
4588
+ return new FlightIterator(function (arg) {
4494
4589
  if (void 0 !== arg)
4495
4590
  throw Error(
4496
4591
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -4569,19 +4664,30 @@
4569
4664
  });
4570
4665
  return iterator;
4571
4666
  }
4572
- function parseModelString(response, obj, key, value, reference) {
4667
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
4573
4668
  if ("$" === value[0]) {
4574
4669
  switch (value[1]) {
4575
4670
  case "$":
4576
- return value.slice(1);
4671
+ return (
4672
+ null !== arrayRoot &&
4673
+ bumpArrayCount(arrayRoot, value.length - 1, response),
4674
+ value.slice(1)
4675
+ );
4577
4676
  case "@":
4578
4677
  return (
4579
4678
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
4580
4679
  );
4581
4680
  case "h":
4582
4681
  return (
4583
- (value = value.slice(2)),
4584
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
4682
+ (arrayRoot = value.slice(2)),
4683
+ getOutlinedModel(
4684
+ response,
4685
+ arrayRoot,
4686
+ obj,
4687
+ key,
4688
+ null,
4689
+ loadServerReference$1
4690
+ )
4585
4691
  );
4586
4692
  case "T":
4587
4693
  if (
@@ -4597,27 +4703,44 @@
4597
4703
  );
4598
4704
  case "Q":
4599
4705
  return (
4600
- (value = value.slice(2)),
4601
- getOutlinedModel(response, value, obj, key, createMap)
4706
+ (arrayRoot = value.slice(2)),
4707
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
4602
4708
  );
4603
4709
  case "W":
4604
4710
  return (
4605
- (value = value.slice(2)),
4606
- getOutlinedModel(response, value, obj, key, createSet)
4711
+ (arrayRoot = value.slice(2)),
4712
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
4607
4713
  );
4608
4714
  case "K":
4609
4715
  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;
4716
+ obj = response._prefix + obj + "_";
4717
+ key = new FormData();
4718
+ response = response._formData;
4719
+ arrayRoot = Array.from(response.keys());
4720
+ for (value = 0; value < arrayRoot.length; value++)
4721
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
4722
+ for (
4723
+ var entries = response.getAll(reference),
4724
+ newKey = reference.slice(obj.length),
4725
+ j = 0;
4726
+ j < entries.length;
4727
+ j++
4728
+ )
4729
+ key.append(newKey, entries[j]);
4730
+ response.delete(reference);
4731
+ }
4732
+ return key;
4617
4733
  case "i":
4618
4734
  return (
4619
- (value = value.slice(2)),
4620
- getOutlinedModel(response, value, obj, key, extractIterator)
4735
+ (arrayRoot = value.slice(2)),
4736
+ getOutlinedModel(
4737
+ response,
4738
+ arrayRoot,
4739
+ obj,
4740
+ key,
4741
+ null,
4742
+ extractIterator
4743
+ )
4621
4744
  );
4622
4745
  case "I":
4623
4746
  return Infinity;
@@ -4630,15 +4753,48 @@
4630
4753
  case "D":
4631
4754
  return new Date(Date.parse(value.slice(2)));
4632
4755
  case "n":
4633
- return BigInt(value.slice(2));
4634
- }
4635
- switch (value[1]) {
4756
+ obj = value.slice(2);
4757
+ if (obj.length > MAX_BIGINT_DIGITS)
4758
+ throw Error(
4759
+ "BigInt is too large. Received " +
4760
+ obj.length +
4761
+ " digits but the limit is " +
4762
+ MAX_BIGINT_DIGITS +
4763
+ "."
4764
+ );
4765
+ null !== arrayRoot &&
4766
+ bumpArrayCount(arrayRoot, obj.length, response);
4767
+ return BigInt(obj);
4636
4768
  case "A":
4637
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
4769
+ return parseTypedArray(
4770
+ response,
4771
+ value,
4772
+ ArrayBuffer,
4773
+ 1,
4774
+ obj,
4775
+ key,
4776
+ arrayRoot
4777
+ );
4638
4778
  case "O":
4639
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
4779
+ return parseTypedArray(
4780
+ response,
4781
+ value,
4782
+ Int8Array,
4783
+ 1,
4784
+ obj,
4785
+ key,
4786
+ arrayRoot
4787
+ );
4640
4788
  case "o":
4641
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
4789
+ return parseTypedArray(
4790
+ response,
4791
+ value,
4792
+ Uint8Array,
4793
+ 1,
4794
+ obj,
4795
+ key,
4796
+ arrayRoot
4797
+ );
4642
4798
  case "U":
4643
4799
  return parseTypedArray(
4644
4800
  response,
@@ -4646,22 +4802,79 @@
4646
4802
  Uint8ClampedArray,
4647
4803
  1,
4648
4804
  obj,
4649
- key
4805
+ key,
4806
+ arrayRoot
4650
4807
  );
4651
4808
  case "S":
4652
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
4809
+ return parseTypedArray(
4810
+ response,
4811
+ value,
4812
+ Int16Array,
4813
+ 2,
4814
+ obj,
4815
+ key,
4816
+ arrayRoot
4817
+ );
4653
4818
  case "s":
4654
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
4819
+ return parseTypedArray(
4820
+ response,
4821
+ value,
4822
+ Uint16Array,
4823
+ 2,
4824
+ obj,
4825
+ key,
4826
+ arrayRoot
4827
+ );
4655
4828
  case "L":
4656
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
4829
+ return parseTypedArray(
4830
+ response,
4831
+ value,
4832
+ Int32Array,
4833
+ 4,
4834
+ obj,
4835
+ key,
4836
+ arrayRoot
4837
+ );
4657
4838
  case "l":
4658
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
4839
+ return parseTypedArray(
4840
+ response,
4841
+ value,
4842
+ Uint32Array,
4843
+ 4,
4844
+ obj,
4845
+ key,
4846
+ arrayRoot
4847
+ );
4659
4848
  case "G":
4660
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
4849
+ return parseTypedArray(
4850
+ response,
4851
+ value,
4852
+ Float32Array,
4853
+ 4,
4854
+ obj,
4855
+ key,
4856
+ arrayRoot
4857
+ );
4661
4858
  case "g":
4662
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
4859
+ return parseTypedArray(
4860
+ response,
4861
+ value,
4862
+ Float64Array,
4863
+ 8,
4864
+ obj,
4865
+ key,
4866
+ arrayRoot
4867
+ );
4663
4868
  case "M":
4664
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
4869
+ return parseTypedArray(
4870
+ response,
4871
+ value,
4872
+ BigInt64Array,
4873
+ 8,
4874
+ obj,
4875
+ key,
4876
+ arrayRoot
4877
+ );
4665
4878
  case "m":
4666
4879
  return parseTypedArray(
4667
4880
  response,
@@ -4669,17 +4882,24 @@
4669
4882
  BigUint64Array,
4670
4883
  8,
4671
4884
  obj,
4672
- key
4885
+ key,
4886
+ arrayRoot
4673
4887
  );
4674
4888
  case "V":
4675
- return parseTypedArray(response, value, DataView, 1, obj, key);
4889
+ return parseTypedArray(
4890
+ response,
4891
+ value,
4892
+ DataView,
4893
+ 1,
4894
+ obj,
4895
+ key,
4896
+ arrayRoot
4897
+ );
4676
4898
  case "B":
4677
4899
  return (
4678
4900
  (obj = parseInt(value.slice(2), 16)),
4679
4901
  response._formData.get(response._prefix + obj)
4680
4902
  );
4681
- }
4682
- switch (value[1]) {
4683
4903
  case "R":
4684
4904
  return parseReadableStream(response, value, void 0);
4685
4905
  case "r":
@@ -4690,8 +4910,16 @@
4690
4910
  return parseAsyncIterable(response, value, !0);
4691
4911
  }
4692
4912
  value = value.slice(1);
4693
- return getOutlinedModel(response, value, obj, key, createModel);
4913
+ return getOutlinedModel(
4914
+ response,
4915
+ value,
4916
+ obj,
4917
+ key,
4918
+ arrayRoot,
4919
+ createModel
4920
+ );
4694
4921
  }
4922
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
4695
4923
  return value;
4696
4924
  }
4697
4925
  function createResponse(
@@ -4703,6 +4931,8 @@
4703
4931
  3 < arguments.length && void 0 !== arguments[3]
4704
4932
  ? arguments[3]
4705
4933
  : new FormData(),
4934
+ arraySizeLimit =
4935
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
4706
4936
  chunks = new Map();
4707
4937
  return {
4708
4938
  _bundlerConfig: bundlerConfig,
@@ -4711,19 +4941,32 @@
4711
4941
  _chunks: chunks,
4712
4942
  _closed: !1,
4713
4943
  _closedReason: null,
4714
- _temporaryReferences: temporaryReferences
4944
+ _temporaryReferences: temporaryReferences,
4945
+ _rootArrayContexts: new WeakMap(),
4946
+ _arraySizeLimit: arraySizeLimit
4715
4947
  };
4716
4948
  }
4717
4949
  function close(response) {
4718
4950
  reportGlobalError(response, Error("Connection closed."));
4719
4951
  }
4720
- function loadServerReference(bundlerConfig, id, bound) {
4952
+ function loadServerReference(bundlerConfig, metaData) {
4953
+ var id = metaData.id;
4954
+ if ("string" !== typeof id) return null;
4721
4955
  var serverReference = resolveServerReference(bundlerConfig, id);
4722
4956
  bundlerConfig = preloadModule(serverReference);
4723
- return bound
4724
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
4957
+ metaData = metaData.bound;
4958
+ return metaData instanceof Promise
4959
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
4725
4960
  _ref = _ref[0];
4726
4961
  var fn = requireModule(serverReference);
4962
+ if (_ref.length > MAX_BOUND_ARGS)
4963
+ throw Error(
4964
+ "Server Function has too many bound arguments. Received " +
4965
+ _ref.length +
4966
+ " but the limit is " +
4967
+ MAX_BOUND_ARGS +
4968
+ "."
4969
+ );
4727
4970
  return fn.bind.apply(fn, [null].concat(_ref));
4728
4971
  })
4729
4972
  : bundlerConfig
@@ -4732,8 +4975,19 @@
4732
4975
  })
4733
4976
  : Promise.resolve(requireModule(serverReference));
4734
4977
  }
4735
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
4736
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
4978
+ function decodeBoundActionMetaData(
4979
+ body,
4980
+ serverManifest,
4981
+ formFieldPrefix,
4982
+ arraySizeLimit
4983
+ ) {
4984
+ body = createResponse(
4985
+ serverManifest,
4986
+ formFieldPrefix,
4987
+ void 0,
4988
+ body,
4989
+ arraySizeLimit
4990
+ );
4737
4991
  close(body);
4738
4992
  body = getChunk(body, 0);
4739
4993
  body.then(function () {});
@@ -5243,7 +5497,7 @@
5243
5497
  patchConsole(console, "table"),
5244
5498
  patchConsole(console, "trace"),
5245
5499
  patchConsole(console, "warn"));
5246
- var ObjectPrototype = Object.prototype,
5500
+ var ObjectPrototype$1 = Object.prototype,
5247
5501
  stringify = JSON.stringify,
5248
5502
  ABORTING = 12,
5249
5503
  CLOSED = 14,
@@ -5278,16 +5532,23 @@
5278
5532
  case "fulfilled":
5279
5533
  if ("function" === typeof resolve) {
5280
5534
  for (
5281
- var inspectedValue = this.value, cycleProtection = 0;
5535
+ var inspectedValue = this.value,
5536
+ cycleProtection = 0,
5537
+ visited = new Set();
5282
5538
  inspectedValue instanceof ReactPromise;
5283
5539
 
5284
5540
  ) {
5285
5541
  cycleProtection++;
5286
- if (inspectedValue === this || 1e3 < cycleProtection) {
5542
+ if (
5543
+ inspectedValue === this ||
5544
+ visited.has(inspectedValue) ||
5545
+ 1e3 < cycleProtection
5546
+ ) {
5287
5547
  "function" === typeof reject &&
5288
5548
  reject(Error("Cannot have cyclic thenables."));
5289
5549
  return;
5290
5550
  }
5551
+ visited.add(inspectedValue);
5291
5552
  if ("fulfilled" === inspectedValue.status)
5292
5553
  inspectedValue = inspectedValue.value;
5293
5554
  else break;
@@ -5308,7 +5569,15 @@
5308
5569
  "function" === typeof reject && reject(this.reason);
5309
5570
  }
5310
5571
  };
5311
- var initializingHandler = null;
5572
+ var ObjectPrototype = Object.prototype,
5573
+ ArrayPrototype = Array.prototype,
5574
+ initializingHandler = null;
5575
+ FlightIterator.prototype = {};
5576
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
5577
+ return this;
5578
+ };
5579
+ var MAX_BIGINT_DIGITS = 300,
5580
+ MAX_BOUND_ARGS = 1e3;
5312
5581
  exports.createClientModuleProxy = function (moduleId) {
5313
5582
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
5314
5583
  return new Proxy(moduleId, proxyHandlers$1);
@@ -5318,20 +5587,24 @@
5318
5587
  };
5319
5588
  exports.decodeAction = function (body, serverManifest) {
5320
5589
  var formData = new FormData(),
5321
- action = null;
5590
+ action = null,
5591
+ seenActions = new Set();
5322
5592
  body.forEach(function (value, key) {
5323
5593
  key.startsWith("$ACTION_")
5324
5594
  ? key.startsWith("$ACTION_REF_")
5325
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
5595
+ ? seenActions.has(key) ||
5596
+ (seenActions.add(key),
5597
+ (value = "$ACTION_" + key.slice(12) + ":"),
5326
5598
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
5327
- (action = loadServerReference(
5328
- serverManifest,
5329
- value.id,
5330
- value.bound
5331
- )))
5599
+ (action = loadServerReference(serverManifest, value)))
5332
5600
  : key.startsWith("$ACTION_ID_") &&
5333
- ((value = key.slice(11)),
5334
- (action = loadServerReference(serverManifest, value, null)))
5601
+ !seenActions.has(key) &&
5602
+ (seenActions.add(key),
5603
+ (value = key.slice(11)),
5604
+ (action = loadServerReference(serverManifest, {
5605
+ id: value,
5606
+ bound: null
5607
+ })))
5335
5608
  : formData.append(key, value);
5336
5609
  });
5337
5610
  return null === action
@@ -5367,7 +5640,8 @@
5367
5640
  webpackMap,
5368
5641
  "",
5369
5642
  options ? options.temporaryReferences : void 0,
5370
- body
5643
+ body,
5644
+ options ? options.arraySizeLimit : void 0
5371
5645
  );
5372
5646
  webpackMap = getChunk(body, 0);
5373
5647
  close(body);