vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
57 lines (55 loc) • 6.67 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
function collectManifestCss(manifest, startFile) {
const cssInputs = {};
const visited = /* @__PURE__ */ new Set();
const toVisit = Array.isArray(startFile) ? startFile : [startFile];
const findManifestEntryByFile = (filePath) => {
for (const [key, value] of Object.entries(manifest)) {
if (value && typeof value === "object" && "file" in value && value.file === filePath) {
return { key, value };
}
}
return null;
};
while (toVisit.length > 0) {
const currentFile = toVisit.pop();
if (visited.has(currentFile)) continue;
visited.add(currentFile);
let fileInfo = manifest[currentFile];
if (!fileInfo) {
const found = findManifestEntryByFile(currentFile);
if (found) {
fileInfo = found.value;
}
}
if (!fileInfo) {
continue;
}
if (fileInfo.css) {
for (const cssFile of fileInfo.css) {
cssInputs[cssFile] = cssFile;
}
}
if (fileInfo.imports) {
for (const importPath of fileInfo.imports) {
if (visited.has(importPath)) {
continue;
}
toVisit.push(importPath);
const importedEntry = findManifestEntryByFile(importPath);
if (importedEntry?.value.css) {
for (const cssFile of importedEntry.value.css) {
cssInputs[cssFile] = cssFile;
}
}
}
}
}
return cssInputs;
}
export { collectManifestCss };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdE1hbmlmZXN0Q3NzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vaGVscGVycy9jb2xsZWN0TWFuaWZlc3RDc3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNYW5pZmVzdCB9IGZyb20gXCJ2aXRlXCI7XG5cbi8qKlxuICogQ29sbGVjdHMgQ1NTIGZpbGUgcGF0aHMgZnJvbSBhIG1hbmlmZXN0IGJ5IHdhbGtpbmcgdGhyb3VnaCBpbXBvcnRzIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiBmaWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0TWFuaWZlc3RDc3MoXG4gIG1hbmlmZXN0OiBNYW5pZmVzdCxcbiAgc3RhcnRGaWxlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBjc3NJbnB1dHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBcbiAgLy8gQ29udmVydCBzdGFydEZpbGUgdG8gYXJyYXkgYW5kIGVuc3VyZSB3ZSBoYXZlIHZhbGlkIGZpbGUgcGF0aHNcbiAgY29uc3QgdG9WaXNpdCA9IEFycmF5LmlzQXJyYXkoc3RhcnRGaWxlKSA/IHN0YXJ0RmlsZSA6IFtzdGFydEZpbGVdO1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBmaW5kIG1hbmlmZXN0IGVudHJ5IGJ5IGZpbGUgcHJvcGVydHlcbiAgY29uc3QgZmluZE1hbmlmZXN0RW50cnlCeUZpbGUgPSAoZmlsZVBhdGg6IHN0cmluZykgPT4ge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0KSkge1xuICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2ZpbGUnIGluIHZhbHVlICYmIHZhbHVlLmZpbGUgPT09IGZpbGVQYXRoKSB7XG4gICAgICAgIHJldHVybiB7IGtleSwgdmFsdWUgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG4gIFxuICB3aGlsZSAodG9WaXNpdC5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgY3VycmVudEZpbGUgPSB0b1Zpc2l0LnBvcCgpITtcbiAgICBpZiAodmlzaXRlZC5oYXMoY3VycmVudEZpbGUpKSBjb250aW51ZTtcbiAgICB2aXNpdGVkLmFkZChjdXJyZW50RmlsZSk7XG4gICAgXG4gICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgYnkga2V5IChmb3IgZGlyZWN0IG1hdGNoZXMpXG4gICAgbGV0IGZpbGVJbmZvID0gbWFuaWZlc3RbY3VycmVudEZpbGVdO1xuICAgIFxuICAgIC8vIElmIG5vdCBmb3VuZCBieSBrZXksIHRyeSB0byBmaW5kIGJ5IGZpbGUgcHJvcGVydHlcbiAgICBpZiAoIWZpbGVJbmZvKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IGZpbmRNYW5pZmVzdEVudHJ5QnlGaWxlKGN1cnJlbnRGaWxlKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBmaWxlSW5mbyA9IGZvdW5kLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoIWZpbGVJbmZvKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBBZGQgQ1NTIGZpbGVzIGZyb20gdGhlIGNzcyBwcm9wZXJ0eVxuICAgIGlmIChmaWxlSW5mby5jc3MpIHtcbiAgICAgIGZvciAoY29uc3QgY3NzRmlsZSBvZiBmaWxlSW5mby5jc3MpIHtcbiAgICAgICAgY3NzSW5wdXRzW2Nzc0ZpbGVdID0gY3NzRmlsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgaW1wb3J0cyB0byB2aXNpdFxuICAgIGlmIChmaWxlSW5mby5pbXBvcnRzKSB7XG4gICAgICBmb3IgKGNvbnN0IGltcG9ydFBhdGggb2YgZmlsZUluZm8uaW1wb3J0cykge1xuICAgICAgICAvLyBTa2lwIGlmIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGlzIGltcG9ydFxuICAgICAgICBpZiAodmlzaXRlZC5oYXMoaW1wb3J0UGF0aCkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gQWRkIHRoZSBpbXBvcnQgdG8gdmlzaXRcbiAgICAgICAgdG9WaXNpdC5wdXNoKGltcG9ydFBhdGgpO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGltcG9ydGVkIGZpbGUgaGFzIENTUyBieSBmaW5kaW5nIGl0IGluIHRoZSBtYW5pZmVzdFxuICAgICAgICBjb25zdCBpbXBvcnRlZEVudHJ5ID0gZmluZE1hbmlmZXN0RW50cnlCeUZpbGUoaW1wb3J0UGF0aCk7XG4gICAgICAgIGlmIChpbXBvcnRlZEVudHJ5Py52YWx1ZS5jc3MpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNzc0ZpbGUgb2YgaW1wb3J0ZWRFbnRyeS52YWx1ZS5jc3MpIHtcbiAgICAgICAgICAgIGNzc0lucHV0c1tjc3NGaWxlXSA9IGNzc0ZpbGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNzc0lucHV0cztcbn0gIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS08sU0FBUyxrQkFBQSxDQUNkLFVBQ0EsU0FDd0IsRUFBQTtBQUN4QixFQUFBLE1BQU0sWUFBb0MsRUFBQztBQUMzQyxFQUFNLE1BQUEsT0FBQSx1QkFBYyxHQUFZLEVBQUE7QUFHaEMsRUFBQSxNQUFNLFVBQVUsS0FBTSxDQUFBLE9BQUEsQ0FBUSxTQUFTLENBQUksR0FBQSxTQUFBLEdBQVksQ0FBQyxTQUFTLENBQUE7QUFHakUsRUFBTSxNQUFBLHVCQUFBLEdBQTBCLENBQUMsUUFBcUIsS0FBQTtBQUNwRCxJQUFBLEtBQUEsTUFBVyxDQUFDLEdBQUssRUFBQSxLQUFLLEtBQUssTUFBTyxDQUFBLE9BQUEsQ0FBUSxRQUFRLENBQUcsRUFBQTtBQUNuRCxNQUFJLElBQUEsS0FBQSxJQUFTLE9BQU8sS0FBVSxLQUFBLFFBQUEsSUFBWSxVQUFVLEtBQVMsSUFBQSxLQUFBLENBQU0sU0FBUyxRQUFVLEVBQUE7QUFDcEYsUUFBTyxPQUFBLEVBQUUsS0FBSyxLQUFNLEVBQUE7QUFBQTtBQUN0QjtBQUVGLElBQU8sT0FBQSxJQUFBO0FBQUEsR0FDVDtBQUVBLEVBQU8sT0FBQSxPQUFBLENBQVEsU0FBUyxDQUFHLEVBQUE7QUFDekIsSUFBTSxNQUFBLFdBQUEsR0FBYyxRQUFRLEdBQUksRUFBQTtBQUNoQyxJQUFJLElBQUEsT0FBQSxDQUFRLEdBQUksQ0FBQSxXQUFXLENBQUcsRUFBQTtBQUM5QixJQUFBLE9BQUEsQ0FBUSxJQUFJLFdBQVcsQ0FBQTtBQUd2QixJQUFJLElBQUEsUUFBQSxHQUFXLFNBQVMsV0FBVyxDQUFBO0FBR25DLElBQUEsSUFBSSxDQUFDLFFBQVUsRUFBQTtBQUNiLE1BQU0sTUFBQSxLQUFBLEdBQVEsd0JBQXdCLFdBQVcsQ0FBQTtBQUNqRCxNQUFBLElBQUksS0FBTyxFQUFBO0FBQ1QsUUFBQSxRQUFBLEdBQVcsS0FBTSxDQUFBLEtBQUE7QUFBQTtBQUNuQjtBQUdGLElBQUEsSUFBSSxDQUFDLFFBQVUsRUFBQTtBQUNiLE1BQUE7QUFBQTtBQUlGLElBQUEsSUFBSSxTQUFTLEdBQUssRUFBQTtBQUNoQixNQUFXLEtBQUEsTUFBQSxPQUFBLElBQVcsU0FBUyxHQUFLLEVBQUE7QUFDbEMsUUFBQSxTQUFBLENBQVUsT0FBTyxDQUFJLEdBQUEsT0FBQTtBQUFBO0FBQ3ZCO0FBSUYsSUFBQSxJQUFJLFNBQVMsT0FBUyxFQUFBO0FBQ3BCLE1BQVcsS0FBQSxNQUFBLFVBQUEsSUFBYyxTQUFTLE9BQVMsRUFBQTtBQUV6QyxRQUFJLElBQUEsT0FBQSxDQUFRLEdBQUksQ0FBQSxVQUFVLENBQUcsRUFBQTtBQUMzQixVQUFBO0FBQUE7QUFJRixRQUFBLE9BQUEsQ0FBUSxLQUFLLFVBQVUsQ0FBQTtBQUd2QixRQUFNLE1BQUEsYUFBQSxHQUFnQix3QkFBd0IsVUFBVSxDQUFBO0FBQ3hELFFBQUksSUFBQSxhQUFBLEVBQWUsTUFBTSxHQUFLLEVBQUE7QUFDNUIsVUFBVyxLQUFBLE1BQUEsT0FBQSxJQUFXLGFBQWMsQ0FBQSxLQUFBLENBQU0sR0FBSyxFQUFBO0FBQzdDLFlBQUEsU0FBQSxDQUFVLE9BQU8sQ0FBSSxHQUFBLE9BQUE7QUFBQTtBQUN2QjtBQUNGO0FBQ0Y7QUFDRjtBQUdGLEVBQU8sT0FBQSxTQUFBO0FBQ1Q7Ozs7In0=