@vitejs/plugin-rsc 0.5.34 → 0.5.36

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 (81) hide show
  1. package/README.md +15 -0
  2. package/dist/browser.d.ts +1 -1
  3. package/dist/{cjs-AWVWfddx.js → cjs-DhDj_zQT.js} +2 -2
  4. package/dist/client-Dq3oGLRS.d.ts +8 -0
  5. package/dist/{client-reference-DEZtXTv1.d.ts → client-reference-Bk5pzNGN.d.ts} +1 -1
  6. package/dist/client.node-BEQT2PT-.d.ts +9 -0
  7. package/dist/client.shared-D1HxyClg.js +10 -0
  8. package/dist/client.shared-VT232QCM.d.ts +16 -0
  9. package/dist/core/browser.js +1 -1
  10. package/dist/core/plugin.d.ts +2 -3
  11. package/dist/core/rsc.d.ts +1 -1
  12. package/dist/core/rsc.js +1 -1
  13. package/dist/core/ssr.d.ts +1 -7
  14. package/dist/core/ssr.js +1 -1
  15. package/dist/{index-C5IY2S-e.d.ts → index-CROaL0MT.d.ts} +34 -8
  16. package/dist/index.js +1 -1
  17. package/dist/{picocolors-391UXIDd.js → picocolors-DibqjEBF.js} +1 -1
  18. package/dist/{plugin-Cbs9j6lP.js → plugin-Bqv0ikDW.js} +55 -37
  19. package/dist/plugin.js +1 -1
  20. package/dist/plugins/cjs.d.ts +2 -3
  21. package/dist/plugins/cjs.js +1 -1
  22. package/dist/react/browser.d.ts +10 -10
  23. package/dist/react/rsc/client.d.ts +1 -1
  24. package/dist/react/rsc/client.js +2 -5
  25. package/dist/react/rsc/client.node.d.ts +2 -0
  26. package/dist/react/rsc/client.node.js +16 -0
  27. package/dist/react/rsc/server.d.ts +2 -2
  28. package/dist/react/rsc/server.node.d.ts +3 -0
  29. package/dist/react/rsc/server.node.js +24 -0
  30. package/dist/react/rsc/static.d.ts +4 -5
  31. package/dist/react/rsc/static.node.d.ts +6 -0
  32. package/dist/react/rsc/static.node.js +11 -0
  33. package/dist/react/rsc.d.ts +3 -3
  34. package/dist/react/ssr.d.ts +9 -9
  35. package/dist/react/ssr.node.d.ts +12 -0
  36. package/dist/react/ssr.node.js +21 -0
  37. package/dist/rsc/client.d.ts +1 -1
  38. package/dist/rsc/client.node.d.ts +2 -0
  39. package/dist/rsc/client.node.js +3 -0
  40. package/dist/rsc/server.d.ts +5 -5
  41. package/dist/rsc/server.node.d.ts +19 -0
  42. package/dist/rsc/server.node.js +13 -0
  43. package/dist/rsc/static.d.ts +4 -5
  44. package/dist/rsc/static.node.d.ts +16 -0
  45. package/dist/rsc/static.node.js +12 -0
  46. package/dist/{rsc-C3UdJLOW.d.ts → rsc-D8UlANI2.d.ts} +1 -1
  47. package/dist/rsc.d.ts +3 -3
  48. package/dist/rsc.node.d.ts +6 -0
  49. package/dist/rsc.node.js +7 -0
  50. package/dist/{scope-Bdx33sQv.js → scope-Ck0n25my.js} +2 -4
  51. package/dist/{server-ZBjqNTqU.d.ts → server-YwgjVtsE.d.ts} +2 -2
  52. package/dist/server.node-DU77AeKU.d.ts +15 -0
  53. package/dist/shared-BWJvctW6.js +34 -0
  54. package/dist/shared-DH8gaClP.js +90 -0
  55. package/dist/shared-DJBuYpZL.d.ts +20 -0
  56. package/dist/ssr-C-U7jY5S.d.ts +8 -0
  57. package/dist/ssr.d.ts +3 -21
  58. package/dist/ssr.js +1 -87
  59. package/dist/ssr.node.d.ts +5 -0
  60. package/dist/ssr.node.js +4 -0
  61. package/dist/transforms/index.js +67 -60
  62. package/dist/utils/encryption-runtime.d.ts +3 -4
  63. package/dist/utils/encryption-runtime.js +4 -2
  64. package/dist/utils/rpc.d.ts +3 -4
  65. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.browser.development.js +909 -495
  66. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.browser.production.js +399 -265
  67. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.edge.development.js +901 -477
  68. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.edge.production.js +380 -219
  69. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.node.development.js +925 -484
  70. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.node.production.js +385 -221
  71. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.browser.development.js +726 -388
  72. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.browser.production.js +566 -397
  73. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.edge.development.js +734 -397
  74. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.edge.production.js +477 -238
  75. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.node.development.js +1029 -620
  76. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.node.production.js +481 -261
  77. package/dist/vendor/react-server-dom/esm/react-server-dom-webpack-node-loader.production.js +2 -2
  78. package/dist/vendor/react-server-dom/package.json +3 -3
  79. package/package.json +16 -16
  80. package/dist/client-Bhch3O41.d.ts +0 -19
  81. package/dist/dist-uqdtSkzK.js +0 -64
@@ -9,8 +9,23 @@
9
9
  */
10
10
 
11
11
  "use strict";
12
- var ReactDOM = require("react-dom"),
13
- decoderOptions = { stream: !0 },
12
+ var ReactDOM = require("react-dom");
13
+ function formatProdErrorMessage(code) {
14
+ var url = "https://react.dev/errors/" + code;
15
+ if (1 < arguments.length) {
16
+ url += "?args[]=" + encodeURIComponent(arguments[1]);
17
+ for (var i = 2; i < arguments.length; i++)
18
+ url += "&args[]=" + encodeURIComponent(arguments[i]);
19
+ }
20
+ return (
21
+ "Minified React error #" +
22
+ code +
23
+ "; visit " +
24
+ url +
25
+ " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."
26
+ );
27
+ }
28
+ var decoderOptions = { stream: !0 },
14
29
  hasOwnProperty = Object.prototype.hasOwnProperty;
15
30
  function resolveClientReference(bundlerConfig, metadata) {
16
31
  if (bundlerConfig) {
@@ -19,12 +34,7 @@ function resolveClientReference(bundlerConfig, metadata) {
19
34
  moduleExports = bundlerConfig.name;
20
35
  else {
21
36
  bundlerConfig = moduleExports && moduleExports["*"];
22
- if (!bundlerConfig)
23
- throw Error(
24
- 'Could not find the module "' +
25
- metadata[0] +
26
- '" in the React Server Consumer Manifest. This is probably a bug in the React Server Components bundler.'
27
- );
37
+ if (!bundlerConfig) throw Error(formatProdErrorMessage(588, metadata[0]));
28
38
  moduleExports = metadata[2];
29
39
  }
30
40
  return 4 === metadata.length
@@ -42,12 +52,7 @@ function resolveServerReference(bundlerConfig, id) {
42
52
  -1 !== idx &&
43
53
  ((name = id.slice(idx + 1)),
44
54
  (resolvedModuleData = bundlerConfig[id.slice(0, idx)]));
45
- if (!resolvedModuleData)
46
- throw Error(
47
- 'Could not find the module "' +
48
- id +
49
- '" in the React Server Manifest. This is probably a bug in the React Server Components bundler.'
50
- );
55
+ if (!resolvedModuleData) throw Error(formatProdErrorMessage(589, id));
51
56
  }
52
57
  return resolvedModuleData.async
53
58
  ? [resolvedModuleData.id, resolvedModuleData.chunks, name, 1]
@@ -130,7 +135,7 @@ function getIteratorFn(maybeIterable) {
130
135
  var ASYNC_ITERATOR = Symbol.asyncIterator,
131
136
  isArrayImpl = Array.isArray,
132
137
  getPrototypeOf = Object.getPrototypeOf,
133
- ObjectPrototype = Object.prototype,
138
+ ObjectPrototype$1 = Object.prototype,
134
139
  knownServerReferences = new WeakMap();
135
140
  function serializeNumber(number) {
136
141
  return Number.isFinite(number)
@@ -147,9 +152,36 @@ function processReply(
147
152
  root,
148
153
  formFieldPrefix,
149
154
  temporaryReferences,
150
- resolve,
151
- reject
155
+ onResolve,
156
+ onReject,
157
+ signal
152
158
  ) {
159
+ function endReplyLifetime() {
160
+ null !== replyLifetimeController &&
161
+ replyLifetimeController.abort("The reply ended.");
162
+ }
163
+ function resolve(value) {
164
+ settled = !0;
165
+ endReplyLifetime();
166
+ onResolve(value);
167
+ }
168
+ function reject(error) {
169
+ settled = !0;
170
+ endReplyLifetime();
171
+ onReject(error);
172
+ }
173
+ function attachAbortSignal(abortSignal) {
174
+ abortSignal.aborted
175
+ ? abort()
176
+ : ((replyLifetimeController = new AbortController()),
177
+ abortSignal.addEventListener(
178
+ "abort",
179
+ function () {
180
+ abort();
181
+ },
182
+ { signal: replyLifetimeController.signal }
183
+ ));
184
+ }
153
185
  function serializeTypedArray(tag, typedArray) {
154
186
  typedArray = new Blob([
155
187
  new Uint8Array(
@@ -261,9 +293,9 @@ function processReply(
261
293
  "$T"
262
294
  );
263
295
  }
264
- throw Error(
265
- "React Element cannot be passed to Server Functions from the Client without a temporary reference set. Pass a TemporaryReferenceSet to the options."
266
- );
296
+ if (void 0 !== temporaryReferences && modelRoot === value)
297
+ return (modelRoot = null), "$T";
298
+ throw Error(formatProdErrorMessage(510, ""));
267
299
  case REACT_LAZY_TYPE:
268
300
  parentReference = value._payload;
269
301
  var init = value._init;
@@ -422,13 +454,11 @@ function processReply(
422
454
  return serializeAsyncIterable(value, key.call(value));
423
455
  key = getPrototypeOf(value);
424
456
  if (
425
- key !== ObjectPrototype &&
457
+ key !== ObjectPrototype$1 &&
426
458
  (null === key || null !== getPrototypeOf(key))
427
459
  ) {
428
460
  if (void 0 === temporaryReferences)
429
- throw Error(
430
- "Only plain objects, and a few built-ins, can be passed to Server Functions. Classes or null prototypes are not supported."
431
- );
461
+ throw Error(formatProdErrorMessage(499, ""));
432
462
  return "$T";
433
463
  }
434
464
  return value;
@@ -467,9 +497,7 @@ function processReply(
467
497
  return (
468
498
  temporaryReferences.set(parentReference + ":" + key, value), "$T"
469
499
  );
470
- throw Error(
471
- "Client Functions cannot be passed directly to Server Functions. Only Functions passed from the Server can be passed back again."
472
- );
500
+ throw Error(formatProdErrorMessage(469));
473
501
  }
474
502
  if ("symbol" === typeof value) {
475
503
  if (
@@ -481,16 +509,10 @@ function processReply(
481
509
  return (
482
510
  temporaryReferences.set(parentReference + ":" + key, value), "$T"
483
511
  );
484
- throw Error(
485
- "Symbols cannot be passed to a Server Function without a temporary reference set. Pass a TemporaryReferenceSet to the options."
486
- );
512
+ throw Error(formatProdErrorMessage(517, ""));
487
513
  }
488
514
  if ("bigint" === typeof value) return "$n" + value.toString(10);
489
- throw Error(
490
- "Type " +
491
- typeof value +
492
- " is not supported as an argument to a Server Function."
493
- );
515
+ throw Error(formatProdErrorMessage(472, typeof value));
494
516
  }
495
517
  function serializeModel(model, id) {
496
518
  "object" === typeof model &&
@@ -501,21 +523,25 @@ function processReply(
501
523
  modelRoot = model;
502
524
  return JSON.stringify(model, resolveToJSON);
503
525
  }
526
+ function abort() {
527
+ endReplyLifetime();
528
+ 0 < pendingParts &&
529
+ ((pendingParts = 0),
530
+ null === formData ? resolve(json) : resolve(formData));
531
+ }
504
532
  var nextPartId = 1,
505
533
  pendingParts = 0,
506
534
  formData = null,
507
535
  writtenObjects = new WeakMap(),
508
536
  modelRoot = root,
537
+ settled = !1,
538
+ replyLifetimeController = null,
509
539
  json = serializeModel(root, 0);
510
540
  null === formData
511
541
  ? resolve(json)
512
542
  : (formData.set(formFieldPrefix + "0", json),
513
543
  0 === pendingParts && resolve(formData));
514
- return function () {
515
- 0 < pendingParts &&
516
- ((pendingParts = 0),
517
- null === formData ? resolve(json) : resolve(formData));
518
- };
544
+ void 0 === signal || settled || attachAbortSignal(signal);
519
545
  }
520
546
  function registerBoundServerReference(reference, id, bound) {
521
547
  knownServerReferences.has(reference) ||
@@ -541,37 +567,46 @@ function createBoundServerReference(metaData, callServer) {
541
567
  registerBoundServerReference(action, id, bound);
542
568
  return action;
543
569
  }
570
+ var ObjectPrototype = Object.prototype,
571
+ ArrayPrototype = Array.prototype;
544
572
  function ReactPromise(status, value, reason) {
545
573
  this.status = status;
546
574
  this.value = value;
547
575
  this.reason = reason;
548
576
  }
549
577
  ReactPromise.prototype = Object.create(Promise.prototype);
550
- ReactPromise.prototype.then = function (resolve, reject) {
551
- switch (this.status) {
552
- case "resolved_model":
553
- initializeModelChunk(this);
554
- break;
555
- case "resolved_module":
556
- initializeModuleChunk(this);
557
- }
558
- switch (this.status) {
559
- case "fulfilled":
560
- "function" === typeof resolve && resolve(this.value);
561
- break;
562
- case "pending":
563
- case "blocked":
564
- "function" === typeof resolve &&
565
- (null === this.value && (this.value = []), this.value.push(resolve));
566
- "function" === typeof reject &&
567
- (null === this.reason && (this.reason = []), this.reason.push(reject));
568
- break;
569
- case "halted":
570
- break;
571
- default:
572
- "function" === typeof reject && reject(this.reason);
578
+ Object.defineProperty(ReactPromise.prototype, "then", {
579
+ writable: !0,
580
+ enumerable: !0,
581
+ configurable: !0,
582
+ value: function (resolve, reject) {
583
+ switch (this.status) {
584
+ case "resolved_model":
585
+ initializeModelChunk(this);
586
+ break;
587
+ case "resolved_module":
588
+ initializeModuleChunk(this);
589
+ }
590
+ switch (this.status) {
591
+ case "fulfilled":
592
+ "function" === typeof resolve && resolve(this.value);
593
+ break;
594
+ case "pending":
595
+ case "pending_weak":
596
+ case "blocked":
597
+ "function" === typeof resolve &&
598
+ (null === this.value && (this.value = []), this.value.push(resolve));
599
+ "function" === typeof reject &&
600
+ (null === this.reason && (this.reason = []),
601
+ this.reason.push(reject));
602
+ break;
603
+ case "halted":
604
+ break;
605
+ default:
606
+ "function" === typeof reject && reject(this.reason);
607
+ }
573
608
  }
574
- };
609
+ });
575
610
  function readChunk(chunk) {
576
611
  switch (chunk.status) {
577
612
  case "resolved_model":
@@ -584,6 +619,7 @@ function readChunk(chunk) {
584
619
  case "fulfilled":
585
620
  return chunk.value;
586
621
  case "pending":
622
+ case "pending_weak":
587
623
  case "blocked":
588
624
  case "halted":
589
625
  throw chunk;
@@ -591,20 +627,20 @@ function readChunk(chunk) {
591
627
  throw chunk.reason;
592
628
  }
593
629
  }
594
- function wakeChunk(listeners, value, chunk) {
630
+ function wakeChunk(response, listeners, value, chunk) {
595
631
  for (var i = 0; i < listeners.length; i++) {
596
632
  var listener = listeners[i];
597
633
  "function" === typeof listener
598
634
  ? listener(value)
599
- : fulfillReference(listener, value, chunk);
635
+ : fulfillReference(response, listener, value, chunk);
600
636
  }
601
637
  }
602
- function rejectChunk(listeners, error) {
638
+ function rejectChunk(response, listeners, error) {
603
639
  for (var i = 0; i < listeners.length; i++) {
604
640
  var listener = listeners[i];
605
641
  "function" === typeof listener
606
642
  ? listener(error)
607
- : rejectReference(listener, error);
643
+ : rejectReference(response, listener.handler, error);
608
644
  }
609
645
  }
610
646
  function resolveBlockedCycle(resolvedChunk, reference) {
@@ -628,10 +664,15 @@ function resolveBlockedCycle(resolvedChunk, reference) {
628
664
  }
629
665
  return null;
630
666
  }
631
- function wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners) {
667
+ function wakeChunkIfInitialized(
668
+ response,
669
+ chunk,
670
+ resolveListeners,
671
+ rejectListeners
672
+ ) {
632
673
  switch (chunk.status) {
633
674
  case "fulfilled":
634
- wakeChunk(resolveListeners, chunk.value, chunk);
675
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
635
676
  break;
636
677
  case "blocked":
637
678
  for (var i = 0; i < resolveListeners.length; i++) {
@@ -640,7 +681,7 @@ function wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners) {
640
681
  var cyclicHandler = resolveBlockedCycle(chunk, listener);
641
682
  if (null !== cyclicHandler)
642
683
  switch (
643
- (fulfillReference(listener, cyclicHandler.value, chunk),
684
+ (fulfillReference(response, listener, cyclicHandler.value, chunk),
644
685
  resolveListeners.splice(i, 1),
645
686
  i--,
646
687
  null !== rejectListeners &&
@@ -649,19 +690,19 @@ function wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners) {
649
690
  chunk.status)
650
691
  ) {
651
692
  case "fulfilled":
652
- wakeChunk(resolveListeners, chunk.value, chunk);
693
+ wakeChunk(response, resolveListeners, chunk.value, chunk);
653
694
  return;
654
695
  case "rejected":
655
696
  null !== rejectListeners &&
656
- rejectChunk(rejectListeners, chunk.reason);
697
+ rejectChunk(response, rejectListeners, chunk.reason);
657
698
  return;
658
699
  }
659
700
  }
660
701
  }
661
702
  case "pending":
662
703
  if (chunk.value)
663
- for (i = 0; i < resolveListeners.length; i++)
664
- chunk.value.push(resolveListeners[i]);
704
+ for (response = 0; response < resolveListeners.length; response++)
705
+ chunk.value.push(resolveListeners[response]);
665
706
  else chunk.value = resolveListeners;
666
707
  if (chunk.reason) {
667
708
  if (rejectListeners)
@@ -674,16 +715,22 @@ function wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners) {
674
715
  } else chunk.reason = rejectListeners;
675
716
  break;
676
717
  case "rejected":
677
- rejectListeners && rejectChunk(rejectListeners, chunk.reason);
718
+ rejectListeners && rejectChunk(response, rejectListeners, chunk.reason);
678
719
  }
679
720
  }
680
721
  function triggerErrorOnChunk(response, chunk, error) {
681
- "pending" !== chunk.status && "blocked" !== chunk.status
682
- ? chunk.reason.error(error)
683
- : ((response = chunk.reason),
684
- (chunk.status = "rejected"),
685
- (chunk.reason = error),
686
- null !== response && rejectChunk(response, error));
722
+ if (
723
+ "pending" !== chunk.status &&
724
+ "pending_weak" !== chunk.status &&
725
+ "blocked" !== chunk.status
726
+ )
727
+ chunk.reason.error(error);
728
+ else {
729
+ var listeners = chunk.reason;
730
+ chunk.status = "rejected";
731
+ chunk.reason = error;
732
+ null !== listeners && rejectChunk(response, listeners, error);
733
+ }
687
734
  }
688
735
  function createResolvedIteratorResultChunk(response, value, done) {
689
736
  return new ReactPromise(
@@ -700,7 +747,8 @@ function resolveIteratorResultChunk(response, chunk, value, done) {
700
747
  );
701
748
  }
702
749
  function resolveModelChunk(response, chunk, value) {
703
- if ("pending" !== chunk.status) chunk.reason.enqueueModel(value);
750
+ if ("pending" !== chunk.status && "pending_weak" !== chunk.status)
751
+ chunk.reason.enqueueModel(value);
704
752
  else {
705
753
  var resolveListeners = chunk.value,
706
754
  rejectListeners = chunk.reason;
@@ -709,19 +757,33 @@ function resolveModelChunk(response, chunk, value) {
709
757
  chunk.reason = response;
710
758
  null !== resolveListeners &&
711
759
  (initializeModelChunk(chunk),
712
- wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners));
760
+ wakeChunkIfInitialized(
761
+ response,
762
+ chunk,
763
+ resolveListeners,
764
+ rejectListeners
765
+ ));
713
766
  }
714
767
  }
715
768
  function resolveModuleChunk(response, chunk, value) {
716
- if ("pending" === chunk.status || "blocked" === chunk.status) {
717
- response = chunk.value;
718
- var rejectListeners = chunk.reason;
769
+ if (
770
+ "pending" === chunk.status ||
771
+ "pending_weak" === chunk.status ||
772
+ "blocked" === chunk.status
773
+ ) {
774
+ var resolveListeners = chunk.value,
775
+ rejectListeners = chunk.reason;
719
776
  chunk.status = "resolved_module";
720
777
  chunk.value = value;
721
778
  chunk.reason = null;
722
- null !== response &&
779
+ null !== resolveListeners &&
723
780
  (initializeModuleChunk(chunk),
724
- wakeChunkIfInitialized(chunk, response, rejectListeners));
781
+ wakeChunkIfInitialized(
782
+ response,
783
+ chunk,
784
+ resolveListeners,
785
+ rejectListeners
786
+ ));
725
787
  }
726
788
  }
727
789
  var initializingHandler = null;
@@ -734,29 +796,51 @@ function initializeModelChunk(chunk) {
734
796
  chunk.value = null;
735
797
  chunk.reason = null;
736
798
  try {
737
- var value = JSON.parse(resolvedModel, response._fromJSON),
738
- resolveListeners = chunk.value;
739
- if (null !== resolveListeners)
799
+ var value = parseModel(response, resolvedModel);
800
+ resolvedModel = initializingHandler;
801
+ if (null !== resolvedModel) {
802
+ if (resolvedModel.errored) {
803
+ "blocked" === chunk.status &&
804
+ triggerErrorOnChunk(response, chunk, resolvedModel.reason);
805
+ return;
806
+ }
807
+ resolvedModel.value = value;
808
+ resolvedModel.chunk = chunk;
809
+ }
810
+ var listeners = chunk.value,
811
+ rejectListeners = chunk.reason;
812
+ chunk.value = null;
813
+ chunk.reason = null;
814
+ if (null !== listeners) {
740
815
  for (
741
- chunk.value = null, chunk.reason = null, resolvedModel = 0;
742
- resolvedModel < resolveListeners.length;
743
- resolvedModel++
816
+ var cyclic = null, deferred = null, i = 0;
817
+ i < listeners.length;
818
+ i++
744
819
  ) {
745
- var listener = resolveListeners[resolvedModel];
746
- "function" === typeof listener
747
- ? listener(value)
748
- : fulfillReference(listener, value, chunk);
749
- }
750
- if (null !== initializingHandler) {
751
- if (initializingHandler.errored) throw initializingHandler.reason;
752
- if (0 < initializingHandler.deps) {
753
- initializingHandler.value = value;
754
- initializingHandler.chunk = chunk;
755
- return;
820
+ var listener = listeners[i];
821
+ if (
822
+ "function" !== typeof listener &&
823
+ null !== resolveBlockedCycle(chunk, listener)
824
+ ) {
825
+ if (
826
+ (null === cyclic && (cyclic = []),
827
+ cyclic.push(listener),
828
+ null !== rejectListeners)
829
+ ) {
830
+ var rejectionIdx = rejectListeners.indexOf(listener);
831
+ -1 !== rejectionIdx && rejectListeners.splice(rejectionIdx, 1);
832
+ }
833
+ } else null === deferred && (deferred = []), deferred.push(listener);
756
834
  }
835
+ null !== deferred &&
836
+ ((chunk.value = deferred), (chunk.reason = rejectListeners));
837
+ if (null !== cyclic)
838
+ for (listeners = 0; listeners < cyclic.length; listeners++)
839
+ fulfillReference(response, cyclic[listeners], value, chunk);
757
840
  }
758
- chunk.status = "fulfilled";
759
- chunk.value = value;
841
+ "blocked" !== chunk.status ||
842
+ (null !== resolvedModel && 0 < resolvedModel.deps) ||
843
+ initializeBlockedChunk(response, chunk, value, null);
760
844
  } catch (error) {
761
845
  (chunk.status = "rejected"), (chunk.reason = error);
762
846
  } finally {
@@ -768,6 +852,7 @@ function initializeModuleChunk(chunk) {
768
852
  var value = requireModule(chunk.value);
769
853
  chunk.status = "fulfilled";
770
854
  chunk.value = value;
855
+ chunk.reason = null;
771
856
  } catch (error) {
772
857
  (chunk.status = "rejected"), (chunk.reason = error);
773
858
  }
@@ -791,14 +876,31 @@ function getChunk(response, id) {
791
876
  chunk = chunks.get(id);
792
877
  chunk ||
793
878
  ((chunk = response._closed
794
- ? new ReactPromise("rejected", null, response._closedReason)
879
+ ? response._allowPartialStream
880
+ ? new ReactPromise("halted", null, null)
881
+ : new ReactPromise("rejected", null, response._closedReason)
795
882
  : new ReactPromise("pending", null, null)),
796
883
  chunks.set(id, chunk));
797
884
  return chunk;
798
885
  }
799
- function fulfillReference(reference, value) {
800
- var response = reference.response,
801
- handler = reference.handler,
886
+ function initializeBlockedChunk(response, chunk, value, reason) {
887
+ var resolveListeners = chunk.value;
888
+ chunk.status = "fulfilled";
889
+ chunk.value = value;
890
+ chunk.reason = reason;
891
+ null !== resolveListeners &&
892
+ wakeChunk(response, resolveListeners, value, chunk);
893
+ }
894
+ function initializeChunkIfUnblocked(response, handler) {
895
+ if (0 === handler.deps && !handler.errored) {
896
+ var chunk = handler.chunk;
897
+ null !== chunk &&
898
+ "blocked" === chunk.status &&
899
+ initializeBlockedChunk(response, chunk, handler.value, handler.reason);
900
+ }
901
+ }
902
+ function fulfillReference(response, reference, value) {
903
+ var handler = reference.handler,
802
904
  parentObject = reference.parentObject,
803
905
  key = reference.key,
804
906
  map = reference.map,
@@ -836,6 +938,7 @@ function fulfillReference(reference, value) {
836
938
  continue;
837
939
  }
838
940
  case "pending":
941
+ case "pending_weak":
839
942
  path.splice(0, i - 1);
840
943
  null === referencedChunk.value
841
944
  ? (referencedChunk.value = [reference])
@@ -847,7 +950,11 @@ function fulfillReference(reference, value) {
847
950
  case "halted":
848
951
  return;
849
952
  default:
850
- rejectReference(reference, referencedChunk.reason);
953
+ rejectReference(
954
+ response,
955
+ reference.handler,
956
+ referencedChunk.reason
957
+ );
851
958
  return;
852
959
  }
853
960
  }
@@ -859,7 +966,7 @@ function fulfillReference(reference, value) {
859
966
  hasOwnProperty.call(value, name)
860
967
  )
861
968
  value = value[name];
862
- else throw Error("Invalid reference.");
969
+ else throw Error(formatProdErrorMessage(570));
863
970
  }
864
971
  for (
865
972
  ;
@@ -868,19 +975,19 @@ function fulfillReference(reference, value) {
868
975
  value.$$typeof === REACT_LAZY_TYPE;
869
976
 
870
977
  ) {
871
- var referencedChunk$44 = value._payload;
872
- if (referencedChunk$44 === handler.chunk) value = handler.value;
978
+ var referencedChunk$45 = value._payload;
979
+ if (referencedChunk$45 === handler.chunk) value = handler.value;
873
980
  else {
874
- switch (referencedChunk$44.status) {
981
+ switch (referencedChunk$45.status) {
875
982
  case "resolved_model":
876
- initializeModelChunk(referencedChunk$44);
983
+ initializeModelChunk(referencedChunk$45);
877
984
  break;
878
985
  case "resolved_module":
879
- initializeModuleChunk(referencedChunk$44);
986
+ initializeModuleChunk(referencedChunk$45);
880
987
  }
881
- switch (referencedChunk$44.status) {
988
+ switch (referencedChunk$45.status) {
882
989
  case "fulfilled":
883
- value = referencedChunk$44.value;
990
+ value = referencedChunk$45.value;
884
991
  continue;
885
992
  }
886
993
  break;
@@ -902,23 +1009,13 @@ function fulfillReference(reference, value) {
902
1009
  }
903
1010
  }
904
1011
  } catch (error) {
905
- rejectReference(reference, error);
1012
+ rejectReference(response, reference.handler, error);
906
1013
  return;
907
1014
  }
908
1015
  handler.deps--;
909
- 0 === handler.deps &&
910
- ((reference = handler.chunk),
911
- null !== reference &&
912
- "blocked" === reference.status &&
913
- ((value = reference.value),
914
- (reference.status = "fulfilled"),
915
- (reference.value = handler.value),
916
- (reference.reason = handler.reason),
917
- null !== value && wakeChunk(value, handler.value, reference)));
1016
+ initializeChunkIfUnblocked(response, handler);
918
1017
  }
919
- function rejectReference(reference, error) {
920
- var handler = reference.handler;
921
- reference = reference.response;
1018
+ function rejectReference(response, handler, error) {
922
1019
  handler.errored ||
923
1020
  ((handler.errored = !0),
924
1021
  (handler.value = null),
@@ -926,7 +1023,7 @@ function rejectReference(reference, error) {
926
1023
  (handler = handler.chunk),
927
1024
  null !== handler &&
928
1025
  "blocked" === handler.status &&
929
- triggerErrorOnChunk(reference, handler, error));
1026
+ triggerErrorOnChunk(response, handler, error));
930
1027
  }
931
1028
  function waitForReference(
932
1029
  referencedChunk,
@@ -936,21 +1033,19 @@ function waitForReference(
936
1033
  map,
937
1034
  path
938
1035
  ) {
939
- if (initializingHandler) {
940
- var handler = initializingHandler;
941
- handler.deps++;
942
- } else
943
- handler = initializingHandler = {
944
- parent: null,
945
- chunk: null,
946
- value: null,
947
- reason: null,
948
- deps: 1,
949
- errored: !1
950
- };
1036
+ initializingHandler
1037
+ ? ((response = initializingHandler), response.deps++)
1038
+ : (response = initializingHandler =
1039
+ {
1040
+ parent: null,
1041
+ chunk: null,
1042
+ value: null,
1043
+ reason: null,
1044
+ deps: 1,
1045
+ errored: !1
1046
+ });
951
1047
  parentObject = {
952
- response: response,
953
- handler: handler,
1048
+ handler: response,
954
1049
  parentObject: parentObject,
955
1050
  key: key,
956
1051
  map: map,
@@ -1015,34 +1110,28 @@ function loadServerReference(response, metaData, parentObject, key) {
1015
1110
  boundArgs.props = resolvedValue;
1016
1111
  }
1017
1112
  handler.deps--;
1018
- 0 === handler.deps &&
1019
- ((resolvedValue = handler.chunk),
1020
- null !== resolvedValue &&
1021
- "blocked" === resolvedValue.status &&
1022
- ((boundArgs = resolvedValue.value),
1023
- (resolvedValue.status = "fulfilled"),
1024
- (resolvedValue.value = handler.value),
1025
- (resolvedValue.reason = null),
1026
- null !== boundArgs &&
1027
- wakeChunk(boundArgs, handler.value, resolvedValue)));
1113
+ initializeChunkIfUnblocked(response, handler);
1028
1114
  },
1029
1115
  function (error) {
1030
1116
  if (!handler.errored) {
1031
- handler.errored = !0;
1032
- handler.value = null;
1033
- handler.reason = error;
1034
- var chunk = handler.chunk;
1035
- null !== chunk &&
1036
- "blocked" === chunk.status &&
1037
- triggerErrorOnChunk(response, chunk, error);
1117
+ var erroredHandler = handler;
1118
+ erroredHandler.errored = !0;
1119
+ erroredHandler.value = null;
1120
+ erroredHandler.reason = error;
1121
+ erroredHandler = handler.chunk;
1122
+ null !== erroredHandler &&
1123
+ "blocked" === erroredHandler.status &&
1124
+ triggerErrorOnChunk(response, erroredHandler, error);
1038
1125
  }
1039
1126
  }
1040
1127
  );
1041
1128
  return null;
1042
1129
  }
1130
+ var EMPTY_REFERENCE_PATH = [];
1043
1131
  function getOutlinedModel(response, reference, parentObject, key, map) {
1044
- reference = reference.split(":");
1045
- var id = parseInt(reference[0], 16);
1132
+ var id = parseInt(reference, 16);
1133
+ reference =
1134
+ -1 === reference.indexOf(":") ? EMPTY_REFERENCE_PATH : reference.split(":");
1046
1135
  id = getChunk(response, id);
1047
1136
  switch (id.status) {
1048
1137
  case "resolved_model":
@@ -1076,6 +1165,7 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
1076
1165
  break;
1077
1166
  case "blocked":
1078
1167
  case "pending":
1168
+ case "pending_weak":
1079
1169
  return waitForReference(
1080
1170
  id,
1081
1171
  parentObject,
@@ -1101,9 +1191,10 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
1101
1191
  default:
1102
1192
  return (
1103
1193
  initializingHandler
1104
- ? ((initializingHandler.errored = !0),
1105
- (initializingHandler.value = null),
1106
- (initializingHandler.reason = id.reason))
1194
+ ? ((response = initializingHandler),
1195
+ (response.errored = !0),
1196
+ (response.value = null),
1197
+ (response.reason = id.reason))
1107
1198
  : (initializingHandler = {
1108
1199
  parent: null,
1109
1200
  chunk: null,
@@ -1116,7 +1207,16 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
1116
1207
  );
1117
1208
  }
1118
1209
  }
1119
- id = id[reference[i]];
1210
+ var name = reference[i];
1211
+ if (
1212
+ "object" !== typeof id ||
1213
+ null === id ||
1214
+ (getPrototypeOf(id) !== ObjectPrototype &&
1215
+ getPrototypeOf(id) !== ArrayPrototype) ||
1216
+ !hasOwnProperty.call(id, name)
1217
+ )
1218
+ throw Error(formatProdErrorMessage(570));
1219
+ id = id[name];
1120
1220
  }
1121
1221
  for (
1122
1222
  ;
@@ -1142,6 +1242,7 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
1142
1242
  }
1143
1243
  return map(response, id, parentObject, key);
1144
1244
  case "pending":
1245
+ case "pending_weak":
1145
1246
  case "blocked":
1146
1247
  return waitForReference(id, parentObject, key, response, map, reference);
1147
1248
  case "halted":
@@ -1161,9 +1262,10 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
1161
1262
  default:
1162
1263
  return (
1163
1264
  initializingHandler
1164
- ? ((initializingHandler.errored = !0),
1165
- (initializingHandler.value = null),
1166
- (initializingHandler.reason = id.reason))
1265
+ ? ((response = initializingHandler),
1266
+ (response.errored = !0),
1267
+ (response.value = null),
1268
+ (response.reason = id.reason))
1167
1269
  : (initializingHandler = {
1168
1270
  parent: null,
1169
1271
  chunk: null,
@@ -1227,6 +1329,8 @@ function parseModelString(response, parentObject, key, value) {
1227
1329
  (parentObject = parseInt(value.slice(2), 16)),
1228
1330
  getChunk(response, parentObject)
1229
1331
  );
1332
+ case "w":
1333
+ return;
1230
1334
  case "S":
1231
1335
  return Symbol.for(value.slice(2));
1232
1336
  case "h":
@@ -1243,10 +1347,7 @@ function parseModelString(response, parentObject, key, value) {
1243
1347
  case "T":
1244
1348
  parentObject = "$" + value.slice(2);
1245
1349
  response = response._tempRefs;
1246
- if (null == response)
1247
- throw Error(
1248
- "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."
1249
- );
1350
+ if (null == response) throw Error(formatProdErrorMessage(511));
1250
1351
  return response.get(parentObject);
1251
1352
  case "Q":
1252
1353
  return (
@@ -1297,9 +1398,7 @@ function parseModelString(response, parentObject, key, value) {
1297
1398
  return value;
1298
1399
  }
1299
1400
  function missingCall() {
1300
- throw Error(
1301
- 'Trying to call a function from "use server" but the callServer option was not implemented in your router runtime.'
1302
- );
1401
+ throw Error(formatProdErrorMessage(466));
1303
1402
  }
1304
1403
  function ResponseInstance(
1305
1404
  bundlerConfig,
@@ -1308,7 +1407,8 @@ function ResponseInstance(
1308
1407
  callServer,
1309
1408
  encodeFormAction,
1310
1409
  nonce,
1311
- temporaryReferences
1410
+ temporaryReferences,
1411
+ allowPartialStream
1312
1412
  ) {
1313
1413
  var chunks = new Map();
1314
1414
  this._bundlerConfig = bundlerConfig;
@@ -1319,11 +1419,10 @@ function ResponseInstance(
1319
1419
  this._nonce = nonce;
1320
1420
  this._chunks = chunks;
1321
1421
  this._stringDecoder = new TextDecoder();
1322
- this._fromJSON = null;
1323
1422
  this._closed = !1;
1324
1423
  this._closedReason = null;
1424
+ this._allowPartialStream = allowPartialStream;
1325
1425
  this._tempRefs = temporaryReferences;
1326
- this._fromJSON = createFromJSONCallback(this);
1327
1426
  }
1328
1427
  function resolveBuffer(response, id, buffer) {
1329
1428
  response = response._chunks;
@@ -1335,9 +1434,19 @@ function resolveBuffer(response, id, buffer) {
1335
1434
  }
1336
1435
  function resolveModule(response, id, model) {
1337
1436
  var chunks = response._chunks,
1338
- chunk = chunks.get(id);
1339
- model = JSON.parse(model, response._fromJSON);
1340
- var clientReference = resolveClientReference(response._bundlerConfig, model);
1437
+ chunk = chunks.get(id),
1438
+ prevHandler = initializingHandler;
1439
+ initializingHandler = null;
1440
+ try {
1441
+ var clientReferenceMetadata = parseModel(response, model);
1442
+ if (null !== initializingHandler) throw Error(formatProdErrorMessage(608));
1443
+ } finally {
1444
+ initializingHandler = prevHandler;
1445
+ }
1446
+ var clientReference = resolveClientReference(
1447
+ response._bundlerConfig,
1448
+ clientReferenceMetadata
1449
+ );
1341
1450
  if ((model = preloadModule(clientReference))) {
1342
1451
  if (chunk) {
1343
1452
  var blockedChunk = chunk;
@@ -1360,17 +1469,17 @@ function resolveModule(response, id, model) {
1360
1469
  chunks.set(id, chunk));
1361
1470
  }
1362
1471
  function resolveStream(response, id, stream, controller) {
1363
- response = response._chunks;
1364
- var chunk = response.get(id);
1472
+ var chunks = response._chunks,
1473
+ chunk = chunks.get(id);
1365
1474
  chunk
1366
1475
  ? "pending" === chunk.status &&
1367
1476
  ((id = chunk.value),
1368
1477
  (chunk.status = "fulfilled"),
1369
1478
  (chunk.value = stream),
1370
1479
  (chunk.reason = controller),
1371
- null !== id && wakeChunk(id, chunk.value, chunk))
1372
- : ((stream = new ReactPromise("fulfilled", stream, controller)),
1373
- response.set(id, stream));
1480
+ null !== id && wakeChunk(response, id, chunk.value, chunk))
1481
+ : ((response = new ReactPromise("fulfilled", stream, controller)),
1482
+ chunks.set(id, response));
1374
1483
  }
1375
1484
  function startReadableStream(response, id, type) {
1376
1485
  var controller = null,
@@ -1407,8 +1516,8 @@ function startReadableStream(response, id, type) {
1407
1516
  (previousBlockedChunk = chunk));
1408
1517
  } else {
1409
1518
  chunk = previousBlockedChunk;
1410
- var chunk$55 = new ReactPromise("pending", null, null);
1411
- chunk$55.then(
1519
+ var chunk$57 = new ReactPromise("pending", null, null);
1520
+ chunk$57.then(
1412
1521
  function (v) {
1413
1522
  return controller.enqueue(v);
1414
1523
  },
@@ -1416,10 +1525,10 @@ function startReadableStream(response, id, type) {
1416
1525
  return controller.error(e);
1417
1526
  }
1418
1527
  );
1419
- previousBlockedChunk = chunk$55;
1528
+ previousBlockedChunk = chunk$57;
1420
1529
  chunk.then(function () {
1421
- previousBlockedChunk === chunk$55 && (previousBlockedChunk = null);
1422
- resolveModelChunk(response, chunk$55, json);
1530
+ previousBlockedChunk === chunk$57 && (previousBlockedChunk = null);
1531
+ resolveModelChunk(response, chunk$57, json);
1423
1532
  });
1424
1533
  }
1425
1534
  },
@@ -1464,10 +1573,7 @@ function startAsyncIterable(response, id, iterator) {
1464
1573
  iterable[ASYNC_ITERATOR] = function () {
1465
1574
  var nextReadIndex = 0;
1466
1575
  return createIterator(function (arg) {
1467
- if (void 0 !== arg)
1468
- throw Error(
1469
- "Values cannot be passed to next() of AsyncIterables passed to Client Components."
1470
- );
1576
+ if (void 0 !== arg) throw Error(formatProdErrorMessage(524));
1471
1577
  if (nextReadIndex === buffer.length) {
1472
1578
  if (closed)
1473
1579
  return new ReactPromise(
@@ -1500,7 +1606,12 @@ function startAsyncIterable(response, id, iterator) {
1500
1606
  chunk.value = { done: !1, value: value };
1501
1607
  chunk.reason = null;
1502
1608
  null !== resolveListeners &&
1503
- wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners);
1609
+ wakeChunkIfInitialized(
1610
+ response,
1611
+ chunk,
1612
+ resolveListeners,
1613
+ rejectListeners
1614
+ );
1504
1615
  }
1505
1616
  nextWriteIndex++;
1506
1617
  },
@@ -1565,9 +1676,7 @@ function startAsyncIterable(response, id, iterator) {
1565
1676
  );
1566
1677
  }
1567
1678
  function resolveErrorProd() {
1568
- var error = Error(
1569
- "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."
1570
- );
1679
+ var error = Error(formatProdErrorMessage(441));
1571
1680
  error.stack = "Error: " + error.message;
1572
1681
  return error;
1573
1682
  }
@@ -1575,8 +1684,8 @@ function mergeBuffer(buffer, lastChunk) {
1575
1684
  for (var l = buffer.length, byteLength = lastChunk.length, i = 0; i < l; i++)
1576
1685
  byteLength += buffer[i].byteLength;
1577
1686
  byteLength = new Uint8Array(byteLength);
1578
- for (var i$56 = (i = 0); i$56 < l; i$56++) {
1579
- var chunk = buffer[i$56];
1687
+ for (var i$58 = (i = 0); i$58 < l; i$58++) {
1688
+ var chunk = buffer[i$58];
1580
1689
  byteLength.set(chunk, i);
1581
1690
  i += chunk.byteLength;
1582
1691
  }
@@ -1659,7 +1768,7 @@ function processFullBinaryRow(response, streamState, id, tag, buffer, chunk) {
1659
1768
  case 72:
1660
1769
  id = buffer[0];
1661
1770
  buffer = buffer.slice(1);
1662
- response = JSON.parse(buffer, response._fromJSON);
1771
+ response = parseModel(response, buffer);
1663
1772
  buffer = ReactDOMSharedInternals.d;
1664
1773
  switch (id) {
1665
1774
  case "D":
@@ -1724,9 +1833,7 @@ function processFullBinaryRow(response, streamState, id, tag, buffer, chunk) {
1724
1833
  case 68:
1725
1834
  case 74:
1726
1835
  case 87:
1727
- throw Error(
1728
- "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."
1729
- );
1836
+ throw Error(formatProdErrorMessage(504));
1730
1837
  case 82:
1731
1838
  startReadableStream(response, id, void 0);
1732
1839
  break;
@@ -1752,45 +1859,70 @@ function processFullBinaryRow(response, streamState, id, tag, buffer, chunk) {
1752
1859
  tag.set(id, response));
1753
1860
  }
1754
1861
  }
1755
- function createFromJSONCallback(response) {
1756
- return function (key, value) {
1757
- if ("__proto__" !== key) {
1758
- if ("string" === typeof value)
1759
- return parseModelString(response, this, key, value);
1760
- if ("object" === typeof value && null !== value) {
1761
- if (value[0] === REACT_ELEMENT_TYPE) {
1762
- if (
1763
- ((key = {
1862
+ function parseModel(response, json) {
1863
+ json = JSON.parse(json);
1864
+ return reviveModel(response, json, { "": json }, "");
1865
+ }
1866
+ function reviveModel(response, value, parentObject, key) {
1867
+ if ("string" === typeof value)
1868
+ return "$" === value[0]
1869
+ ? parseModelString(response, parentObject, key, value)
1870
+ : value;
1871
+ if ("object" !== typeof value || null === value) return value;
1872
+ if (isArrayImpl(value)) {
1873
+ for (var i = 0; i < value.length; i++)
1874
+ value[i] = reviveModel(response, value[i], value, "" + i);
1875
+ return value[0] === REACT_ELEMENT_TYPE
1876
+ ? (value[0] === REACT_ELEMENT_TYPE
1877
+ ? ((response = {
1764
1878
  $$typeof: REACT_ELEMENT_TYPE,
1765
1879
  type: value[1],
1766
1880
  key: value[2],
1767
1881
  ref: null,
1768
1882
  props: value[3]
1769
1883
  }),
1770
- null !== initializingHandler)
1771
- )
1772
- if (
1884
+ null !== initializingHandler &&
1773
1885
  ((value = initializingHandler),
1774
1886
  (initializingHandler = value.parent),
1775
- value.errored)
1776
- )
1777
- (key = new ReactPromise("rejected", null, value.reason)),
1778
- (key = createLazyChunkWrapper(key));
1779
- else if (0 < value.deps) {
1780
- var blockedChunk = new ReactPromise("blocked", null, null);
1781
- value.value = key;
1782
- value.chunk = blockedChunk;
1783
- key = createLazyChunkWrapper(blockedChunk);
1784
- }
1785
- } else key = value;
1786
- return key;
1787
- }
1788
- return value;
1789
- }
1790
- };
1887
+ value.errored
1888
+ ? ((response = new ReactPromise(
1889
+ "rejected",
1890
+ null,
1891
+ value.reason
1892
+ )),
1893
+ (response = createLazyChunkWrapper(response)))
1894
+ : 0 < value.deps &&
1895
+ ((i = new ReactPromise("blocked", null, null)),
1896
+ (value.value = response),
1897
+ (value.chunk = i),
1898
+ (response = createLazyChunkWrapper(i)))))
1899
+ : (response = value),
1900
+ response)
1901
+ : value;
1902
+ }
1903
+ for (i in value)
1904
+ hasOwnProperty.call(value, i) &&
1905
+ ("__proto__" === i
1906
+ ? delete value[i]
1907
+ : ((parentObject = reviveModel(response, value[i], value, i)),
1908
+ void 0 !== parentObject
1909
+ ? (value[i] = parentObject)
1910
+ : delete value[i]));
1911
+ return value;
1791
1912
  }
1792
1913
  function close(weakResponse) {
1793
- reportGlobalError(weakResponse, Error("Connection closed."));
1914
+ weakResponse._allowPartialStream
1915
+ ? ((weakResponse._closed = !0),
1916
+ weakResponse._chunks.forEach(function (chunk) {
1917
+ "pending" === chunk.status
1918
+ ? ((chunk.status = "halted"),
1919
+ (chunk.value = null),
1920
+ (chunk.reason = null))
1921
+ : "fulfilled" === chunk.status &&
1922
+ null !== chunk.reason &&
1923
+ chunk.reason.close('"$undefined"');
1924
+ }))
1925
+ : reportGlobalError(weakResponse, Error(formatProdErrorMessage(412)));
1794
1926
  }
1795
1927
  function createResponseFromOptions(options) {
1796
1928
  return new ResponseInstance(
@@ -1802,7 +1934,10 @@ function createResponseFromOptions(options) {
1802
1934
  void 0,
1803
1935
  options && options.temporaryReferences
1804
1936
  ? options.temporaryReferences
1805
- : void 0
1937
+ : void 0,
1938
+ options && options.unstable_allowPartialStream
1939
+ ? options.unstable_allowPartialStream
1940
+ : !1
1806
1941
  );
1807
1942
  }
1808
1943
  function startReadingFromStream(response, stream, onDone) {
@@ -1835,6 +1970,7 @@ function startReadingFromStream(response, stream, onDone) {
1835
1970
  65 === rowState ||
1836
1971
  79 === rowState ||
1837
1972
  111 === rowState ||
1973
+ 98 === rowState ||
1838
1974
  85 === rowState ||
1839
1975
  83 === rowState ||
1840
1976
  115 === rowState ||
@@ -1870,22 +2006,30 @@ function startReadingFromStream(response, stream, onDone) {
1870
2006
  var offset = value.byteOffset + i;
1871
2007
  if (-1 < lastIdx)
1872
2008
  (rowLength = new Uint8Array(value.buffer, offset, lastIdx - i)),
1873
- processFullBinaryRow(
1874
- response,
1875
- streamState,
1876
- _ref2,
1877
- rowTag,
1878
- buffer,
1879
- rowLength
1880
- ),
2009
+ 98 === rowTag
2010
+ ? resolveBuffer(
2011
+ response,
2012
+ _ref2,
2013
+ lastIdx === chunkLength ? rowLength : rowLength.slice()
2014
+ )
2015
+ : processFullBinaryRow(
2016
+ response,
2017
+ streamState,
2018
+ _ref2,
2019
+ rowTag,
2020
+ buffer,
2021
+ rowLength
2022
+ ),
1881
2023
  (i = lastIdx),
1882
2024
  3 === rowState && i++,
1883
2025
  (rowLength = _ref2 = rowTag = rowState = 0),
1884
2026
  (buffer.length = 0);
1885
2027
  else {
1886
2028
  value = new Uint8Array(value.buffer, offset, value.byteLength - i);
1887
- buffer.push(value);
1888
- rowLength -= value.byteLength;
2029
+ 98 === rowTag
2030
+ ? ((rowLength -= value.byteLength),
2031
+ resolveBuffer(response, _ref2, value))
2032
+ : (buffer.push(value), (rowLength -= value.byteLength));
1889
2033
  break;
1890
2034
  }
1891
2035
  }
@@ -1938,26 +2082,16 @@ exports.createTemporaryReferenceSet = function () {
1938
2082
  };
1939
2083
  exports.encodeReply = function (value, options) {
1940
2084
  return new Promise(function (resolve, reject) {
1941
- var abort = processReply(
2085
+ processReply(
1942
2086
  value,
1943
2087
  "",
1944
2088
  options && options.temporaryReferences
1945
2089
  ? options.temporaryReferences
1946
2090
  : void 0,
1947
2091
  resolve,
1948
- reject
2092
+ reject,
2093
+ options ? options.signal : void 0
1949
2094
  );
1950
- if (options && options.signal) {
1951
- var signal = options.signal;
1952
- if (signal.aborted) abort(signal.reason);
1953
- else {
1954
- var listener = function () {
1955
- abort(signal.reason);
1956
- signal.removeEventListener("abort", listener);
1957
- };
1958
- signal.addEventListener("abort", listener);
1959
- }
1960
- }
1961
2095
  });
1962
2096
  };
1963
2097
  exports.registerServerReference = function (reference, id) {