import { createHtmlTransformer } from '#lib/html-utils/html-transformer' import { injectGlobalDataIntoHTML } from '#lib/html-utils/inject-global-data' import * as Theme from '#lib/theme/theme' import type { PolenGlobalData } from '../../constants.js' /** * HTML transformer that injects Polen global data based on request context * This runs in both dev and production modes to ensure consistent behavior */ export const createPolenDataInjector = () => { return createHtmlTransformer((html, ctx) => { // Create theme manager to read cookies const themeManager = Theme.createThemeManager({ cookieName: `polen-theme-preference`, }) // Get theme from request cookies const cookies = ctx.req.header(`cookie`) || `` const cookieTheme = themeManager.readCookie(cookies) // Use existing Polen global data if available, otherwise create new const polenData: PolenGlobalData = globalThis.__POLEN__ || { serverContext: { theme: cookieTheme || 'system', // No cookie means system preference isDev: !__BUILDING__, // true in dev, false in production }, } // Just inject the Polen data, no additional code return injectGlobalDataIntoHTML(html, '__POLEN__', polenData) }) }