@samitouri / QOS-React / commits / e601854f07

Clean up partial renderer entry points (#21682)

* Clean up partial renderer entry points I made a mistake by leaving server.browser.stable in which is the partial renderer for the browser build of stable. That should use the legacy fizz one. Since the only usage of the partial renderer now is at FB and we don't use it with Node, I removed the Node build of partial renderer too. * Remove GC test No code is running this path anymore. Ideally this should be ported to a Fizz form.

Sebastian Markbåge committed Jun 14, 2021 at 18:44 UTC e601854f077e5df76c5ea6d90cdc9c6a5c0f245f
8 files changed +1 -184
packages/react-dom/server.browser.classic.fb.js
+1 -1
@@ -13,4 +13,4 @@ export {
13 renderToNodeStream,
14 renderToStaticNodeStream,
15 version,
16 -} from './src/server/ReactDOMServerBrowser';
16 +} from './src/server/ReactDOMServerLegacyPartialRendererBrowser';
packages/react-dom/server.browser.stable.js deleted
-16
@@ -1,16 +0,0 @@
1 -/**
2 - * Copyright (c) Facebook, Inc. and its affiliates.
3 - *
4 - * This source code is licensed under the MIT license found in the
5 - * LICENSE file in the root directory of this source tree.
6 - *
7 - * @flow
8 - */
9 -
10 -export {
11 - renderToString,
12 - renderToStaticMarkup,
13 - renderToNodeStream,
14 - renderToStaticNodeStream,
15 - version,
16 -} from './src/server/ReactDOMServerBrowser';
packages/react-dom/server.node.classic.fb.js deleted
-17
@@ -1,17 +0,0 @@
1 -/**
2 - * Copyright (c) Facebook, Inc. and its affiliates.
3 - *
4 - * This source code is licensed under the MIT license found in the
5 - * LICENSE file in the root directory of this source tree.
6 - *
7 - * @flow
8 - */
9 -
10 -// For some reason Flow doesn't like export * in this file. I don't know why.
11 -export {
12 - renderToString,
13 - renderToStaticMarkup,
14 - renderToNodeStream,
15 - renderToStaticNodeStream,
16 - version,
17 -} from './src/server/ReactDOMServerNode';
packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js
-71
@@ -486,77 +486,6 @@ describe('ReactDOMServerIntegration', () => {
486 }
487 });
488
489 - // Regression test for https://github.com/facebook/react/issues/14705
490 - // @gate !experimental && www
491 - it('does not pollute later renders when stream destroyed', () => {
492 - const LoggedInUser = React.createContext('default');
493 -
494 - const AppWithUser = user => (
495 - <LoggedInUser.Provider value={user}>
496 - <header>
497 - <LoggedInUser.Consumer>{whoAmI => whoAmI}</LoggedInUser.Consumer>
498 - </header>
499 - </LoggedInUser.Provider>
500 - );
501 -
502 - const stream = ReactDOMServer.renderToNodeStream(
503 - AppWithUser('Amy'),
504 - ).setEncoding('utf8');
505 -
506 - // This is an implementation detail because we test a memory leak
507 - const {threadID} = stream.partialRenderer;
508 -
509 - // Read enough to render Provider but not enough for it to be exited
510 - stream._read(10);
511 - expect(LoggedInUser[threadID]).toBe('Amy');
512 -
513 - stream.destroy();
514 -
515 - const AppWithUserNoProvider = () => (
516 - <LoggedInUser.Consumer>{whoAmI => whoAmI}</LoggedInUser.Consumer>
517 - );
518 -
519 - const stream2 = ReactDOMServer.renderToNodeStream(
520 - AppWithUserNoProvider(),
521 - ).setEncoding('utf8');
522 -
523 - // Sanity check to ensure 2nd render has same threadID as 1st render,
524 - // otherwise this test is not testing what it's meant to
525 - expect(stream2.partialRenderer.threadID).toBe(threadID);
526 -
527 - const markup = stream2.read(Infinity);
528 -
529 - expect(markup).toBe('default');
530 - });
531 -
532 - // Regression test for https://github.com/facebook/react/issues/14705
533 - // @gate !experimental && www
534 - it('frees context value reference when stream destroyed', () => {
535 - const LoggedInUser = React.createContext('default');
536 -
537 - const AppWithUser = user => (
538 - <LoggedInUser.Provider value={user}>
539 - <header>
540 - <LoggedInUser.Consumer>{whoAmI => whoAmI}</LoggedInUser.Consumer>
541 - </header>
542 - </LoggedInUser.Provider>
543 - );
544 -
545 - const stream = ReactDOMServer.renderToNodeStream(
546 - AppWithUser('Amy'),
547 - ).setEncoding('utf8');
548 -
549 - // This is an implementation detail because we test a memory leak
550 - const {threadID} = stream.partialRenderer;
551 -
552 - // Read enough to render Provider but not enough for it to be exited
553 - stream._read(10);
554 - expect(LoggedInUser[threadID]).toBe('Amy');
555 -
556 - stream.destroy();
557 - expect(LoggedInUser[threadID]).toBe('default');
558 - });
559 -
489 it('does not pollute sync renders after an error', () => {
490 const LoggedInUser = React.createContext('default');
491 const Crash = () => {
packages/react-dom/src/server/ReactDOMNodeStreamRenderer.js deleted
-55
@@ -1,55 +0,0 @@
1 -/**
2 - * Copyright (c) Facebook, Inc. and its affiliates.
3 - *
4 - * This source code is licensed under the MIT license found in the
5 - * LICENSE file in the root directory of this source tree.
6 - */
7 -import type {ServerOptions} from './ReactPartialRenderer';
8 -
9 -import {Readable} from 'stream';
10 -
11 -import ReactPartialRenderer from './ReactPartialRenderer';
12 -
13 -// This is a Readable Node.js stream which wraps the ReactDOMPartialRenderer.
14 -class ReactMarkupReadableStream extends Readable {
15 - constructor(element, makeStaticMarkup, options) {
16 - // Calls the stream.Readable(options) constructor. Consider exposing built-in
17 - // features like highWaterMark in the future.
18 - super({});
19 - this.partialRenderer = new ReactPartialRenderer(
20 - element,
21 - makeStaticMarkup,
22 - options,
23 - );
24 - }
25 -
26 - _destroy(err, callback) {
27 - this.partialRenderer.destroy();
28 - callback(err);
29 - }
30 -
31 - _read(size) {
32 - try {
33 - this.push(this.partialRenderer.read(size));
34 - } catch (err) {
35 - this.destroy(err);
36 - }
37 - }
38 -}
39 -/**
40 - * Render a ReactElement to its initial HTML. This should only be used on the
41 - * server.
42 - * See https://reactjs.org/docs/react-dom-server.html#rendertonodestream
43 - */
44 -export function renderToNodeStream(element, options?: ServerOptions) {
45 - return new ReactMarkupReadableStream(element, false, options);
46 -}
47 -
48 -/**
49 - * Similar to renderToNodeStream, except this doesn't create extra DOM attributes
50 - * such as data-react-id that React uses internally.
51 - * See https://reactjs.org/docs/react-dom-server.html#rendertostaticnodestream
52 - */
53 -export function renderToStaticNodeStream(element, options?: ServerOptions) {
54 - return new ReactMarkupReadableStream(element, true, options);
55 -}
packages/react-dom/src/server/ReactDOMServerLegacyPartialRendererBrowser.js renamed
packages/react-dom/src/server/ReactDOMServerNode.js deleted
-22
@@ -1,22 +0,0 @@
1 -/**
2 - * Copyright (c) Facebook, Inc. and its affiliates.
3 - *
4 - * This source code is licensed under the MIT license found in the
5 - * LICENSE file in the root directory of this source tree.
6 - */
7 -
8 -import ReactVersion from 'shared/ReactVersion';
9 -
10 -import {renderToString, renderToStaticMarkup} from './ReactDOMStringRenderer';
11 -import {
12 - renderToNodeStream,
13 - renderToStaticNodeStream,
14 -} from './ReactDOMNodeStreamRenderer';
15 -
16 -export {
17 - renderToString,
18 - renderToStaticMarkup,
19 - renderToNodeStream,
20 - renderToStaticNodeStream,
21 - ReactVersion as version,
22 -};
scripts/shared/inlinedHostConfigs.js
-2
@@ -20,7 +20,6 @@ module.exports = [
20 'react-dom',
21 'react-dom/unstable-fizz',
22 'react-dom/unstable-fizz.node',
23 - 'react-dom/server.node.stable',
23 'react-dom/src/server/ReactDOMFizzServerNode.js', // react-dom/unstable-fizz.node
24 'react-server-dom-webpack',
25 'react-server-dom-webpack/writer',
@@ -45,7 +44,6 @@ module.exports = [
44 'react-dom',
45 'react-dom/testing',
46 'react-dom/unstable-fizz.browser',
48 - 'react-dom/server.browser.stable',
47 'react-dom/src/server/ReactDOMFizzServerBrowser.js', // react-dom/unstable-fizz.browser
48 'react-server-dom-webpack',
49 'react-server-dom-webpack/writer.browser.server',