UNPKG

react-on-rails-rsc

Version:

React Server Components support for react_on_rails Ruby gem

39 lines 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildClientRenderer = void 0; const client_node_1 = require("./react-server-dom-webpack/client.node"); const createSSRManifest = (clientManifest, serverManifest) => { const { filePathToModuleMetadata: clientFilePathToModuleMetadata, moduleLoading: clientModuleLoading } = clientManifest; const { filePathToModuleMetadata: serverFilePathToModuleMetadata } = serverManifest; const moduleMap = {}; Object.entries(clientFilePathToModuleMetadata).forEach(([aboluteFileUrl, clientFileBundlingInfo]) => { const serverModuleMetadata = serverFilePathToModuleMetadata[aboluteFileUrl]; if (!serverModuleMetadata) { throw new Error(`Server module metadata not found for ${aboluteFileUrl}`); } const { id, chunks } = serverModuleMetadata; moduleMap[clientFileBundlingInfo.id] = { '*': { id, chunks, name: '*', }, }; }); return { // The `moduleLoading` property is utilized by the React runtime to load JavaScript modules on the browser. // It can accept options such as `prefix` and `crossOrigin` to specify the path and crossorigin attribute for the modules. // In our case, we set it to the client module loading options as it contains the prefix and crossOrigin of the client bundle. moduleLoading: clientModuleLoading, moduleMap, }; }; const buildClientRenderer = (clientManifest, serverManifest) => { const ssrManifest = createSSRManifest(clientManifest, serverManifest); return { createFromNodeStream: (stream) => (0, client_node_1.createFromNodeStream)(stream, ssrManifest), ssrManifest, }; }; exports.buildClientRenderer = buildClientRenderer; //# sourceMappingURL=client.node.js.map