react-server-dom-webpack 19.0.0-canary-33a32441e9-20240418 → 19.0.0-canary-db913d8e17-20240422

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 (46) hide show
  1. package/cjs/react-server-dom-webpack-client.browser.development.js +35 -3
  2. package/cjs/react-server-dom-webpack-client.browser.production.js +768 -1652
  3. package/cjs/react-server-dom-webpack-client.edge.development.js +35 -3
  4. package/cjs/react-server-dom-webpack-client.edge.production.js +894 -1863
  5. package/cjs/react-server-dom-webpack-client.node.development.js +35 -3
  6. package/cjs/react-server-dom-webpack-client.node.production.js +870 -1818
  7. package/cjs/react-server-dom-webpack-client.node.unbundled.development.js +35 -3
  8. package/cjs/react-server-dom-webpack-client.node.unbundled.production.js +854 -1776
  9. package/cjs/react-server-dom-webpack-node-register.js +68 -13
  10. package/cjs/react-server-dom-webpack-plugin.js +398 -23
  11. package/cjs/react-server-dom-webpack-server.browser.development.js +86 -10
  12. package/cjs/react-server-dom-webpack-server.browser.production.js +1590 -3050
  13. package/cjs/react-server-dom-webpack-server.edge.development.js +86 -10
  14. package/cjs/react-server-dom-webpack-server.edge.production.js +1586 -3029
  15. package/cjs/react-server-dom-webpack-server.node.development.js +86 -10
  16. package/cjs/react-server-dom-webpack-server.node.production.js +1720 -3239
  17. package/cjs/react-server-dom-webpack-server.node.unbundled.development.js +86 -10
  18. package/cjs/react-server-dom-webpack-server.node.unbundled.production.js +1702 -3180
  19. package/client.browser.js +1 -1
  20. package/client.edge.js +1 -1
  21. package/client.node.js +1 -1
  22. package/client.node.unbundled.js +1 -1
  23. package/esm/{react-server-dom-webpack-node-loader.production.min.js → react-server-dom-webpack-node-loader.production.js} +1 -1
  24. package/package.json +4 -4
  25. package/server.browser.js +1 -1
  26. package/server.edge.js +1 -1
  27. package/server.node.js +1 -1
  28. package/server.node.unbundled.js +1 -1
  29. package/cjs/react-server-dom-webpack-client.browser.production.min.js +0 -40
  30. package/cjs/react-server-dom-webpack-client.browser.production.min.js.map +0 -1
  31. package/cjs/react-server-dom-webpack-client.edge.production.min.js +0 -46
  32. package/cjs/react-server-dom-webpack-client.edge.production.min.js.map +0 -1
  33. package/cjs/react-server-dom-webpack-client.node.production.min.js +0 -45
  34. package/cjs/react-server-dom-webpack-client.node.production.min.js.map +0 -1
  35. package/cjs/react-server-dom-webpack-client.node.unbundled.production.min.js +0 -44
  36. package/cjs/react-server-dom-webpack-client.node.unbundled.production.min.js.map +0 -1
  37. package/cjs/react-server-dom-webpack-node-register.js.map +0 -1
  38. package/cjs/react-server-dom-webpack-plugin.js.map +0 -1
  39. package/cjs/react-server-dom-webpack-server.browser.production.min.js +0 -82
  40. package/cjs/react-server-dom-webpack-server.browser.production.min.js.map +0 -1
  41. package/cjs/react-server-dom-webpack-server.edge.production.min.js +0 -83
  42. package/cjs/react-server-dom-webpack-server.edge.production.min.js.map +0 -1
  43. package/cjs/react-server-dom-webpack-server.node.production.min.js +0 -86
  44. package/cjs/react-server-dom-webpack-server.node.production.min.js.map +0 -1
  45. package/cjs/react-server-dom-webpack-server.node.unbundled.production.min.js +0 -84
  46. package/cjs/react-server-dom-webpack-server.node.unbundled.production.min.js.map +0 -1
@@ -20,6 +20,21 @@ require('crypto');
20
20
  var async_hooks = require('async_hooks');
21
21
  var ReactDOM = require('react-dom');
22
22
 
23
+ function _defineProperty(obj, key, value) {
24
+ if (key in obj) {
25
+ Object.defineProperty(obj, key, {
26
+ value: value,
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true
30
+ });
31
+ } else {
32
+ obj[key] = value;
33
+ }
34
+
35
+ return obj;
36
+ }
37
+
23
38
  var ReactSharedInternalsServer = // $FlowFixMe: It's defined in the one we resolve to.
24
39
  React.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
25
40
 
@@ -1818,18 +1833,56 @@ function renderFunctionComponent(request, task, key, Component, props, owner) {
1818
1833
  }
1819
1834
  }
1820
1835
 
1821
- if (typeof result === 'object' && result !== null && typeof result.then === 'function') {
1822
- // When the return value is in children position we can resolve it immediately,
1823
- // to its value without a wrapper if it's synchronously available.
1824
- var thenable = result;
1836
+ if (typeof result === 'object' && result !== null) {
1837
+ if (typeof result.then === 'function') {
1838
+ // When the return value is in children position we can resolve it immediately,
1839
+ // to its value without a wrapper if it's synchronously available.
1840
+ var thenable = result;
1841
+
1842
+ if (thenable.status === 'fulfilled') {
1843
+ return thenable.value;
1844
+ } // TODO: Once we accept Promises as children on the client, we can just return
1845
+ // the thenable here.
1846
+
1825
1847
 
1826
- if (thenable.status === 'fulfilled') {
1827
- return thenable.value;
1828
- } // TODO: Once we accept Promises as children on the client, we can just return
1829
- // the thenable here.
1848
+ result = createLazyWrapperAroundWakeable(result);
1849
+ } // Normally we'd serialize an Iterator/AsyncIterator as a single-shot which is not compatible
1850
+ // to be rendered as a React Child. However, because we have the function to recreate
1851
+ // an iterable from rendering the element again, we can effectively treat it as multi-
1852
+ // shot. Therefore we treat this as an Iterable/AsyncIterable, whether it was one or not, by
1853
+ // adding a wrapper so that this component effectively renders down to an AsyncIterable.
1830
1854
 
1831
1855
 
1832
- result = createLazyWrapperAroundWakeable(result);
1856
+ var iteratorFn = getIteratorFn(result);
1857
+
1858
+ if (iteratorFn) {
1859
+ var iterableChild = result;
1860
+ result = _defineProperty({}, Symbol.iterator, function () {
1861
+ var iterator = iteratorFn.call(iterableChild);
1862
+
1863
+ {
1864
+ // If this was an Iterator but not a GeneratorFunction we warn because
1865
+ // it might have been a mistake. Technically you can make this mistake with
1866
+ // GeneratorFunctions and even single-shot Iterables too but it's extra
1867
+ // tempting to try to return the value from a generator.
1868
+ if (iterator === iterableChild) {
1869
+ var isGeneratorComponent = // $FlowIgnore[method-unbinding]
1870
+ Object.prototype.toString.call(Component) === '[object GeneratorFunction]' && // $FlowIgnore[method-unbinding]
1871
+ Object.prototype.toString.call(iterableChild) === '[object Generator]';
1872
+
1873
+ if (!isGeneratorComponent) {
1874
+ error('Returning an Iterator from a Server Component is not supported ' + 'since it cannot be looped over more than once. ');
1875
+ }
1876
+ }
1877
+ }
1878
+
1879
+ return iterator;
1880
+ });
1881
+
1882
+ {
1883
+ result._debugInfo = iterableChild._debugInfo;
1884
+ }
1885
+ }
1833
1886
  } // Track this element's key on the Server Component on the keyPath context..
1834
1887
 
1835
1888
 
@@ -2301,6 +2354,11 @@ function serializeSet(request, set) {
2301
2354
  return '$W' + id.toString(16);
2302
2355
  }
2303
2356
 
2357
+ function serializeIterator(request, iterator) {
2358
+ var id = outlineModel(request, Array.from(iterator));
2359
+ return '$i' + id.toString(16);
2360
+ }
2361
+
2304
2362
  function escapeStringValue(value) {
2305
2363
  if (value[0] === '$') {
2306
2364
  // We need to escape $ prefixed strings since we use those to encode
@@ -2565,7 +2623,15 @@ function renderModelDestructive(request, task, parent, parentPropertyName, value
2565
2623
  var iteratorFn = getIteratorFn(value);
2566
2624
 
2567
2625
  if (iteratorFn) {
2568
- return renderFragment(request, task, Array.from(value));
2626
+ // TODO: Should we serialize the return value as well like we do for AsyncIterables?
2627
+ var iterator = iteratorFn.call(value);
2628
+
2629
+ if (iterator === value) {
2630
+ // Iterator, not Iterable
2631
+ return serializeIterator(request, iterator);
2632
+ }
2633
+
2634
+ return renderFragment(request, task, Array.from(iterator));
2569
2635
  }
2570
2636
 
2571
2637
 
@@ -3894,6 +3960,16 @@ function parseModelString(response, obj, key, value) {
3894
3960
  return _data2;
3895
3961
  }
3896
3962
 
3963
+ case 'i':
3964
+ {
3965
+ // Iterator
3966
+ var _id5 = parseInt(value.slice(2), 16);
3967
+
3968
+ var _data3 = getOutlinedModel(response, _id5);
3969
+
3970
+ return _data3[Symbol.iterator]();
3971
+ }
3972
+
3897
3973
  case 'I':
3898
3974
  {
3899
3975
  // $Infinity