react-server-dom-webpack 19.0.0-rc-34d0c5e357-20240607 → 19.0.0-rc-a26e3f403e-20240611

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.
@@ -14,6 +14,7 @@ require("crypto");
14
14
  var async_hooks = require("async_hooks"),
15
15
  ReactDOM = require("react-dom"),
16
16
  React = require("react"),
17
+ scheduleMicrotask = queueMicrotask,
17
18
  currentView = null,
18
19
  writtenBytes = 0,
19
20
  destinationHasCapacity = !0;
@@ -707,12 +708,13 @@ if (!ReactSharedInternalsServer)
707
708
  'The "react" package in this environment is not configured correctly. The "react-server" condition must be enabled in any environment that runs React Server Components.'
708
709
  );
709
710
  var ObjectPrototype = Object.prototype,
710
- stringify = JSON.stringify;
711
+ stringify = JSON.stringify,
712
+ AbortSigil = {};
711
713
  function defaultErrorHandler(error) {
712
714
  console.error(error);
713
715
  }
714
716
  function defaultPostponeHandler() {}
715
- function createRequest(
717
+ function RequestInstance(
716
718
  model,
717
719
  bundlerConfig,
718
720
  onError,
@@ -730,37 +732,32 @@ function createRequest(
730
732
  var abortSet = new Set();
731
733
  environmentName = [];
732
734
  var hints = new Set();
733
- bundlerConfig = {
734
- status: 0,
735
- flushScheduled: !1,
736
- fatalError: null,
737
- destination: null,
738
- bundlerConfig: bundlerConfig,
739
- cache: new Map(),
740
- nextChunkId: 0,
741
- pendingChunks: 0,
742
- hints: hints,
743
- abortListeners: new Set(),
744
- abortableTasks: abortSet,
745
- pingedTasks: environmentName,
746
- completedImportChunks: [],
747
- completedHintChunks: [],
748
- completedRegularChunks: [],
749
- completedErrorChunks: [],
750
- writtenSymbols: new Map(),
751
- writtenClientReferences: new Map(),
752
- writtenServerReferences: new Map(),
753
- writtenObjects: new WeakMap(),
754
- temporaryReferences: temporaryReferences,
755
- identifierPrefix: identifierPrefix || "",
756
- identifierCount: 1,
757
- taintCleanupQueue: [],
758
- onError: void 0 === onError ? defaultErrorHandler : onError,
759
- onPostpone: void 0 === onPostpone ? defaultPostponeHandler : onPostpone
760
- };
761
- model = createTask(bundlerConfig, model, null, !1, abortSet);
735
+ this.status = 0;
736
+ this.flushScheduled = !1;
737
+ this.destination = this.fatalError = null;
738
+ this.bundlerConfig = bundlerConfig;
739
+ this.cache = new Map();
740
+ this.pendingChunks = this.nextChunkId = 0;
741
+ this.hints = hints;
742
+ this.abortListeners = new Set();
743
+ this.abortableTasks = abortSet;
744
+ this.pingedTasks = environmentName;
745
+ this.completedImportChunks = [];
746
+ this.completedHintChunks = [];
747
+ this.completedRegularChunks = [];
748
+ this.completedErrorChunks = [];
749
+ this.writtenSymbols = new Map();
750
+ this.writtenClientReferences = new Map();
751
+ this.writtenServerReferences = new Map();
752
+ this.writtenObjects = new WeakMap();
753
+ this.temporaryReferences = temporaryReferences;
754
+ this.identifierPrefix = identifierPrefix || "";
755
+ this.identifierCount = 1;
756
+ this.taintCleanupQueue = [];
757
+ this.onError = void 0 === onError ? defaultErrorHandler : onError;
758
+ this.onPostpone = void 0 === onPostpone ? defaultPostponeHandler : onPostpone;
759
+ model = createTask(this, model, null, !1, abortSet);
762
760
  environmentName.push(model);
763
- return bundlerConfig;
764
761
  }
765
762
  var currentRequest = null;
766
763
  function resolveRequest() {
@@ -788,6 +785,14 @@ function serializeThenable(request, task, thenable) {
788
785
  newTask.id
789
786
  );
790
787
  default:
788
+ if (1 === request.status)
789
+ return (
790
+ (newTask.status = 3),
791
+ (task = stringify(serializeByValueID(request.fatalError))),
792
+ emitModelChunk(request, newTask.id, task),
793
+ request.abortableTasks.delete(newTask),
794
+ newTask.id
795
+ );
791
796
  "string" !== typeof thenable.status &&
792
797
  ((thenable.status = "pending"),
793
798
  thenable.then(
@@ -973,7 +978,12 @@ function renderFunctionComponent(request, task, key, Component, props) {
973
978
  thenableIndexCounter = 0;
974
979
  thenableState = prevThenableState;
975
980
  Component = Component(props, void 0);
976
- if ("object" === typeof Component && null !== Component) {
981
+ if (1 === request.status) throw AbortSigil;
982
+ if (
983
+ "object" === typeof Component &&
984
+ null !== Component &&
985
+ Component.$$typeof !== CLIENT_REFERENCE_TAG$1
986
+ ) {
977
987
  if ("function" === typeof Component.then) {
978
988
  props = Component;
979
989
  if ("fulfilled" === props.status) return props.value;
@@ -1066,6 +1076,7 @@ function renderElement(request, task, type, key, ref, props) {
1066
1076
  case REACT_LAZY_TYPE:
1067
1077
  var init = type._init;
1068
1078
  type = init(type._payload);
1079
+ if (1 === request.status) throw AbortSigil;
1069
1080
  return renderElement(request, task, type, key, ref, props);
1070
1081
  case REACT_FORWARD_REF_TYPE:
1071
1082
  return renderFunctionComponent(request, task, key, type.render, props);
@@ -1082,7 +1093,7 @@ function pingTask(request, task) {
1082
1093
  pingedTasks.push(task);
1083
1094
  1 === pingedTasks.length &&
1084
1095
  ((request.flushScheduled = null !== request.destination),
1085
- setImmediate(function () {
1096
+ scheduleMicrotask(function () {
1086
1097
  return performWork(request);
1087
1098
  }));
1088
1099
  }
@@ -1116,50 +1127,61 @@ function createTask(request, model, keyPath, implicitSlot, abortSet) {
1116
1127
  );
1117
1128
  } catch (thrownValue) {
1118
1129
  if (
1119
- ((parentPropertyName =
1130
+ ((parentPropertyName = task.model),
1131
+ (parentPropertyName =
1132
+ "object" === typeof parentPropertyName &&
1133
+ null !== parentPropertyName &&
1134
+ (parentPropertyName.$$typeof === REACT_ELEMENT_TYPE ||
1135
+ parentPropertyName.$$typeof === REACT_LAZY_TYPE)),
1136
+ (value =
1120
1137
  thrownValue === SuspenseException
1121
1138
  ? getSuspendedThenable()
1122
1139
  : thrownValue),
1123
- (value = task.model),
1124
- (value =
1125
- "object" === typeof value &&
1140
+ "object" === typeof value &&
1126
1141
  null !== value &&
1127
- (value.$$typeof === REACT_ELEMENT_TYPE ||
1128
- value.$$typeof === REACT_LAZY_TYPE)),
1129
- "object" === typeof parentPropertyName &&
1130
- null !== parentPropertyName &&
1131
- "function" === typeof parentPropertyName.then)
1132
- ) {
1133
- JSCompiler_inline_result = createTask(
1134
- request,
1135
- task.model,
1136
- task.keyPath,
1137
- task.implicitSlot,
1138
- request.abortableTasks
1139
- );
1140
- var ping = JSCompiler_inline_result.ping;
1141
- parentPropertyName.then(ping, ping);
1142
- JSCompiler_inline_result.thenableState =
1143
- getThenableStateAfterSuspending();
1144
- task.keyPath = prevKeyPath;
1145
- task.implicitSlot = prevImplicitSlot;
1146
- JSCompiler_inline_result = value
1147
- ? "$L" + JSCompiler_inline_result.id.toString(16)
1148
- : serializeByValueID(JSCompiler_inline_result.id);
1149
- } else if (
1142
+ "function" === typeof value.then)
1143
+ )
1144
+ if (1 === request.status)
1145
+ (task.status = 3),
1146
+ (prevKeyPath = request.fatalError),
1147
+ (JSCompiler_inline_result = parentPropertyName
1148
+ ? "$L" + prevKeyPath.toString(16)
1149
+ : serializeByValueID(prevKeyPath));
1150
+ else {
1151
+ JSCompiler_inline_result = createTask(
1152
+ request,
1153
+ task.model,
1154
+ task.keyPath,
1155
+ task.implicitSlot,
1156
+ request.abortableTasks
1157
+ );
1158
+ var ping = JSCompiler_inline_result.ping;
1159
+ value.then(ping, ping);
1160
+ JSCompiler_inline_result.thenableState =
1161
+ getThenableStateAfterSuspending();
1162
+ task.keyPath = prevKeyPath;
1163
+ task.implicitSlot = prevImplicitSlot;
1164
+ JSCompiler_inline_result = parentPropertyName
1165
+ ? "$L" + JSCompiler_inline_result.id.toString(16)
1166
+ : serializeByValueID(JSCompiler_inline_result.id);
1167
+ }
1168
+ else if (thrownValue === AbortSigil)
1169
+ (task.status = 3),
1170
+ (prevKeyPath = request.fatalError),
1171
+ (JSCompiler_inline_result = parentPropertyName
1172
+ ? "$L" + prevKeyPath.toString(16)
1173
+ : serializeByValueID(prevKeyPath));
1174
+ else if (
1150
1175
  ((task.keyPath = prevKeyPath),
1151
1176
  (task.implicitSlot = prevImplicitSlot),
1152
- value)
1177
+ parentPropertyName)
1153
1178
  )
1154
1179
  request.pendingChunks++,
1155
1180
  (prevKeyPath = request.nextChunkId++),
1156
- (prevImplicitSlot = logRecoverableError(
1157
- request,
1158
- parentPropertyName
1159
- )),
1181
+ (prevImplicitSlot = logRecoverableError(request, value)),
1160
1182
  emitErrorChunk(request, prevKeyPath, prevImplicitSlot),
1161
1183
  (JSCompiler_inline_result = "$L" + prevKeyPath.toString(16));
1162
- else throw parentPropertyName;
1184
+ else throw value;
1163
1185
  }
1164
1186
  return JSCompiler_inline_result;
1165
1187
  },
@@ -1310,12 +1332,11 @@ function renderModelDestructive(
1310
1332
  parentPropertyName
1311
1333
  );
1312
1334
  case REACT_LAZY_TYPE:
1313
- return (
1314
- (task.thenableState = null),
1315
- (parentPropertyName = value._init),
1316
- (value = parentPropertyName(value._payload)),
1317
- renderModelDestructive(request, task, emptyRoot, "", value)
1318
- );
1335
+ task.thenableState = null;
1336
+ parentPropertyName = value._init;
1337
+ value = parentPropertyName(value._payload);
1338
+ if (1 === request.status) throw AbortSigil;
1339
+ return renderModelDestructive(request, task, emptyRoot, "", value);
1319
1340
  case REACT_LEGACY_ELEMENT_TYPE:
1320
1341
  throw Error(
1321
1342
  'A React Element from an older version of React was rendered. This is not supported. It can happen if:\n- Multiple copies of the "react" package is used.\n- A library pre-bundled an old copy of "react" or "react/jsx-runtime".\n- A compiler tries to "inline" JSX instead of using the runtime.'
@@ -1575,14 +1596,18 @@ function logRecoverableError(request, error) {
1575
1596
  }
1576
1597
  function fatalError(request, error) {
1577
1598
  null !== request.destination
1578
- ? ((request.status = 2), request.destination.destroy(error))
1579
- : ((request.status = 1), (request.fatalError = error));
1599
+ ? ((request.status = 3), request.destination.destroy(error))
1600
+ : ((request.status = 2), (request.fatalError = error));
1580
1601
  }
1581
1602
  function emitErrorChunk(request, id, digest) {
1582
1603
  digest = { digest: digest };
1583
1604
  id = id.toString(16) + ":E" + stringify(digest) + "\n";
1584
1605
  request.completedErrorChunks.push(id);
1585
1606
  }
1607
+ function emitModelChunk(request, id, json) {
1608
+ id = id.toString(16) + ":" + json + "\n";
1609
+ request.completedRegularChunks.push(id);
1610
+ }
1586
1611
  function emitTypedArrayChunk(request, id, tag, typedArray) {
1587
1612
  request.pendingChunks++;
1588
1613
  typedArray = new Uint8Array(
@@ -1634,12 +1659,12 @@ function emitChunk(request, task, value) {
1634
1659
  : value instanceof DataView
1635
1660
  ? emitTypedArrayChunk(request, id, "V", value)
1636
1661
  : ((value = stringify(value, task.toJSON)),
1637
- (task = task.id.toString(16) + ":" + value + "\n"),
1638
- request.completedRegularChunks.push(task));
1662
+ emitModelChunk(request, task.id, value));
1639
1663
  }
1640
1664
  var emptyRoot = {};
1641
1665
  function retryTask(request, task) {
1642
- if (0 === task.status)
1666
+ if (0 === task.status) {
1667
+ task.status = 5;
1643
1668
  try {
1644
1669
  modelRoot = task.model;
1645
1670
  var resolvedModel = renderModelDestructive(
@@ -1656,9 +1681,8 @@ function retryTask(request, task) {
1656
1681
  request.writtenObjects.set(resolvedModel, serializeByValueID(task.id)),
1657
1682
  emitChunk(request, task, resolvedModel);
1658
1683
  else {
1659
- var json = stringify(resolvedModel),
1660
- processedChunk = task.id.toString(16) + ":" + json + "\n";
1661
- request.completedRegularChunks.push(processedChunk);
1684
+ var json = stringify(resolvedModel);
1685
+ emitModelChunk(request, task.id, json);
1662
1686
  }
1663
1687
  request.abortableTasks.delete(task);
1664
1688
  task.status = 1;
@@ -1667,10 +1691,23 @@ function retryTask(request, task) {
1667
1691
  thrownValue === SuspenseException
1668
1692
  ? getSuspendedThenable()
1669
1693
  : thrownValue;
1670
- if ("object" === typeof x && null !== x && "function" === typeof x.then) {
1671
- var ping = task.ping;
1672
- x.then(ping, ping);
1673
- task.thenableState = getThenableStateAfterSuspending();
1694
+ if ("object" === typeof x && null !== x && "function" === typeof x.then)
1695
+ if (1 === request.status) {
1696
+ request.abortableTasks.delete(task);
1697
+ task.status = 3;
1698
+ var model = stringify(serializeByValueID(request.fatalError));
1699
+ emitModelChunk(request, task.id, model);
1700
+ } else {
1701
+ task.status = 0;
1702
+ task.thenableState = getThenableStateAfterSuspending();
1703
+ var ping = task.ping;
1704
+ x.then(ping, ping);
1705
+ }
1706
+ else if (x === AbortSigil) {
1707
+ request.abortableTasks.delete(task);
1708
+ task.status = 3;
1709
+ var model$19 = stringify(serializeByValueID(request.fatalError));
1710
+ emitModelChunk(request, task.id, model$19);
1674
1711
  } else {
1675
1712
  request.abortableTasks.delete(task);
1676
1713
  task.status = 4;
@@ -1679,6 +1716,7 @@ function retryTask(request, task) {
1679
1716
  }
1680
1717
  } finally {
1681
1718
  }
1719
+ }
1682
1720
  }
1683
1721
  function performWork(request) {
1684
1722
  var prevDispatcher = ReactSharedInternalsServer.H;
@@ -1760,7 +1798,7 @@ function flushCompletedChunks(request, destination) {
1760
1798
  }
1761
1799
  "function" === typeof destination.flush && destination.flush();
1762
1800
  0 === request.pendingChunks &&
1763
- (destination.end(), (request.destination = null));
1801
+ ((request.status = 3), destination.end(), (request.destination = null));
1764
1802
  }
1765
1803
  function startWork(request) {
1766
1804
  request.flushScheduled = null !== request.destination;
@@ -1769,22 +1807,20 @@ function startWork(request) {
1769
1807
  });
1770
1808
  }
1771
1809
  function enqueueFlush(request) {
1772
- if (
1773
- !1 === request.flushScheduled &&
1810
+ !1 === request.flushScheduled &&
1774
1811
  0 === request.pingedTasks.length &&
1775
- null !== request.destination
1776
- ) {
1777
- var destination = request.destination;
1778
- request.flushScheduled = !0;
1812
+ null !== request.destination &&
1813
+ ((request.flushScheduled = !0),
1779
1814
  setImmediate(function () {
1780
- return flushCompletedChunks(request, destination);
1781
- });
1782
- }
1815
+ request.flushScheduled = !1;
1816
+ var destination = request.destination;
1817
+ destination && flushCompletedChunks(request, destination);
1818
+ }));
1783
1819
  }
1784
1820
  function startFlowing(request, destination) {
1785
- if (1 === request.status)
1786
- (request.status = 2), destination.destroy(request.fatalError);
1787
- else if (2 !== request.status && null === request.destination) {
1821
+ if (2 === request.status)
1822
+ (request.status = 3), destination.destroy(request.fatalError);
1823
+ else if (3 !== request.status && null === request.destination) {
1788
1824
  request.destination = destination;
1789
1825
  try {
1790
1826
  flushCompletedChunks(request, destination);
@@ -1795,39 +1831,51 @@ function startFlowing(request, destination) {
1795
1831
  }
1796
1832
  function abort(request, reason) {
1797
1833
  try {
1834
+ request.status = 1;
1798
1835
  var abortableTasks = request.abortableTasks;
1799
1836
  if (0 < abortableTasks.size) {
1800
1837
  request.pendingChunks++;
1801
- var errorId = request.nextChunkId++,
1802
- error =
1838
+ var errorId = request.nextChunkId++;
1839
+ request.fatalError = errorId;
1840
+ var error =
1803
1841
  void 0 === reason
1804
1842
  ? Error("The render was aborted by the server without a reason.")
1843
+ : "object" === typeof reason &&
1844
+ null !== reason &&
1845
+ "function" === typeof reason.then
1846
+ ? Error("The render was aborted by the server with a promise.")
1805
1847
  : reason,
1806
1848
  digest = logRecoverableError(request, error);
1807
1849
  emitErrorChunk(request, errorId, digest, error);
1808
1850
  abortableTasks.forEach(function (task) {
1809
- task.status = 3;
1810
- var ref = serializeByValueID(errorId);
1811
- task = encodeReferenceChunk(request, task.id, ref);
1812
- request.completedErrorChunks.push(task);
1851
+ if (5 !== task.status) {
1852
+ task.status = 3;
1853
+ var ref = serializeByValueID(errorId);
1854
+ task = encodeReferenceChunk(request, task.id, ref);
1855
+ request.completedErrorChunks.push(task);
1856
+ }
1813
1857
  });
1814
1858
  abortableTasks.clear();
1815
1859
  }
1816
1860
  var abortListeners = request.abortListeners;
1817
1861
  if (0 < abortListeners.size) {
1818
- var error$22 =
1862
+ var error$26 =
1819
1863
  void 0 === reason
1820
1864
  ? Error("The render was aborted by the server without a reason.")
1865
+ : "object" === typeof reason &&
1866
+ null !== reason &&
1867
+ "function" === typeof reason.then
1868
+ ? Error("The render was aborted by the server with a promise.")
1821
1869
  : reason;
1822
1870
  abortListeners.forEach(function (callback) {
1823
- return callback(error$22);
1871
+ return callback(error$26);
1824
1872
  });
1825
1873
  abortListeners.clear();
1826
1874
  }
1827
1875
  null !== request.destination &&
1828
1876
  flushCompletedChunks(request, request.destination);
1829
- } catch (error$23) {
1830
- logRecoverableError(request, error$23), fatalError(request, error$23);
1877
+ } catch (error$27) {
1878
+ logRecoverableError(request, error$27), fatalError(request, error$27);
1831
1879
  }
1832
1880
  }
1833
1881
  function resolveServerReference(bundlerConfig, id) {
@@ -2270,8 +2318,8 @@ function parseReadableStream(response, reference, type) {
2270
2318
  (previousBlockedChunk = chunk));
2271
2319
  } else {
2272
2320
  chunk = previousBlockedChunk;
2273
- var chunk$26 = createPendingChunk(response);
2274
- chunk$26.then(
2321
+ var chunk$30 = createPendingChunk(response);
2322
+ chunk$30.then(
2275
2323
  function (v) {
2276
2324
  return controller.enqueue(v);
2277
2325
  },
@@ -2279,10 +2327,10 @@ function parseReadableStream(response, reference, type) {
2279
2327
  return controller.error(e);
2280
2328
  }
2281
2329
  );
2282
- previousBlockedChunk = chunk$26;
2330
+ previousBlockedChunk = chunk$30;
2283
2331
  chunk.then(function () {
2284
- previousBlockedChunk === chunk$26 && (previousBlockedChunk = null);
2285
- resolveModelChunk(chunk$26, json, -1);
2332
+ previousBlockedChunk === chunk$30 && (previousBlockedChunk = null);
2333
+ resolveModelChunk(chunk$30, json, -1);
2286
2334
  });
2287
2335
  }
2288
2336
  },
@@ -2640,12 +2688,12 @@ exports.decodeReplyFromBusboy = function (busboyStream, webpackMap, options) {
2640
2688
  "React doesn't accept base64 encoded file uploads because we don't expect form data passed from a browser to ever encode data that way. If that's the wrong assumption, we can easily fix it."
2641
2689
  );
2642
2690
  pendingFiles++;
2643
- var JSCompiler_object_inline_chunks_216 = [];
2691
+ var JSCompiler_object_inline_chunks_201 = [];
2644
2692
  value.on("data", function (chunk) {
2645
- JSCompiler_object_inline_chunks_216.push(chunk);
2693
+ JSCompiler_object_inline_chunks_201.push(chunk);
2646
2694
  });
2647
2695
  value.on("end", function () {
2648
- var blob = new Blob(JSCompiler_object_inline_chunks_216, {
2696
+ var blob = new Blob(JSCompiler_object_inline_chunks_201, {
2649
2697
  type: mimeType
2650
2698
  });
2651
2699
  response._formData.append(name, blob, filename);
@@ -2688,7 +2736,7 @@ exports.registerServerReference = function (reference, id, exportName) {
2688
2736
  });
2689
2737
  };
2690
2738
  exports.renderToPipeableStream = function (model, webpackMap, options) {
2691
- var request = createRequest(
2739
+ var request = new RequestInstance(
2692
2740
  model,
2693
2741
  webpackMap,
2694
2742
  options ? options.onError : void 0,