react-server-dom-webpack 19.0.0-rc-6230622a1a-20240610 → 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,6 +978,7 @@ function renderFunctionComponent(request, task, key, Component, props) {
973
978
  thenableIndexCounter = 0;
974
979
  thenableState = prevThenableState;
975
980
  Component = Component(props, void 0);
981
+ if (1 === request.status) throw AbortSigil;
976
982
  if (
977
983
  "object" === typeof Component &&
978
984
  null !== Component &&
@@ -1070,6 +1076,7 @@ function renderElement(request, task, type, key, ref, props) {
1070
1076
  case REACT_LAZY_TYPE:
1071
1077
  var init = type._init;
1072
1078
  type = init(type._payload);
1079
+ if (1 === request.status) throw AbortSigil;
1073
1080
  return renderElement(request, task, type, key, ref, props);
1074
1081
  case REACT_FORWARD_REF_TYPE:
1075
1082
  return renderFunctionComponent(request, task, key, type.render, props);
@@ -1086,7 +1093,7 @@ function pingTask(request, task) {
1086
1093
  pingedTasks.push(task);
1087
1094
  1 === pingedTasks.length &&
1088
1095
  ((request.flushScheduled = null !== request.destination),
1089
- setImmediate(function () {
1096
+ scheduleMicrotask(function () {
1090
1097
  return performWork(request);
1091
1098
  }));
1092
1099
  }
@@ -1120,50 +1127,61 @@ function createTask(request, model, keyPath, implicitSlot, abortSet) {
1120
1127
  );
1121
1128
  } catch (thrownValue) {
1122
1129
  if (
1123
- ((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 =
1124
1137
  thrownValue === SuspenseException
1125
1138
  ? getSuspendedThenable()
1126
1139
  : thrownValue),
1127
- (value = task.model),
1128
- (value =
1129
- "object" === typeof value &&
1140
+ "object" === typeof value &&
1130
1141
  null !== value &&
1131
- (value.$$typeof === REACT_ELEMENT_TYPE ||
1132
- value.$$typeof === REACT_LAZY_TYPE)),
1133
- "object" === typeof parentPropertyName &&
1134
- null !== parentPropertyName &&
1135
- "function" === typeof parentPropertyName.then)
1136
- ) {
1137
- JSCompiler_inline_result = createTask(
1138
- request,
1139
- task.model,
1140
- task.keyPath,
1141
- task.implicitSlot,
1142
- request.abortableTasks
1143
- );
1144
- var ping = JSCompiler_inline_result.ping;
1145
- parentPropertyName.then(ping, ping);
1146
- JSCompiler_inline_result.thenableState =
1147
- getThenableStateAfterSuspending();
1148
- task.keyPath = prevKeyPath;
1149
- task.implicitSlot = prevImplicitSlot;
1150
- JSCompiler_inline_result = value
1151
- ? "$L" + JSCompiler_inline_result.id.toString(16)
1152
- : serializeByValueID(JSCompiler_inline_result.id);
1153
- } 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 (
1154
1175
  ((task.keyPath = prevKeyPath),
1155
1176
  (task.implicitSlot = prevImplicitSlot),
1156
- value)
1177
+ parentPropertyName)
1157
1178
  )
1158
1179
  request.pendingChunks++,
1159
1180
  (prevKeyPath = request.nextChunkId++),
1160
- (prevImplicitSlot = logRecoverableError(
1161
- request,
1162
- parentPropertyName
1163
- )),
1181
+ (prevImplicitSlot = logRecoverableError(request, value)),
1164
1182
  emitErrorChunk(request, prevKeyPath, prevImplicitSlot),
1165
1183
  (JSCompiler_inline_result = "$L" + prevKeyPath.toString(16));
1166
- else throw parentPropertyName;
1184
+ else throw value;
1167
1185
  }
1168
1186
  return JSCompiler_inline_result;
1169
1187
  },
@@ -1314,12 +1332,11 @@ function renderModelDestructive(
1314
1332
  parentPropertyName
1315
1333
  );
1316
1334
  case REACT_LAZY_TYPE:
1317
- return (
1318
- (task.thenableState = null),
1319
- (parentPropertyName = value._init),
1320
- (value = parentPropertyName(value._payload)),
1321
- renderModelDestructive(request, task, emptyRoot, "", value)
1322
- );
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);
1323
1340
  case REACT_LEGACY_ELEMENT_TYPE:
1324
1341
  throw Error(
1325
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.'
@@ -1579,14 +1596,18 @@ function logRecoverableError(request, error) {
1579
1596
  }
1580
1597
  function fatalError(request, error) {
1581
1598
  null !== request.destination
1582
- ? ((request.status = 2), request.destination.destroy(error))
1583
- : ((request.status = 1), (request.fatalError = error));
1599
+ ? ((request.status = 3), request.destination.destroy(error))
1600
+ : ((request.status = 2), (request.fatalError = error));
1584
1601
  }
1585
1602
  function emitErrorChunk(request, id, digest) {
1586
1603
  digest = { digest: digest };
1587
1604
  id = id.toString(16) + ":E" + stringify(digest) + "\n";
1588
1605
  request.completedErrorChunks.push(id);
1589
1606
  }
1607
+ function emitModelChunk(request, id, json) {
1608
+ id = id.toString(16) + ":" + json + "\n";
1609
+ request.completedRegularChunks.push(id);
1610
+ }
1590
1611
  function emitTypedArrayChunk(request, id, tag, typedArray) {
1591
1612
  request.pendingChunks++;
1592
1613
  typedArray = new Uint8Array(
@@ -1638,12 +1659,12 @@ function emitChunk(request, task, value) {
1638
1659
  : value instanceof DataView
1639
1660
  ? emitTypedArrayChunk(request, id, "V", value)
1640
1661
  : ((value = stringify(value, task.toJSON)),
1641
- (task = task.id.toString(16) + ":" + value + "\n"),
1642
- request.completedRegularChunks.push(task));
1662
+ emitModelChunk(request, task.id, value));
1643
1663
  }
1644
1664
  var emptyRoot = {};
1645
1665
  function retryTask(request, task) {
1646
- if (0 === task.status)
1666
+ if (0 === task.status) {
1667
+ task.status = 5;
1647
1668
  try {
1648
1669
  modelRoot = task.model;
1649
1670
  var resolvedModel = renderModelDestructive(
@@ -1660,9 +1681,8 @@ function retryTask(request, task) {
1660
1681
  request.writtenObjects.set(resolvedModel, serializeByValueID(task.id)),
1661
1682
  emitChunk(request, task, resolvedModel);
1662
1683
  else {
1663
- var json = stringify(resolvedModel),
1664
- processedChunk = task.id.toString(16) + ":" + json + "\n";
1665
- request.completedRegularChunks.push(processedChunk);
1684
+ var json = stringify(resolvedModel);
1685
+ emitModelChunk(request, task.id, json);
1666
1686
  }
1667
1687
  request.abortableTasks.delete(task);
1668
1688
  task.status = 1;
@@ -1671,10 +1691,23 @@ function retryTask(request, task) {
1671
1691
  thrownValue === SuspenseException
1672
1692
  ? getSuspendedThenable()
1673
1693
  : thrownValue;
1674
- if ("object" === typeof x && null !== x && "function" === typeof x.then) {
1675
- var ping = task.ping;
1676
- x.then(ping, ping);
1677
- 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);
1678
1711
  } else {
1679
1712
  request.abortableTasks.delete(task);
1680
1713
  task.status = 4;
@@ -1683,6 +1716,7 @@ function retryTask(request, task) {
1683
1716
  }
1684
1717
  } finally {
1685
1718
  }
1719
+ }
1686
1720
  }
1687
1721
  function performWork(request) {
1688
1722
  var prevDispatcher = ReactSharedInternalsServer.H;
@@ -1764,7 +1798,7 @@ function flushCompletedChunks(request, destination) {
1764
1798
  }
1765
1799
  "function" === typeof destination.flush && destination.flush();
1766
1800
  0 === request.pendingChunks &&
1767
- (destination.end(), (request.destination = null));
1801
+ ((request.status = 3), destination.end(), (request.destination = null));
1768
1802
  }
1769
1803
  function startWork(request) {
1770
1804
  request.flushScheduled = null !== request.destination;
@@ -1773,22 +1807,20 @@ function startWork(request) {
1773
1807
  });
1774
1808
  }
1775
1809
  function enqueueFlush(request) {
1776
- if (
1777
- !1 === request.flushScheduled &&
1810
+ !1 === request.flushScheduled &&
1778
1811
  0 === request.pingedTasks.length &&
1779
- null !== request.destination
1780
- ) {
1781
- var destination = request.destination;
1782
- request.flushScheduled = !0;
1812
+ null !== request.destination &&
1813
+ ((request.flushScheduled = !0),
1783
1814
  setImmediate(function () {
1784
- return flushCompletedChunks(request, destination);
1785
- });
1786
- }
1815
+ request.flushScheduled = !1;
1816
+ var destination = request.destination;
1817
+ destination && flushCompletedChunks(request, destination);
1818
+ }));
1787
1819
  }
1788
1820
  function startFlowing(request, destination) {
1789
- if (1 === request.status)
1790
- (request.status = 2), destination.destroy(request.fatalError);
1791
- 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) {
1792
1824
  request.destination = destination;
1793
1825
  try {
1794
1826
  flushCompletedChunks(request, destination);
@@ -1799,39 +1831,51 @@ function startFlowing(request, destination) {
1799
1831
  }
1800
1832
  function abort(request, reason) {
1801
1833
  try {
1834
+ request.status = 1;
1802
1835
  var abortableTasks = request.abortableTasks;
1803
1836
  if (0 < abortableTasks.size) {
1804
1837
  request.pendingChunks++;
1805
- var errorId = request.nextChunkId++,
1806
- error =
1838
+ var errorId = request.nextChunkId++;
1839
+ request.fatalError = errorId;
1840
+ var error =
1807
1841
  void 0 === reason
1808
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.")
1809
1847
  : reason,
1810
1848
  digest = logRecoverableError(request, error);
1811
1849
  emitErrorChunk(request, errorId, digest, error);
1812
1850
  abortableTasks.forEach(function (task) {
1813
- task.status = 3;
1814
- var ref = serializeByValueID(errorId);
1815
- task = encodeReferenceChunk(request, task.id, ref);
1816
- 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
+ }
1817
1857
  });
1818
1858
  abortableTasks.clear();
1819
1859
  }
1820
1860
  var abortListeners = request.abortListeners;
1821
1861
  if (0 < abortListeners.size) {
1822
- var error$22 =
1862
+ var error$26 =
1823
1863
  void 0 === reason
1824
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.")
1825
1869
  : reason;
1826
1870
  abortListeners.forEach(function (callback) {
1827
- return callback(error$22);
1871
+ return callback(error$26);
1828
1872
  });
1829
1873
  abortListeners.clear();
1830
1874
  }
1831
1875
  null !== request.destination &&
1832
1876
  flushCompletedChunks(request, request.destination);
1833
- } catch (error$23) {
1834
- logRecoverableError(request, error$23), fatalError(request, error$23);
1877
+ } catch (error$27) {
1878
+ logRecoverableError(request, error$27), fatalError(request, error$27);
1835
1879
  }
1836
1880
  }
1837
1881
  function resolveServerReference(bundlerConfig, id) {
@@ -2242,8 +2286,8 @@ function parseReadableStream(response, reference, type) {
2242
2286
  (previousBlockedChunk = chunk));
2243
2287
  } else {
2244
2288
  chunk = previousBlockedChunk;
2245
- var chunk$26 = createPendingChunk(response);
2246
- chunk$26.then(
2289
+ var chunk$30 = createPendingChunk(response);
2290
+ chunk$30.then(
2247
2291
  function (v) {
2248
2292
  return controller.enqueue(v);
2249
2293
  },
@@ -2251,10 +2295,10 @@ function parseReadableStream(response, reference, type) {
2251
2295
  return controller.error(e);
2252
2296
  }
2253
2297
  );
2254
- previousBlockedChunk = chunk$26;
2298
+ previousBlockedChunk = chunk$30;
2255
2299
  chunk.then(function () {
2256
- previousBlockedChunk === chunk$26 && (previousBlockedChunk = null);
2257
- resolveModelChunk(chunk$26, json, -1);
2300
+ previousBlockedChunk === chunk$30 && (previousBlockedChunk = null);
2301
+ resolveModelChunk(chunk$30, json, -1);
2258
2302
  });
2259
2303
  }
2260
2304
  },
@@ -2612,12 +2656,12 @@ exports.decodeReplyFromBusboy = function (busboyStream, webpackMap, options) {
2612
2656
  "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."
2613
2657
  );
2614
2658
  pendingFiles++;
2615
- var JSCompiler_object_inline_chunks_216 = [];
2659
+ var JSCompiler_object_inline_chunks_201 = [];
2616
2660
  value.on("data", function (chunk) {
2617
- JSCompiler_object_inline_chunks_216.push(chunk);
2661
+ JSCompiler_object_inline_chunks_201.push(chunk);
2618
2662
  });
2619
2663
  value.on("end", function () {
2620
- var blob = new Blob(JSCompiler_object_inline_chunks_216, {
2664
+ var blob = new Blob(JSCompiler_object_inline_chunks_201, {
2621
2665
  type: mimeType
2622
2666
  });
2623
2667
  response._formData.append(name, blob, filename);
@@ -2660,7 +2704,7 @@ exports.registerServerReference = function (reference, id, exportName) {
2660
2704
  });
2661
2705
  };
2662
2706
  exports.renderToPipeableStream = function (model, webpackMap, options) {
2663
- var request = createRequest(
2707
+ var request = new RequestInstance(
2664
2708
  model,
2665
2709
  webpackMap,
2666
2710
  options ? options.onError : void 0,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-server-dom-webpack",
3
3
  "description": "React Server Components bindings for DOM using Webpack. This is intended to be integrated into meta-frameworks. It is not intended to be imported directly.",
4
- "version": "19.0.0-rc-6230622a1a-20240610",
4
+ "version": "19.0.0-rc-a26e3f403e-20240611",
5
5
  "keywords": [
6
6
  "react"
7
7
  ],
@@ -77,8 +77,8 @@
77
77
  "node": ">=0.10.0"
78
78
  },
79
79
  "peerDependencies": {
80
- "react": "19.0.0-rc-6230622a1a-20240610",
81
- "react-dom": "19.0.0-rc-6230622a1a-20240610",
80
+ "react": "19.0.0-rc-a26e3f403e-20240611",
81
+ "react-dom": "19.0.0-rc-a26e3f403e-20240611",
82
82
  "webpack": "^5.59.0"
83
83
  },
84
84
  "dependencies": {