react-server-dom-webpack 19.0.0-rc.1 → 19.1.0-canary-130095f7-20241212

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.
@@ -9,7 +9,8 @@
9
9
  */
10
10
 
11
11
  "use strict";
12
- var util = require("util");
12
+ var stream = require("stream"),
13
+ util = require("util");
13
14
  require("crypto");
14
15
  var async_hooks = require("async_hooks"),
15
16
  ReactDOM = require("react-dom"),
@@ -461,7 +462,7 @@ function getIteratorFn(maybeIterable) {
461
462
  }
462
463
  var ASYNC_ITERATOR = Symbol.asyncIterator,
463
464
  SuspenseException = Error(
464
- "Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\n\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`"
465
+ "Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\n\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`."
465
466
  );
466
467
  function noop$1() {}
467
468
  function trackUsedThenable(thenableState, thenable, index) {
@@ -798,13 +799,7 @@ function serializeThenable(request, task, thenable) {
798
799
  (newTask.model = thenable.value), pingTask(request, newTask), newTask.id
799
800
  );
800
801
  case "rejected":
801
- return (
802
- (task = logRecoverableError(request, thenable.reason, null)),
803
- emitErrorChunk(request, newTask.id, task),
804
- (newTask.status = 4),
805
- request.abortableTasks.delete(newTask),
806
- newTask.id
807
- );
802
+ return erroredTask(request, newTask, thenable.reason), newTask.id;
808
803
  default:
809
804
  if (12 === request.status)
810
805
  return (
@@ -835,11 +830,7 @@ function serializeThenable(request, task, thenable) {
835
830
  },
836
831
  function (reason) {
837
832
  0 === newTask.status &&
838
- ((reason = logRecoverableError(request, reason, newTask)),
839
- emitErrorChunk(request, newTask.id, reason),
840
- (newTask.status = 4),
841
- request.abortableTasks.delete(newTask),
842
- enqueueFlush(request));
833
+ (erroredTask(request, newTask, reason), enqueueFlush(request));
843
834
  }
844
835
  );
845
836
  return newTask.id;
@@ -860,29 +851,25 @@ function serializeReadableStream(request, task, stream) {
860
851
  emitChunk(request, streamTask, streamTask.model),
861
852
  enqueueFlush(request),
862
853
  reader.read().then(progress, error);
863
- } catch (x$8) {
864
- error(x$8);
854
+ } catch (x$7) {
855
+ error(x$7);
865
856
  }
866
857
  }
867
858
  function error(reason) {
868
- if (!aborted) {
869
- aborted = !0;
870
- request.abortListeners.delete(abortStream);
871
- var digest = logRecoverableError(request, reason, streamTask);
872
- emitErrorChunk(request, streamTask.id, digest);
873
- enqueueFlush(request);
874
- reader.cancel(reason).then(error, error);
875
- }
859
+ aborted ||
860
+ ((aborted = !0),
861
+ request.abortListeners.delete(abortStream),
862
+ erroredTask(request, streamTask, reason),
863
+ enqueueFlush(request),
864
+ reader.cancel(reason).then(error, error));
876
865
  }
877
866
  function abortStream(reason) {
878
- if (!aborted) {
879
- aborted = !0;
880
- request.abortListeners.delete(abortStream);
881
- var digest = logRecoverableError(request, reason, streamTask);
882
- emitErrorChunk(request, streamTask.id, digest);
883
- enqueueFlush(request);
884
- reader.cancel(reason).then(error, error);
885
- }
867
+ aborted ||
868
+ ((aborted = !0),
869
+ request.abortListeners.delete(abortStream),
870
+ erroredTask(request, streamTask, reason),
871
+ enqueueFlush(request),
872
+ reader.cancel(reason).then(error, error));
886
873
  }
887
874
  var supportsBYOB = stream.supportsBYOB;
888
875
  if (void 0 === supportsBYOB)
@@ -937,31 +924,27 @@ function serializeAsyncIterable(request, task, iterable, iterator) {
937
924
  emitChunk(request, streamTask, streamTask.model),
938
925
  enqueueFlush(request),
939
926
  iterator.next().then(progress, error);
940
- } catch (x$9) {
941
- error(x$9);
927
+ } catch (x$8) {
928
+ error(x$8);
942
929
  }
943
930
  }
944
931
  function error(reason) {
945
- if (!aborted) {
946
- aborted = !0;
947
- request.abortListeners.delete(abortIterable);
948
- var digest = logRecoverableError(request, reason, streamTask);
949
- emitErrorChunk(request, streamTask.id, digest);
950
- enqueueFlush(request);
932
+ aborted ||
933
+ ((aborted = !0),
934
+ request.abortListeners.delete(abortIterable),
935
+ erroredTask(request, streamTask, reason),
936
+ enqueueFlush(request),
951
937
  "function" === typeof iterator.throw &&
952
- iterator.throw(reason).then(error, error);
953
- }
938
+ iterator.throw(reason).then(error, error));
954
939
  }
955
940
  function abortIterable(reason) {
956
- if (!aborted) {
957
- aborted = !0;
958
- request.abortListeners.delete(abortIterable);
959
- var digest = logRecoverableError(request, reason, streamTask);
960
- emitErrorChunk(request, streamTask.id, digest);
961
- enqueueFlush(request);
941
+ aborted ||
942
+ ((aborted = !0),
943
+ request.abortListeners.delete(abortIterable),
944
+ erroredTask(request, streamTask, reason),
945
+ enqueueFlush(request),
962
946
  "function" === typeof iterator.throw &&
963
- iterator.throw(reason).then(error, error);
964
- }
947
+ iterator.throw(reason).then(error, error));
965
948
  }
966
949
  iterable = iterable === iterator;
967
950
  var streamTask = createTask(
@@ -982,10 +965,7 @@ function serializeAsyncIterable(request, task, iterable, iterator) {
982
965
  }
983
966
  function emitHint(request, code, model) {
984
967
  model = stringify(model);
985
- var id = request.nextChunkId++;
986
- code = "H" + code;
987
- code = id.toString(16) + ":" + code;
988
- request.completedHintChunks.push(code + model + "\n");
968
+ request.completedHintChunks.push(":H" + code + model + "\n");
989
969
  enqueueFlush(request);
990
970
  }
991
971
  function readThenable(thenable) {
@@ -1016,63 +996,57 @@ function createLazyWrapperAroundWakeable(wakeable) {
1016
996
  return { $$typeof: REACT_LAZY_TYPE, _payload: wakeable, _init: readThenable };
1017
997
  }
1018
998
  function voidHandler() {}
999
+ function processServerComponentReturnValue(request, task, Component, result) {
1000
+ if (
1001
+ "object" !== typeof result ||
1002
+ null === result ||
1003
+ result.$$typeof === CLIENT_REFERENCE_TAG$1
1004
+ )
1005
+ return result;
1006
+ if ("function" === typeof result.then)
1007
+ return "fulfilled" === result.status
1008
+ ? result.value
1009
+ : createLazyWrapperAroundWakeable(result);
1010
+ var iteratorFn = getIteratorFn(result);
1011
+ return iteratorFn
1012
+ ? ((request = {}),
1013
+ (request[Symbol.iterator] = function () {
1014
+ return iteratorFn.call(result);
1015
+ }),
1016
+ request)
1017
+ : "function" !== typeof result[ASYNC_ITERATOR] ||
1018
+ ("function" === typeof ReadableStream &&
1019
+ result instanceof ReadableStream)
1020
+ ? result
1021
+ : ((request = {}),
1022
+ (request[ASYNC_ITERATOR] = function () {
1023
+ return result[ASYNC_ITERATOR]();
1024
+ }),
1025
+ request);
1026
+ }
1019
1027
  function renderFunctionComponent(request, task, key, Component, props) {
1020
1028
  var prevThenableState = task.thenableState;
1021
1029
  task.thenableState = null;
1022
1030
  thenableIndexCounter = 0;
1023
1031
  thenableState = prevThenableState;
1024
- Component = Component(props, void 0);
1032
+ props = Component(props, void 0);
1025
1033
  if (12 === request.status)
1026
1034
  throw (
1027
- ("object" === typeof Component &&
1028
- null !== Component &&
1029
- "function" === typeof Component.then &&
1030
- Component.$$typeof !== CLIENT_REFERENCE_TAG$1 &&
1031
- Component.then(voidHandler, voidHandler),
1035
+ ("object" === typeof props &&
1036
+ null !== props &&
1037
+ "function" === typeof props.then &&
1038
+ props.$$typeof !== CLIENT_REFERENCE_TAG$1 &&
1039
+ props.then(voidHandler, voidHandler),
1032
1040
  null)
1033
1041
  );
1034
- if (
1035
- "object" === typeof Component &&
1036
- null !== Component &&
1037
- Component.$$typeof !== CLIENT_REFERENCE_TAG$1
1038
- ) {
1039
- if ("function" === typeof Component.then) {
1040
- props = Component;
1041
- if ("fulfilled" === props.status) return props.value;
1042
- Component = createLazyWrapperAroundWakeable(Component);
1043
- }
1044
- var iteratorFn = getIteratorFn(Component);
1045
- if (iteratorFn) {
1046
- var iterableChild = Component;
1047
- Component = {};
1048
- Component =
1049
- ((Component[Symbol.iterator] = function () {
1050
- return iteratorFn.call(iterableChild);
1051
- }),
1052
- Component);
1053
- } else if (
1054
- !(
1055
- "function" !== typeof Component[ASYNC_ITERATOR] ||
1056
- ("function" === typeof ReadableStream &&
1057
- Component instanceof ReadableStream)
1058
- )
1059
- ) {
1060
- var iterableChild$10 = Component;
1061
- Component = {};
1062
- Component =
1063
- ((Component[ASYNC_ITERATOR] = function () {
1064
- return iterableChild$10[ASYNC_ITERATOR]();
1065
- }),
1066
- Component);
1067
- }
1068
- }
1069
- props = task.keyPath;
1042
+ props = processServerComponentReturnValue(request, task, Component, props);
1043
+ Component = task.keyPath;
1070
1044
  prevThenableState = task.implicitSlot;
1071
1045
  null !== key
1072
- ? (task.keyPath = null === props ? key : props + "," + key)
1073
- : null === props && (task.implicitSlot = !0);
1074
- request = renderModelDestructive(request, task, emptyRoot, "", Component);
1075
- task.keyPath = props;
1046
+ ? (task.keyPath = null === Component ? key : Component + "," + key)
1047
+ : null === Component && (task.implicitSlot = !0);
1048
+ request = renderModelDestructive(request, task, emptyRoot, "", props);
1049
+ task.keyPath = Component;
1076
1050
  task.implicitSlot = prevThenableState;
1077
1051
  return request;
1078
1052
  }
@@ -1329,24 +1303,20 @@ function serializeBlob(request, blob) {
1329
1303
  );
1330
1304
  }
1331
1305
  function error(reason) {
1332
- if (!aborted) {
1333
- aborted = !0;
1334
- request.abortListeners.delete(abortBlob);
1335
- var digest = logRecoverableError(request, reason, newTask);
1336
- emitErrorChunk(request, newTask.id, digest);
1337
- enqueueFlush(request);
1338
- reader.cancel(reason).then(error, error);
1339
- }
1306
+ aborted ||
1307
+ ((aborted = !0),
1308
+ request.abortListeners.delete(abortBlob),
1309
+ erroredTask(request, newTask, reason),
1310
+ enqueueFlush(request),
1311
+ reader.cancel(reason).then(error, error));
1340
1312
  }
1341
1313
  function abortBlob(reason) {
1342
- if (!aborted) {
1343
- aborted = !0;
1344
- request.abortListeners.delete(abortBlob);
1345
- var digest = logRecoverableError(request, reason, newTask);
1346
- emitErrorChunk(request, newTask.id, digest);
1347
- enqueueFlush(request);
1348
- reader.cancel(reason).then(error, error);
1349
- }
1314
+ aborted ||
1315
+ ((aborted = !0),
1316
+ request.abortListeners.delete(abortBlob),
1317
+ erroredTask(request, newTask, reason),
1318
+ enqueueFlush(request),
1319
+ reader.cancel(reason).then(error, error));
1350
1320
  }
1351
1321
  var model = [blob.type],
1352
1322
  newTask = createTask(request, model, null, !1, request.abortableTasks),
@@ -1741,6 +1711,12 @@ function emitChunk(request, task, value) {
1741
1711
  : ((value = stringify(value, task.toJSON)),
1742
1712
  emitModelChunk(request, task.id, value));
1743
1713
  }
1714
+ function erroredTask(request, task, error) {
1715
+ request.abortableTasks.delete(task);
1716
+ task.status = 4;
1717
+ error = logRecoverableError(request, error, task);
1718
+ emitErrorChunk(request, task.id, error);
1719
+ }
1744
1720
  var emptyRoot = {};
1745
1721
  function retryTask(request, task) {
1746
1722
  if (0 === task.status) {
@@ -1786,12 +1762,7 @@ function retryTask(request, task) {
1786
1762
  task.thenableState = getThenableStateAfterSuspending();
1787
1763
  var ping = task.ping;
1788
1764
  x.then(ping, ping);
1789
- } else {
1790
- request.abortableTasks.delete(task);
1791
- task.status = 4;
1792
- var digest = logRecoverableError(request, x, task);
1793
- emitErrorChunk(request, task.id, digest);
1794
- }
1765
+ } else erroredTask(request, task, x);
1795
1766
  }
1796
1767
  } finally {
1797
1768
  }
@@ -1948,7 +1919,7 @@ function abort(request, reason) {
1948
1919
  }
1949
1920
  var abortListeners = request.abortListeners;
1950
1921
  if (0 < abortListeners.size) {
1951
- var error$23 =
1922
+ var error$22 =
1952
1923
  void 0 === reason
1953
1924
  ? Error("The render was aborted by the server without a reason.")
1954
1925
  : "object" === typeof reason &&
@@ -1957,14 +1928,14 @@ function abort(request, reason) {
1957
1928
  ? Error("The render was aborted by the server with a promise.")
1958
1929
  : reason;
1959
1930
  abortListeners.forEach(function (callback) {
1960
- return callback(error$23);
1931
+ return callback(error$22);
1961
1932
  });
1962
1933
  abortListeners.clear();
1963
1934
  }
1964
1935
  null !== request.destination &&
1965
1936
  flushCompletedChunks(request, request.destination);
1966
- } catch (error$24) {
1967
- logRecoverableError(request, error$24, null), fatalError(request, error$24);
1937
+ } catch (error$23) {
1938
+ logRecoverableError(request, error$23, null), fatalError(request, error$23);
1968
1939
  }
1969
1940
  }
1970
1941
  function resolveServerReference(bundlerConfig, id) {
@@ -2409,8 +2380,8 @@ function parseReadableStream(response, reference, type) {
2409
2380
  (previousBlockedChunk = chunk));
2410
2381
  } else {
2411
2382
  chunk = previousBlockedChunk;
2412
- var chunk$27 = createPendingChunk(response);
2413
- chunk$27.then(
2383
+ var chunk$26 = createPendingChunk(response);
2384
+ chunk$26.then(
2414
2385
  function (v) {
2415
2386
  return controller.enqueue(v);
2416
2387
  },
@@ -2418,10 +2389,10 @@ function parseReadableStream(response, reference, type) {
2418
2389
  return controller.error(e);
2419
2390
  }
2420
2391
  );
2421
- previousBlockedChunk = chunk$27;
2392
+ previousBlockedChunk = chunk$26;
2422
2393
  chunk.then(function () {
2423
- previousBlockedChunk === chunk$27 && (previousBlockedChunk = null);
2424
- resolveModelChunk(chunk$27, json, -1);
2394
+ previousBlockedChunk === chunk$26 && (previousBlockedChunk = null);
2395
+ resolveModelChunk(chunk$26, json, -1);
2425
2396
  });
2426
2397
  }
2427
2398
  },
@@ -2698,6 +2669,19 @@ function createCancelHandler(request, reason) {
2698
2669
  abort(request, Error(reason));
2699
2670
  };
2700
2671
  }
2672
+ function createFakeWritable(readable) {
2673
+ return {
2674
+ write: function (chunk) {
2675
+ return readable.push(chunk);
2676
+ },
2677
+ end: function () {
2678
+ readable.push(null);
2679
+ },
2680
+ destroy: function (error) {
2681
+ readable.destroy(error);
2682
+ }
2683
+ };
2684
+ }
2701
2685
  exports.createClientModuleProxy = function (moduleId) {
2702
2686
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
2703
2687
  return new Proxy(moduleId, proxyHandlers$1);
@@ -2779,12 +2763,12 @@ exports.decodeReplyFromBusboy = function (busboyStream, webpackMap, options) {
2779
2763
  "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."
2780
2764
  );
2781
2765
  pendingFiles++;
2782
- var JSCompiler_object_inline_chunks_216 = [];
2766
+ var JSCompiler_object_inline_chunks_214 = [];
2783
2767
  value.on("data", function (chunk) {
2784
- JSCompiler_object_inline_chunks_216.push(chunk);
2768
+ JSCompiler_object_inline_chunks_214.push(chunk);
2785
2769
  });
2786
2770
  value.on("end", function () {
2787
- var blob = new Blob(JSCompiler_object_inline_chunks_216, {
2771
+ var blob = new Blob(JSCompiler_object_inline_chunks_214, {
2788
2772
  type: mimeType
2789
2773
  });
2790
2774
  response._formData.append(name, blob, filename);
@@ -2869,3 +2853,40 @@ exports.renderToPipeableStream = function (model, webpackMap, options) {
2869
2853
  }
2870
2854
  };
2871
2855
  };
2856
+ exports.unstable_prerenderToNodeStream = function (model, webpackMap, options) {
2857
+ return new Promise(function (resolve, reject) {
2858
+ var request = new RequestInstance(
2859
+ 21,
2860
+ model,
2861
+ webpackMap,
2862
+ options ? options.onError : void 0,
2863
+ options ? options.identifierPrefix : void 0,
2864
+ options ? options.onPostpone : void 0,
2865
+ options ? options.temporaryReferences : void 0,
2866
+ void 0,
2867
+ void 0,
2868
+ function () {
2869
+ var readable = new stream.Readable({
2870
+ read: function () {
2871
+ startFlowing(request, writable);
2872
+ }
2873
+ }),
2874
+ writable = createFakeWritable(readable);
2875
+ resolve({ prelude: readable });
2876
+ },
2877
+ reject
2878
+ );
2879
+ if (options && options.signal) {
2880
+ var signal = options.signal;
2881
+ if (signal.aborted) abort(request, signal.reason);
2882
+ else {
2883
+ var listener = function () {
2884
+ abort(request, signal.reason);
2885
+ signal.removeEventListener("abort", listener);
2886
+ };
2887
+ signal.addEventListener("abort", listener);
2888
+ }
2889
+ }
2890
+ startWork(request);
2891
+ });
2892
+ };