vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
48 lines (45 loc) • 6.35 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { DEFAULT_CONFIG, BASE_PATTERNS } from './defaults.js';
const jsExtension = ".js";
const replaceExtension = (id, options) => {
const buildConfig = options.build || DEFAULT_CONFIG.BUILD;
const extensionMap = buildConfig.extensionMap || DEFAULT_CONFIG.BUILD.extensionMap;
if (id.endsWith(".css")) {
return id;
}
if (extensionMap) {
for (const [pattern, ext] of Object.entries(extensionMap)) {
if (pattern.startsWith(".")) {
const regex = new RegExp("\\" + pattern + (pattern.endsWith("$") ? "" : "$"));
if (regex.test(id)) {
return id.replace(regex, ext);
}
} else if (pattern.startsWith("\\.")) {
const regex = new RegExp(pattern + (pattern.endsWith("$") ? "" : "$"));
if (regex.test(id)) {
return id.replace(regex, ext);
}
} else if (pattern.endsWith(":")) {
const regex = new RegExp((id.startsWith("^") ? "" : "^") + pattern);
if (regex.test(id)) {
return id.replace(regex, ext);
}
} else {
const regex = new RegExp(pattern);
if (regex.test(id)) {
return id.replace(regex, ext);
}
}
}
}
if (new RegExp(BASE_PATTERNS.MODULE).test(id)) {
return id.replace(new RegExp(BASE_PATTERNS.MODULE), jsExtension);
}
return id;
};
export { jsExtension, replaceExtension };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0TWFwLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vY29uZmlnL2V4dE1hcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX0NPTkZJRywgQkFTRV9QQVRURVJOUyB9IGZyb20gXCIuL2RlZmF1bHRzLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBqc0V4dGVuc2lvbiA9IFwiLmpzXCI7XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlRXh0ZW5zaW9uID0gKGlkOiBzdHJpbmcsIG9wdGlvbnM6IHtcbiAgYnVpbGQ6IHtcbiAgICBleHRlbnNpb25NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgfVxufSkgPT4ge1xuICBjb25zdCBidWlsZENvbmZpZyA9IG9wdGlvbnMuYnVpbGQgfHwgREVGQVVMVF9DT05GSUcuQlVJTEQ7XG4gIGNvbnN0IGV4dGVuc2lvbk1hcCA9IGJ1aWxkQ29uZmlnLmV4dGVuc2lvbk1hcCB8fCBERUZBVUxUX0NPTkZJRy5CVUlMRC5leHRlbnNpb25NYXA7XG5cbiAgLy8gSGFuZGxlIENTUyBmaWxlcyBmaXJzdCAtIHRoZXkgc2hvdWxkIG5ldmVyIGJlIGNoYW5nZWQgdG8gLmpzXG4gIGlmIChpZC5lbmRzV2l0aCgnLmNzcycpKSB7XG4gICAgcmV0dXJuIGlkOyAvLyBLZWVwIENTUyBmaWxlcyBhcyAuY3NzXG4gIH1cblxuICAvLyBUcnkgZXh0ZW5zaW9uIG1hcHBpbmcgZmlyc3QgKGN1c3RvbSBtYXBwaW5ncyBzaG91bGQgdGFrZSBwcmVjZWRlbmNlKVxuICBpZiAoZXh0ZW5zaW9uTWFwKSB7XG4gICAgZm9yIChjb25zdCBbcGF0dGVybiwgZXh0XSBvZiBPYmplY3QuZW50cmllcyhleHRlbnNpb25NYXApKSB7XG4gICAgICBpZihwYXR0ZXJuLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgICAvLyBTaW1wbGUgZXh0ZW5zaW9uIHBhdHRlcm4gbGlrZSBcIi5jc3NcIlxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJ1xcXFwnICsgcGF0dGVybiArIChwYXR0ZXJuLmVuZHNXaXRoKCckJykgPyAnJyA6ICckJykpO1xuICAgICAgICBpZiAocmVnZXgudGVzdChpZCkpIHtcbiAgICAgICAgICByZXR1cm4gaWQucmVwbGFjZShyZWdleCwgZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXR0ZXJuLnN0YXJ0c1dpdGgoJ1xcXFwuJykpIHtcbiAgICAgICAgLy8gUmVnZXggcGF0dGVybiB0aGF0IHN0YXJ0cyB3aXRoIFxcLiBsaWtlIFwiXFwuY3NzJFwiXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuICsgKHBhdHRlcm4uZW5kc1dpdGgoJyQnKSA/ICcnIDogJyQnKSk7XG4gICAgICAgIGlmIChyZWdleC50ZXN0KGlkKSkge1xuICAgICAgICAgIHJldHVybiBpZC5yZXBsYWNlKHJlZ2V4LCBleHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhdHRlcm4uZW5kc1dpdGgoXCI6XCIpKSB7XG4gICAgICAgIC8vIFBhdHRlcm4gd2l0aCBjb2xvblxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoKGlkLnN0YXJ0c1dpdGgoJ14nKSA/ICcnIDogJ14nKSArIHBhdHRlcm4pO1xuICAgICAgICBpZihyZWdleC50ZXN0KGlkKSkge1xuICAgICAgICAgIHJldHVybiBpZC5yZXBsYWNlKHJlZ2V4LCBleHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDb21wbGV4IHJlZ2V4IHBhdHRlcm4gbGlrZSBCQVNFX1BBVFRFUk5TLk1PRFVMRVxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAocGF0dGVybik7XG4gICAgICAgIGlmIChyZWdleC50ZXN0KGlkKSkge1xuICAgICAgICAgIHJldHVybiBpZC5yZXBsYWNlKHJlZ2V4LCBleHQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSGFuZGxlIHN0YW5kYXJkIG1vZHVsZSBleHRlbnNpb25zIGFzIGZhbGxiYWNrXG4gIGlmIChuZXcgUmVnRXhwKEJBU0VfUEFUVEVSTlMuTU9EVUxFKS50ZXN0KGlkKSkge1xuICAgIHJldHVybiBpZC5yZXBsYWNlKG5ldyBSZWdFeHAoQkFTRV9QQVRURVJOUy5NT0RVTEUpLCBqc0V4dGVuc2lvbik7XG4gIH1cblxuICByZXR1cm4gaWQ7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFTyxNQUFNLFdBQWMsR0FBQTtBQUVkLE1BQUEsZ0JBQUEsR0FBbUIsQ0FBQyxFQUFBLEVBQVksT0FJdkMsS0FBQTtBQUNKLEVBQU0sTUFBQSxXQUFBLEdBQWMsT0FBUSxDQUFBLEtBQUEsSUFBUyxjQUFlLENBQUEsS0FBQTtBQUNwRCxFQUFBLE1BQU0sWUFBZSxHQUFBLFdBQUEsQ0FBWSxZQUFnQixJQUFBLGNBQUEsQ0FBZSxLQUFNLENBQUEsWUFBQTtBQUd0RSxFQUFJLElBQUEsRUFBQSxDQUFHLFFBQVMsQ0FBQSxNQUFNLENBQUcsRUFBQTtBQUN2QixJQUFPLE9BQUEsRUFBQTtBQUFBO0FBSVQsRUFBQSxJQUFJLFlBQWMsRUFBQTtBQUNoQixJQUFBLEtBQUEsTUFBVyxDQUFDLE9BQVMsRUFBQSxHQUFHLEtBQUssTUFBTyxDQUFBLE9BQUEsQ0FBUSxZQUFZLENBQUcsRUFBQTtBQUN6RCxNQUFHLElBQUEsT0FBQSxDQUFRLFVBQVcsQ0FBQSxHQUFHLENBQUcsRUFBQTtBQUUxQixRQUFNLE1BQUEsS0FBQSxHQUFRLElBQUksTUFBQSxDQUFPLElBQU8sR0FBQSxPQUFBLElBQVcsUUFBUSxRQUFTLENBQUEsR0FBRyxDQUFJLEdBQUEsRUFBQSxHQUFLLEdBQUksQ0FBQSxDQUFBO0FBQzVFLFFBQUksSUFBQSxLQUFBLENBQU0sSUFBSyxDQUFBLEVBQUUsQ0FBRyxFQUFBO0FBQ2xCLFVBQU8sT0FBQSxFQUFBLENBQUcsT0FBUSxDQUFBLEtBQUEsRUFBTyxHQUFHLENBQUE7QUFBQTtBQUM5QixPQUNTLE1BQUEsSUFBQSxPQUFBLENBQVEsVUFBVyxDQUFBLEtBQUssQ0FBRyxFQUFBO0FBRXBDLFFBQU0sTUFBQSxLQUFBLEdBQVEsSUFBSSxNQUFPLENBQUEsT0FBQSxJQUFXLFFBQVEsUUFBUyxDQUFBLEdBQUcsQ0FBSSxHQUFBLEVBQUEsR0FBSyxHQUFJLENBQUEsQ0FBQTtBQUNyRSxRQUFJLElBQUEsS0FBQSxDQUFNLElBQUssQ0FBQSxFQUFFLENBQUcsRUFBQTtBQUNsQixVQUFPLE9BQUEsRUFBQSxDQUFHLE9BQVEsQ0FBQSxLQUFBLEVBQU8sR0FBRyxDQUFBO0FBQUE7QUFDOUIsT0FDUyxNQUFBLElBQUEsT0FBQSxDQUFRLFFBQVMsQ0FBQSxHQUFHLENBQUcsRUFBQTtBQUVoQyxRQUFNLE1BQUEsS0FBQSxHQUFRLElBQUksTUFBUSxDQUFBLENBQUEsRUFBQSxDQUFHLFdBQVcsR0FBRyxDQUFBLEdBQUksRUFBSyxHQUFBLEdBQUEsSUFBTyxPQUFPLENBQUE7QUFDbEUsUUFBRyxJQUFBLEtBQUEsQ0FBTSxJQUFLLENBQUEsRUFBRSxDQUFHLEVBQUE7QUFDakIsVUFBTyxPQUFBLEVBQUEsQ0FBRyxPQUFRLENBQUEsS0FBQSxFQUFPLEdBQUcsQ0FBQTtBQUFBO0FBQzlCLE9BQ0ssTUFBQTtBQUVMLFFBQU0sTUFBQSxLQUFBLEdBQVEsSUFBSSxNQUFBLENBQU8sT0FBTyxDQUFBO0FBQ2hDLFFBQUksSUFBQSxLQUFBLENBQU0sSUFBSyxDQUFBLEVBQUUsQ0FBRyxFQUFBO0FBQ2xCLFVBQU8sT0FBQSxFQUFBLENBQUcsT0FBUSxDQUFBLEtBQUEsRUFBTyxHQUFHLENBQUE7QUFBQTtBQUM5QjtBQUNGO0FBQ0Y7QUFJRixFQUFBLElBQUksSUFBSSxNQUFPLENBQUEsYUFBQSxDQUFjLE1BQU0sQ0FBRSxDQUFBLElBQUEsQ0FBSyxFQUFFLENBQUcsRUFBQTtBQUM3QyxJQUFBLE9BQU8sR0FBRyxPQUFRLENBQUEsSUFBSSxPQUFPLGFBQWMsQ0FBQSxNQUFNLEdBQUcsV0FBVyxDQUFBO0FBQUE7QUFHakUsRUFBTyxPQUFBLEVBQUE7QUFDVDs7OzsifQ==