mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
We're adding an option to Fizz to support an alternate output format that doesn't rely on inline script tags (see #25437). The two outputs will share the same "instruction set" of functions. These functions are currently inlined into the source file; to make this a bit more maintainable, and eventually have a single source of truth, in preparation for the new option, this commit moves the instruction set to a separate files that are imported. In the future, we could improve this further by running Closure on the instruction set and generating it at build time. This isn't an urgent improvement, though, because we rarely modify the instruction set. Co-authored-by: Mofei Zhang <feifei0@fb.com> Co-authored-by: Mofei Zhang <feifei0@fb.com>
39 lines
1.6 KiB
JavaScript
39 lines
1.6 KiB
JavaScript
// Instruction Set
|
|
|
|
// The following code is the source scripts that we then minify and inline below,
|
|
// with renamed function names that we hope don't collide:
|
|
|
|
// const COMMENT_NODE = 8;
|
|
// const SUSPENSE_START_DATA = '$';
|
|
// const SUSPENSE_END_DATA = '/$';
|
|
// const SUSPENSE_PENDING_START_DATA = '$?';
|
|
// const SUSPENSE_FALLBACK_START_DATA = '$!';
|
|
// const LOADED = 'l';
|
|
// const ERRORED = 'e';
|
|
|
|
// function clientRenderBoundary(suspenseBoundaryID, errorDigest, errorMsg, errorComponentStack) {
|
|
// // Find the fallback's first element.
|
|
// const suspenseIdNode = document.getElementById(suspenseBoundaryID);
|
|
// if (!suspenseIdNode) {
|
|
// // The user must have already navigated away from this tree.
|
|
// // E.g. because the parent was hydrated.
|
|
// return;
|
|
// }
|
|
// // Find the boundary around the fallback. This is always the previous node.
|
|
// const suspenseNode = suspenseIdNode.previousSibling;
|
|
// // Tag it to be client rendered.
|
|
// suspenseNode.data = SUSPENSE_FALLBACK_START_DATA;
|
|
// // assign error metadata to first sibling
|
|
// let dataset = suspenseIdNode.dataset;
|
|
// if (errorDigest) dataset.dgst = errorDigest;
|
|
// if (errorMsg) dataset.msg = errorMsg;
|
|
// if (errorComponentStack) dataset.stck = errorComponentStack;
|
|
// // Tell React to retry it if the parent already hydrated.
|
|
// if (suspenseNode._reactRetry) {
|
|
// suspenseNode._reactRetry();
|
|
// }
|
|
// }
|
|
|
|
// TODO: Generate this file with a build step.
|
|
export default 'function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data="$!",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())}';
|