hyogen-md

0.10.0

Types and Options

HyogenContext

type HyogenContext = Record<string, unknown>

Plain object of template variables. Passed as the second argument to renderServer / renderClient, or via build({ context }).

Bindings follow last-write-wins scoping: front matter, @hg declarations, and component props can override earlier values. See Front matter.

RenderOptions

Shared by renderServer, renderClient, and build.

type RenderOptions = {
  preserveFrontMatter?: boolean   // default: false
  preserveHgComments?: boolean    // default: false
  loader?: Loader
  root?: string
  path?: string
  constrainToRoot?: boolean
}
OptionDefaultDescription
preserveFrontMatterfalseKeep YAML front matter in output Markdown
preserveHgCommentsfalseKeep <!-- @hg --> blocks in output (debugging)
loaderNode defaultCustom path resolver
rootfrom .doc_rootProject root directory
pathentry pathSource file path for diagnostics
constrainToRootfrom .doc_rootRestrict file access to root

ServerRenderOptions

type ServerRenderOptions = RenderOptions & {
  serverContext?: HyogenContext
}

Only for renderServer. Merged into the render context on the server. Not available on renderClient.

BuildOptions

type BuildOptions = RenderOptions & {
  input: string | string[]
  outDir: string
  includeUnderscoreEntries?: boolean
  context?: HyogenContext
  serverContext?: HyogenContext
}

See build.

RenderResult

type RenderResult = {
  markdown: string
  warnings: HyogenWarning[]
}

BuildResult

type BuildResult = {
  files: { path: string; markdown: string }[]
  warnings: HyogenWarning[]
}

Loader

type Loader = (path: string) => Promise<string>

See Loader.

Input shapes

Both render functions accept:

// inline source
renderServer('# {{ title }}', { title: 'Hi' })

// file path (loaded via loader)
renderServer({ path: './pages/index.md' }, { title: 'Hi' })