dillon1000/react

Commit

[Fizz] New Server Rendering Infra (#14144)

* [Fizz] Add Flow/Jest/Rollup build infra

Add a new package for react-stream which allows for custom server renderer
outputs. I picked the name because it's a reasonable name but also
because the npm name is currently owned by a friend of the project.

The react-dom build has its own inlined server renderer under the
name `react-dom/fizz`.

There is also a noop renderer to be used for testing. At some point
we might add a public one to test-renderer but for now I don't want to have
to think about public API design for the tests.

* Add FormatConfig too

We need to separate the format (DOM, React Native, etc) from the host
running the server (Node, Browser, etc).

* Basic wiring between Node, Noop and DOM configs

The Node DOM API is pipeToNodeStream which accepts a writable stream.

* Merge host and format config in dynamic react-stream entry point

Simpler API this way but also avoids having to fork the wrapper config.

Fixes noop builds.

* Add setImmediate/Buffer globals to lint config

Used by the server renderer

* Properly include fizz.node.js

Also use forwarding to it from fizz.js in builds so that tests covers
this.

* Make react-stream private since we're not ready to publish

or even name it yet

* Rename Renderer -> Streamer

* Prefix react-dom/fizz with react-dom/unstable-fizz

* Add Fizz Browser host config

This lets Fizz render to WHATWG streams. E.g. for rendering in a
Service Worker.

I added react-dom/unstable-fizz.browser as the entry point for this.

Since we now have two configurations of DOM. I had to add another
inlinedHostConfigs configuration called `dom-browser`. The reconciler
treats this configuration the same as `dom`. For stream it checks
against the ReactFizzHostConfigBrowser instead of the Node one.

* Add Fizz Browser Fixture

This is for testing server rendering - on the client.

* Lower version number to detach it from react-reconciler version
Browse files
Changed paths48 files
First-parent comparison
A fixtures/fizz-ssr-browser/index.html AddedM package.json ModifiedA packages/react-dom/npm/unstable-fizz.browser.js AddedA packages/react-dom/npm/unstable-fizz.js AddedA packages/react-dom/npm/unstable-fizz.node.js AddedM packages/react-dom/package.json ModifiedA packages/react-dom/src/__tests__/ReactDOMFizzServerBrowser-test.js AddedA packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js AddedA packages/react-dom/src/server/ReactDOMFizzServerBrowser.js AddedA packages/react-dom/src/server/ReactDOMFizzServerFormatConfig.js AddedA packages/react-dom/src/server/ReactDOMFizzServerNode.js AddedA packages/react-dom/unstable-fizz.browser.js AddedA packages/react-dom/unstable-fizz.js AddedA packages/react-dom/unstable-fizz.node.js AddedA packages/react-noop-renderer/npm/server.js AddedM packages/react-noop-renderer/package.json ModifiedA packages/react-noop-renderer/server.js AddedA packages/react-noop-renderer/src/ReactNoopServer.js AddedA packages/react-reconciler/inline.dom-browser.js AddedA packages/react-reconciler/src/forks/ReactFiberHostConfig.dom-browser.js AddedA packages/react-stream/README.md AddedA packages/react-stream/index.js AddedA packages/react-stream/inline-typed.js AddedA packages/react-stream/inline.dom-browser.js AddedA packages/react-stream/inline.dom.js AddedA packages/react-stream/npm/index.js AddedA packages/react-stream/package.json AddedA packages/react-stream/src/ReactFizzFormatConfig.js AddedA packages/react-stream/src/ReactFizzHostConfig.js AddedA packages/react-stream/src/ReactFizzHostConfigBrowser.js AddedA packages/react-stream/src/ReactFizzHostConfigNode.js AddedA packages/react-stream/src/ReactFizzStreamer.js AddedA packages/react-stream/src/__tests__/ReactServer-test.js AddedA packages/react-stream/src/forks/ReactFizzFormatConfig.custom.js AddedA packages/react-stream/src/forks/ReactFizzFormatConfig.dom-browser.js AddedA packages/react-stream/src/forks/ReactFizzFormatConfig.dom.js AddedA packages/react-stream/src/forks/ReactFizzHostConfig.custom.js AddedA packages/react-stream/src/forks/ReactFizzHostConfig.dom-browser.js AddedA packages/react-stream/src/forks/ReactFizzHostConfig.dom.js AddedM scripts/flow/createFlowConfigs.js ModifiedM scripts/jest/setupHostConfigs.js ModifiedM scripts/rollup/bundles.js ModifiedM scripts/rollup/forks.js ModifiedM scripts/rollup/results.json ModifiedM scripts/rollup/validate/eslintrc.cjs.js ModifiedM scripts/rollup/validate/eslintrc.fb.js ModifiedM scripts/shared/inlinedHostConfigs.js ModifiedM yarn.lock Modified
Patch

Files changed

Rendering syntax-highlighted changes…