vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
54 lines (51 loc) • 9.05 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { transformWithEsbuild } from 'vite';
import { readFile } from 'node:fs/promises';
const defaultNextLoad = async (url) => {
const result = await transformWithEsbuild(await readFile(url, "utf-8"), url, {
loader: "tsx",
format: "esm",
sourcemap: "external"
});
return {
source: result.code,
format: "module",
map: result.map
};
};
function createDefaultLoader(defaultSource, defaultId = "index") {
const defaultSourceNextLoad = typeof defaultSource === "string" ? async (url = defaultId) => {
const result = await transformWithEsbuild(defaultSource, url, {
loader: "tsx",
format: "esm",
sourcemap: "external"
});
return {
source: result.code,
format: "module",
map: result.map
};
} : defaultNextLoad;
return async (url = defaultId, context = {
format: "module",
conditions: ["react-server"],
importAttributes: {}
}, nextLoad = defaultSourceNextLoad) => {
const { format } = context;
if (format === "module" || format === "module-typescript") {
const result = await nextLoad(url, context);
const source = typeof result.source === "string" ? result.source : result.source instanceof Uint8Array || result.source instanceof ArrayBuffer || result.source instanceof Uint8ClampedArray || result.source instanceof Uint16Array || result.source instanceof Uint32Array || result.source instanceof Int8Array || result.source instanceof Int16Array || result.source instanceof Int32Array || result.source instanceof Float32Array || result.source instanceof Float64Array || result.source instanceof BigUint64Array || result.source instanceof BigInt64Array ? new TextDecoder().decode(result.source) : defaultSource;
return {
...result,
source
};
}
return nextLoad(url, context);
};
}
export { createDefaultLoader };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRGVmYXVsdExvYWRlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL2xvYWRlci9jcmVhdGVEZWZhdWx0TG9hZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTG9hZGVyQ29udGV4dCB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSYXdTb3VyY2VNYXAgfSBmcm9tIFwic291cmNlLW1hcFwiO1xuaW1wb3J0IHR5cGUgeyBMb2FkRm5PdXRwdXQsIExvYWRIb29rQ29udGV4dCB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHR5cGUgeyBMb2FkSG9vayB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtV2l0aEVzYnVpbGQgfSBmcm9tIFwidml0ZVwiO1xuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuXG5leHBvcnQgdHlwZSBMb2FkZXJSZXN1bHQgPSB7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBtYXA6IFJhd1NvdXJjZU1hcCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBMb2FkZXIgPSB7XG4gIChcbiAgICBpZDogc3RyaW5nLFxuICAgIGNvbnRleHQ/OiBMb2FkZXJDb250ZXh0LFxuICAgIG5leHRMb2FkPzogKGlkOiBzdHJpbmcpID0+IFByb21pc2U8TG9hZGVyUmVzdWx0PlxuICApOiBMb2FkZXJSZXN1bHQ7XG59O1xuXG5cbmNvbnN0IGRlZmF1bHROZXh0TG9hZDogUGFyYW1ldGVyczxMb2FkSG9vaz5bMl0gPSBhc3luYyAodXJsKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybVdpdGhFc2J1aWxkKGF3YWl0IHJlYWRGaWxlKHVybCwgXCJ1dGYtOFwiKSwgdXJsLCB7XG4gICAgbG9hZGVyOiBcInRzeFwiLFxuICAgIGZvcm1hdDogXCJlc21cIixcbiAgICBzb3VyY2VtYXA6IFwiZXh0ZXJuYWxcIixcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgc291cmNlOiByZXN1bHQuY29kZSxcbiAgICBmb3JtYXQ6IFwibW9kdWxlXCIsXG4gICAgbWFwOiByZXN1bHQubWFwLFxuICB9O1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbG9hZGVyIGZ1bmN0aW9uIHRoYXQgdHJhbnNmb3JtcyBtb2R1bGVzIGFuZCBoYW5kbGVzIHNvdXJjZSBtYXBzLlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiB0d28gd2F5czpcbiAqXG4gKiAxLiBBcyBhIGRpcmVjdCB0cmFuc2Zvcm1lcjpcbiAqICAgIC0gVGFrZXMgc291cmNlIGNvZGUgYW5kIHJldHVybnMgdHJhbnNmb3JtZWQgY29kZSB3aXRoIHNvdXJjZSBtYXAgYXR0YWNoZWRcbiAqICAgIC0gVXNlZCBieSB0cmFuc2Zvcm1Nb2R1bGVJZk5lZWRlZFxuICpcbiAqIDIuIEFzIGEgbG9hZGVyIGZhY3Rvcnk6XG4gKiAgICAtIFJldHVybnMgYSBsb2FkZXIgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIG1vZHVsZSBJRCBhbmQgcmV0dXJucyBhIExvYWRlclJlc3VsdFxuICogICAgLSBVc2VkIGJ5IHRoZSBwbHVnaW4gdG8gY3JlYXRlIGxvYWRlcnMgZm9yIGRpZmZlcmVudCBlbnZpcm9ubWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRMb2FkZXIoXG4gIGRlZmF1bHRTb3VyY2U6IHN0cmluZyxcbiAgZGVmYXVsdElkID0gXCJpbmRleFwiLFxuKTogKFxuICB1cmw6IHN0cmluZyxcbiAgY29udGV4dD86IFBhcnRpYWw8TG9hZEhvb2tDb250ZXh0PixcbiAgbmV4dExvYWQ/OiAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgY29udGV4dD86IFBhcnRpYWw8TG9hZEhvb2tDb250ZXh0PlxuICApID0+IExvYWRGbk91dHB1dCB8IFByb21pc2U8TG9hZEZuT3V0cHV0PlxuKSA9PiBQcm9taXNlPExvYWRGbk91dHB1dD4ge1xuXG4gIGNvbnN0IGRlZmF1bHRTb3VyY2VOZXh0TG9hZDogUGFyYW1ldGVyczxMb2FkSG9vaz5bMl0gPVxuICAgIHR5cGVvZiBkZWZhdWx0U291cmNlID09PSBcInN0cmluZ1wiXG4gICAgICA/IGFzeW5jICh1cmwgPSBkZWZhdWx0SWQpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm1XaXRoRXNidWlsZChkZWZhdWx0U291cmNlLCB1cmwsIHtcbiAgICAgICAgICAgIGxvYWRlcjogXCJ0c3hcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJlc21cIixcbiAgICAgICAgICAgIHNvdXJjZW1hcDogXCJleHRlcm5hbFwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzb3VyY2U6IHJlc3VsdC5jb2RlLFxuICAgICAgICAgICAgZm9ybWF0OiBcIm1vZHVsZVwiLFxuICAgICAgICAgICAgbWFwOiByZXN1bHQubWFwLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIDogZGVmYXVsdE5leHRMb2FkO1xuXG4gIHJldHVybiBhc3luYyAoXG4gICAgdXJsID0gZGVmYXVsdElkLFxuICAgIGNvbnRleHQgPSB7XG4gICAgICBmb3JtYXQ6IFwibW9kdWxlXCIsXG4gICAgICBjb25kaXRpb25zOiBbXCJyZWFjdC1zZXJ2ZXJcIl0sXG4gICAgICBpbXBvcnRBdHRyaWJ1dGVzOiB7fSxcbiAgICB9LFxuICAgIG5leHRMb2FkID0gZGVmYXVsdFNvdXJjZU5leHRMb2FkXG4gICkgPT4ge1xuXG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IGNvbnRleHQ7XG4gICAgaWYgKGZvcm1hdCA9PT0gXCJtb2R1bGVcIiB8fCBmb3JtYXQgPT09IFwibW9kdWxlLXR5cGVzY3JpcHRcIikge1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBuZXh0TG9hZCh1cmwsIGNvbnRleHQpO1xuXG4gICAgICBjb25zdCBzb3VyY2UgPVxuICAgICAgICB0eXBlb2YgcmVzdWx0LnNvdXJjZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8gcmVzdWx0LnNvdXJjZVxuICAgICAgICAgIDogcmVzdWx0LnNvdXJjZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgfHxcbiAgICAgICAgICAgIHJlc3VsdC5zb3VyY2UgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fFxuICAgICAgICAgICAgcmVzdWx0LnNvdXJjZSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5IHx8XG4gICAgICAgICAgICByZXN1bHQuc291cmNlIGluc3RhbmNlb2YgVWludDE2QXJyYXkgfHxcbiAgICAgICAgICAgIHJlc3VsdC5zb3VyY2UgaW5zdGFuY2VvZiBVaW50MzJBcnJheSB8fFxuICAgICAgICAgICAgcmVzdWx0LnNvdXJjZSBpbnN0YW5jZW9mIEludDhBcnJheSB8fFxuICAgICAgICAgICAgcmVzdWx0LnNvdXJjZSBpbnN0YW5jZW9mIEludDE2QXJyYXkgfHxcbiAgICAgICAgICAgIHJlc3VsdC5zb3VyY2UgaW5zdGFuY2VvZiBJbnQzMkFycmF5IHx8XG4gICAgICAgICAgICByZXN1bHQuc291cmNlIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8XG4gICAgICAgICAgICByZXN1bHQuc291cmNlIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5IHx8XG4gICAgICAgICAgICByZXN1bHQuc291cmNlIGluc3RhbmNlb2YgQmlnVWludDY0QXJyYXkgfHxcbiAgICAgICAgICAgIHJlc3VsdC5zb3VyY2UgaW5zdGFuY2VvZiBCaWdJbnQ2NEFycmF5XG4gICAgICAgICAgPyBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUocmVzdWx0LnNvdXJjZSlcbiAgICAgICAgICA6IGRlZmF1bHRTb3VyY2U7XG5cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRMb2FkKHVybCwgY29udGV4dCk7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFxQkEsTUFBTSxlQUFBLEdBQTJDLE9BQU8sR0FBUSxLQUFBO0FBQzlELEVBQU0sTUFBQSxNQUFBLEdBQVMsTUFBTSxvQkFBcUIsQ0FBQSxNQUFNLFNBQVMsR0FBSyxFQUFBLE9BQU8sR0FBRyxHQUFLLEVBQUE7QUFBQSxJQUMzRSxNQUFRLEVBQUEsS0FBQTtBQUFBLElBQ1IsTUFBUSxFQUFBLEtBQUE7QUFBQSxJQUNSLFNBQVcsRUFBQTtBQUFBLEdBQ1osQ0FBQTtBQUNELEVBQU8sT0FBQTtBQUFBLElBQ0wsUUFBUSxNQUFPLENBQUEsSUFBQTtBQUFBLElBQ2YsTUFBUSxFQUFBLFFBQUE7QUFBQSxJQUNSLEtBQUssTUFBTyxDQUFBO0FBQUEsR0FDZDtBQUNGLENBQUE7QUFjTyxTQUFTLG1CQUFBLENBQ2QsYUFDQSxFQUFBLFNBQUEsR0FBWSxPQVFhLEVBQUE7QUFFekIsRUFBQSxNQUFNLHdCQUNKLE9BQU8sYUFBQSxLQUFrQixRQUNyQixHQUFBLE9BQU8sTUFBTSxTQUFjLEtBQUE7QUFDekIsSUFBQSxNQUFNLE1BQVMsR0FBQSxNQUFNLG9CQUFxQixDQUFBLGFBQUEsRUFBZSxHQUFLLEVBQUE7QUFBQSxNQUM1RCxNQUFRLEVBQUEsS0FBQTtBQUFBLE1BQ1IsTUFBUSxFQUFBLEtBQUE7QUFBQSxNQUNSLFNBQVcsRUFBQTtBQUFBLEtBQ1osQ0FBQTtBQUNELElBQU8sT0FBQTtBQUFBLE1BQ0wsUUFBUSxNQUFPLENBQUEsSUFBQTtBQUFBLE1BQ2YsTUFBUSxFQUFBLFFBQUE7QUFBQSxNQUNSLEtBQUssTUFBTyxDQUFBO0FBQUEsS0FDZDtBQUFBLEdBRUYsR0FBQSxlQUFBO0FBRU4sRUFBTyxPQUFBLE9BQ0wsR0FBTSxHQUFBLFNBQUEsRUFDTixPQUFVLEdBQUE7QUFBQSxJQUNSLE1BQVEsRUFBQSxRQUFBO0FBQUEsSUFDUixVQUFBLEVBQVksQ0FBQyxjQUFjLENBQUE7QUFBQSxJQUMzQixrQkFBa0I7QUFBQyxHQUNyQixFQUNBLFdBQVcscUJBQ1IsS0FBQTtBQUVILElBQU0sTUFBQSxFQUFFLFFBQVcsR0FBQSxPQUFBO0FBQ25CLElBQUksSUFBQSxNQUFBLEtBQVcsUUFBWSxJQUFBLE1BQUEsS0FBVyxtQkFBcUIsRUFBQTtBQUV6RCxNQUFBLE1BQU0sTUFBUyxHQUFBLE1BQU0sUUFBUyxDQUFBLEdBQUEsRUFBSyxPQUFPLENBQUE7QUFFMUMsTUFBTSxNQUFBLE1BQUEsR0FDSixPQUFPLE1BQU8sQ0FBQSxNQUFBLEtBQVcsV0FDckIsTUFBTyxDQUFBLE1BQUEsR0FDUCxNQUFPLENBQUEsTUFBQSxZQUFrQixVQUN6QixJQUFBLE1BQUEsQ0FBTyxrQkFBa0IsV0FDekIsSUFBQSxNQUFBLENBQU8sa0JBQWtCLGlCQUN6QixJQUFBLE1BQUEsQ0FBTyxrQkFBa0IsV0FDekIsSUFBQSxNQUFBLENBQU8sTUFBa0IsWUFBQSxXQUFBLElBQ3pCLE1BQU8sQ0FBQSxNQUFBLFlBQWtCLGFBQ3pCLE1BQU8sQ0FBQSxNQUFBLFlBQWtCLGNBQ3pCLE1BQU8sQ0FBQSxNQUFBLFlBQWtCLGNBQ3pCLE1BQU8sQ0FBQSxNQUFBLFlBQWtCLFlBQ3pCLElBQUEsTUFBQSxDQUFPLE1BQWtCLFlBQUEsWUFBQSxJQUN6QixPQUFPLE1BQWtCLFlBQUEsY0FBQSxJQUN6QixNQUFPLENBQUEsTUFBQSxZQUFrQixhQUN6QixHQUFBLElBQUksYUFBYyxDQUFBLE1BQUEsQ0FBTyxNQUFPLENBQUEsTUFBTSxDQUN0QyxHQUFBLGFBQUE7QUFHTixNQUFPLE9BQUE7QUFBQSxRQUNMLEdBQUcsTUFBQTtBQUFBLFFBQ0g7QUFBQSxPQUNGO0FBQUE7QUFHRixJQUFPLE9BQUEsUUFBQSxDQUFTLEtBQUssT0FBTyxDQUFBO0FBQUEsR0FDOUI7QUFDRjs7OzsifQ==