import { assetsForRequest, renderAssetsToHtml } from '@ssrx/vite/runtime';
import { serverOnly$ } from 'vite-env-only/macros';
import { ASSETS_PLUGIN_ID, defineRenderPlugin } from '../common.ts';
export const assetsPluginServer = serverOnly$(() => {
return defineRenderPlugin({
id: ASSETS_PLUGIN_ID,
hooksForReq: async ({ req }) => ({
server: await injectAssetsToStream({ req }),
}),
});
});
const injectAssetsToStream = async ({ req }: { req: Request }) => {
const assets = await assetsForRequest(req.url);
return {
emitToDocumentHead: () => renderAssetsToHtml(assets.headAssets),
emitToDocumentBody: () => renderAssetsToHtml(assets.bodyAssets),
};
};