vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
92 lines (89 loc) • 11.1 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { createLogger } from 'vite';
import { resolveOptions } from '../config/resolveOptions.js';
import { resolveUserConfig } from '../config/resolveUserConfig.js';
import { resolveAutoDiscover } from '../config/autoDiscover/resolveAutoDiscover.js';
import { handleError } from '../error/handleError.js';
import { assertNonReactServer } from '../config/getCondition.js';
assertNonReactServer();
const reactClientPlugin = function _reactClientPlugin(options) {
let userConfig;
let configEnv;
let autoDiscoveredFiles;
let resolvedConfig = null;
let logger;
let implicitSsr = void 0;
const resolvedOptions = resolveOptions(options);
if (resolvedOptions.type === "error") {
if (resolvedOptions.error != null) {
throw resolvedOptions.error;
}
throw new Error("Failed to resolve options");
}
const currentUserOptions = resolvedOptions.userOptions;
return {
name: "vite:plugin-react-server/client",
enforce: "post",
async config(config, viteConfigEnv) {
configEnv = viteConfigEnv;
if (configEnv.command !== "build") {
return;
}
if (typeof config?.build?.ssr === "boolean" || typeof config?.build?.ssr === "string") {
implicitSsr = Boolean(config?.build?.ssr);
} else if (implicitSsr === void 0) {
implicitSsr = configEnv.isSsrBuild;
}
const logger2 = config.customLogger || createLogger();
const autoDiscoverResult = await resolveAutoDiscover({
config,
configEnv,
userOptions: currentUserOptions,
logger: logger2
});
if (autoDiscoverResult.type === "error") {
const panicError = handleError({
error: autoDiscoverResult.error,
logger: logger2,
panicThreshold: currentUserOptions.panicThreshold});
if (panicError != null) {
throw panicError;
}
return;
}
autoDiscoveredFiles = autoDiscoverResult.autoDiscoveredFiles;
if (!autoDiscoveredFiles) {
throw new Error("Failed to find autoDiscoveredFiles");
}
const resolvedConfig2 = resolveUserConfig({
condition: "react-client",
config,
configEnv,
userOptions: currentUserOptions,
autoDiscoveredFiles,
ssr: implicitSsr
});
if (resolvedConfig2.type === "error") {
if (resolvedConfig2.error != null) {
throw resolvedConfig2.error;
}
throw new Error("Failed to resolve config");
}
userConfig = resolvedConfig2.userConfig;
return userConfig;
},
configResolved(viteResolvedConfig) {
if (currentUserOptions.verbose) {
logger?.info("configResolved");
}
resolvedConfig = viteResolvedConfig;
logger = resolvedConfig.customLogger || resolvedConfig.logger;
}
};
};
export { reactClientPlugin };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmNsaWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL3JlYWN0LWNsaWVudC9wbHVnaW4uY2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUxvZ2dlcixcbiAgdHlwZSBDb25maWdFbnYsXG4gIHR5cGUgUmVzb2x2ZWRDb25maWcsXG4gIHR5cGUgTG9nZ2VyLFxufSBmcm9tIFwidml0ZVwiO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvRGlzY292ZXJlZEZpbGVzLFxuICBSZXNvbHZlZFVzZXJDb25maWcsXG4gIFZpdGVQbHVnaW5Gbixcbn0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlT3B0aW9ucyB9IGZyb20gXCIuLi9jb25maWcvcmVzb2x2ZU9wdGlvbnMuanNcIjtcbmltcG9ydCB7IHJlc29sdmVVc2VyQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9yZXNvbHZlVXNlckNvbmZpZy5qc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUF1dG9EaXNjb3ZlciB9IGZyb20gXCIuLi9jb25maWcvYXV0b0Rpc2NvdmVyL3Jlc29sdmVBdXRvRGlzY292ZXIuanNcIjtcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL2hhbmRsZUVycm9yLmpzXCI7XG5pbXBvcnQgeyBhc3NlcnROb25SZWFjdFNlcnZlciB9IGZyb20gXCIuLi9jb25maWcvZ2V0Q29uZGl0aW9uLmpzXCI7XG5cbmFzc2VydE5vblJlYWN0U2VydmVyKCk7XG5cbi8qKlxuICogTWFpbiBlbnRyeSBmb3IgYHJlYWN0LWNsaWVudGAgYmVoYXZpb3IuIFRoaXMgcGx1Z2luIGlzIGltcG9ydGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBpbXBvcnRlZCBmcm9tIHRoZSBtYWluXG4gKiBlbnRyeXBvaW50IGFuZCB0aGUgY29uZGl0aW9uIGlzIG5vdCBgcmVhY3Qtc2VydmVyYC5cbiAqXG4gKiBUaGlzIHBsdWdpbiBpcyByZXNwb25zaWJsZSBmb3I6XG4gKiAgRGV2IG1vZGUgdW5kZXIgbm9uLXJlYWN0LXNlcnZlciBjb25kaXRpb25zOlxuICogLSBEaXNhYmxlZCwgdXNlciByZWFjdC1zZXJ2ZXIvcGx1Z2luLmNsaWVudC50cyBpbnN0ZWFkXG4gKiBCdWlsZCBtb2RlIHVuZGVyIG5vbi1yZWFjdC1zZXJ2ZXIgY29uZGl0aW9uczpcbiAqIC0gQ29uZmlndXJlIHRoZSBjb25maWcgZm9yIHRoZSBjbGllbnQgYm91bmRhcnkgYnVpbGRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgcmVhY3RDbGllbnRQbHVnaW46IFZpdGVQbHVnaW5GbiA9IGZ1bmN0aW9uIF9yZWFjdENsaWVudFBsdWdpbihcbiAgb3B0aW9uc1xuKSB7XG4gIGxldCB1c2VyQ29uZmlnOiBSZXNvbHZlZFVzZXJDb25maWc7XG4gIGxldCBjb25maWdFbnY6IENvbmZpZ0VudjtcbiAgbGV0IGF1dG9EaXNjb3ZlcmVkRmlsZXM6IEF1dG9EaXNjb3ZlcmVkRmlsZXM7XG5cbiAgbGV0IHJlc29sdmVkQ29uZmlnOiBSZXNvbHZlZENvbmZpZyB8IG51bGwgPSBudWxsO1xuICBsZXQgbG9nZ2VyOiBMb2dnZXI7XG4gIGxldCBpbXBsaWNpdFNzcjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvLyBJbml0aWFsIG9wdGlvbnMgcmVzb2x1dGlvblxuICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlT3B0aW9ucyhvcHRpb25zKTtcbiAgaWYgKHJlc29sdmVkT3B0aW9ucy50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICBpZiAocmVzb2x2ZWRPcHRpb25zLmVycm9yICE9IG51bGwpIHtcbiAgICAgIHRocm93IHJlc29sdmVkT3B0aW9ucy5lcnJvcjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIHJlc29sdmUgb3B0aW9uc1wiKTtcbiAgfVxuICBjb25zdCBjdXJyZW50VXNlck9wdGlvbnMgPSByZXNvbHZlZE9wdGlvbnMudXNlck9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcInZpdGU6cGx1Z2luLXJlYWN0LXNlcnZlci9jbGllbnRcIixcbiAgICBlbmZvcmNlOiBcInBvc3RcIixcbiAgICBhc3luYyBjb25maWcoY29uZmlnLCB2aXRlQ29uZmlnRW52KSB7XG4gICAgICBcbiAgICAgIGNvbmZpZ0VudiA9IHZpdGVDb25maWdFbnY7XG4gICAgICBpZiAoY29uZmlnRW52LmNvbW1hbmQgIT09IFwiYnVpbGRcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBcbiAgICAgIFxuICAgICAgXG4gICAgICBpZih0eXBlb2YgY29uZmlnPy5idWlsZD8uc3NyID09PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgY29uZmlnPy5idWlsZD8uc3NyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGltcGxpY2l0U3NyID0gQm9vbGVhbihjb25maWc/LmJ1aWxkPy5zc3IpO1xuICAgICAgICBcbiAgICAgIH0gZWxzZSBpZihpbXBsaWNpdFNzciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGltcGxpY2l0U3NyID0gY29uZmlnRW52LmlzU3NyQnVpbGQ7XG4gICAgICB9XG4gICAgICBcbiAgICAgIFxuICAgICAgY29uc3QgbG9nZ2VyID0gY29uZmlnLmN1c3RvbUxvZ2dlciB8fCBjcmVhdGVMb2dnZXIoKTtcbiAgICAgIGNvbnN0IGF1dG9EaXNjb3ZlclJlc3VsdCA9IGF3YWl0IHJlc29sdmVBdXRvRGlzY292ZXIoe1xuICAgICAgICBjb25maWcsXG4gICAgICAgIGNvbmZpZ0VudixcbiAgICAgICAgdXNlck9wdGlvbnM6IGN1cnJlbnRVc2VyT3B0aW9ucyxcbiAgICAgICAgbG9nZ2VyLFxuICAgICAgfSk7XG4gICAgICBpZiAoYXV0b0Rpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgICBjb25zdCBwYW5pY0Vycm9yID0gaGFuZGxlRXJyb3Ioe1xuICAgICAgICAgIGVycm9yOiBhdXRvRGlzY292ZXJSZXN1bHQuZXJyb3IsXG4gICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgIHBhbmljVGhyZXNob2xkOiBjdXJyZW50VXNlck9wdGlvbnMucGFuaWNUaHJlc2hvbGQsXG4gICAgICAgICAgY29udGV4dDogXCJjb25maWcoYXV0b0Rpc2NvdmVyKVwiLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHBhbmljRXJyb3IgIT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IHBhbmljRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXV0b0Rpc2NvdmVyZWRGaWxlcyA9IGF1dG9EaXNjb3ZlclJlc3VsdC5hdXRvRGlzY292ZXJlZEZpbGVzO1xuICAgICAgaWYgKCFhdXRvRGlzY292ZXJlZEZpbGVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBmaW5kIGF1dG9EaXNjb3ZlcmVkRmlsZXNcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc29sdmVkQ29uZmlnID0gcmVzb2x2ZVVzZXJDb25maWcoe1xuICAgICAgICBjb25kaXRpb246IFwicmVhY3QtY2xpZW50XCIsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgY29uZmlnRW52LFxuICAgICAgICB1c2VyT3B0aW9uczogY3VycmVudFVzZXJPcHRpb25zLFxuICAgICAgICBhdXRvRGlzY292ZXJlZEZpbGVzLFxuICAgICAgICBzc3I6IGltcGxpY2l0U3NyLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXNvbHZlZENvbmZpZy50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgaWYgKHJlc29sdmVkQ29uZmlnLmVycm9yICE9IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyByZXNvbHZlZENvbmZpZy5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gcmVzb2x2ZSBjb25maWdcIik7XG4gICAgICB9XG5cbiAgICAgIHVzZXJDb25maWcgPSByZXNvbHZlZENvbmZpZy51c2VyQ29uZmlnO1xuICAgICAgcmV0dXJuIHVzZXJDb25maWc7XG4gICAgfSxcbiAgICBjb25maWdSZXNvbHZlZCh2aXRlUmVzb2x2ZWRDb25maWcpIHtcbiAgICAgIGlmIChjdXJyZW50VXNlck9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICBsb2dnZXI/LmluZm8oXCJjb25maWdSZXNvbHZlZFwiKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmVkQ29uZmlnID0gdml0ZVJlc29sdmVkQ29uZmlnO1xuICAgICAgbG9nZ2VyID0gcmVzb2x2ZWRDb25maWcuY3VzdG9tTG9nZ2VyIHx8IHJlc29sdmVkQ29uZmlnLmxvZ2dlcjtcbiAgICB9LFxuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJsb2dnZXIiLCJyZXNvbHZlZENvbmZpZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBaUJBLG9CQUFxQixFQUFBO0FBY1IsTUFBQSxpQkFBQSxHQUFrQyxTQUFTLGtCQUFBLENBQ3RELE9BQ0EsRUFBQTtBQUNBLEVBQUksSUFBQSxVQUFBO0FBQ0osRUFBSSxJQUFBLFNBQUE7QUFDSixFQUFJLElBQUEsbUJBQUE7QUFFSixFQUFBLElBQUksY0FBd0MsR0FBQSxJQUFBO0FBQzVDLEVBQUksSUFBQSxNQUFBO0FBQ0osRUFBQSxJQUFJLFdBQW1DLEdBQUEsTUFBQTtBQUd2QyxFQUFNLE1BQUEsZUFBQSxHQUFrQixlQUFlLE9BQU8sQ0FBQTtBQUM5QyxFQUFJLElBQUEsZUFBQSxDQUFnQixTQUFTLE9BQVMsRUFBQTtBQUNwQyxJQUFJLElBQUEsZUFBQSxDQUFnQixTQUFTLElBQU0sRUFBQTtBQUNqQyxNQUFBLE1BQU0sZUFBZ0IsQ0FBQSxLQUFBO0FBQUE7QUFFeEIsSUFBTSxNQUFBLElBQUksTUFBTSwyQkFBMkIsQ0FBQTtBQUFBO0FBRTdDLEVBQUEsTUFBTSxxQkFBcUIsZUFBZ0IsQ0FBQSxXQUFBO0FBRTNDLEVBQU8sT0FBQTtBQUFBLElBQ0wsSUFBTSxFQUFBLGlDQUFBO0FBQUEsSUFDTixPQUFTLEVBQUEsTUFBQTtBQUFBLElBQ1QsTUFBTSxNQUFPLENBQUEsTUFBQSxFQUFRLGFBQWUsRUFBQTtBQUVsQyxNQUFZLFNBQUEsR0FBQSxhQUFBO0FBQ1osTUFBSSxJQUFBLFNBQUEsQ0FBVSxZQUFZLE9BQVMsRUFBQTtBQUNqQyxRQUFBO0FBQUE7QUFLRixNQUFHLElBQUEsT0FBTyxRQUFRLEtBQU8sRUFBQSxHQUFBLEtBQVEsYUFBYSxPQUFPLE1BQUEsRUFBUSxLQUFPLEVBQUEsR0FBQSxLQUFRLFFBQVUsRUFBQTtBQUNwRixRQUFjLFdBQUEsR0FBQSxPQUFBLENBQVEsTUFBUSxFQUFBLEtBQUEsRUFBTyxHQUFHLENBQUE7QUFBQSxPQUUxQyxNQUFBLElBQVUsZ0JBQWdCLE1BQVcsRUFBQTtBQUNuQyxRQUFBLFdBQUEsR0FBYyxTQUFVLENBQUEsVUFBQTtBQUFBO0FBSTFCLE1BQU1BLE1BQUFBLE9BQUFBLEdBQVMsTUFBTyxDQUFBLFlBQUEsSUFBZ0IsWUFBYSxFQUFBO0FBQ25ELE1BQU0sTUFBQSxrQkFBQSxHQUFxQixNQUFNLG1CQUFvQixDQUFBO0FBQUEsUUFDbkQsTUFBQTtBQUFBLFFBQ0EsU0FBQTtBQUFBLFFBQ0EsV0FBYSxFQUFBLGtCQUFBO0FBQUEsUUFDYixNQUFBQSxFQUFBQTtBQUFBLE9BQ0QsQ0FBQTtBQUNELE1BQUksSUFBQSxrQkFBQSxDQUFtQixTQUFTLE9BQVMsRUFBQTtBQUN2QyxRQUFBLE1BQU0sYUFBYSxXQUFZLENBQUE7QUFBQSxVQUM3QixPQUFPLGtCQUFtQixDQUFBLEtBQUE7QUFBQSxVQUMxQixNQUFBQSxFQUFBQSxPQUFBQTtBQUFBLFVBQ0EsZ0JBQWdCLGtCQUFtQixDQUFBLGNBRXJDLENBQUMsQ0FBQTtBQUNELFFBQUEsSUFBSSxjQUFjLElBQU0sRUFBQTtBQUN0QixVQUFNLE1BQUEsVUFBQTtBQUFBO0FBRVIsUUFBQTtBQUFBO0FBRUYsTUFBQSxtQkFBQSxHQUFzQixrQkFBbUIsQ0FBQSxtQkFBQTtBQUN6QyxNQUFBLElBQUksQ0FBQyxtQkFBcUIsRUFBQTtBQUN4QixRQUFNLE1BQUEsSUFBSSxNQUFNLG9DQUFvQyxDQUFBO0FBQUE7QUFHdEQsTUFBQSxNQUFNQyxrQkFBaUIsaUJBQWtCLENBQUE7QUFBQSxRQUN2QyxTQUFXLEVBQUEsY0FBQTtBQUFBLFFBQ1gsTUFBQTtBQUFBLFFBQ0EsU0FBQTtBQUFBLFFBQ0EsV0FBYSxFQUFBLGtCQUFBO0FBQUEsUUFDYixtQkFBQTtBQUFBLFFBQ0EsR0FBSyxFQUFBO0FBQUEsT0FDTixDQUFBO0FBRUQsTUFBSUEsSUFBQUEsZUFBQUEsQ0FBZSxTQUFTLE9BQVMsRUFBQTtBQUNuQyxRQUFJQSxJQUFBQSxlQUFBQSxDQUFlLFNBQVMsSUFBTSxFQUFBO0FBQ2hDLFVBQUEsTUFBTUEsZUFBZSxDQUFBLEtBQUE7QUFBQTtBQUV2QixRQUFNLE1BQUEsSUFBSSxNQUFNLDBCQUEwQixDQUFBO0FBQUE7QUFHNUMsTUFBQSxVQUFBLEdBQWFBLGVBQWUsQ0FBQSxVQUFBO0FBQzVCLE1BQU8sT0FBQSxVQUFBO0FBQUEsS0FDVDtBQUFBLElBQ0EsZUFBZSxrQkFBb0IsRUFBQTtBQUNqQyxNQUFBLElBQUksbUJBQW1CLE9BQVMsRUFBQTtBQUM5QixRQUFBLE1BQUEsRUFBUSxLQUFLLGdCQUFnQixDQUFBO0FBQUE7QUFFL0IsTUFBaUIsY0FBQSxHQUFBLGtCQUFBO0FBQ2pCLE1BQVMsTUFBQSxHQUFBLGNBQUEsQ0FBZSxnQkFBZ0IsY0FBZSxDQUFBLE1BQUE7QUFBQTtBQUN6RCxHQUNGO0FBQ0Y7Ozs7In0=