[{"data":1,"prerenderedAt":616},["ShallowReactive",2],{"content-en-\u002Finstall":3},{"id":4,"title":5,"body":6,"description":610,"extension":611,"meta":612,"navigation":138,"path":613,"seo":614,"stem":12,"__hash__":615},"content_en\u002Finstall.md","Install",{"type":7,"value":8,"toc":605},"minimark",[9,13,39,43,95,100,110,224,227,270,277,317,321,335,558,562,601],[10,11,5],"h1",{"id":12},"install",[14,15,20],"pre",{"className":16,"code":17,"language":18,"meta":19,"style":19},"language-bash shiki shiki-themes github-light github-dark","npm install @b4moss\u002Fhyogen-md\n","bash","",[21,22,23],"code",{"__ignoreMap":19},[24,25,28,32,36],"span",{"class":26,"line":27},"line",1,[24,29,31],{"class":30},"sScJk","npm",[24,33,35],{"class":34},"sZZnC"," install",[24,37,38],{"class":34}," @b4moss\u002Fhyogen-md\n",[40,41,42],"p",{},"The package ships two entry points:",[44,45,46,59],"table",{},[47,48,49],"thead",{},[50,51,52,56],"tr",{},[53,54,55],"th",{},"Entry",[53,57,58],{},"Use case",[60,61,62,81],"tbody",{},[50,63,64,70],{},[65,66,67],"td",{},[21,68,69],{},"@b4moss\u002Fhyogen-md",[65,71,72,73,76,77,80],{},"Node — SSR, SSG, and server rendering (",[21,74,75],{},"renderServer",", ",[21,78,79],{},"build",", loaders)",[50,82,83,88],{},[65,84,85],{},[21,86,87],{},"@b4moss\u002Fhyogen-md\u002Fclient",[65,89,90,91,94],{},"Browser — client-side rendering (",[21,92,93],{},"renderClient",")",[96,97,99],"h2",{"id":98},"quick-start-server","Quick start (server)",[40,101,102,103,105,106,109],{},"Use ",[21,104,75],{}," when you run on Node (SSR or SSG). A default file-system loader is used when you omit ",[21,107,108],{},"options.loader",".",[14,111,115],{"className":112,"code":113,"language":114,"meta":19,"style":19},"language-ts shiki shiki-themes github-light github-dark","import { renderServer } from '@b4moss\u002Fhyogen-md'\n\nconst { markdown, warnings } = await renderServer(\n  '# Hello {{ name }}',\n  { name: 'world' },\n)\n\nconsole.log(markdown)\n\u002F\u002F # Hello world\n","ts",[21,116,117,133,140,173,182,194,200,205,217],{"__ignoreMap":19},[24,118,119,123,127,130],{"class":26,"line":27},[24,120,122],{"class":121},"szBVR","import",[24,124,126],{"class":125},"sVt8B"," { renderServer } ",[24,128,129],{"class":121},"from",[24,131,132],{"class":34}," '@b4moss\u002Fhyogen-md'\n",[24,134,136],{"class":26,"line":135},2,[24,137,139],{"emptyLinePlaceholder":138},true,"\n",[24,141,143,146,149,153,155,158,161,164,167,170],{"class":26,"line":142},3,[24,144,145],{"class":121},"const",[24,147,148],{"class":125}," { ",[24,150,152],{"class":151},"sj4cs","markdown",[24,154,76],{"class":125},[24,156,157],{"class":151},"warnings",[24,159,160],{"class":125}," } ",[24,162,163],{"class":121},"=",[24,165,166],{"class":121}," await",[24,168,169],{"class":30}," renderServer",[24,171,172],{"class":125},"(\n",[24,174,176,179],{"class":26,"line":175},4,[24,177,178],{"class":34},"  '# Hello {{ name }}'",[24,180,181],{"class":125},",\n",[24,183,185,188,191],{"class":26,"line":184},5,[24,186,187],{"class":125},"  { name: ",[24,189,190],{"class":34},"'world'",[24,192,193],{"class":125}," },\n",[24,195,197],{"class":26,"line":196},6,[24,198,199],{"class":125},")\n",[24,201,203],{"class":26,"line":202},7,[24,204,139],{"emptyLinePlaceholder":138},[24,206,208,211,214],{"class":26,"line":207},8,[24,209,210],{"class":125},"console.",[24,212,213],{"class":30},"log",[24,215,216],{"class":125},"(markdown)\n",[24,218,220],{"class":26,"line":219},9,[24,221,223],{"class":222},"sJ8bj","\u002F\u002F # Hello world\n",[40,225,226],{},"Render a file by path:",[14,228,230],{"className":112,"code":229,"language":114,"meta":19,"style":19},"const result = await renderServer({ path: '.\u002Fpages\u002Findex.md' }, {\n  title: 'My site',\n})\n",[21,231,232,255,265],{"__ignoreMap":19},[24,233,234,236,239,242,244,246,249,252],{"class":26,"line":27},[24,235,145],{"class":121},[24,237,238],{"class":151}," result",[24,240,241],{"class":121}," =",[24,243,166],{"class":121},[24,245,169],{"class":30},[24,247,248],{"class":125},"({ path: ",[24,250,251],{"class":34},"'.\u002Fpages\u002Findex.md'",[24,253,254],{"class":125}," }, {\n",[24,256,257,260,263],{"class":26,"line":135},[24,258,259],{"class":125},"  title: ",[24,261,262],{"class":34},"'My site'",[24,264,181],{"class":125},[24,266,267],{"class":26,"line":142},[24,268,269],{"class":125},"})\n",[40,271,272,273,276],{},"Pass secrets only through ",[21,274,275],{},"serverContext"," — they are merged into the render context on the server but must never be sent to the client bundle:",[14,278,280],{"className":112,"code":279,"language":114,"meta":19,"style":19},"await renderServer('.\u002Fpage.md', { title: 'Public' }, {\n  serverContext: { apiKey: process.env.API_KEY },\n})\n",[21,281,282,303,313],{"__ignoreMap":19},[24,283,284,287,289,292,295,298,301],{"class":26,"line":27},[24,285,286],{"class":121},"await",[24,288,169],{"class":30},[24,290,291],{"class":125},"(",[24,293,294],{"class":34},"'.\u002Fpage.md'",[24,296,297],{"class":125},", { title: ",[24,299,300],{"class":34},"'Public'",[24,302,254],{"class":125},[24,304,305,308,311],{"class":26,"line":135},[24,306,307],{"class":125},"  serverContext: { apiKey: process.env.",[24,309,310],{"class":151},"API_KEY",[24,312,193],{"class":125},[24,314,315],{"class":26,"line":142},[24,316,269],{"class":125},[96,318,320],{"id":319},"quick-start-client","Quick start (client)",[40,322,102,323,325,326,330,331,334],{},[21,324,93],{}," in the browser. You ",[327,328,329],"strong",{},"must"," provide a ",[21,332,333],{},"loader"," that returns source text for each path. The library does not fetch files on its own in the browser.",[14,336,338],{"className":112,"code":337,"language":114,"meta":19,"style":19},"import { renderClient } from '@b4moss\u002Fhyogen-md\u002Fclient'\n\nconst files: Record\u003Cstring, string> = {\n  'index.md': '# Hello {{ name }}',\n}\n\nconst loader = async (path: string) => {\n  const source = files[path]\n  if (!source) throw new Error(`missing: ${path}`)\n  return source\n}\n\nconst { markdown } = await renderClient(\n  { path: 'index.md' },\n  { name: 'world' },\n  { loader },\n)\n",[21,339,340,352,356,387,400,405,409,441,454,488,497,502,507,527,538,547,553],{"__ignoreMap":19},[24,341,342,344,347,349],{"class":26,"line":27},[24,343,122],{"class":121},[24,345,346],{"class":125}," { renderClient } ",[24,348,129],{"class":121},[24,350,351],{"class":34}," '@b4moss\u002Fhyogen-md\u002Fclient'\n",[24,353,354],{"class":26,"line":135},[24,355,139],{"emptyLinePlaceholder":138},[24,357,358,360,363,366,369,372,375,377,379,382,384],{"class":26,"line":142},[24,359,145],{"class":121},[24,361,362],{"class":151}," files",[24,364,365],{"class":121},":",[24,367,368],{"class":30}," Record",[24,370,371],{"class":125},"\u003C",[24,373,374],{"class":151},"string",[24,376,76],{"class":125},[24,378,374],{"class":151},[24,380,381],{"class":125},"> ",[24,383,163],{"class":121},[24,385,386],{"class":125}," {\n",[24,388,389,392,395,398],{"class":26,"line":175},[24,390,391],{"class":34},"  'index.md'",[24,393,394],{"class":125},": ",[24,396,397],{"class":34},"'# Hello {{ name }}'",[24,399,181],{"class":125},[24,401,402],{"class":26,"line":184},[24,403,404],{"class":125},"}\n",[24,406,407],{"class":26,"line":196},[24,408,139],{"emptyLinePlaceholder":138},[24,410,411,413,416,418,421,424,428,430,433,436,439],{"class":26,"line":202},[24,412,145],{"class":121},[24,414,415],{"class":30}," loader",[24,417,241],{"class":121},[24,419,420],{"class":121}," async",[24,422,423],{"class":125}," (",[24,425,427],{"class":426},"s4XuR","path",[24,429,365],{"class":121},[24,431,432],{"class":151}," string",[24,434,435],{"class":125},") ",[24,437,438],{"class":121},"=>",[24,440,386],{"class":125},[24,442,443,446,449,451],{"class":26,"line":207},[24,444,445],{"class":121},"  const",[24,447,448],{"class":151}," source",[24,450,241],{"class":121},[24,452,453],{"class":125}," files[path]\n",[24,455,456,459,461,464,467,470,473,476,478,481,483,486],{"class":26,"line":219},[24,457,458],{"class":121},"  if",[24,460,423],{"class":125},[24,462,463],{"class":121},"!",[24,465,466],{"class":125},"source) ",[24,468,469],{"class":121},"throw",[24,471,472],{"class":121}," new",[24,474,475],{"class":30}," Error",[24,477,291],{"class":125},[24,479,480],{"class":34},"`missing: ${",[24,482,427],{"class":125},[24,484,485],{"class":34},"}`",[24,487,199],{"class":125},[24,489,491,494],{"class":26,"line":490},10,[24,492,493],{"class":121},"  return",[24,495,496],{"class":125}," source\n",[24,498,500],{"class":26,"line":499},11,[24,501,404],{"class":125},[24,503,505],{"class":26,"line":504},12,[24,506,139],{"emptyLinePlaceholder":138},[24,508,510,512,514,516,518,520,522,525],{"class":26,"line":509},13,[24,511,145],{"class":121},[24,513,148],{"class":125},[24,515,152],{"class":151},[24,517,160],{"class":125},[24,519,163],{"class":121},[24,521,166],{"class":121},[24,523,524],{"class":30}," renderClient",[24,526,172],{"class":125},[24,528,530,533,536],{"class":26,"line":529},14,[24,531,532],{"class":125},"  { path: ",[24,534,535],{"class":34},"'index.md'",[24,537,193],{"class":125},[24,539,541,543,545],{"class":26,"line":540},15,[24,542,187],{"class":125},[24,544,190],{"class":34},[24,546,193],{"class":125},[24,548,550],{"class":26,"line":549},16,[24,551,552],{"class":125},"  { loader },\n",[24,554,556],{"class":26,"line":555},17,[24,557,199],{"class":125},[96,559,561],{"id":560},"next-steps","Next steps",[563,564,565,581,594],"ul",{},[566,567,568,573,574,76,576,76,578,580],"li",{},[569,570,572],"a",{"href":571},"\u002Fen\u002Fapi","API reference"," — ",[21,575,75],{},[21,577,93],{},[21,579,79],{},", loaders, diagnostics",[566,582,583,573,587,76,590,593],{},[569,584,586],{"href":585},"\u002Fen\u002Fsyntax","Template syntax",[21,588,589],{},"&#123;&#123; &#125;&#125;",[21,591,592],{},"@hg"," blocks, includes, components",[566,595,596,600],{},[569,597,599],{"href":598},"\u002Fplayground","Playground"," — try templates in the browser",[602,603,604],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":19,"searchDepth":135,"depth":135,"links":606},[607,608,609],{"id":98,"depth":135,"text":99},{"id":319,"depth":135,"text":320},{"id":560,"depth":135,"text":561},"Install @b4moss\u002Fhyogen-md and render your first template.","md",{},"\u002Finstall",{"title":5,"description":610},"KwxAEhbqqVoV97C0SyPnKldy8ZKD9VCwS4B7Ek5s-q4",1787223114241]