renderServer
Renders a hyogen.md source string or file on the server. Use this for SSR, one-off server renders, and as the engine behind build.
import { renderServer } from '@b4moss/hyogen-md'
function renderServer(
input: string | { path: string },
context?: HyogenContext,
options?: ServerRenderOptions,
): Promise<RenderResult>
Arguments
| Argument | Description |
|---|---|
input | Source string, or { path } to load via the loader |
context | Template variables available in {{ }} and @hg blocks |
options | Loader, root, output preservation, and serverContext |
serverContext
Pass server-only data through options.serverContext. It is merged into the render context but is kept separate at the API level so you do not accidentally expose secrets to client bundles.
await renderServer('./page.md', { title: 'Docs' }, {
serverContext: { secretToken: process.env.TOKEN },
})
renderClient rejects serverContext with error server_context_on_client.
Default loader
When options.loader is omitted, createNodeLoader() is used — local file reads plus remote https:// URLs on Node.
Example
const source = `
---
title: Hello
---
# {{ title }} {{ name }}
`
const { markdown, warnings } = await renderServer(source, { name: 'world' })
// warnings is an array of non-fatal HyogenWarning objects
console.log(markdown)
Return value
type RenderResult = {
markdown: string // rendered Markdown
warnings: HyogenWarning[]
}
Fatal problems throw a HyogenError instead of returning. See Diagnostics and Error codes.
Related
- renderClient — browser entry
- Types and options
- Loader