react-server-dom-webpack 19.0.0-canary-cf5ab8b8b2-20240425 → 19.0.0-rc-915b914b3a-20240515

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.
@@ -94,14 +94,10 @@ function getIteratorFn(maybeIterable) {
94
94
  maybeIterable["@@iterator"];
95
95
  return "function" === typeof maybeIterable ? maybeIterable : null;
96
96
  }
97
- var isArrayImpl = Array.isArray,
98
- getPrototypeOf = Object.getPrototypeOf;
99
- function writeTemporaryReference(set, object) {
100
- var newId = set.length;
101
- set.push(object);
102
- return newId;
103
- }
104
- var ObjectPrototype = Object.prototype,
97
+ var ASYNC_ITERATOR = Symbol.asyncIterator,
98
+ isArrayImpl = Array.isArray,
99
+ getPrototypeOf = Object.getPrototypeOf,
100
+ ObjectPrototype = Object.prototype,
105
101
  knownServerReferences = new WeakMap();
106
102
  function serializeNumber(number) {
107
103
  return Number.isFinite(number)
@@ -121,28 +117,129 @@ function processReply(
121
117
  resolve,
122
118
  reject
123
119
  ) {
120
+ function serializeTypedArray(tag, typedArray) {
121
+ typedArray = new Blob([
122
+ new Uint8Array(
123
+ typedArray.buffer,
124
+ typedArray.byteOffset,
125
+ typedArray.byteLength
126
+ )
127
+ ]);
128
+ var blobId = nextPartId++;
129
+ null === formData && (formData = new FormData());
130
+ formData.append(formFieldPrefix + blobId, typedArray);
131
+ return "$" + tag + blobId.toString(16);
132
+ }
133
+ function serializeBinaryReader(reader) {
134
+ function progress(entry) {
135
+ entry.done
136
+ ? ((entry = nextPartId++),
137
+ data.append(formFieldPrefix + entry, new Blob(buffer)),
138
+ data.append(
139
+ formFieldPrefix + streamId,
140
+ '"$o' + entry.toString(16) + '"'
141
+ ),
142
+ data.append(formFieldPrefix + streamId, "C"),
143
+ pendingParts--,
144
+ 0 === pendingParts && resolve(data))
145
+ : (buffer.push(entry.value),
146
+ reader.read(new Uint8Array(1024)).then(progress, reject));
147
+ }
148
+ null === formData && (formData = new FormData());
149
+ var data = formData;
150
+ pendingParts++;
151
+ var streamId = nextPartId++,
152
+ buffer = [];
153
+ reader.read(new Uint8Array(1024)).then(progress, reject);
154
+ return "$r" + streamId.toString(16);
155
+ }
156
+ function serializeReader(reader) {
157
+ function progress(entry) {
158
+ if (entry.done)
159
+ data.append(formFieldPrefix + streamId, "C"),
160
+ pendingParts--,
161
+ 0 === pendingParts && resolve(data);
162
+ else
163
+ try {
164
+ var partJSON = JSON.stringify(entry.value, resolveToJSON);
165
+ data.append(formFieldPrefix + streamId, partJSON);
166
+ reader.read().then(progress, reject);
167
+ } catch (x) {
168
+ reject(x);
169
+ }
170
+ }
171
+ null === formData && (formData = new FormData());
172
+ var data = formData;
173
+ pendingParts++;
174
+ var streamId = nextPartId++;
175
+ reader.read().then(progress, reject);
176
+ return "$R" + streamId.toString(16);
177
+ }
178
+ function serializeReadableStream(stream) {
179
+ try {
180
+ var binaryReader = stream.getReader({ mode: "byob" });
181
+ } catch (x) {
182
+ return serializeReader(stream.getReader());
183
+ }
184
+ return serializeBinaryReader(binaryReader);
185
+ }
186
+ function serializeAsyncIterable(iterable, iterator) {
187
+ function progress(entry) {
188
+ if (entry.done) {
189
+ if (void 0 === entry.value)
190
+ data.append(formFieldPrefix + streamId, "C");
191
+ else
192
+ try {
193
+ var partJSON = JSON.stringify(entry.value, resolveToJSON);
194
+ data.append(formFieldPrefix + streamId, "C" + partJSON);
195
+ } catch (x) {
196
+ reject(x);
197
+ return;
198
+ }
199
+ pendingParts--;
200
+ 0 === pendingParts && resolve(data);
201
+ } else
202
+ try {
203
+ var partJSON$22 = JSON.stringify(entry.value, resolveToJSON);
204
+ data.append(formFieldPrefix + streamId, partJSON$22);
205
+ iterator.next().then(progress, reject);
206
+ } catch (x$23) {
207
+ reject(x$23);
208
+ }
209
+ }
210
+ null === formData && (formData = new FormData());
211
+ var data = formData;
212
+ pendingParts++;
213
+ var streamId = nextPartId++;
214
+ iterable = iterable === iterator;
215
+ iterator.next().then(progress, reject);
216
+ return "$" + (iterable ? "x" : "X") + streamId.toString(16);
217
+ }
124
218
  function resolveToJSON(key, value) {
125
219
  if (null === value) return null;
126
220
  if ("object" === typeof value) {
127
221
  switch (value.$$typeof) {
128
222
  case REACT_ELEMENT_TYPE:
129
- if (void 0 === temporaryReferences)
130
- throw Error(
131
- "React Element cannot be passed to Server Functions from the Client without a temporary reference set. Pass a TemporaryReferenceSet to the options."
132
- );
133
- return (
134
- "$T" +
135
- writeTemporaryReference(temporaryReferences, value).toString(16)
223
+ if (void 0 !== temporaryReferences && -1 === key.indexOf(":")) {
224
+ var parentReference = writtenObjects.get(this);
225
+ if (void 0 !== parentReference)
226
+ return (
227
+ temporaryReferences.set(parentReference + ":" + key, value),
228
+ "$T"
229
+ );
230
+ }
231
+ throw Error(
232
+ "React Element cannot be passed to Server Functions from the Client without a temporary reference set. Pass a TemporaryReferenceSet to the options."
136
233
  );
137
234
  case REACT_LAZY_TYPE:
138
- key = value._payload;
235
+ parentReference = value._payload;
139
236
  var init = value._init;
140
237
  null === formData && (formData = new FormData());
141
238
  pendingParts++;
142
239
  try {
143
- var resolvedModel = init(key),
240
+ var resolvedModel = init(parentReference),
144
241
  lazyId = nextPartId++,
145
- partJSON = JSON.stringify(resolvedModel, resolveToJSON);
242
+ partJSON = serializeModel(resolvedModel, lazyId);
146
243
  formData.append(formFieldPrefix + lazyId, partJSON);
147
244
  return "$" + lazyId.toString(16);
148
245
  } catch (x) {
@@ -152,20 +249,20 @@ function processReply(
152
249
  "function" === typeof x.then
153
250
  ) {
154
251
  pendingParts++;
155
- var lazyId$21 = nextPartId++;
156
- resolvedModel = function () {
252
+ var lazyId$24 = nextPartId++;
253
+ parentReference = function () {
157
254
  try {
158
- var partJSON$22 = JSON.stringify(value, resolveToJSON),
159
- data$23 = formData;
160
- data$23.append(formFieldPrefix + lazyId$21, partJSON$22);
255
+ var partJSON$25 = serializeModel(value, lazyId$24),
256
+ data$26 = formData;
257
+ data$26.append(formFieldPrefix + lazyId$24, partJSON$25);
161
258
  pendingParts--;
162
- 0 === pendingParts && resolve(data$23);
259
+ 0 === pendingParts && resolve(data$26);
163
260
  } catch (reason) {
164
261
  reject(reason);
165
262
  }
166
263
  };
167
- x.then(resolvedModel, resolvedModel);
168
- return "$" + lazyId$21.toString(16);
264
+ x.then(parentReference, parentReference);
265
+ return "$" + lazyId$24.toString(16);
169
266
  }
170
267
  reject(x);
171
268
  return null;
@@ -177,115 +274,167 @@ function processReply(
177
274
  null === formData && (formData = new FormData());
178
275
  pendingParts++;
179
276
  var promiseId = nextPartId++;
180
- value.then(
181
- function (partValue) {
182
- try {
183
- var partJSON$25 = JSON.stringify(partValue, resolveToJSON);
184
- partValue = formData;
185
- partValue.append(formFieldPrefix + promiseId, partJSON$25);
186
- pendingParts--;
187
- 0 === pendingParts && resolve(partValue);
188
- } catch (reason) {
189
- reject(reason);
190
- }
191
- },
192
- function (reason) {
277
+ value.then(function (partValue) {
278
+ try {
279
+ var partJSON$28 = serializeModel(partValue, promiseId);
280
+ partValue = formData;
281
+ partValue.append(formFieldPrefix + promiseId, partJSON$28);
282
+ pendingParts--;
283
+ 0 === pendingParts && resolve(partValue);
284
+ } catch (reason) {
193
285
  reject(reason);
194
286
  }
195
- );
287
+ }, reject);
196
288
  return "$@" + promiseId.toString(16);
197
289
  }
290
+ parentReference = writtenObjects.get(value);
291
+ if (void 0 !== parentReference)
292
+ if (modelRoot === value) modelRoot = null;
293
+ else return parentReference;
294
+ else
295
+ -1 === key.indexOf(":") &&
296
+ ((parentReference = writtenObjects.get(this)),
297
+ void 0 !== parentReference &&
298
+ ((key = parentReference + ":" + key),
299
+ writtenObjects.set(value, key),
300
+ void 0 !== temporaryReferences &&
301
+ temporaryReferences.set(key, value)));
198
302
  if (isArrayImpl(value)) return value;
199
303
  if (value instanceof FormData) {
200
304
  null === formData && (formData = new FormData());
201
- var data$27 = formData;
202
- resolvedModel = nextPartId++;
203
- var prefix = formFieldPrefix + resolvedModel + "_";
305
+ var data$32 = formData;
306
+ key = nextPartId++;
307
+ var prefix = formFieldPrefix + key + "_";
204
308
  value.forEach(function (originalValue, originalKey) {
205
- data$27.append(prefix + originalKey, originalValue);
309
+ data$32.append(prefix + originalKey, originalValue);
206
310
  });
207
- return "$K" + resolvedModel.toString(16);
311
+ return "$K" + key.toString(16);
208
312
  }
209
313
  if (value instanceof Map)
210
314
  return (
211
- (resolvedModel = JSON.stringify(Array.from(value), resolveToJSON)),
315
+ (key = nextPartId++),
316
+ (parentReference = serializeModel(Array.from(value), key)),
212
317
  null === formData && (formData = new FormData()),
213
- (lazyId = nextPartId++),
214
- formData.append(formFieldPrefix + lazyId, resolvedModel),
215
- "$Q" + lazyId.toString(16)
318
+ formData.append(formFieldPrefix + key, parentReference),
319
+ "$Q" + key.toString(16)
216
320
  );
217
321
  if (value instanceof Set)
218
322
  return (
219
- (resolvedModel = JSON.stringify(Array.from(value), resolveToJSON)),
323
+ (key = nextPartId++),
324
+ (parentReference = serializeModel(Array.from(value), key)),
325
+ null === formData && (formData = new FormData()),
326
+ formData.append(formFieldPrefix + key, parentReference),
327
+ "$W" + key.toString(16)
328
+ );
329
+ if (value instanceof ArrayBuffer)
330
+ return (
331
+ (key = new Blob([value])),
332
+ (parentReference = nextPartId++),
220
333
  null === formData && (formData = new FormData()),
221
- (lazyId = nextPartId++),
222
- formData.append(formFieldPrefix + lazyId, resolvedModel),
223
- "$W" + lazyId.toString(16)
334
+ formData.append(formFieldPrefix + parentReference, key),
335
+ "$A" + parentReference.toString(16)
224
336
  );
225
- if ((resolvedModel = getIteratorFn(value)))
337
+ if (value instanceof Int8Array) return serializeTypedArray("O", value);
338
+ if (value instanceof Uint8Array) return serializeTypedArray("o", value);
339
+ if (value instanceof Uint8ClampedArray)
340
+ return serializeTypedArray("U", value);
341
+ if (value instanceof Int16Array) return serializeTypedArray("S", value);
342
+ if (value instanceof Uint16Array) return serializeTypedArray("s", value);
343
+ if (value instanceof Int32Array) return serializeTypedArray("L", value);
344
+ if (value instanceof Uint32Array) return serializeTypedArray("l", value);
345
+ if (value instanceof Float32Array) return serializeTypedArray("G", value);
346
+ if (value instanceof Float64Array) return serializeTypedArray("g", value);
347
+ if (value instanceof BigInt64Array)
348
+ return serializeTypedArray("M", value);
349
+ if (value instanceof BigUint64Array)
350
+ return serializeTypedArray("m", value);
351
+ if (value instanceof DataView) return serializeTypedArray("V", value);
352
+ if ("function" === typeof Blob && value instanceof Blob)
226
353
  return (
227
- (resolvedModel = resolvedModel.call(value)),
228
- resolvedModel === value
229
- ? ((resolvedModel = JSON.stringify(
230
- Array.from(resolvedModel),
231
- resolveToJSON
354
+ null === formData && (formData = new FormData()),
355
+ (key = nextPartId++),
356
+ formData.append(formFieldPrefix + key, value),
357
+ "$B" + key.toString(16)
358
+ );
359
+ if ((key = getIteratorFn(value)))
360
+ return (
361
+ (parentReference = key.call(value)),
362
+ parentReference === value
363
+ ? ((key = nextPartId++),
364
+ (parentReference = serializeModel(
365
+ Array.from(parentReference),
366
+ key
232
367
  )),
233
368
  null === formData && (formData = new FormData()),
234
- (lazyId = nextPartId++),
235
- formData.append(formFieldPrefix + lazyId, resolvedModel),
236
- "$i" + lazyId.toString(16))
237
- : Array.from(resolvedModel)
369
+ formData.append(formFieldPrefix + key, parentReference),
370
+ "$i" + key.toString(16))
371
+ : Array.from(parentReference)
238
372
  );
239
- resolvedModel = getPrototypeOf(value);
240
373
  if (
241
- resolvedModel !== ObjectPrototype &&
242
- (null === resolvedModel || null !== getPrototypeOf(resolvedModel))
374
+ "function" === typeof ReadableStream &&
375
+ value instanceof ReadableStream
376
+ )
377
+ return serializeReadableStream(value);
378
+ key = value[ASYNC_ITERATOR];
379
+ if ("function" === typeof key)
380
+ return serializeAsyncIterable(value, key.call(value));
381
+ key = getPrototypeOf(value);
382
+ if (
383
+ key !== ObjectPrototype &&
384
+ (null === key || null !== getPrototypeOf(key))
243
385
  ) {
244
386
  if (void 0 === temporaryReferences)
245
387
  throw Error(
246
388
  "Only plain objects, and a few built-ins, can be passed to Server Actions. Classes or null prototypes are not supported."
247
389
  );
248
- return (
249
- "$T" +
250
- writeTemporaryReference(temporaryReferences, value).toString(16)
251
- );
390
+ return "$T";
252
391
  }
253
392
  return value;
254
393
  }
255
394
  if ("string" === typeof value) {
256
395
  if ("Z" === value[value.length - 1] && this[key] instanceof Date)
257
396
  return "$D" + value;
258
- resolvedModel = "$" === value[0] ? "$" + value : value;
259
- return resolvedModel;
397
+ key = "$" === value[0] ? "$" + value : value;
398
+ return key;
260
399
  }
261
400
  if ("boolean" === typeof value) return value;
262
401
  if ("number" === typeof value) return serializeNumber(value);
263
402
  if ("undefined" === typeof value) return "$undefined";
264
403
  if ("function" === typeof value) {
265
- resolvedModel = knownServerReferences.get(value);
266
- if (void 0 !== resolvedModel)
404
+ parentReference = knownServerReferences.get(value);
405
+ if (void 0 !== parentReference)
267
406
  return (
268
- (resolvedModel = JSON.stringify(resolvedModel, resolveToJSON)),
407
+ (key = JSON.stringify(parentReference, resolveToJSON)),
269
408
  null === formData && (formData = new FormData()),
270
- (lazyId = nextPartId++),
271
- formData.set(formFieldPrefix + lazyId, resolvedModel),
272
- "$F" + lazyId.toString(16)
409
+ (parentReference = nextPartId++),
410
+ formData.set(formFieldPrefix + parentReference, key),
411
+ "$F" + parentReference.toString(16)
273
412
  );
274
- if (void 0 === temporaryReferences)
275
- throw Error(
276
- "Client Functions cannot be passed directly to Server Functions. Only Functions passed from the Server can be passed back again."
413
+ if (
414
+ void 0 !== temporaryReferences &&
415
+ -1 === key.indexOf(":") &&
416
+ ((parentReference = writtenObjects.get(this)),
417
+ void 0 !== parentReference)
418
+ )
419
+ return (
420
+ temporaryReferences.set(parentReference + ":" + key, value), "$T"
277
421
  );
278
- return (
279
- "$T" + writeTemporaryReference(temporaryReferences, value).toString(16)
422
+ throw Error(
423
+ "Client Functions cannot be passed directly to Server Functions. Only Functions passed from the Server can be passed back again."
280
424
  );
281
425
  }
282
426
  if ("symbol" === typeof value) {
283
- if (void 0 === temporaryReferences)
284
- throw Error(
285
- "Symbols cannot be passed to a Server Function without a temporary reference set. Pass a TemporaryReferenceSet to the options."
427
+ if (
428
+ void 0 !== temporaryReferences &&
429
+ -1 === key.indexOf(":") &&
430
+ ((parentReference = writtenObjects.get(this)),
431
+ void 0 !== parentReference)
432
+ )
433
+ return (
434
+ temporaryReferences.set(parentReference + ":" + key, value), "$T"
286
435
  );
287
- return (
288
- "$T" + writeTemporaryReference(temporaryReferences, value).toString(16)
436
+ throw Error(
437
+ "Symbols cannot be passed to a Server Function without a temporary reference set. Pass a TemporaryReferenceSet to the options."
289
438
  );
290
439
  }
291
440
  if ("bigint" === typeof value) return "$n" + value.toString(10);
@@ -295,10 +444,21 @@ function processReply(
295
444
  " is not supported as an argument to a Server Function."
296
445
  );
297
446
  }
447
+ function serializeModel(model, id) {
448
+ "object" === typeof model &&
449
+ null !== model &&
450
+ ((id = "$" + id.toString(16)),
451
+ writtenObjects.set(model, id),
452
+ void 0 !== temporaryReferences && temporaryReferences.set(id, model));
453
+ modelRoot = model;
454
+ return JSON.stringify(model, resolveToJSON);
455
+ }
298
456
  var nextPartId = 1,
299
457
  pendingParts = 0,
300
- formData = null;
301
- root = JSON.stringify(root, resolveToJSON);
458
+ formData = null,
459
+ writtenObjects = new WeakMap(),
460
+ modelRoot = root;
461
+ root = serializeModel(root, 0);
302
462
  null === formData
303
463
  ? resolve(root)
304
464
  : (formData.set(formFieldPrefix + "0", root),
@@ -357,6 +517,9 @@ function readChunk(chunk) {
357
517
  throw chunk.reason;
358
518
  }
359
519
  }
520
+ function createPendingChunk(response) {
521
+ return new Chunk("pending", null, null, response);
522
+ }
360
523
  function wakeChunk(listeners, value) {
361
524
  for (var i = 0; i < listeners.length; i++) (0, listeners[i])(value);
362
525
  }
@@ -376,13 +539,41 @@ function wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners) {
376
539
  }
377
540
  }
378
541
  function triggerErrorOnChunk(chunk, error) {
379
- if ("pending" === chunk.status || "blocked" === chunk.status) {
542
+ if ("pending" !== chunk.status && "blocked" !== chunk.status)
543
+ chunk.reason.error(error);
544
+ else {
380
545
  var listeners = chunk.reason;
381
546
  chunk.status = "rejected";
382
547
  chunk.reason = error;
383
548
  null !== listeners && wakeChunk(listeners, error);
384
549
  }
385
550
  }
551
+ function createResolvedIteratorResultChunk(response, value, done) {
552
+ return new Chunk(
553
+ "resolved_model",
554
+ (done ? '{"done":true,"value":' : '{"done":false,"value":') + value + "}",
555
+ null,
556
+ response
557
+ );
558
+ }
559
+ function resolveIteratorResultChunk(chunk, value, done) {
560
+ resolveModelChunk(
561
+ chunk,
562
+ (done ? '{"done":true,"value":' : '{"done":false,"value":') + value + "}"
563
+ );
564
+ }
565
+ function resolveModelChunk(chunk, value) {
566
+ if ("pending" !== chunk.status) chunk.reason.enqueueModel(value);
567
+ else {
568
+ var resolveListeners = chunk.value,
569
+ rejectListeners = chunk.reason;
570
+ chunk.status = "resolved_model";
571
+ chunk.value = value;
572
+ null !== resolveListeners &&
573
+ (initializeModelChunk(chunk),
574
+ wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners));
575
+ }
576
+ }
386
577
  function resolveModuleChunk(chunk, value) {
387
578
  if ("pending" === chunk.status || "blocked" === chunk.status) {
388
579
  var resolveListeners = chunk.value,
@@ -458,12 +649,18 @@ function reportGlobalError(response, error) {
458
649
  function getChunk(response, id) {
459
650
  var chunks = response._chunks,
460
651
  chunk = chunks.get(id);
461
- chunk ||
462
- ((chunk = new Chunk("pending", null, null, response)),
463
- chunks.set(id, chunk));
652
+ chunk || ((chunk = createPendingChunk(response)), chunks.set(id, chunk));
464
653
  return chunk;
465
654
  }
466
- function createModelResolver(chunk, parentObject, key, cyclic, response, map) {
655
+ function createModelResolver(
656
+ chunk,
657
+ parentObject,
658
+ key,
659
+ cyclic,
660
+ response,
661
+ map,
662
+ path
663
+ ) {
467
664
  if (initializingChunkBlockedModel) {
468
665
  var blocked = initializingChunkBlockedModel;
469
666
  cyclic || blocked.deps++;
@@ -473,6 +670,7 @@ function createModelResolver(chunk, parentObject, key, cyclic, response, map) {
473
670
  value: null
474
671
  };
475
672
  return function (value) {
673
+ for (var i = 1; i < path.length; i++) value = value[path[i]];
476
674
  parentObject[key] = map(response, value);
477
675
  "" === key && null === blocked.value && (blocked.value = parentObject[key]);
478
676
  blocked.deps--;
@@ -505,7 +703,9 @@ function createServerReferenceProxy(response, metaData) {
505
703
  knownServerReferences.set(proxy, metaData);
506
704
  return proxy;
507
705
  }
508
- function getOutlinedModel(response, id, parentObject, key, map) {
706
+ function getOutlinedModel(response, reference, parentObject, key, map) {
707
+ reference = reference.split(":");
708
+ var id = parseInt(reference[0], 16);
509
709
  id = getChunk(response, id);
510
710
  switch (id.status) {
511
711
  case "resolved_model":
@@ -516,7 +716,10 @@ function getOutlinedModel(response, id, parentObject, key, map) {
516
716
  }
517
717
  switch (id.status) {
518
718
  case "fulfilled":
519
- return map(response, id.value);
719
+ parentObject = id.value;
720
+ for (key = 1; key < reference.length; key++)
721
+ parentObject = parentObject[reference[key]];
722
+ return map(response, parentObject);
520
723
  case "pending":
521
724
  case "blocked":
522
725
  case "cyclic":
@@ -528,7 +731,8 @@ function getOutlinedModel(response, id, parentObject, key, map) {
528
731
  key,
529
732
  "cyclic" === id.status,
530
733
  response,
531
- map
734
+ map,
735
+ reference
532
736
  ),
533
737
  createModelReject(parentChunk)
534
738
  );
@@ -543,6 +747,9 @@ function createMap(response, model) {
543
747
  function createSet(response, model) {
544
748
  return new Set(model);
545
749
  }
750
+ function createBlob(response, model) {
751
+ return new Blob(model.slice(1), { type: model[0] });
752
+ }
546
753
  function createFormData(response, model) {
547
754
  response = new FormData();
548
755
  for (var i = 0; i < model.length; i++)
@@ -575,7 +782,7 @@ function parseModelString(response, parentObject, key, value) {
575
782
  return Symbol.for(value.slice(2));
576
783
  case "F":
577
784
  return (
578
- (value = parseInt(value.slice(2), 16)),
785
+ (value = value.slice(2)),
579
786
  getOutlinedModel(
580
787
  response,
581
788
  value,
@@ -585,37 +792,36 @@ function parseModelString(response, parentObject, key, value) {
585
792
  )
586
793
  );
587
794
  case "T":
588
- parentObject = parseInt(value.slice(2), 16);
795
+ parentObject = "$" + value.slice(2);
589
796
  response = response._tempRefs;
590
797
  if (null == response)
591
798
  throw Error(
592
799
  "Missing a temporary reference set but the RSC response returned a temporary reference. Pass a temporaryReference option with the set that was used with the reply."
593
800
  );
594
- if (0 > parentObject || parentObject >= response.length)
595
- throw Error(
596
- "The RSC response contained a reference that doesn't exist in the temporary reference set. Always pass the matching set that was used to create the reply when parsing its response."
597
- );
598
- return response[parentObject];
801
+ return response.get(parentObject);
599
802
  case "Q":
600
803
  return (
601
- (value = parseInt(value.slice(2), 16)),
804
+ (value = value.slice(2)),
602
805
  getOutlinedModel(response, value, parentObject, key, createMap)
603
806
  );
604
807
  case "W":
605
808
  return (
606
- (value = parseInt(value.slice(2), 16)),
809
+ (value = value.slice(2)),
607
810
  getOutlinedModel(response, value, parentObject, key, createSet)
608
811
  );
609
812
  case "B":
610
- return;
813
+ return (
814
+ (value = value.slice(2)),
815
+ getOutlinedModel(response, value, parentObject, key, createBlob)
816
+ );
611
817
  case "K":
612
818
  return (
613
- (value = parseInt(value.slice(2), 16)),
819
+ (value = value.slice(2)),
614
820
  getOutlinedModel(response, value, parentObject, key, createFormData)
615
821
  );
616
822
  case "i":
617
823
  return (
618
- (value = parseInt(value.slice(2), 16)),
824
+ (value = value.slice(2)),
619
825
  getOutlinedModel(response, value, parentObject, key, extractIterator)
620
826
  );
621
827
  case "I":
@@ -632,7 +838,7 @@ function parseModelString(response, parentObject, key, value) {
632
838
  return BigInt(value.slice(2));
633
839
  default:
634
840
  return (
635
- (value = parseInt(value.slice(1), 16)),
841
+ (value = value.slice(1)),
636
842
  getOutlinedModel(response, value, parentObject, key, createModel)
637
843
  );
638
844
  }
@@ -644,6 +850,13 @@ function missingCall() {
644
850
  'Trying to call a function from "use server" but the callServer option was not implemented in your router runtime.'
645
851
  );
646
852
  }
853
+ function resolveBuffer(response, id, buffer) {
854
+ var chunks = response._chunks,
855
+ chunk = chunks.get(id);
856
+ chunk && "pending" !== chunk.status
857
+ ? chunk.reason.enqueueValue(buffer)
858
+ : chunks.set(id, new Chunk("fulfilled", buffer, null, response));
859
+ }
647
860
  function resolveModule(response, id, model) {
648
861
  var chunks = response._chunks,
649
862
  chunk = chunks.get(id);
@@ -672,6 +885,367 @@ function resolveModule(response, id, model) {
672
885
  new Chunk("resolved_module", clientReference, null, response)
673
886
  );
674
887
  }
888
+ function resolveStream(response, id, stream, controller) {
889
+ var chunks = response._chunks,
890
+ chunk = chunks.get(id);
891
+ chunk
892
+ ? "pending" === chunk.status &&
893
+ ((response = chunk.value),
894
+ (chunk.status = "fulfilled"),
895
+ (chunk.value = stream),
896
+ (chunk.reason = controller),
897
+ null !== response && wakeChunk(response, chunk.value))
898
+ : chunks.set(id, new Chunk("fulfilled", stream, controller, response));
899
+ }
900
+ function startReadableStream(response, id, type) {
901
+ var controller = null;
902
+ type = new ReadableStream({
903
+ type: type,
904
+ start: function (c) {
905
+ controller = c;
906
+ }
907
+ });
908
+ var previousBlockedChunk = null;
909
+ resolveStream(response, id, type, {
910
+ enqueueValue: function (value) {
911
+ null === previousBlockedChunk
912
+ ? controller.enqueue(value)
913
+ : previousBlockedChunk.then(function () {
914
+ controller.enqueue(value);
915
+ });
916
+ },
917
+ enqueueModel: function (json) {
918
+ if (null === previousBlockedChunk) {
919
+ var chunk = new Chunk("resolved_model", json, null, response);
920
+ initializeModelChunk(chunk);
921
+ "fulfilled" === chunk.status
922
+ ? controller.enqueue(chunk.value)
923
+ : (chunk.then(
924
+ function (v) {
925
+ return controller.enqueue(v);
926
+ },
927
+ function (e) {
928
+ return controller.error(e);
929
+ }
930
+ ),
931
+ (previousBlockedChunk = chunk));
932
+ } else {
933
+ chunk = previousBlockedChunk;
934
+ var chunk$50 = createPendingChunk(response);
935
+ chunk$50.then(
936
+ function (v) {
937
+ return controller.enqueue(v);
938
+ },
939
+ function (e) {
940
+ return controller.error(e);
941
+ }
942
+ );
943
+ previousBlockedChunk = chunk$50;
944
+ chunk.then(function () {
945
+ previousBlockedChunk === chunk$50 && (previousBlockedChunk = null);
946
+ resolveModelChunk(chunk$50, json);
947
+ });
948
+ }
949
+ },
950
+ close: function () {
951
+ if (null === previousBlockedChunk) controller.close();
952
+ else {
953
+ var blockedChunk = previousBlockedChunk;
954
+ previousBlockedChunk = null;
955
+ blockedChunk.then(function () {
956
+ return controller.close();
957
+ });
958
+ }
959
+ },
960
+ error: function (error) {
961
+ if (null === previousBlockedChunk) controller.error(error);
962
+ else {
963
+ var blockedChunk = previousBlockedChunk;
964
+ previousBlockedChunk = null;
965
+ blockedChunk.then(function () {
966
+ return controller.error(error);
967
+ });
968
+ }
969
+ }
970
+ });
971
+ }
972
+ function asyncIterator() {
973
+ return this;
974
+ }
975
+ function createIterator(next) {
976
+ next = { next: next };
977
+ next[ASYNC_ITERATOR] = asyncIterator;
978
+ return next;
979
+ }
980
+ function startAsyncIterable(response, id, iterator) {
981
+ var buffer = [],
982
+ closed = !1,
983
+ nextWriteIndex = 0,
984
+ $jscomp$compprop0 = {};
985
+ $jscomp$compprop0 =
986
+ (($jscomp$compprop0[ASYNC_ITERATOR] = function () {
987
+ var nextReadIndex = 0;
988
+ return createIterator(function (arg) {
989
+ if (void 0 !== arg)
990
+ throw Error(
991
+ "Values cannot be passed to next() of AsyncIterables passed to Client Components."
992
+ );
993
+ if (nextReadIndex === buffer.length) {
994
+ if (closed)
995
+ return new Chunk(
996
+ "fulfilled",
997
+ { done: !0, value: void 0 },
998
+ null,
999
+ response
1000
+ );
1001
+ buffer[nextReadIndex] = createPendingChunk(response);
1002
+ }
1003
+ return buffer[nextReadIndex++];
1004
+ });
1005
+ }),
1006
+ $jscomp$compprop0);
1007
+ resolveStream(
1008
+ response,
1009
+ id,
1010
+ iterator ? $jscomp$compprop0[ASYNC_ITERATOR]() : $jscomp$compprop0,
1011
+ {
1012
+ enqueueValue: function (value) {
1013
+ if (nextWriteIndex === buffer.length)
1014
+ buffer[nextWriteIndex] = new Chunk(
1015
+ "fulfilled",
1016
+ { done: !1, value: value },
1017
+ null,
1018
+ response
1019
+ );
1020
+ else {
1021
+ var chunk = buffer[nextWriteIndex],
1022
+ resolveListeners = chunk.value,
1023
+ rejectListeners = chunk.reason;
1024
+ chunk.status = "fulfilled";
1025
+ chunk.value = { done: !1, value: value };
1026
+ null !== resolveListeners &&
1027
+ wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners);
1028
+ }
1029
+ nextWriteIndex++;
1030
+ },
1031
+ enqueueModel: function (value) {
1032
+ nextWriteIndex === buffer.length
1033
+ ? (buffer[nextWriteIndex] = createResolvedIteratorResultChunk(
1034
+ response,
1035
+ value,
1036
+ !1
1037
+ ))
1038
+ : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !1);
1039
+ nextWriteIndex++;
1040
+ },
1041
+ close: function (value) {
1042
+ closed = !0;
1043
+ nextWriteIndex === buffer.length
1044
+ ? (buffer[nextWriteIndex] = createResolvedIteratorResultChunk(
1045
+ response,
1046
+ value,
1047
+ !0
1048
+ ))
1049
+ : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !0);
1050
+ for (nextWriteIndex++; nextWriteIndex < buffer.length; )
1051
+ resolveIteratorResultChunk(
1052
+ buffer[nextWriteIndex++],
1053
+ '"$undefined"',
1054
+ !0
1055
+ );
1056
+ },
1057
+ error: function (error) {
1058
+ closed = !0;
1059
+ for (
1060
+ nextWriteIndex === buffer.length &&
1061
+ (buffer[nextWriteIndex] = createPendingChunk(response));
1062
+ nextWriteIndex < buffer.length;
1063
+
1064
+ )
1065
+ triggerErrorOnChunk(buffer[nextWriteIndex++], error);
1066
+ }
1067
+ }
1068
+ );
1069
+ }
1070
+ function mergeBuffer(buffer, lastChunk) {
1071
+ for (var l = buffer.length, byteLength = lastChunk.length, i = 0; i < l; i++)
1072
+ byteLength += buffer[i].byteLength;
1073
+ byteLength = new Uint8Array(byteLength);
1074
+ for (var i$51 = (i = 0); i$51 < l; i$51++) {
1075
+ var chunk = buffer[i$51];
1076
+ byteLength.set(chunk, i);
1077
+ i += chunk.byteLength;
1078
+ }
1079
+ byteLength.set(lastChunk, i);
1080
+ return byteLength;
1081
+ }
1082
+ function resolveTypedArray(
1083
+ response,
1084
+ id,
1085
+ buffer,
1086
+ lastChunk,
1087
+ constructor,
1088
+ bytesPerElement
1089
+ ) {
1090
+ buffer =
1091
+ 0 === buffer.length && 0 === lastChunk.byteOffset % bytesPerElement
1092
+ ? lastChunk
1093
+ : mergeBuffer(buffer, lastChunk);
1094
+ constructor = new constructor(
1095
+ buffer.buffer,
1096
+ buffer.byteOffset,
1097
+ buffer.byteLength / bytesPerElement
1098
+ );
1099
+ resolveBuffer(response, id, constructor);
1100
+ }
1101
+ function processFullRow(response, id, tag, buffer, chunk) {
1102
+ switch (tag) {
1103
+ case 65:
1104
+ resolveBuffer(response, id, mergeBuffer(buffer, chunk).buffer);
1105
+ return;
1106
+ case 79:
1107
+ resolveTypedArray(response, id, buffer, chunk, Int8Array, 1);
1108
+ return;
1109
+ case 111:
1110
+ resolveBuffer(
1111
+ response,
1112
+ id,
1113
+ 0 === buffer.length ? chunk : mergeBuffer(buffer, chunk)
1114
+ );
1115
+ return;
1116
+ case 85:
1117
+ resolveTypedArray(response, id, buffer, chunk, Uint8ClampedArray, 1);
1118
+ return;
1119
+ case 83:
1120
+ resolveTypedArray(response, id, buffer, chunk, Int16Array, 2);
1121
+ return;
1122
+ case 115:
1123
+ resolveTypedArray(response, id, buffer, chunk, Uint16Array, 2);
1124
+ return;
1125
+ case 76:
1126
+ resolveTypedArray(response, id, buffer, chunk, Int32Array, 4);
1127
+ return;
1128
+ case 108:
1129
+ resolveTypedArray(response, id, buffer, chunk, Uint32Array, 4);
1130
+ return;
1131
+ case 71:
1132
+ resolveTypedArray(response, id, buffer, chunk, Float32Array, 4);
1133
+ return;
1134
+ case 103:
1135
+ resolveTypedArray(response, id, buffer, chunk, Float64Array, 8);
1136
+ return;
1137
+ case 77:
1138
+ resolveTypedArray(response, id, buffer, chunk, BigInt64Array, 8);
1139
+ return;
1140
+ case 109:
1141
+ resolveTypedArray(response, id, buffer, chunk, BigUint64Array, 8);
1142
+ return;
1143
+ case 86:
1144
+ resolveTypedArray(response, id, buffer, chunk, DataView, 1);
1145
+ return;
1146
+ }
1147
+ for (
1148
+ var stringDecoder = response._stringDecoder, row = "", i = 0;
1149
+ i < buffer.length;
1150
+ i++
1151
+ )
1152
+ row += stringDecoder.decode(buffer[i], decoderOptions);
1153
+ row += stringDecoder.decode(chunk);
1154
+ switch (tag) {
1155
+ case 73:
1156
+ resolveModule(response, id, row);
1157
+ break;
1158
+ case 72:
1159
+ id = row[0];
1160
+ row = row.slice(1);
1161
+ response = JSON.parse(row, response._fromJSON);
1162
+ row = ReactDOMSharedInternals.d;
1163
+ switch (id) {
1164
+ case "D":
1165
+ row.D(response);
1166
+ break;
1167
+ case "C":
1168
+ "string" === typeof response
1169
+ ? row.C(response)
1170
+ : row.C(response[0], response[1]);
1171
+ break;
1172
+ case "L":
1173
+ id = response[0];
1174
+ tag = response[1];
1175
+ 3 === response.length ? row.L(id, tag, response[2]) : row.L(id, tag);
1176
+ break;
1177
+ case "m":
1178
+ "string" === typeof response
1179
+ ? row.m(response)
1180
+ : row.m(response[0], response[1]);
1181
+ break;
1182
+ case "X":
1183
+ "string" === typeof response
1184
+ ? row.X(response)
1185
+ : row.X(response[0], response[1]);
1186
+ break;
1187
+ case "S":
1188
+ "string" === typeof response
1189
+ ? row.S(response)
1190
+ : row.S(
1191
+ response[0],
1192
+ 0 === response[1] ? void 0 : response[1],
1193
+ 3 === response.length ? response[2] : void 0
1194
+ );
1195
+ break;
1196
+ case "M":
1197
+ "string" === typeof response
1198
+ ? row.M(response)
1199
+ : row.M(response[0], response[1]);
1200
+ }
1201
+ break;
1202
+ case 69:
1203
+ tag = JSON.parse(row).digest;
1204
+ row = Error(
1205
+ "An error occurred in the Server Components render. The specific message is omitted in production builds to avoid leaking sensitive details. A digest property is included on this error instance which may provide additional details about the nature of the error."
1206
+ );
1207
+ row.stack = "Error: " + row.message;
1208
+ row.digest = tag;
1209
+ tag = response._chunks;
1210
+ (buffer = tag.get(id))
1211
+ ? triggerErrorOnChunk(buffer, row)
1212
+ : tag.set(id, new Chunk("rejected", null, row, response));
1213
+ break;
1214
+ case 84:
1215
+ tag = response._chunks;
1216
+ (buffer = tag.get(id)) && "pending" !== buffer.status
1217
+ ? buffer.reason.enqueueValue(row)
1218
+ : tag.set(id, new Chunk("fulfilled", row, null, response));
1219
+ break;
1220
+ case 68:
1221
+ case 87:
1222
+ throw Error(
1223
+ "Failed to read a RSC payload created by a development version of React on the server while using a production version on the client. Always use matching versions on the server and the client."
1224
+ );
1225
+ case 82:
1226
+ startReadableStream(response, id, void 0);
1227
+ break;
1228
+ case 114:
1229
+ startReadableStream(response, id, "bytes");
1230
+ break;
1231
+ case 88:
1232
+ startAsyncIterable(response, id, !1);
1233
+ break;
1234
+ case 120:
1235
+ startAsyncIterable(response, id, !0);
1236
+ break;
1237
+ case 67:
1238
+ (response = response._chunks.get(id)) &&
1239
+ "fulfilled" === response.status &&
1240
+ response.reason.close("" === row ? '"$undefined"' : row);
1241
+ break;
1242
+ default:
1243
+ (tag = response._chunks),
1244
+ (buffer = tag.get(id))
1245
+ ? resolveModelChunk(buffer, row)
1246
+ : tag.set(id, new Chunk("resolved_model", row, null, response));
1247
+ }
1248
+ }
675
1249
  function createFromJSONCallback(response) {
676
1250
  return function (key, value) {
677
1251
  return "string" === typeof value
@@ -723,24 +1297,41 @@ function startReadingFromStream(response, stream) {
723
1297
  if (_ref.done) reportGlobalError(response, Error("Connection closed."));
724
1298
  else {
725
1299
  var i = 0,
726
- rowState = response._rowState,
727
- rowID = response._rowID,
728
- rowTag = response._rowTag,
729
- rowLength = response._rowLength;
730
- _ref = response._buffer;
731
- for (var chunkLength = value.length; i < chunkLength; ) {
1300
+ rowState = response._rowState;
1301
+ _ref = response._rowID;
1302
+ for (
1303
+ var rowTag = response._rowTag,
1304
+ rowLength = response._rowLength,
1305
+ buffer = response._buffer,
1306
+ chunkLength = value.length;
1307
+ i < chunkLength;
1308
+
1309
+ ) {
732
1310
  var lastIdx = -1;
733
1311
  switch (rowState) {
734
1312
  case 0:
735
1313
  lastIdx = value[i++];
736
1314
  58 === lastIdx
737
1315
  ? (rowState = 1)
738
- : (rowID =
739
- (rowID << 4) | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48));
1316
+ : (_ref =
1317
+ (_ref << 4) | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48));
740
1318
  continue;
741
1319
  case 1:
742
1320
  rowState = value[i];
743
- 84 === rowState
1321
+ 84 === rowState ||
1322
+ 65 === rowState ||
1323
+ 79 === rowState ||
1324
+ 111 === rowState ||
1325
+ 85 === rowState ||
1326
+ 83 === rowState ||
1327
+ 115 === rowState ||
1328
+ 76 === rowState ||
1329
+ 108 === rowState ||
1330
+ 71 === rowState ||
1331
+ 103 === rowState ||
1332
+ 77 === rowState ||
1333
+ 109 === rowState ||
1334
+ 86 === rowState
744
1335
  ? ((rowTag = rowState), (rowState = 2), i++)
745
1336
  : (64 < rowState && 91 > rowState) ||
746
1337
  114 === rowState ||
@@ -763,120 +1354,22 @@ function startReadingFromStream(response, stream) {
763
1354
  (lastIdx = i + rowLength), lastIdx > value.length && (lastIdx = -1);
764
1355
  }
765
1356
  var offset = value.byteOffset + i;
766
- if (-1 < lastIdx) {
767
- i = new Uint8Array(value.buffer, offset, lastIdx - i);
768
- rowLength = response;
769
- offset = rowTag;
770
- var stringDecoder = rowLength._stringDecoder;
771
- rowTag = "";
772
- for (var i$jscomp$0 = 0; i$jscomp$0 < _ref.length; i$jscomp$0++)
773
- rowTag += stringDecoder.decode(_ref[i$jscomp$0], decoderOptions);
774
- rowTag += stringDecoder.decode(i);
775
- switch (offset) {
776
- case 73:
777
- resolveModule(rowLength, rowID, rowTag);
778
- break;
779
- case 72:
780
- rowID = rowTag[0];
781
- rowTag = rowTag.slice(1);
782
- rowLength = JSON.parse(rowTag, rowLength._fromJSON);
783
- rowTag = ReactDOMSharedInternals.d;
784
- switch (rowID) {
785
- case "D":
786
- rowTag.D(rowLength);
787
- break;
788
- case "C":
789
- "string" === typeof rowLength
790
- ? rowTag.C(rowLength)
791
- : rowTag.C(rowLength[0], rowLength[1]);
792
- break;
793
- case "L":
794
- rowID = rowLength[0];
795
- i = rowLength[1];
796
- 3 === rowLength.length
797
- ? rowTag.L(rowID, i, rowLength[2])
798
- : rowTag.L(rowID, i);
799
- break;
800
- case "m":
801
- "string" === typeof rowLength
802
- ? rowTag.m(rowLength)
803
- : rowTag.m(rowLength[0], rowLength[1]);
804
- break;
805
- case "X":
806
- "string" === typeof rowLength
807
- ? rowTag.X(rowLength)
808
- : rowTag.X(rowLength[0], rowLength[1]);
809
- break;
810
- case "S":
811
- "string" === typeof rowLength
812
- ? rowTag.S(rowLength)
813
- : rowTag.S(
814
- rowLength[0],
815
- 0 === rowLength[1] ? void 0 : rowLength[1],
816
- 3 === rowLength.length ? rowLength[2] : void 0
817
- );
818
- break;
819
- case "M":
820
- "string" === typeof rowLength
821
- ? rowTag.M(rowLength)
822
- : rowTag.M(rowLength[0], rowLength[1]);
823
- }
824
- break;
825
- case 69:
826
- rowTag = JSON.parse(rowTag);
827
- i = rowTag.digest;
828
- rowTag = Error(
829
- "An error occurred in the Server Components render. The specific message is omitted in production builds to avoid leaking sensitive details. A digest property is included on this error instance which may provide additional details about the nature of the error."
830
- );
831
- rowTag.stack = "Error: " + rowTag.message;
832
- rowTag.digest = i;
833
- i = rowLength._chunks;
834
- (offset = i.get(rowID))
835
- ? triggerErrorOnChunk(offset, rowTag)
836
- : i.set(rowID, new Chunk("rejected", null, rowTag, rowLength));
837
- break;
838
- case 84:
839
- rowLength._chunks.set(
840
- rowID,
841
- new Chunk("fulfilled", rowTag, null, rowLength)
842
- );
843
- break;
844
- case 68:
845
- case 87:
846
- throw Error(
847
- "Failed to read a RSC payload created by a development version of React on the server while using a production version on the client. Always use matching versions on the server and the client."
848
- );
849
- default:
850
- (i = rowLength._chunks),
851
- (offset = i.get(rowID))
852
- ? ((rowLength = offset),
853
- (rowID = rowTag),
854
- "pending" === rowLength.status &&
855
- ((rowTag = rowLength.value),
856
- (i = rowLength.reason),
857
- (rowLength.status = "resolved_model"),
858
- (rowLength.value = rowID),
859
- null !== rowTag &&
860
- (initializeModelChunk(rowLength),
861
- wakeChunkIfInitialized(rowLength, rowTag, i))))
862
- : i.set(
863
- rowID,
864
- new Chunk("resolved_model", rowTag, null, rowLength)
865
- );
866
- }
867
- i = lastIdx;
868
- 3 === rowState && i++;
869
- rowLength = rowID = rowTag = rowState = 0;
870
- _ref.length = 0;
871
- } else {
1357
+ if (-1 < lastIdx)
1358
+ (rowLength = new Uint8Array(value.buffer, offset, lastIdx - i)),
1359
+ processFullRow(response, _ref, rowTag, buffer, rowLength),
1360
+ (i = lastIdx),
1361
+ 3 === rowState && i++,
1362
+ (rowLength = _ref = rowTag = rowState = 0),
1363
+ (buffer.length = 0);
1364
+ else {
872
1365
  value = new Uint8Array(value.buffer, offset, value.byteLength - i);
873
- _ref.push(value);
1366
+ buffer.push(value);
874
1367
  rowLength -= value.byteLength;
875
1368
  break;
876
1369
  }
877
1370
  }
878
1371
  response._rowState = rowState;
879
- response._rowID = rowID;
1372
+ response._rowID = _ref;
880
1373
  response._rowTag = rowTag;
881
1374
  response._rowLength = rowLength;
882
1375
  return reader.read().then(progress).catch(error);
@@ -914,7 +1407,7 @@ exports.createServerReference = function (id, callServer) {
914
1407
  return proxy;
915
1408
  };
916
1409
  exports.createTemporaryReferenceSet = function () {
917
- return [];
1410
+ return new Map();
918
1411
  };
919
1412
  exports.encodeReply = function (value, options) {
920
1413
  return new Promise(function (resolve, reject) {