UNPKG

vite-plugin-react-server

Version:
77 lines (74 loc) 9.17 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { React, ReactDOMClient } from '../vendor/vendor.client.js'; import { assertNonReactServer } from '../config/getCondition.js'; assertNonReactServer(); const createFromNodeStream = function _createFromNodeStreamClient(options) { const { rscStream, logger, verbose = false } = options; let { moduleRootPath, moduleBasePath, moduleBaseURL } = options; if (options.children) { if (verbose) { logger?.info( `[createNodeStream.client] Options already have children, skipping conversion` ); } return { type: "client", children: options.children }; } if (!rscStream) { throw new Error( "[createNodeStream.client] no rscStream nor children provided" ); } if (verbose) { logger?.info( `[createNodeStream.client] Converting RSC stream to React elements, moduleRootPath: ${moduleRootPath}, moduleBasePath: ${moduleBasePath}, moduleBaseURL: ${moduleBaseURL} (type: ${typeof moduleBaseURL})` ); } if (typeof moduleBaseURL !== "string" || !moduleBaseURL) { if (verbose && logger) { logger.warn( `[createNodeStream.client] moduleBaseURL is not a valid string: ${JSON.stringify( moduleBaseURL )} (type: ${typeof moduleBaseURL}), defaulting to "/"` ); } moduleBaseURL = "/"; } if (!moduleRootPath) { moduleRootPath = ""; } else if (!moduleRootPath.endsWith("/")) { moduleRootPath = `${moduleRootPath}/`; } if (!moduleBasePath) { moduleBasePath = ""; } else if (!moduleBasePath.endsWith("/")) { moduleBasePath = `${moduleBasePath}/`; } if (verbose) { logger?.info( `[createNodeStream.client] Using ReactDOMClient.createFromNodeStream from react-server-dom-esm/client.node` ); logger?.info( `[createNodeStream.client] rscStream type: ${typeof rscStream}, readable: ${rscStream.readable}, destroyed: ${rscStream.destroyed}` ); } return { type: "client", children: React.createElement(() => { const promise = ReactDOMClient.createFromNodeStream( rscStream, moduleRootPath, moduleBaseURL ); return React.use(promise); }) }; }; export { createFromNodeStream }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRnJvbU5vZGVTdHJlYW0uY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vc3RyZWFtL2NyZWF0ZUZyb21Ob2RlU3RyZWFtLmNsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENyZWF0ZUZyb21Ob2RlU3RyZWFtRm4gfSBmcm9tIFwiLi9jcmVhdGVGcm9tTm9kZVN0cmVhbS50eXBlcy5qc1wiO1xuaW1wb3J0IHsgUmVhY3QsIFJlYWN0RE9NQ2xpZW50IH0gZnJvbSBcIi4uL3ZlbmRvci92ZW5kb3IuY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBhc3NlcnROb25SZWFjdFNlcnZlciB9IGZyb20gXCIuLi9jb25maWcvZ2V0Q29uZGl0aW9uLmpzXCI7XG5cbmFzc2VydE5vblJlYWN0U2VydmVyKCk7XG5cbi8qKlxuICogQ2xpZW50IHZlcnNpb24gb2YgY3JlYXRlTm9kZVN0cmVhbS5cbiAqXG4gKiBTdHJhdGVneTogQ29udmVydCBSU0Mgc3RyZWFtIHRvIFJlYWN0IGVsZW1lbnRzIHVzaW5nIFJlYWN0RE9NQ2xpZW50LmNyZWF0ZUZyb21Ob2RlU3RyZWFtLlxuICogVGhpcyBpcyB0aGUgc2FtZSBhcHByb2FjaCB1c2VkIGJ5IHRoZSBIVE1MIHdvcmtlciBmb3IgcHJvcGVyIENTUyBoYW5kbGluZyBhbmQgUlNDIHByb2Nlc3NpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVGcm9tTm9kZVN0cmVhbTogQ3JlYXRlRnJvbU5vZGVTdHJlYW1GbjxcImNsaWVudFwiPiA9XG4gIGZ1bmN0aW9uIF9jcmVhdGVGcm9tTm9kZVN0cmVhbUNsaWVudChvcHRpb25zKSB7XG4gICAgY29uc3QgeyByc2NTdHJlYW0sIGxvZ2dlciwgdmVyYm9zZSA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICAgIGxldCB7IG1vZHVsZVJvb3RQYXRoLCBtb2R1bGVCYXNlUGF0aCwgbW9kdWxlQmFzZVVSTCB9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zLmNoaWxkcmVuKSB7XG4gICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICBsb2dnZXI/LmluZm8oXG4gICAgICAgICAgYFtjcmVhdGVOb2RlU3RyZWFtLmNsaWVudF0gT3B0aW9ucyBhbHJlYWR5IGhhdmUgY2hpbGRyZW4sIHNraXBwaW5nIGNvbnZlcnNpb25gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImNsaWVudFwiIGFzIGNvbnN0LFxuICAgICAgICBjaGlsZHJlbjogb3B0aW9ucy5jaGlsZHJlbiBhcyBSZWFjdC5SZWFjdEVsZW1lbnQsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIXJzY1N0cmVhbSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIltjcmVhdGVOb2RlU3RyZWFtLmNsaWVudF0gbm8gcnNjU3RyZWFtIG5vciBjaGlsZHJlbiBwcm92aWRlZFwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICBsb2dnZXI/LmluZm8oXG4gICAgICAgIGBbY3JlYXRlTm9kZVN0cmVhbS5jbGllbnRdIENvbnZlcnRpbmcgUlNDIHN0cmVhbSB0byBSZWFjdCBlbGVtZW50cywgbW9kdWxlUm9vdFBhdGg6ICR7bW9kdWxlUm9vdFBhdGh9LCBtb2R1bGVCYXNlUGF0aDogJHttb2R1bGVCYXNlUGF0aH0sIG1vZHVsZUJhc2VVUkw6ICR7bW9kdWxlQmFzZVVSTH0gKHR5cGU6ICR7dHlwZW9mIG1vZHVsZUJhc2VVUkx9KWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIG1vZHVsZUJhc2VVUkwgaXMgYSBzdHJpbmcgYW5kIG5vdCBlbXB0eVxuICAgIC8vIFJlYWN0IFNlcnZlciBET00gbmVlZHMgYSB2YWxpZCBiYXNlIFVSTCB0byByZXNvbHZlIG1vZHVsZXMgaW4gdGhlIFJTQyBzdHJlYW1cbiAgICBpZiAodHlwZW9mIG1vZHVsZUJhc2VVUkwgIT09IFwic3RyaW5nXCIgfHwgIW1vZHVsZUJhc2VVUkwpIHtcbiAgICAgIGlmICh2ZXJib3NlICYmIGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIud2FybihcbiAgICAgICAgICBgW2NyZWF0ZU5vZGVTdHJlYW0uY2xpZW50XSBtb2R1bGVCYXNlVVJMIGlzIG5vdCBhIHZhbGlkIHN0cmluZzogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIG1vZHVsZUJhc2VVUkxcbiAgICAgICAgICApfSAodHlwZTogJHt0eXBlb2YgbW9kdWxlQmFzZVVSTH0pLCBkZWZhdWx0aW5nIHRvIFwiL1wiYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbW9kdWxlQmFzZVVSTCA9IFwiL1wiO1xuICAgIH1cbiAgICBpZiAoIW1vZHVsZVJvb3RQYXRoKSB7XG4gICAgICBtb2R1bGVSb290UGF0aCA9IFwiXCI7XG4gICAgfSBlbHNlIGlmICghbW9kdWxlUm9vdFBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG4gICAgICBtb2R1bGVSb290UGF0aCA9IGAke21vZHVsZVJvb3RQYXRofS9gO1xuICAgIH1cbiAgICBpZiAoIW1vZHVsZUJhc2VQYXRoKSB7XG4gICAgICBtb2R1bGVCYXNlUGF0aCA9IFwiXCI7XG4gICAgfSBlbHNlIGlmICghbW9kdWxlQmFzZVBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG4gICAgICBtb2R1bGVCYXNlUGF0aCA9IGAke21vZHVsZUJhc2VQYXRofS9gO1xuICAgIH1cblxuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICBsb2dnZXI/LmluZm8oXG4gICAgICAgIGBbY3JlYXRlTm9kZVN0cmVhbS5jbGllbnRdIFVzaW5nIFJlYWN0RE9NQ2xpZW50LmNyZWF0ZUZyb21Ob2RlU3RyZWFtIGZyb20gcmVhY3Qtc2VydmVyLWRvbS1lc20vY2xpZW50Lm5vZGVgXG4gICAgICApO1xuICAgICAgbG9nZ2VyPy5pbmZvKFxuICAgICAgICBgW2NyZWF0ZU5vZGVTdHJlYW0uY2xpZW50XSByc2NTdHJlYW0gdHlwZTogJHt0eXBlb2YgcnNjU3RyZWFtfSwgcmVhZGFibGU6ICR7XG4gICAgICAgICAgcnNjU3RyZWFtLnJlYWRhYmxlXG4gICAgICAgIH0sIGRlc3Ryb3llZDogJHtyc2NTdHJlYW0uZGVzdHJveWVkfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCBSU0Mgc3RyZWFtIHRvIFJlYWN0IGVsZW1lbnRzIHVzaW5nIFJlYWN0RE9NQ2xpZW50LmNyZWF0ZUZyb21Ob2RlU3RyZWFtXG4gICAgLy8gVGhpcyBpcyB0aGUgc2FtZSBhcHByb2FjaCB1c2VkIGJ5IHRoZSBIVE1MIHdvcmtlclxuICAgIC8vIElNUE9SVEFOVDogUmVhY3RET01DbGllbnQuY3JlYXRlRnJvbU5vZGVTdHJlYW0gcmV0dXJucyBhIFByb21pc2UgdGhhdCBuZWVkcyB0byBiZSBhd2FpdGVkXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY2xpZW50XCIgYXMgY29uc3QsXG4gICAgICBjaGlsZHJlbjogUmVhY3QuY3JlYXRlRWxlbWVudCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBSZWFjdERPTUNsaWVudC5jcmVhdGVGcm9tTm9kZVN0cmVhbShcbiAgICAgICAgICByc2NTdHJlYW0sXG4gICAgICAgICAgbW9kdWxlUm9vdFBhdGgsXG4gICAgICAgICAgbW9kdWxlQmFzZVVSTFxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIFJlYWN0LnVzZShwcm9taXNlKTtcbiAgICAgIH0pLFxuICAgIH07XG4gIH07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFJQSxvQkFBcUIsRUFBQTtBQVFSLE1BQUEsb0JBQUEsR0FDWCxTQUFTLDJCQUFBLENBQTRCLE9BQVMsRUFBQTtBQUM1QyxFQUFBLE1BQU0sRUFBRSxTQUFBLEVBQVcsTUFBUSxFQUFBLE9BQUEsR0FBVSxPQUFVLEdBQUEsT0FBQTtBQUMvQyxFQUFBLElBQUksRUFBRSxjQUFBLEVBQWdCLGNBQWdCLEVBQUEsYUFBQSxFQUFrQixHQUFB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