@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
@@ -2384,6 +2384,13 @@
2384
2384
  value
2385
2385
  ) {
2386
2386
  task.model = value;
2387
+ "__proto__" === parentPropertyName &&
2388
+ callWithDebugContextInDEV(request, task, function () {
2389
+ console.error(
2390
+ "Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s",
2391
+ describeObjectForErrorMessage(parent, parentPropertyName)
2392
+ );
2393
+ });
2387
2394
  if (value === REACT_ELEMENT_TYPE) return "$";
2388
2395
  if (null === value) return null;
2389
2396
  if ("object" === typeof value) {
@@ -2577,7 +2584,7 @@
2577
2584
  if (value instanceof Date) return "$D" + value.toJSON();
2578
2585
  elementReference = getPrototypeOf(value);
2579
2586
  if (
2580
- elementReference !== ObjectPrototype &&
2587
+ elementReference !== ObjectPrototype$1 &&
2581
2588
  (null === elementReference ||
2582
2589
  null !== getPrototypeOf(elementReference))
2583
2590
  )
@@ -3159,7 +3166,7 @@
3159
3166
  return serializeDebugBlob(request, value);
3160
3167
  if (getIteratorFn(value)) return Array.from(value);
3161
3168
  request = getPrototypeOf(value);
3162
- if (request !== ObjectPrototype && null !== request) {
3169
+ if (request !== ObjectPrototype$1 && null !== request) {
3163
3170
  counter = Object.create(null);
3164
3171
  for (env in value)
3165
3172
  if (hasOwnProperty.call(value, env) || isGetter(request, env))
@@ -3948,12 +3955,12 @@
3948
3955
  this.value = value;
3949
3956
  this.reason = reason;
3950
3957
  }
3951
- function wakeChunk(response, listeners, value) {
3958
+ function wakeChunk(response, listeners, value, chunk) {
3952
3959
  for (var i = 0; i < listeners.length; i++) {
3953
3960
  var listener = listeners[i];
3954
3961
  "function" === typeof listener
3955
3962
  ? listener(value)
3956
- : fulfillReference(response, listener, value);
3963
+ : fulfillReference(response, listener, value, chunk.reason);
3957
3964
  }
3958
3965
  }
3959
3966
  function rejectChunk(response, listeners, error) {
@@ -3964,27 +3971,6 @@
3964
3971
  : rejectReference(response, listener.handler, error);
3965
3972
  }
3966
3973
  }
3967
- function resolveBlockedCycle(resolvedChunk, reference) {
3968
- var referencedChunk = reference.handler.chunk;
3969
- if (null === referencedChunk) return null;
3970
- if (referencedChunk === resolvedChunk) return reference.handler;
3971
- reference = referencedChunk.value;
3972
- if (null !== reference)
3973
- for (
3974
- referencedChunk = 0;
3975
- referencedChunk < reference.length;
3976
- referencedChunk++
3977
- ) {
3978
- var listener = reference[referencedChunk];
3979
- if (
3980
- "function" !== typeof listener &&
3981
- ((listener = resolveBlockedCycle(resolvedChunk, listener)),
3982
- null !== listener)
3983
- )
3984
- return listener;
3985
- }
3986
- return null;
3987
- }
3988
3974
  function triggerErrorOnChunk(response, chunk, error) {
3989
3975
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
3990
3976
  chunk.reason.error(error);
@@ -4008,57 +3994,25 @@
4008
3994
  chunk.value = value;
4009
3995
  chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
4010
3996
  if (null !== resolveListeners)
4011
- a: switch ((initializeModelChunk(chunk), chunk.status)) {
3997
+ switch ((initializeModelChunk(chunk), chunk.status)) {
4012
3998
  case "fulfilled":
4013
- wakeChunk(response, resolveListeners, chunk.value);
3999
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
4014
4000
  break;
4015
4001
  case "blocked":
4016
- for (value = 0; value < resolveListeners.length; value++)
4017
- if (
4018
- ((id = resolveListeners[value]), "function" !== typeof id)
4019
- ) {
4020
- var cyclicHandler = resolveBlockedCycle(chunk, id);
4021
- if (null !== cyclicHandler)
4022
- switch (
4023
- (fulfillReference(response, id, cyclicHandler.value),
4024
- resolveListeners.splice(value, 1),
4025
- value--,
4026
- null !== rejectListeners &&
4027
- ((id = rejectListeners.indexOf(id)),
4028
- -1 !== id && rejectListeners.splice(id, 1)),
4029
- chunk.status)
4030
- ) {
4031
- case "fulfilled":
4032
- wakeChunk(response, resolveListeners, chunk.value);
4033
- break a;
4034
- case "rejected":
4035
- null !== rejectListeners &&
4036
- rejectChunk(response, rejectListeners, chunk.reason);
4037
- break a;
4038
- }
4039
- }
4040
4002
  case "pending":
4041
4003
  if (chunk.value)
4042
- for (
4043
- response = 0;
4044
- response < resolveListeners.length;
4045
- response++
4046
- )
4047
- chunk.value.push(resolveListeners[response]);
4004
+ for (value = 0; value < resolveListeners.length; value++)
4005
+ chunk.value.push(resolveListeners[value]);
4048
4006
  else chunk.value = resolveListeners;
4049
4007
  if (chunk.reason) {
4050
4008
  if (rejectListeners)
4051
- for (
4052
- resolveListeners = 0;
4053
- resolveListeners < rejectListeners.length;
4054
- resolveListeners++
4055
- )
4056
- chunk.reason.push(rejectListeners[resolveListeners]);
4009
+ for (value = 0; value < rejectListeners.length; value++)
4010
+ chunk.reason.push(rejectListeners[value]);
4057
4011
  } else chunk.reason = rejectListeners;
4058
4012
  break;
4059
4013
  case "rejected":
4060
4014
  rejectListeners &&
4061
- wakeChunk(response, rejectListeners, chunk.reason);
4015
+ rejectChunk(response, rejectListeners, chunk.reason);
4062
4016
  }
4063
4017
  }
4064
4018
  }
@@ -4082,15 +4036,51 @@
4082
4036
  );
4083
4037
  }
4084
4038
  function loadServerReference$1(response, metaData, parentObject, key) {
4039
+ function reject(error) {
4040
+ var rejectListeners = blockedPromise.reason,
4041
+ erroredPromise = blockedPromise;
4042
+ erroredPromise.status = "rejected";
4043
+ erroredPromise.value = null;
4044
+ erroredPromise.reason = error;
4045
+ null !== rejectListeners &&
4046
+ rejectChunk(response, rejectListeners, error);
4047
+ rejectReference(response, handler, error);
4048
+ }
4085
4049
  var id = metaData.id;
4086
4050
  if ("string" !== typeof id || "then" === key) return null;
4051
+ var cachedPromise = metaData.$$promise;
4052
+ if (void 0 !== cachedPromise) {
4053
+ if ("fulfilled" === cachedPromise.status)
4054
+ return (
4055
+ (cachedPromise = cachedPromise.value),
4056
+ "__proto__" === key ? null : (parentObject[key] = cachedPromise)
4057
+ );
4058
+ initializingHandler
4059
+ ? ((id = initializingHandler), id.deps++)
4060
+ : (id = initializingHandler =
4061
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
4062
+ cachedPromise.then(
4063
+ resolveReference.bind(null, response, id, parentObject, key),
4064
+ rejectReference.bind(null, response, id)
4065
+ );
4066
+ return null;
4067
+ }
4068
+ var blockedPromise = new ReactPromise("blocked", null, null);
4069
+ metaData.$$promise = blockedPromise;
4087
4070
  var serverReference = resolveServerReference(response._bundlerConfig, id);
4088
- id = metaData.bound;
4089
- var promise = preloadModule(serverReference);
4090
- if (promise)
4091
- id instanceof ReactPromise && (promise = Promise.all([promise, id]));
4092
- else if (id instanceof ReactPromise) promise = Promise.resolve(id);
4093
- else return requireModule(serverReference);
4071
+ cachedPromise = metaData.bound;
4072
+ if ((id = preloadModule(serverReference)))
4073
+ cachedPromise instanceof ReactPromise &&
4074
+ (id = Promise.all([id, cachedPromise]));
4075
+ else if (cachedPromise instanceof ReactPromise)
4076
+ id = Promise.resolve(cachedPromise);
4077
+ else
4078
+ return (
4079
+ (cachedPromise = requireModule(serverReference)),
4080
+ (id = blockedPromise),
4081
+ (id.status = "fulfilled"),
4082
+ (id.value = cachedPromise)
4083
+ );
4094
4084
  if (initializingHandler) {
4095
4085
  var handler = initializingHandler;
4096
4086
  handler.deps++;
@@ -4102,93 +4092,107 @@
4102
4092
  deps: 1,
4103
4093
  errored: !1
4104
4094
  };
4105
- promise.then(
4106
- function () {
4107
- var resolvedValue = requireModule(serverReference);
4108
- if (metaData.bound) {
4109
- var promiseValue = metaData.bound.value;
4110
- promiseValue = Array.isArray(promiseValue)
4111
- ? promiseValue.slice(0)
4112
- : [];
4113
- promiseValue.unshift(null);
4114
- resolvedValue = resolvedValue.bind.apply(
4115
- resolvedValue,
4116
- promiseValue
4095
+ id.then(function () {
4096
+ var resolvedValue = requireModule(serverReference);
4097
+ if (metaData.bound) {
4098
+ var promiseValue = metaData.bound.value;
4099
+ promiseValue = isArrayImpl(promiseValue) ? promiseValue.slice(0) : [];
4100
+ if (promiseValue.length > MAX_BOUND_ARGS) {
4101
+ reject(
4102
+ Error(
4103
+ "Server Function has too many bound arguments. Received " +
4104
+ promiseValue.length +
4105
+ " but the limit is " +
4106
+ MAX_BOUND_ARGS +
4107
+ "."
4108
+ )
4117
4109
  );
4110
+ return;
4118
4111
  }
4119
- parentObject[key] = resolvedValue;
4120
- "" === key &&
4121
- null === handler.value &&
4122
- (handler.value = resolvedValue);
4123
- handler.deps--;
4124
- 0 === handler.deps &&
4125
- ((resolvedValue = handler.chunk),
4126
- null !== resolvedValue &&
4127
- "blocked" === resolvedValue.status &&
4128
- ((promiseValue = resolvedValue.value),
4129
- (resolvedValue.status = "fulfilled"),
4130
- (resolvedValue.value = handler.value),
4131
- (resolvedValue.reason = null),
4132
- null !== promiseValue &&
4133
- wakeChunk(response, promiseValue, handler.value)));
4134
- },
4135
- function (error) {
4136
- if (!handler.errored) {
4137
- handler.errored = !0;
4138
- handler.value = null;
4139
- handler.reason = error;
4140
- var chunk = handler.chunk;
4141
- null !== chunk &&
4142
- "blocked" === chunk.status &&
4143
- triggerErrorOnChunk(response, chunk, error);
4144
- }
4112
+ promiseValue.unshift(null);
4113
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
4145
4114
  }
4146
- );
4115
+ promiseValue = blockedPromise.value;
4116
+ var initializedPromise = blockedPromise;
4117
+ initializedPromise.status = "fulfilled";
4118
+ initializedPromise.value = resolvedValue;
4119
+ initializedPromise.reason = null;
4120
+ null !== promiseValue &&
4121
+ wakeChunk(response, promiseValue, resolvedValue, initializedPromise);
4122
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4123
+ }, reject);
4147
4124
  return null;
4148
4125
  }
4149
- function reviveModel(response, parentObj, parentKey, value, reference) {
4126
+ function reviveModel(
4127
+ response,
4128
+ parentObj,
4129
+ parentKey,
4130
+ value,
4131
+ reference,
4132
+ arrayRoot
4133
+ ) {
4150
4134
  if ("string" === typeof value)
4151
4135
  return parseModelString(
4152
4136
  response,
4153
4137
  parentObj,
4154
4138
  parentKey,
4155
4139
  value,
4156
- reference
4140
+ reference,
4141
+ arrayRoot
4157
4142
  );
4158
4143
  if ("object" === typeof value && null !== value)
4159
4144
  if (
4160
4145
  (void 0 !== reference &&
4161
4146
  void 0 !== response._temporaryReferences &&
4162
4147
  response._temporaryReferences.set(value, reference),
4163
- Array.isArray(value))
4164
- )
4165
- for (var i = 0; i < value.length; i++)
4166
- value[i] = reviveModel(
4148
+ isArrayImpl(value))
4149
+ ) {
4150
+ if (null === arrayRoot) {
4151
+ var childContext = { count: 0, fork: !1 };
4152
+ response._rootArrayContexts.set(value, childContext);
4153
+ } else childContext = arrayRoot;
4154
+ 1 < value.length && (childContext.fork = !0);
4155
+ bumpArrayCount(childContext, value.length + 1, response);
4156
+ for (parentObj = 0; parentObj < value.length; parentObj++)
4157
+ value[parentObj] = reviveModel(
4167
4158
  response,
4168
4159
  value,
4169
- "" + i,
4170
- value[i],
4171
- void 0 !== reference ? reference + ":" + i : void 0
4160
+ "" + parentObj,
4161
+ value[parentObj],
4162
+ void 0 !== reference ? reference + ":" + parentObj : void 0,
4163
+ childContext
4172
4164
  );
4173
- else
4174
- for (i in value)
4175
- hasOwnProperty.call(value, i) &&
4176
- ((parentObj =
4177
- void 0 !== reference && -1 === i.indexOf(":")
4178
- ? reference + ":" + i
4179
- : void 0),
4180
- (parentObj = reviveModel(
4181
- response,
4182
- value,
4183
- i,
4184
- value[i],
4185
- parentObj
4186
- )),
4187
- void 0 !== parentObj || "__proto__" === i
4188
- ? (value[i] = parentObj)
4189
- : delete value[i]);
4165
+ } else
4166
+ for (childContext in value)
4167
+ hasOwnProperty.call(value, childContext) &&
4168
+ ("__proto__" === childContext
4169
+ ? delete value[childContext]
4170
+ : ((parentObj =
4171
+ void 0 !== reference && -1 === childContext.indexOf(":")
4172
+ ? reference + ":" + childContext
4173
+ : void 0),
4174
+ (parentObj = reviveModel(
4175
+ response,
4176
+ value,
4177
+ childContext,
4178
+ value[childContext],
4179
+ parentObj,
4180
+ null
4181
+ )),
4182
+ void 0 !== parentObj
4183
+ ? (value[childContext] = parentObj)
4184
+ : delete value[childContext]));
4190
4185
  return value;
4191
4186
  }
4187
+ function bumpArrayCount(arrayContext, slots, response) {
4188
+ if (
4189
+ (arrayContext.count += slots) > response._arraySizeLimit &&
4190
+ arrayContext.fork
4191
+ )
4192
+ throw Error(
4193
+ "Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects."
4194
+ );
4195
+ }
4192
4196
  function initializeModelChunk(chunk) {
4193
4197
  var prevHandler = initializingHandler;
4194
4198
  initializingHandler = null;
@@ -4202,13 +4206,15 @@
4202
4206
  chunk.value = null;
4203
4207
  chunk.reason = null;
4204
4208
  try {
4205
- var rawModel = JSON.parse(resolvedModel),
4206
- value = reviveModel(
4209
+ var rawModel = JSON.parse(resolvedModel);
4210
+ resolvedModel = { count: 0, fork: !1 };
4211
+ var value = reviveModel(
4207
4212
  response,
4208
4213
  { "": rawModel },
4209
4214
  "",
4210
4215
  rawModel,
4211
- _chunk$reason
4216
+ _chunk$reason,
4217
+ resolvedModel
4212
4218
  ),
4213
4219
  resolveListeners = chunk.value;
4214
4220
  if (null !== resolveListeners)
@@ -4220,19 +4226,20 @@
4220
4226
  var listener = resolveListeners[rawModel];
4221
4227
  "function" === typeof listener
4222
4228
  ? listener(value)
4223
- : fulfillReference(response, listener, value);
4229
+ : fulfillReference(response, listener, value, resolvedModel);
4224
4230
  }
4225
4231
  if (null !== initializingHandler) {
4226
4232
  if (initializingHandler.errored) throw initializingHandler.reason;
4227
4233
  if (0 < initializingHandler.deps) {
4228
4234
  initializingHandler.value = value;
4235
+ initializingHandler.reason = resolvedModel;
4229
4236
  initializingHandler.chunk = chunk;
4230
4237
  return;
4231
4238
  }
4232
4239
  }
4233
4240
  chunk.status = "fulfilled";
4234
4241
  chunk.value = value;
4235
- chunk.reason = null;
4242
+ chunk.reason = resolvedModel;
4236
4243
  } catch (error) {
4237
4244
  (chunk.status = "rejected"), (chunk.reason = error);
4238
4245
  } finally {
@@ -4247,7 +4254,8 @@
4247
4254
  ? triggerErrorOnChunk(response, chunk, error)
4248
4255
  : "fulfilled" === chunk.status &&
4249
4256
  null !== chunk.reason &&
4250
- chunk.reason.error(error);
4257
+ ((chunk = chunk.reason),
4258
+ "function" === typeof chunk.error && chunk.error(error));
4251
4259
  });
4252
4260
  }
4253
4261
  function getChunk(response, id) {
@@ -4268,40 +4276,74 @@
4268
4276
  chunks.set(id, chunk));
4269
4277
  return chunk;
4270
4278
  }
4271
- function fulfillReference(response, reference, value) {
4279
+ function fulfillReference(response, reference, value, arrayRoot) {
4272
4280
  var handler = reference.handler,
4273
4281
  parentObject = reference.parentObject,
4274
4282
  key = reference.key,
4275
4283
  map = reference.map,
4276
4284
  path = reference.path;
4277
4285
  try {
4278
- for (var i = 1; i < path.length; i++) {
4286
+ for (
4287
+ var localLength = 0,
4288
+ rootArrayContexts = response._rootArrayContexts,
4289
+ i = 1;
4290
+ i < path.length;
4291
+ i++
4292
+ ) {
4279
4293
  var name = path[i];
4280
4294
  if (
4281
4295
  "object" !== typeof value ||
4282
- !hasOwnProperty.call(value, name) ||
4283
- value instanceof Promise
4296
+ null === value ||
4297
+ (getPrototypeOf(value) !== ObjectPrototype &&
4298
+ getPrototypeOf(value) !== ArrayPrototype) ||
4299
+ !hasOwnProperty.call(value, name)
4284
4300
  )
4285
4301
  throw Error("Invalid reference.");
4286
4302
  value = value[name];
4303
+ if (isArrayImpl(value))
4304
+ (localLength = 0),
4305
+ (arrayRoot = rootArrayContexts.get(value) || arrayRoot);
4306
+ else if (((arrayRoot = null), "string" === typeof value))
4307
+ localLength = value.length;
4308
+ else if ("bigint" === typeof value) {
4309
+ var n = Math.abs(Number(value));
4310
+ localLength = 0 === n ? 1 : Math.floor(Math.log10(n)) + 1;
4311
+ } else localLength = ArrayBuffer.isView(value) ? value.byteLength : 0;
4287
4312
  }
4288
- var mappedValue = map(response, value, parentObject, key);
4289
- parentObject[key] = mappedValue;
4290
- "" === key && null === handler.value && (handler.value = mappedValue);
4313
+ var resolvedValue = map(response, value, parentObject, key);
4314
+ var referenceArrayRoot = reference.arrayRoot;
4315
+ null !== referenceArrayRoot &&
4316
+ (null !== arrayRoot
4317
+ ? (arrayRoot.fork && (referenceArrayRoot.fork = !0),
4318
+ bumpArrayCount(referenceArrayRoot, arrayRoot.count, response))
4319
+ : 0 < localLength &&
4320
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4291
4321
  } catch (error) {
4292
- rejectReference(response, reference.handler, error);
4322
+ rejectReference(response, handler, error);
4293
4323
  return;
4294
4324
  }
4325
+ resolveReference(response, handler, parentObject, key, resolvedValue);
4326
+ }
4327
+ function resolveReference(
4328
+ response,
4329
+ handler,
4330
+ parentObject,
4331
+ key,
4332
+ resolvedValue
4333
+ ) {
4334
+ "__proto__" !== key && (parentObject[key] = resolvedValue);
4335
+ "" === key && null === handler.value && (handler.value = resolvedValue);
4295
4336
  handler.deps--;
4296
4337
  0 === handler.deps &&
4297
- ((reference = handler.chunk),
4298
- null !== reference &&
4299
- "blocked" === reference.status &&
4300
- ((value = reference.value),
4301
- (reference.status = "fulfilled"),
4302
- (reference.value = handler.value),
4303
- (reference.reason = handler.reason),
4304
- null !== value && wakeChunk(response, value, handler.value)));
4338
+ ((parentObject = handler.chunk),
4339
+ null !== parentObject &&
4340
+ "blocked" === parentObject.status &&
4341
+ ((key = parentObject.value),
4342
+ (parentObject.status = "fulfilled"),
4343
+ (parentObject.value = handler.value),
4344
+ (parentObject.reason = handler.reason),
4345
+ null !== key &&
4346
+ wakeChunk(response, key, handler.value, parentObject)));
4305
4347
  }
4306
4348
  function rejectReference(response, handler, error) {
4307
4349
  handler.errored ||
@@ -4313,29 +4355,66 @@
4313
4355
  "blocked" === handler.status &&
4314
4356
  triggerErrorOnChunk(response, handler, error));
4315
4357
  }
4316
- function getOutlinedModel(response, reference, parentObject, key, map) {
4358
+ function getOutlinedModel(
4359
+ response,
4360
+ reference,
4361
+ parentObject,
4362
+ key,
4363
+ referenceArrayRoot,
4364
+ map
4365
+ ) {
4317
4366
  reference = reference.split(":");
4318
- var id = parseInt(reference[0], 16);
4319
- id = getChunk(response, id);
4320
- switch (id.status) {
4367
+ var id = parseInt(reference[0], 16),
4368
+ chunk = getChunk(response, id);
4369
+ switch (chunk.status) {
4321
4370
  case "resolved_model":
4322
- initializeModelChunk(id);
4371
+ initializeModelChunk(chunk);
4323
4372
  }
4324
- switch (id.status) {
4373
+ switch (chunk.status) {
4325
4374
  case "fulfilled":
4326
- id = id.value;
4327
- for (var i = 1; i < reference.length; i++) {
4328
- var name = reference[i];
4375
+ id = chunk.value;
4376
+ chunk = chunk.reason;
4377
+ for (
4378
+ var localLength = 0,
4379
+ rootArrayContexts = response._rootArrayContexts,
4380
+ i = 1;
4381
+ i < reference.length;
4382
+ i++
4383
+ ) {
4384
+ localLength = reference[i];
4329
4385
  if (
4330
4386
  "object" !== typeof id ||
4331
- !hasOwnProperty.call(id, name) ||
4332
- id instanceof Promise
4387
+ null === id ||
4388
+ (getPrototypeOf(id) !== ObjectPrototype &&
4389
+ getPrototypeOf(id) !== ArrayPrototype) ||
4390
+ !hasOwnProperty.call(id, localLength)
4333
4391
  )
4334
4392
  throw Error("Invalid reference.");
4335
- id = id[name];
4393
+ id = id[localLength];
4394
+ isArrayImpl(id)
4395
+ ? ((localLength = 0),
4396
+ (chunk = rootArrayContexts.get(id) || chunk))
4397
+ : ((chunk = null),
4398
+ "string" === typeof id
4399
+ ? (localLength = id.length)
4400
+ : "bigint" === typeof id
4401
+ ? ((localLength = Math.abs(Number(id))),
4402
+ (localLength =
4403
+ 0 === localLength
4404
+ ? 1
4405
+ : Math.floor(Math.log10(localLength)) + 1))
4406
+ : (localLength = ArrayBuffer.isView(id)
4407
+ ? id.byteLength
4408
+ : 0));
4336
4409
  }
4337
- return map(response, id, parentObject, key);
4338
- case "pending":
4410
+ parentObject = map(response, id, parentObject, key);
4411
+ null !== referenceArrayRoot &&
4412
+ (null !== chunk
4413
+ ? (chunk.fork && (referenceArrayRoot.fork = !0),
4414
+ bumpArrayCount(referenceArrayRoot, chunk.count, response))
4415
+ : 0 < localLength &&
4416
+ bumpArrayCount(referenceArrayRoot, localLength, response));
4417
+ return parentObject;
4339
4418
  case "blocked":
4340
4419
  return (
4341
4420
  initializingHandler
@@ -4348,31 +4427,34 @@
4348
4427
  deps: 1,
4349
4428
  errored: !1
4350
4429
  }),
4351
- (parentObject = {
4430
+ (referenceArrayRoot = {
4352
4431
  handler: response,
4353
4432
  parentObject: parentObject,
4354
4433
  key: key,
4355
4434
  map: map,
4356
- path: reference
4435
+ path: reference,
4436
+ arrayRoot: referenceArrayRoot
4357
4437
  }),
4358
- null === id.value
4359
- ? (id.value = [parentObject])
4360
- : id.value.push(parentObject),
4361
- null === id.reason
4362
- ? (id.reason = [parentObject])
4363
- : id.reason.push(parentObject),
4438
+ null === chunk.value
4439
+ ? (chunk.value = [referenceArrayRoot])
4440
+ : chunk.value.push(referenceArrayRoot),
4441
+ null === chunk.reason
4442
+ ? (chunk.reason = [referenceArrayRoot])
4443
+ : chunk.reason.push(referenceArrayRoot),
4364
4444
  null
4365
4445
  );
4446
+ case "pending":
4447
+ throw Error("Invalid forward reference.");
4366
4448
  default:
4367
4449
  return (
4368
4450
  initializingHandler
4369
4451
  ? ((initializingHandler.errored = !0),
4370
4452
  (initializingHandler.value = null),
4371
- (initializingHandler.reason = id.reason))
4453
+ (initializingHandler.reason = chunk.reason))
4372
4454
  : (initializingHandler = {
4373
4455
  chunk: null,
4374
4456
  value: null,
4375
- reason: id.reason,
4457
+ reason: chunk.reason,
4376
4458
  deps: 0,
4377
4459
  errored: !0
4378
4460
  }),
@@ -4381,13 +4463,25 @@
4381
4463
  }
4382
4464
  }
4383
4465
  function createMap(response, model) {
4384
- return new Map(model);
4466
+ if (!isArrayImpl(model)) throw Error("Invalid Map initializer.");
4467
+ if (!0 === model.$$consumed) throw Error("Already initialized Map.");
4468
+ response = new Map(model);
4469
+ model.$$consumed = !0;
4470
+ return response;
4385
4471
  }
4386
4472
  function createSet(response, model) {
4387
- return new Set(model);
4473
+ if (!isArrayImpl(model)) throw Error("Invalid Set initializer.");
4474
+ if (!0 === model.$$consumed) throw Error("Already initialized Set.");
4475
+ response = new Set(model);
4476
+ model.$$consumed = !0;
4477
+ return response;
4388
4478
  }
4389
4479
  function extractIterator(response, model) {
4390
- return model[Symbol.iterator]();
4480
+ if (!isArrayImpl(model)) throw Error("Invalid Iterator initializer.");
4481
+ if (!0 === model.$$consumed) throw Error("Already initialized Iterator.");
4482
+ response = model[Symbol.iterator]();
4483
+ model.$$consumed = !0;
4484
+ return response;
4391
4485
  }
4392
4486
  function createModel(response, model, parentObject, key) {
4393
4487
  return "then" === key && "function" === typeof model ? null : model;
@@ -4398,13 +4492,34 @@
4398
4492
  constructor,
4399
4493
  bytesPerElement,
4400
4494
  parentObject,
4401
- parentKey
4495
+ parentKey,
4496
+ referenceArrayRoot
4402
4497
  ) {
4498
+ function reject(error) {
4499
+ if (!handler.errored) {
4500
+ handler.errored = !0;
4501
+ handler.value = null;
4502
+ handler.reason = error;
4503
+ var chunk = handler.chunk;
4504
+ null !== chunk &&
4505
+ "blocked" === chunk.status &&
4506
+ triggerErrorOnChunk(response, chunk, error);
4507
+ }
4508
+ }
4403
4509
  reference = parseInt(reference.slice(2), 16);
4404
- bytesPerElement = response._prefix + reference;
4405
- if (response._chunks.has(reference))
4510
+ var key = response._prefix + reference;
4511
+ bytesPerElement = response._chunks;
4512
+ if (bytesPerElement.has(reference))
4406
4513
  throw Error("Already initialized typed array.");
4407
- reference = response._formData.get(bytesPerElement).arrayBuffer();
4514
+ bytesPerElement.set(
4515
+ reference,
4516
+ new ReactPromise(
4517
+ "rejected",
4518
+ null,
4519
+ Error("Already initialized typed array.")
4520
+ )
4521
+ );
4522
+ reference = response._formData.get(key).arrayBuffer();
4408
4523
  if (initializingHandler) {
4409
4524
  var handler = initializingHandler;
4410
4525
  handler.deps++;
@@ -4416,40 +4531,32 @@
4416
4531
  deps: 1,
4417
4532
  errored: !1
4418
4533
  };
4419
- reference.then(
4420
- function (buffer) {
4421
- buffer =
4534
+ reference.then(function (buffer) {
4535
+ try {
4536
+ null !== referenceArrayRoot &&
4537
+ bumpArrayCount(referenceArrayRoot, buffer.byteLength, response);
4538
+ var resolvedValue =
4422
4539
  constructor === ArrayBuffer ? buffer : new constructor(buffer);
4423
- parentObject[parentKey] = buffer;
4540
+ "__proto__" !== key && (parentObject[parentKey] = resolvedValue);
4424
4541
  "" === parentKey &&
4425
4542
  null === handler.value &&
4426
- (handler.value = buffer);
4427
- handler.deps--;
4428
- if (
4429
- 0 === handler.deps &&
4430
- ((buffer = handler.chunk),
4431
- null !== buffer && "blocked" === buffer.status)
4432
- ) {
4433
- var resolveListeners = buffer.value;
4434
- buffer.status = "fulfilled";
4435
- buffer.value = handler.value;
4436
- buffer.reason = null;
4437
- null !== resolveListeners &&
4438
- wakeChunk(response, resolveListeners, handler.value);
4439
- }
4440
- },
4441
- function (error) {
4442
- if (!handler.errored) {
4443
- handler.errored = !0;
4444
- handler.value = null;
4445
- handler.reason = error;
4446
- var chunk = handler.chunk;
4447
- null !== chunk &&
4448
- "blocked" === chunk.status &&
4449
- triggerErrorOnChunk(response, chunk, error);
4450
- }
4543
+ (handler.value = resolvedValue);
4544
+ } catch (x) {
4545
+ reject(x);
4546
+ return;
4451
4547
  }
4452
- );
4548
+ handler.deps--;
4549
+ 0 === handler.deps &&
4550
+ ((buffer = handler.chunk),
4551
+ null !== buffer &&
4552
+ "blocked" === buffer.status &&
4553
+ ((resolvedValue = buffer.value),
4554
+ (buffer.status = "fulfilled"),
4555
+ (buffer.value = handler.value),
4556
+ (buffer.reason = null),
4557
+ null !== resolvedValue &&
4558
+ wakeChunk(response, resolvedValue, handler.value, buffer)));
4559
+ }, reject);
4453
4560
  return null;
4454
4561
  }
4455
4562
  function resolveStream(response, id, stream, controller) {
@@ -4467,90 +4574,78 @@
4467
4574
  : controller.enqueueModel(chunks));
4468
4575
  }
4469
4576
  function parseReadableStream(response, reference, type) {
4577
+ function enqueue(value) {
4578
+ "bytes" !== type || ArrayBuffer.isView(value)
4579
+ ? controller.enqueue(value)
4580
+ : flightController.error(Error("Invalid data for bytes stream."));
4581
+ }
4470
4582
  reference = parseInt(reference.slice(2), 16);
4471
4583
  if (response._chunks.has(reference))
4472
4584
  throw Error("Already initialized stream.");
4473
4585
  var controller = null,
4474
- closed = !1;
4475
- type = new ReadableStream({
4476
- type: type,
4477
- start: function (c) {
4478
- controller = c;
4479
- }
4480
- });
4481
- var previousBlockedChunk = null;
4482
- resolveStream(response, reference, type, {
4483
- enqueueModel: function (json) {
4484
- if (null === previousBlockedChunk) {
4485
- var chunk = new ReactPromise(
4486
- "resolved_model",
4487
- json,
4488
- _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4489
- );
4490
- initializeModelChunk(chunk);
4491
- "fulfilled" === chunk.status
4492
- ? controller.enqueue(chunk.value)
4493
- : (chunk.then(
4494
- function (v) {
4495
- return controller.enqueue(v);
4496
- },
4497
- function (e) {
4498
- return controller.error(e);
4499
- }
4500
- ),
4501
- (previousBlockedChunk = chunk));
4502
- } else {
4503
- chunk = previousBlockedChunk;
4504
- var _chunk = new ReactPromise("pending", null, null);
4505
- _chunk.then(
4506
- function (v) {
4507
- return controller.enqueue(v);
4508
- },
4509
- function (e) {
4510
- return controller.error(e);
4511
- }
4512
- );
4513
- previousBlockedChunk = _chunk;
4514
- chunk.then(function () {
4515
- previousBlockedChunk === _chunk && (previousBlockedChunk = null);
4516
- resolveModelChunk(response, _chunk, json, -1);
4517
- });
4586
+ closed = !1,
4587
+ stream = new ReadableStream({
4588
+ type: type,
4589
+ start: function (c) {
4590
+ controller = c;
4518
4591
  }
4519
- },
4520
- close: function () {
4521
- if (!closed)
4522
- if (((closed = !0), null === previousBlockedChunk))
4523
- controller.close();
4524
- else {
4525
- var blockedChunk = previousBlockedChunk;
4526
- previousBlockedChunk = null;
4527
- blockedChunk.then(function () {
4528
- return controller.close();
4529
- });
4530
- }
4531
- },
4532
- error: function (error) {
4533
- if (!closed)
4534
- if (((closed = !0), null === previousBlockedChunk))
4535
- controller.error(error);
4536
- else {
4537
- var blockedChunk = previousBlockedChunk;
4538
- previousBlockedChunk = null;
4539
- blockedChunk.then(function () {
4540
- return controller.error(error);
4592
+ }),
4593
+ previousBlockedChunk = null,
4594
+ flightController = {
4595
+ enqueueModel: function (json) {
4596
+ if (null === previousBlockedChunk) {
4597
+ var chunk = new ReactPromise(
4598
+ "resolved_model",
4599
+ json,
4600
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
4601
+ );
4602
+ initializeModelChunk(chunk);
4603
+ "fulfilled" === chunk.status
4604
+ ? enqueue(chunk.value)
4605
+ : (chunk.then(enqueue, flightController.error),
4606
+ (previousBlockedChunk = chunk));
4607
+ } else {
4608
+ chunk = previousBlockedChunk;
4609
+ var _chunk = new ReactPromise("pending", null, null);
4610
+ _chunk.then(enqueue, flightController.error);
4611
+ previousBlockedChunk = _chunk;
4612
+ chunk.then(function () {
4613
+ previousBlockedChunk === _chunk &&
4614
+ (previousBlockedChunk = null);
4615
+ resolveModelChunk(response, _chunk, json, -1);
4541
4616
  });
4542
4617
  }
4543
- }
4544
- });
4545
- return type;
4546
- }
4547
- function asyncIterator() {
4548
- return this;
4618
+ },
4619
+ close: function () {
4620
+ if (!closed)
4621
+ if (((closed = !0), null === previousBlockedChunk))
4622
+ controller.close();
4623
+ else {
4624
+ var blockedChunk = previousBlockedChunk;
4625
+ previousBlockedChunk = null;
4626
+ blockedChunk.then(function () {
4627
+ return controller.close();
4628
+ });
4629
+ }
4630
+ },
4631
+ error: function (error) {
4632
+ if (!closed)
4633
+ if (((closed = !0), null === previousBlockedChunk))
4634
+ controller.error(error);
4635
+ else {
4636
+ var blockedChunk = previousBlockedChunk;
4637
+ previousBlockedChunk = null;
4638
+ blockedChunk.then(function () {
4639
+ return controller.error(error);
4640
+ });
4641
+ }
4642
+ }
4643
+ };
4644
+ resolveStream(response, reference, stream, flightController);
4645
+ return stream;
4549
4646
  }
4550
- function createIterator(next) {
4551
- next = { next: next };
4552
- next[ASYNC_ITERATOR] = asyncIterator;
4553
- return next;
4647
+ function FlightIterator(next) {
4648
+ this.next = next;
4554
4649
  }
4555
4650
  function parseAsyncIterable(response, reference, iterator) {
4556
4651
  reference = parseInt(reference.slice(2), 16);
@@ -4561,7 +4656,7 @@
4561
4656
  nextWriteIndex = 0,
4562
4657
  iterable = _defineProperty({}, ASYNC_ITERATOR, function () {
4563
4658
  var nextReadIndex = 0;
4564
- return createIterator(function (arg) {
4659
+ return new FlightIterator(function (arg) {
4565
4660
  if (void 0 !== arg)
4566
4661
  throw Error(
4567
4662
  "Values cannot be passed to next() of AsyncIterables passed to Client Components."
@@ -4640,19 +4735,30 @@
4640
4735
  });
4641
4736
  return iterator;
4642
4737
  }
4643
- function parseModelString(response, obj, key, value, reference) {
4738
+ function parseModelString(response, obj, key, value, reference, arrayRoot) {
4644
4739
  if ("$" === value[0]) {
4645
4740
  switch (value[1]) {
4646
4741
  case "$":
4647
- return value.slice(1);
4742
+ return (
4743
+ null !== arrayRoot &&
4744
+ bumpArrayCount(arrayRoot, value.length - 1, response),
4745
+ value.slice(1)
4746
+ );
4648
4747
  case "@":
4649
4748
  return (
4650
4749
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
4651
4750
  );
4652
4751
  case "h":
4653
4752
  return (
4654
- (value = value.slice(2)),
4655
- getOutlinedModel(response, value, obj, key, loadServerReference$1)
4753
+ (arrayRoot = value.slice(2)),
4754
+ getOutlinedModel(
4755
+ response,
4756
+ arrayRoot,
4757
+ obj,
4758
+ key,
4759
+ null,
4760
+ loadServerReference$1
4761
+ )
4656
4762
  );
4657
4763
  case "T":
4658
4764
  if (
@@ -4668,27 +4774,44 @@
4668
4774
  );
4669
4775
  case "Q":
4670
4776
  return (
4671
- (value = value.slice(2)),
4672
- getOutlinedModel(response, value, obj, key, createMap)
4777
+ (arrayRoot = value.slice(2)),
4778
+ getOutlinedModel(response, arrayRoot, obj, key, null, createMap)
4673
4779
  );
4674
4780
  case "W":
4675
4781
  return (
4676
- (value = value.slice(2)),
4677
- getOutlinedModel(response, value, obj, key, createSet)
4782
+ (arrayRoot = value.slice(2)),
4783
+ getOutlinedModel(response, arrayRoot, obj, key, null, createSet)
4678
4784
  );
4679
4785
  case "K":
4680
4786
  obj = value.slice(2);
4681
- var formPrefix = response._prefix + obj + "_",
4682
- data = new FormData();
4683
- response._formData.forEach(function (entry, entryKey) {
4684
- entryKey.startsWith(formPrefix) &&
4685
- data.append(entryKey.slice(formPrefix.length), entry);
4686
- });
4687
- return data;
4787
+ obj = response._prefix + obj + "_";
4788
+ key = new FormData();
4789
+ response = response._formData;
4790
+ arrayRoot = Array.from(response.keys());
4791
+ for (value = 0; value < arrayRoot.length; value++)
4792
+ if (((reference = arrayRoot[value]), reference.startsWith(obj))) {
4793
+ for (
4794
+ var entries = response.getAll(reference),
4795
+ newKey = reference.slice(obj.length),
4796
+ j = 0;
4797
+ j < entries.length;
4798
+ j++
4799
+ )
4800
+ key.append(newKey, entries[j]);
4801
+ response.delete(reference);
4802
+ }
4803
+ return key;
4688
4804
  case "i":
4689
4805
  return (
4690
- (value = value.slice(2)),
4691
- getOutlinedModel(response, value, obj, key, extractIterator)
4806
+ (arrayRoot = value.slice(2)),
4807
+ getOutlinedModel(
4808
+ response,
4809
+ arrayRoot,
4810
+ obj,
4811
+ key,
4812
+ null,
4813
+ extractIterator
4814
+ )
4692
4815
  );
4693
4816
  case "I":
4694
4817
  return Infinity;
@@ -4701,15 +4824,48 @@
4701
4824
  case "D":
4702
4825
  return new Date(Date.parse(value.slice(2)));
4703
4826
  case "n":
4704
- return BigInt(value.slice(2));
4705
- }
4706
- switch (value[1]) {
4827
+ obj = value.slice(2);
4828
+ if (obj.length > MAX_BIGINT_DIGITS)
4829
+ throw Error(
4830
+ "BigInt is too large. Received " +
4831
+ obj.length +
4832
+ " digits but the limit is " +
4833
+ MAX_BIGINT_DIGITS +
4834
+ "."
4835
+ );
4836
+ null !== arrayRoot &&
4837
+ bumpArrayCount(arrayRoot, obj.length, response);
4838
+ return BigInt(obj);
4707
4839
  case "A":
4708
- return parseTypedArray(response, value, ArrayBuffer, 1, obj, key);
4840
+ return parseTypedArray(
4841
+ response,
4842
+ value,
4843
+ ArrayBuffer,
4844
+ 1,
4845
+ obj,
4846
+ key,
4847
+ arrayRoot
4848
+ );
4709
4849
  case "O":
4710
- return parseTypedArray(response, value, Int8Array, 1, obj, key);
4850
+ return parseTypedArray(
4851
+ response,
4852
+ value,
4853
+ Int8Array,
4854
+ 1,
4855
+ obj,
4856
+ key,
4857
+ arrayRoot
4858
+ );
4711
4859
  case "o":
4712
- return parseTypedArray(response, value, Uint8Array, 1, obj, key);
4860
+ return parseTypedArray(
4861
+ response,
4862
+ value,
4863
+ Uint8Array,
4864
+ 1,
4865
+ obj,
4866
+ key,
4867
+ arrayRoot
4868
+ );
4713
4869
  case "U":
4714
4870
  return parseTypedArray(
4715
4871
  response,
@@ -4717,22 +4873,79 @@
4717
4873
  Uint8ClampedArray,
4718
4874
  1,
4719
4875
  obj,
4720
- key
4876
+ key,
4877
+ arrayRoot
4721
4878
  );
4722
4879
  case "S":
4723
- return parseTypedArray(response, value, Int16Array, 2, obj, key);
4880
+ return parseTypedArray(
4881
+ response,
4882
+ value,
4883
+ Int16Array,
4884
+ 2,
4885
+ obj,
4886
+ key,
4887
+ arrayRoot
4888
+ );
4724
4889
  case "s":
4725
- return parseTypedArray(response, value, Uint16Array, 2, obj, key);
4890
+ return parseTypedArray(
4891
+ response,
4892
+ value,
4893
+ Uint16Array,
4894
+ 2,
4895
+ obj,
4896
+ key,
4897
+ arrayRoot
4898
+ );
4726
4899
  case "L":
4727
- return parseTypedArray(response, value, Int32Array, 4, obj, key);
4900
+ return parseTypedArray(
4901
+ response,
4902
+ value,
4903
+ Int32Array,
4904
+ 4,
4905
+ obj,
4906
+ key,
4907
+ arrayRoot
4908
+ );
4728
4909
  case "l":
4729
- return parseTypedArray(response, value, Uint32Array, 4, obj, key);
4910
+ return parseTypedArray(
4911
+ response,
4912
+ value,
4913
+ Uint32Array,
4914
+ 4,
4915
+ obj,
4916
+ key,
4917
+ arrayRoot
4918
+ );
4730
4919
  case "G":
4731
- return parseTypedArray(response, value, Float32Array, 4, obj, key);
4920
+ return parseTypedArray(
4921
+ response,
4922
+ value,
4923
+ Float32Array,
4924
+ 4,
4925
+ obj,
4926
+ key,
4927
+ arrayRoot
4928
+ );
4732
4929
  case "g":
4733
- return parseTypedArray(response, value, Float64Array, 8, obj, key);
4930
+ return parseTypedArray(
4931
+ response,
4932
+ value,
4933
+ Float64Array,
4934
+ 8,
4935
+ obj,
4936
+ key,
4937
+ arrayRoot
4938
+ );
4734
4939
  case "M":
4735
- return parseTypedArray(response, value, BigInt64Array, 8, obj, key);
4940
+ return parseTypedArray(
4941
+ response,
4942
+ value,
4943
+ BigInt64Array,
4944
+ 8,
4945
+ obj,
4946
+ key,
4947
+ arrayRoot
4948
+ );
4736
4949
  case "m":
4737
4950
  return parseTypedArray(
4738
4951
  response,
@@ -4740,17 +4953,24 @@
4740
4953
  BigUint64Array,
4741
4954
  8,
4742
4955
  obj,
4743
- key
4956
+ key,
4957
+ arrayRoot
4744
4958
  );
4745
4959
  case "V":
4746
- return parseTypedArray(response, value, DataView, 1, obj, key);
4960
+ return parseTypedArray(
4961
+ response,
4962
+ value,
4963
+ DataView,
4964
+ 1,
4965
+ obj,
4966
+ key,
4967
+ arrayRoot
4968
+ );
4747
4969
  case "B":
4748
4970
  return (
4749
4971
  (obj = parseInt(value.slice(2), 16)),
4750
4972
  response._formData.get(response._prefix + obj)
4751
4973
  );
4752
- }
4753
- switch (value[1]) {
4754
4974
  case "R":
4755
4975
  return parseReadableStream(response, value, void 0);
4756
4976
  case "r":
@@ -4761,8 +4981,16 @@
4761
4981
  return parseAsyncIterable(response, value, !0);
4762
4982
  }
4763
4983
  value = value.slice(1);
4764
- return getOutlinedModel(response, value, obj, key, createModel);
4984
+ return getOutlinedModel(
4985
+ response,
4986
+ value,
4987
+ obj,
4988
+ key,
4989
+ arrayRoot,
4990
+ createModel
4991
+ );
4765
4992
  }
4993
+ null !== arrayRoot && bumpArrayCount(arrayRoot, value.length, response);
4766
4994
  return value;
4767
4995
  }
4768
4996
  function createResponse(
@@ -4774,6 +5002,8 @@
4774
5002
  3 < arguments.length && void 0 !== arguments[3]
4775
5003
  ? arguments[3]
4776
5004
  : new FormData(),
5005
+ arraySizeLimit =
5006
+ 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 1e6,
4777
5007
  chunks = new Map();
4778
5008
  return {
4779
5009
  _bundlerConfig: bundlerConfig,
@@ -4782,19 +5012,32 @@
4782
5012
  _chunks: chunks,
4783
5013
  _closed: !1,
4784
5014
  _closedReason: null,
4785
- _temporaryReferences: temporaryReferences
5015
+ _temporaryReferences: temporaryReferences,
5016
+ _rootArrayContexts: new WeakMap(),
5017
+ _arraySizeLimit: arraySizeLimit
4786
5018
  };
4787
5019
  }
4788
5020
  function close(response) {
4789
5021
  reportGlobalError(response, Error("Connection closed."));
4790
5022
  }
4791
- function loadServerReference(bundlerConfig, id, bound) {
5023
+ function loadServerReference(bundlerConfig, metaData) {
5024
+ var id = metaData.id;
5025
+ if ("string" !== typeof id) return null;
4792
5026
  var serverReference = resolveServerReference(bundlerConfig, id);
4793
5027
  bundlerConfig = preloadModule(serverReference);
4794
- return bound
4795
- ? Promise.all([bound, bundlerConfig]).then(function (_ref) {
5028
+ metaData = metaData.bound;
5029
+ return metaData instanceof Promise
5030
+ ? Promise.all([metaData, bundlerConfig]).then(function (_ref) {
4796
5031
  _ref = _ref[0];
4797
5032
  var fn = requireModule(serverReference);
5033
+ if (_ref.length > MAX_BOUND_ARGS)
5034
+ throw Error(
5035
+ "Server Function has too many bound arguments. Received " +
5036
+ _ref.length +
5037
+ " but the limit is " +
5038
+ MAX_BOUND_ARGS +
5039
+ "."
5040
+ );
4798
5041
  return fn.bind.apply(fn, [null].concat(_ref));
4799
5042
  })
4800
5043
  : bundlerConfig
@@ -4803,8 +5046,19 @@
4803
5046
  })
4804
5047
  : Promise.resolve(requireModule(serverReference));
4805
5048
  }
4806
- function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {
4807
- body = createResponse(serverManifest, formFieldPrefix, void 0, body);
5049
+ function decodeBoundActionMetaData(
5050
+ body,
5051
+ serverManifest,
5052
+ formFieldPrefix,
5053
+ arraySizeLimit
5054
+ ) {
5055
+ body = createResponse(
5056
+ serverManifest,
5057
+ formFieldPrefix,
5058
+ void 0,
5059
+ body,
5060
+ arraySizeLimit
5061
+ );
4808
5062
  close(body);
4809
5063
  body = getChunk(body, 0);
4810
5064
  body.then(function () {});
@@ -5314,7 +5568,7 @@
5314
5568
  patchConsole(console, "table"),
5315
5569
  patchConsole(console, "trace"),
5316
5570
  patchConsole(console, "warn"));
5317
- var ObjectPrototype = Object.prototype,
5571
+ var ObjectPrototype$1 = Object.prototype,
5318
5572
  stringify = JSON.stringify,
5319
5573
  ABORTING = 12,
5320
5574
  CLOSED = 14,
@@ -5341,16 +5595,23 @@
5341
5595
  case "fulfilled":
5342
5596
  if ("function" === typeof resolve) {
5343
5597
  for (
5344
- var inspectedValue = this.value, cycleProtection = 0;
5598
+ var inspectedValue = this.value,
5599
+ cycleProtection = 0,
5600
+ visited = new Set();
5345
5601
  inspectedValue instanceof ReactPromise;
5346
5602
 
5347
5603
  ) {
5348
5604
  cycleProtection++;
5349
- if (inspectedValue === this || 1e3 < cycleProtection) {
5605
+ if (
5606
+ inspectedValue === this ||
5607
+ visited.has(inspectedValue) ||
5608
+ 1e3 < cycleProtection
5609
+ ) {
5350
5610
  "function" === typeof reject &&
5351
5611
  reject(Error("Cannot have cyclic thenables."));
5352
5612
  return;
5353
5613
  }
5614
+ visited.add(inspectedValue);
5354
5615
  if ("fulfilled" === inspectedValue.status)
5355
5616
  inspectedValue = inspectedValue.value;
5356
5617
  else break;
@@ -5371,7 +5632,15 @@
5371
5632
  "function" === typeof reject && reject(this.reason);
5372
5633
  }
5373
5634
  };
5374
- var initializingHandler = null;
5635
+ var ObjectPrototype = Object.prototype,
5636
+ ArrayPrototype = Array.prototype,
5637
+ initializingHandler = null;
5638
+ FlightIterator.prototype = {};
5639
+ FlightIterator.prototype[ASYNC_ITERATOR] = function () {
5640
+ return this;
5641
+ };
5642
+ var MAX_BIGINT_DIGITS = 300,
5643
+ MAX_BOUND_ARGS = 1e3;
5375
5644
  exports.createClientModuleProxy = function (moduleId) {
5376
5645
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
5377
5646
  return new Proxy(moduleId, proxyHandlers$1);
@@ -5381,20 +5650,24 @@
5381
5650
  };
5382
5651
  exports.decodeAction = function (body, serverManifest) {
5383
5652
  var formData = new FormData(),
5384
- action = null;
5653
+ action = null,
5654
+ seenActions = new Set();
5385
5655
  body.forEach(function (value, key) {
5386
5656
  key.startsWith("$ACTION_")
5387
5657
  ? key.startsWith("$ACTION_REF_")
5388
- ? ((value = "$ACTION_" + key.slice(12) + ":"),
5658
+ ? seenActions.has(key) ||
5659
+ (seenActions.add(key),
5660
+ (value = "$ACTION_" + key.slice(12) + ":"),
5389
5661
  (value = decodeBoundActionMetaData(body, serverManifest, value)),
5390
- (action = loadServerReference(
5391
- serverManifest,
5392
- value.id,
5393
- value.bound
5394
- )))
5662
+ (action = loadServerReference(serverManifest, value)))
5395
5663
  : key.startsWith("$ACTION_ID_") &&
5396
- ((value = key.slice(11)),
5397
- (action = loadServerReference(serverManifest, value, null)))
5664
+ !seenActions.has(key) &&
5665
+ (seenActions.add(key),
5666
+ (value = key.slice(11)),
5667
+ (action = loadServerReference(serverManifest, {
5668
+ id: value,
5669
+ bound: null
5670
+ })))
5398
5671
  : formData.append(key, value);
5399
5672
  });
5400
5673
  return null === action
@@ -5430,7 +5703,8 @@
5430
5703
  webpackMap,
5431
5704
  "",
5432
5705
  options ? options.temporaryReferences : void 0,
5433
- body
5706
+ body,
5707
+ options ? options.arraySizeLimit : void 0
5434
5708
  );
5435
5709
  webpackMap = getChunk(body, 0);
5436
5710
  close(body);
@@ -5470,7 +5744,9 @@
5470
5744
  response$jscomp$0 = createResponse(
5471
5745
  webpackMap,
5472
5746
  "",
5473
- options ? options.temporaryReferences : void 0
5747
+ options ? options.temporaryReferences : void 0,
5748
+ void 0,
5749
+ options ? options.arraySizeLimit : void 0
5474
5750
  );
5475
5751
  iterator.next().then(progress, error);
5476
5752
  return getChunk(response$jscomp$0, 0);