vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
67 lines (64 loc) • 9.6 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { join } from 'node:path';
import { deserializeRegExp } from './serializeUserOptions.js';
import { DEFAULT_CONFIG } from '../config/defaults.js';
const createCssProps = ({
id,
code,
userOptions
}) => {
const { css, moduleRootPath } = userOptions;
let inline = css?.inlineCss !== false && typeof code === "string" && (css?.inlineThreshold === 0 || code.length <= (css?.inlineThreshold ?? DEFAULT_CONFIG.CSS.inlineThreshold));
const [, value] = userOptions.normalizer(id);
const moduleID = userOptions?.moduleID?.(value) ?? value;
if (css.inlinePatterns?.length) {
const inlinePatterns = css.inlinePatterns;
if (inlinePatterns.some((pattern) => pattern.test?.(id))) {
inline = true;
}
}
if (css.linkPatterns?.length) {
const linkPatterns = css.linkPatterns?.map(
(pattern) => typeof pattern === "string" ? deserializeRegExp(pattern) : pattern
);
if (linkPatterns.some((pattern) => pattern.test?.(id))) {
inline = false;
}
}
if (inline) {
return {
type: "text/css",
id: moduleID,
as: "style",
children: code.trim(),
...process.env["NODE_ENV"] !== "production" ? {
"data-vite-dev-id": join(moduleRootPath, moduleID)
} : {}
};
}
const normalModuleBaseURL = !moduleID.startsWith(userOptions.moduleBaseURL) ? userOptions.moduleBaseURL + moduleID.slice(
Number(
moduleID.startsWith("/") && userOptions.moduleBaseURL.endsWith("/")
)
) : moduleID;
const normalOrigin = !userOptions.moduleBaseURL.startsWith(
userOptions.publicOrigin
) ? userOptions.publicOrigin + userOptions.moduleBaseURL.slice(
Number(
userOptions.publicOrigin.endsWith("/") && userOptions.moduleBaseURL.startsWith("/")
)
) : userOptions.moduleBaseURL;
return {
id: moduleID,
as: "link",
rel: "stylesheet",
href: userOptions.publicOrigin !== "" ? new URL(normalModuleBaseURL, normalOrigin).href : normalModuleBaseURL,
precedence: "high"
};
};
export { createCssProps };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ3NzUHJvcHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9oZWxwZXJzL2NyZWF0ZUNzc1Byb3BzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc29sdmVkVXNlck9wdGlvbnMsIENzc0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBkZXNlcmlhbGl6ZVJlZ0V4cCB9IGZyb20gXCIuL3NlcmlhbGl6ZVVzZXJPcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0NPTkZJRyB9IGZyb20gXCIuLi9jb25maWcvZGVmYXVsdHMuanNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgQ3NzQ29udGVudCBvYmplY3QgZm9yIGEgZ2l2ZW4gcGF0aCBhbmQgY3NzIG9wdGlvbnNcbiAqXG4gKiBSZXF1aXJlbWVudHM6XG4gKiAtIHBhdGggaXMgYSBzdHJpbmdcbiAqIC0gY3NzIGlzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqICAgLSBpbmxpbmVDc3M6IGJvb2xlYW5cbiAqICAgLSBwdXJnZUNzczogYm9vbGVhblxuICogICAtIGlubGluZVRocmVzaG9sZDogbnVtYmVyXG4gKiAgIC0gaW5saW5lUGF0dGVybnM6IFJlZ0V4cFtdXG4gKiAgIC0gbGlua1BhdHRlcm5zOiBSZWdFeHBbXVxuICogYmFzZWQgb24gdGhlIGJ1bmRsZSwgd2UgcmV0cmlldmUgdGhlIGNzcyBjb250ZW50IGFuZCBjaGVjayBpZiBpdCBzaG91bGQgYmUgaW5saW5lZCBvciBsaW5rZWRcbiAqIGlubGluZWQgdGFncyBnZXQgdGhlIGFzOnN0eWxlIGFuZCB0aGUgY2hpbGRyZW4gYXJlIHRoZSBjc3MgY29udGVudFxuICogbGlua2VkIHRhZ3MgZ2V0IHRoZSBhczpsaW5rIGFuZCB0aGUgaHJlZiBpcyB0aGUgcGF0aFxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIGNzcyBmaWxlXG4gKiBAcGFyYW0gY3NzIC0gVGhlIGNzcyBvcHRpb25zXG4gKiBAcmV0dXJucyBBIENzc0NvbnRlbnQgb2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDc3NQcm9wcyA9ICh7XG4gIGlkLFxuICBjb2RlLFxuICB1c2VyT3B0aW9ucyxcbn06IHtcbiAgaWQ6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICB1c2VyT3B0aW9uczogUGljazxcbiAgICBSZXNvbHZlZFVzZXJPcHRpb25zLFxuICAgIHwgXCJjc3NcIlxuICAgIHwgXCJtb2R1bGVCYXNlVVJMXCJcbiAgICB8IFwibW9kdWxlQmFzZVBhdGhcIlxuICAgIHwgXCJtb2R1bGVSb290UGF0aFwiXG4gICAgfCBcInByb2plY3RSb290XCJcbiAgICB8IFwibm9ybWFsaXplclwiXG4gICAgfCBcIm1vZHVsZUlEXCJcbiAgICB8IFwicHVibGljT3JpZ2luXCJcbiAgPjtcbn0pOiBDc3NDb250ZW50PGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgeyBjc3MsIG1vZHVsZVJvb3RQYXRoIH0gPSB1c2VyT3B0aW9ucztcbiAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGJ1bmRsZSBlbnRyeSwgY3JlYXRlIGEgbGlua2VkIENTUyBmaWxlXG4gIGxldCBpbmxpbmUgPVxuICAgIGNzcz8uaW5saW5lQ3NzICE9PSBmYWxzZSAmJlxuICAgIHR5cGVvZiBjb2RlID09PSBcInN0cmluZ1wiICYmXG4gICAgKGNzcz8uaW5saW5lVGhyZXNob2xkID09PSAwIHx8IGNvZGUubGVuZ3RoIDw9IChjc3M/LmlubGluZVRocmVzaG9sZCA/PyBERUZBVUxUX0NPTkZJRy5DU1MuaW5saW5lVGhyZXNob2xkKSk7XG4gIC8vIE5vcm1hbGl6ZSB0aGUgSUQgdG8gYmUgcmVsYXRpdmUgdG8gc3JjL1xuICBjb25zdCBbLCB2YWx1ZV0gPSB1c2VyT3B0aW9ucy5ub3JtYWxpemVyKGlkKTtcbiAgY29uc3QgbW9kdWxlSUQgPSB1c2VyT3B0aW9ucz8ubW9kdWxlSUQ/Lih2YWx1ZSkgPz8gdmFsdWU7XG4gIGlmIChjc3MuaW5saW5lUGF0dGVybnM/Lmxlbmd0aCkge1xuICAgIC8vIERlc2VyaWFsaXplIFJlZ0V4cCBwYXR0ZXJucyBpZiB0aGV5IGV4aXN0XG4gICAgY29uc3QgaW5saW5lUGF0dGVybnMgPSBjc3MuaW5saW5lUGF0dGVybnM7XG4gICAgaWYgKGlubGluZVBhdHRlcm5zLnNvbWUoKHBhdHRlcm4pID0+IHBhdHRlcm4udGVzdD8uKGlkKSkpIHtcbiAgICAgIGlubGluZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIGlmIChjc3MubGlua1BhdHRlcm5zPy5sZW5ndGgpIHtcbiAgICBjb25zdCBsaW5rUGF0dGVybnMgPSBjc3MubGlua1BhdHRlcm5zPy5tYXAoKHBhdHRlcm4pID0+XG4gICAgICB0eXBlb2YgcGF0dGVybiA9PT0gXCJzdHJpbmdcIiA/IGRlc2VyaWFsaXplUmVnRXhwKHBhdHRlcm4pIDogcGF0dGVyblxuICAgICk7XG4gICAgaWYgKGxpbmtQYXR0ZXJucy5zb21lKChwYXR0ZXJuKSA9PiBwYXR0ZXJuLnRlc3Q/LihpZCkpKSB7XG4gICAgICBpbmxpbmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlubGluZSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInRleHQvY3NzXCIsXG4gICAgICBpZDogbW9kdWxlSUQsXG4gICAgICBhczogXCJzdHlsZVwiLFxuICAgICAgY2hpbGRyZW46IGNvZGUudHJpbSgpLFxuICAgICAgLi4uKHByb2Nlc3MuZW52W1wiTk9ERV9FTlZcIl0gIT09IFwicHJvZHVjdGlvblwiXG4gICAgICAgID8ge1xuICAgICAgICAgICAgXCJkYXRhLXZpdGUtZGV2LWlkXCI6IGpvaW4obW9kdWxlUm9vdFBhdGgsIG1vZHVsZUlEKSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgIH0gYXMgQ3NzQ29udGVudDxib29sZWFuPjtcbiAgfVxuICBjb25zdCBub3JtYWxNb2R1bGVCYXNlVVJMID0gIW1vZHVsZUlELnN0YXJ0c1dpdGgodXNlck9wdGlvbnMubW9kdWxlQmFzZVVSTClcbiAgICA/IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkwgK1xuICAgICAgbW9kdWxlSUQuc2xpY2UoXG4gICAgICAgIE51bWJlcihcbiAgICAgICAgICBtb2R1bGVJRC5zdGFydHNXaXRoKFwiL1wiKSAmJiB1c2VyT3B0aW9ucy5tb2R1bGVCYXNlVVJMLmVuZHNXaXRoKFwiL1wiKVxuICAgICAgICApXG4gICAgICApXG4gICAgOiBtb2R1bGVJRDtcbiAgY29uc3Qgbm9ybWFsT3JpZ2luID0gIXVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkwuc3RhcnRzV2l0aChcbiAgICB1c2VyT3B0aW9ucy5wdWJsaWNPcmlnaW5cbiAgKVxuICAgID8gdXNlck9wdGlvbnMucHVibGljT3JpZ2luICtcbiAgICAgIHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkwuc2xpY2UoXG4gICAgICAgIE51bWJlcihcbiAgICAgICAgICB1c2VyT3B0aW9ucy5wdWJsaWNPcmlnaW4uZW5kc1dpdGgoXCIvXCIpICYmXG4gICAgICAgICAgICB1c2VyT3B0aW9ucy5tb2R1bGVCYXNlVVJMLnN0YXJ0c1dpdGgoXCIvXCIpXG4gICAgICAgIClcbiAgICAgIClcbiAgICA6IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkw7XG4gIC8vIERlZmF1bHQgY2FzZVxuICByZXR1cm4ge1xuICAgIGlkOiBtb2R1bGVJRCxcbiAgICBhczogXCJsaW5rXCIsXG4gICAgcmVsOiBcInN0eWxlc2hlZXRcIixcbiAgICBocmVmOlxuICAgICAgdXNlck9wdGlvbnMucHVibGljT3JpZ2luICE9PSBcIlwiXG4gICAgICAgID8gbmV3IFVSTChub3JtYWxNb2R1bGVCYXNlVVJMLCBub3JtYWxPcmlnaW4pLmhyZWZcbiAgICAgICAgOiBub3JtYWxNb2R1bGVCYXNlVVJMLFxuICAgIHByZWNlZGVuY2U6IFwiaGlnaFwiLFxuICB9IGFzIENzc0NvbnRl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