vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
43 lines (40 loc) • 6.63 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { crawlFrameworkPkgs } from 'vitefu';
const SELF_PACKAGES = /* @__PURE__ */ new Set([
"react",
"react-dom",
"react-server-dom-esm",
"vite-plugin-react-server"
]);
const discoverClientPackages = async (options) => {
const manual = options.manual ?? [];
const exclude = new Set(options.exclude ?? []);
try {
const result = await crawlFrameworkPkgs({
root: options.root ?? process.cwd(),
isBuild: options.isBuild,
isFrameworkPkgByJson(pkgJson) {
const name = pkgJson?.["name"];
if (!name || SELF_PACKAGES.has(name)) return false;
const peer = pkgJson?.["peerDependencies"];
return Boolean(peer && "react" in peer);
}
});
const auto = result?.ssr?.noExternal ?? [];
const autoStrings = auto.filter((x) => typeof x === "string");
return Array.from(/* @__PURE__ */ new Set([...manual, ...autoStrings])).filter(
(p) => !exclude.has(p)
);
} catch (err) {
options.logger?.warn(
`[vite-plugin-react-server:client-packages-discovery] crawl failed: ${err instanceof Error ? err.message : String(err)} — falling back to manual clientPackages list`
);
return manual.filter((p) => !exclude.has(p));
}
};
export { discoverClientPackages };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY292ZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9jbGllbnRQYWNrYWdlcy9kaXNjb3Zlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmF3bEZyYW1ld29ya1BrZ3MgfSBmcm9tIFwidml0ZWZ1XCI7XG5pbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gXCJ2aXRlXCI7XG5cbmNvbnN0IFNFTEZfUEFDS0FHRVMgPSBuZXcgU2V0KFtcbiAgXCJyZWFjdFwiLFxuICBcInJlYWN0LWRvbVwiLFxuICBcInJlYWN0LXNlcnZlci1kb20tZXNtXCIsXG4gIFwidml0ZS1wbHVnaW4tcmVhY3Qtc2VydmVyXCIsXG5dKTtcblxuZXhwb3J0IGludGVyZmFjZSBEaXNjb3Zlck9wdGlvbnMge1xuICAvKiogUHJvamVjdCByb290IGZvciB0aGUgY3Jhd2wuIERlZmF1bHRzIHRvIHByb2Nlc3MuY3dkKCkgKi9cbiAgcm9vdD86IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIGB2aXRlIGJ1aWxkYCAodnMgYHZpdGUgc2VydmVgKS4gKi9cbiAgaXNCdWlsZDogYm9vbGVhbjtcbiAgLyoqIE1hbnVhbGx5LXNwZWNpZmllZCBwYWNrYWdlcyB0byBtZXJnZSB3aXRoIGF1dG8tZGV0ZWN0ZWQgb25lcy4gKi9cbiAgbWFudWFsPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQYWNrYWdlcyB0byBleGNsdWRlIGZyb20gdGhlIG1lcmdlZCBsaXN0IChtYW51YWwgb3IgYXV0bykuICovXG4gIGV4Y2x1ZGU/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIE9wdGlvbmFsIGxvZ2dlciBmb3Igd2FybmluZ3MuICovXG4gIGxvZ2dlcj86IFBpY2s8TG9nZ2VyLCBcIndhcm5cIj47XG59XG5cbi8qKlxuICogRGlzY292ZXJzIG5wbSBwYWNrYWdlcyB0aGF0IHNoaXAgcGVyLWZpbGUgYFwidXNlIGNsaWVudFwiYCBkaXJlY3RpdmVzIGJ5XG4gKiBjcmF3bGluZyB0aGUgcHJvamVjdCdzIGRlcGVuZGVuY3kgdHJlZSBhbmQgc2VsZWN0aW5nIGFueSBwYWNrYWdlIHdob3NlXG4gKiBgcGFja2FnZS5qc29uYCBsaXN0cyBgcmVhY3RgIGluIGBwZWVyRGVwZW5kZW5jaWVzYC4gTWlycm9ycyB0aGUgaGVscGVyXG4gKiBwYXR0ZXJuIHVzZWQgYnkgYEB2aXRlanMvcGx1Z2luLXJzY2AuXG4gKlxuICogUmV0dXJucyB0aGUgbWVyZ2VkIHNldCBvZiBgbWFudWFsIOKIqiBhdXRvLWRldGVjdGVkYCBtaW51cyBgZXhjbHVkZWAuXG4gKiBPbiBjcmF3bCBmYWlsdXJlIChtaXNzaW5nIGxvY2tmaWxlLCBtb25vcmVwbyBlZGdlIGNhc2VzKSBmYWxscyBiYWNrIHRvXG4gKiBgbWFudWFsYCBhbmQgZW1pdHMgYSB3YXJuaW5nIGlmIGEgbG9nZ2VyIHdhcyBwcm92aWRlZCDigJQgdGhlIGNhbGxlcidzXG4gKiBidWlsZCBpcyBuZXZlciBibG9ja2VkIGJ5IGRpc2NvdmVyeSBhbG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGRpc2NvdmVyQ2xpZW50UGFja2FnZXMgPSBhc3luYyAoXG4gIG9wdGlvbnM6IERpc2NvdmVyT3B0aW9uc1xuKTogUHJvbWlzZTxyZWFkb25seSBzdHJpbmdbXT4gPT4ge1xuICBjb25zdCBtYW51YWwgPSBvcHRpb25zLm1hbnVhbCA/PyBbXTtcbiAgY29uc3QgZXhjbHVkZSA9IG5ldyBTZXQob3B0aW9ucy5leGNsdWRlID8/IFtdKTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjcmF3bEZyYW1ld29ya1BrZ3Moe1xuICAgICAgcm9vdDogb3B0aW9ucy5yb290ID8/IHByb2Nlc3MuY3dkKCksXG4gICAgICBpc0J1aWxkOiBvcHRpb25zLmlzQnVpbGQsXG4gICAgICBpc0ZyYW1ld29ya1BrZ0J5SnNvbihwa2dKc29uKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBwa2dKc29uPy5bXCJuYW1lXCJdIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCFuYW1lIHx8IFNFTEZfUEFDS0FHRVMuaGFzKG5hbWUpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBlZXIgPSBwa2dKc29uPy5bXCJwZWVyRGVwZW5kZW5jaWVzXCJdIGFzXG4gICAgICAgICAgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHBlZXIgJiYgXCJyZWFjdFwiIGluIHBlZXIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBhdXRvID0gKHJlc3VsdD8uc3NyPy5ub0V4dGVybmFsID8/IFtdKSBhcyBSZWFkb25seUFycmF5PFxuICAgICAgc3RyaW5nIHwgUmVnRXhwXG4gICAgPjtcbiAgICBjb25zdCBhdXRvU3RyaW5ncyA9IGF1dG8uZmlsdGVyKCh4KTogeCBpcyBzdHJpbmcgPT4gdHlwZW9mIHggPT09IFwic3RyaW5nXCIpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLm1hbnVhbCwgLi4uYXV0b1N0cmluZ3NdKSkuZmlsdGVyKFxuICAgICAgKHApID0+ICFleGNsdWRlLmhhcyhwKVxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIG9wdGlvbnMubG9nZ2VyPy53YXJuKFxuICAgICAgYFt2aXRlLXBsdWdpbi1yZWFjdC1zZXJ2ZXI6Y2xpZW50LXBhY2thZ2VzLWRpc2NvdmVyeV0gY3Jhd2wgZmFpbGVkOiAke1xuICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycilcbiAgICAgIH0g4oCUIGZhbGxpbmcgYmFjayB0byBtYW51YWwgY2xpZW50UGFja2FnZXMgbGlzdGBcbiAgICApO1xuICAgIHJldHVybiBtYW51YWwuZmlsdGVyKChwKSA9PiAhZXhjbHVkZS5oYXMocCkpO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQSxNQUFNLGFBQUEsdUJBQW9CLEdBQUksQ0FBQTtBQUFBLEVBQzVCLE9BQUE7QUFBQSxFQUNBLFdBQUE7QUFBQSxFQUNBLHNCQUFBO0FBQUEsRUFDQTtBQUNGLENBQUMsQ0FBQTtBQTBCWSxNQUFBLHNCQUFBLEdBQXlCLE9BQ3BDLE9BQytCLEtBQUE7QUFDL0IsRUFBTSxNQUFBLE1BQUEsR0FBUyxPQUFRLENBQUEsTUFBQSxJQUFVLEVBQUM7QUFDbEMsRUFBQSxNQUFNLFVBQVUsSUFBSSxHQUFBLENBQUksT0FBUSxDQUFBLE9BQUEsSUFBVyxFQUFFLENBQUE7QUFDN0MsRUFBSSxJQUFBO0FBQ0YsSUFBTSxNQUFBLE1BQUEsR0FBUyxNQUFNLGtCQUFtQixDQUFBO0FBQUEsTUFDdEMsSUFBTSxFQUFBLE9BQUEsQ0FBUSxJQUFRLElBQUEsT0FBQSxDQUFRLEdBQUksRUFBQTtBQUFBLE1BQ2xDLFNBQVMsT0FBUSxDQUFBLE9BQUE7QUFBQSxNQUNqQixxQkFBcUIsT0FBUyxFQUFBO0FBQzVCLFFBQU0sTUFBQSxJQUFBLEdBQU8sVUFBVSxNQUFNLENBQUE7QUFDN0IsUUFBQSxJQUFJLENBQUMsSUFBUSxJQUFBLGFBQUEsQ0FBYyxHQUFJLENBQUEsSUFBSSxHQUFVLE9BQUEsS0FBQTtBQUM3QyxRQUFNLE1BQUEsSUFBQSxHQUFPLFVBQVUsa0JBQWtCLENBQUE7QUFHekMsUUFBTyxPQUFBLE9BQUEsQ0FBUSxJQUFRLElBQUEsT0FBQSxJQUFXLElBQUksQ0FBQTtBQUFBO0FBQ3hDLEtBQ0QsQ0FBQTtBQUNELElBQUEsTUFBTSxJQUFRLEdBQUEsTUFBQSxFQUFRLEdBQUssRUFBQSxVQUFBLElBQWMsRUFBQztBQUcxQyxJQUFBLE1BQU0sY0FBYyxJQUFLLENBQUEsTUFBQSxDQUFPLENBQUMsQ0FBbUIsS0FBQSxPQUFPLE1BQU0sUUFBUSxDQUFBO0FBQ3pFLElBQU8sT0FBQSxLQUFBLENBQU0sSUFBSyxpQkFBQSxJQUFJLEdBQUksQ0FBQSxDQUFDLEdBQUcsTUFBQSxFQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBRSxDQUFBLE1BQUE7QUFBQSxNQUN0RCxDQUFDLENBQUEsS0FBTSxDQUFDLE9BQUEsQ0FBUSxJQUFJLENBQUM7QUFBQSxLQUN2QjtBQUFBLFdBQ08sR0FBSyxFQUFBO0FBQ1osSUFBQSxPQUFBLENBQVEsTUFBUSxFQUFBLElBQUE7QUFBQSxNQUNkLHNFQUNFLEdBQWUsWUFBQSxLQUFBLEdBQVEsSUFBSSxPQUFVLEdBQUEsTUFBQSxDQUFPLEdBQUcsQ0FDakQsQ0FBQSw2Q0FBQTtBQUFBLEtBQ0Y7QUFDQSxJQUFPLE9BQUEsTUFBQSxDQUFPLE9BQU8sQ0FBQyxDQUFBLEtBQU0sQ0FBQyxPQUFRLENBQUEsR0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQUE7QUFFL0M7Ozs7In0=