`}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`${n}>
`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${y(t,!0)}`}br(t){return" "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:n}){let s=this.parser.parseInline(n),r=ue(t);if(r===null)return s;t=r;let l='"+s+"",l}image({href:t,title:e,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let r=ue(t);if(r===null)return y(n);t=r;let l=`",l}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:y(t.text)}},re=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},w=class G{options;renderer;textRenderer;constructor(e){this.options=e||z,this.options.renderer=this.options.renderer||new Z,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new re}static parse(e,n){return new G(n).parse(e)}static parseInline(e,n){return new G(n).parseInline(e)}parse(e){this.renderer.parser=this;let n="";for(let s=0;s{let i=r[l].flat(1/0);n=n.concat(this.walkTokens(i,e))}):r.tokens&&(n=n.concat(this.walkTokens(r.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let l=e.renderers[r.name];l?e.renderers[r.name]=function(...i){let o=r.renderer.apply(this,i);return o===!1&&(o=l.apply(this,i)),o}:e.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let l=e[r.level];l?l.unshift(r.tokenizer):e[r.level]=[r.tokenizer],r.start&&(r.level==="block"?e.startBlock?e.startBlock.push(r.start):e.startBlock=[r.start]:r.level==="inline"&&(e.startInline?e.startInline.push(r.start):e.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(e.childTokens[r.name]=r.childTokens)}),s.extensions=e),n.renderer){let r=this.defaults.renderer||new Z(this.defaults);for(let l in n.renderer){if(!(l in r))throw new Error(`renderer '${l}' does not exist`);if(["options","parser"].includes(l))continue;let i=l,o=n.renderer[i],a=r[i];r[i]=(...p)=>{let c=o.apply(r,p);return c===!1&&(c=a.apply(r,p)),c||""}}s.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new D(this.defaults);for(let l in n.tokenizer){if(!(l in r))throw new Error(`tokenizer '${l}' does not exist`);if(["options","rules","lexer"].includes(l))continue;let i=l,o=n.tokenizer[i],a=r[i];r[i]=(...p)=>{let c=o.apply(r,p);return c===!1&&(c=a.apply(r,p)),c}}s.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new L;for(let l in n.hooks){if(!(l in r))throw new Error(`hook '${l}' does not exist`);if(["options","block"].includes(l))continue;let i=l,o=n.hooks[i],a=r[i];L.passThroughHooks.has(l)?r[i]=p=>{if(this.defaults.async&&L.passThroughHooksRespectAsync.has(l))return(async()=>{let g=await o.call(r,p);return a.call(r,g)})();let c=o.call(r,p);return a.call(r,c)}:r[i]=(...p)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(r,p);return g===!1&&(g=await a.apply(r,p)),g})();let c=o.apply(r,p);return c===!1&&(c=a.apply(r,p)),c}}s.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,l=n.walkTokens;s.walkTokens=function(i){let o=[];return o.push(l.call(this,i)),r&&(o=o.concat(r.call(this,i))),o}}this.defaults={...this.defaults,...s}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return m.lex(t,e??this.defaults)}parser(t,e){return w.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let s={...n},r={...this.defaults,...s},l=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&s.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=t),r.async)return(async()=>{let i=r.hooks?await r.hooks.preprocess(e):e,o=await(r.hooks?await r.hooks.provideLexer(t):t?m.lex:m.lexInline)(i,r),a=r.hooks?await r.hooks.processAllTokens(o):o;r.walkTokens&&await Promise.all(this.walkTokens(a,r.walkTokens));let p=await(r.hooks?await r.hooks.provideParser(t):t?w.parse:w.parseInline)(a,r);return r.hooks?await r.hooks.postprocess(p):p})().catch(l);try{r.hooks&&(e=r.hooks.preprocess(e));let i=(r.hooks?r.hooks.provideLexer(t):t?m.lex:m.lexInline)(e,r);r.hooks&&(i=r.hooks.processAllTokens(i)),r.walkTokens&&this.walkTokens(i,r.walkTokens);let o=(r.hooks?r.hooks.provideParser(t):t?w.parse:w.parseInline)(i,r);return r.hooks&&(o=r.hooks.postprocess(o)),o}catch(i){return l(i)}}}onError(t,e){return n=>{if(n.message+=`
Please report this to https://github.com/markedjs/marked.`,t){let s="
An error occurred:
"+y(n.message+"",!0)+"
";return e?Promise.resolve(s):s}if(e)return Promise.reject(n);throw n}}},T=new ne;function d(t,e){return T.parse(t,e)}d.options=d.setOptions=function(t){return T.setOptions(t),d.defaults=T.defaults,ke(d.defaults),d};d.getDefaults=X;d.defaults=z;d.use=function(...t){return T.use(...t),d.defaults=T.defaults,ke(d.defaults),d};d.walkTokens=function(t,e){return T.walkTokens(t,e)};d.parseInline=T.parseInline;d.Parser=w;d.parser=w.parse;d.Renderer=Z;d.TextRenderer=re;d.Lexer=m;d.lexer=m.lex;d.Tokenizer=D;d.Hooks=L;d.parse=d;var Mt=d.options,Dt=d.setOptions,Zt=d.use,Ft=d.walkTokens,Ht=d.parseInline;var Ot=w.parse,Qt=m.lex;var se="/x/proj/gh-proxy/src/sanitizer.js",Pt=["Google Chrome","Microsoft Edge","Firefox","Safari"];function _t(){let t=process.env.BROWSER;if(t)return t;for(let e of Pt)if(Q(`/Applications/${e}.app`))return e;return"Safari"}function Le(t){return String(t).replace(/[&<>"']/g,e=>{switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";case"'":return"'";default:return e}})}function It(t,e){return`
${Le(t)}
${e}
`}function Lt(t){let e={preprocess(n){return n.replace(/^\uFEFF/,"")}};return t&&(e.postprocess=function(n){return t.process(n)}),new ne({gfm:!0,breaks:!1,pedantic:!1,silent:!1,async:!1,hooks:e})}var Pe=Q(se);function B(t){let e=Pe?` -x, --xss Enable XSS filtering (matches gh-proxy sanitization)
`:"";(t===0?process.stdout:process.stderr).write(`Usage: render-md ${Pe?"[-x|--xss] ":""}[-o FILE|-] [--] [file]
`+e+` -o FILE Write HTML to FILE instead of opening in browser
-o - Write HTML to stdout
-- End option parsing
file Markdown file to render (default: stdin)
`),process.exit(t)}function Ee(t,e,n){let s=n instanceof Error?n.message:String(n);process.stderr.write(`render-md: cannot ${t} ${e}: ${s}
`),process.exit(1)}function Et(t,e){if(!Q(e))return!1;let n=Ae(t),s=Ae(e);return n.dev===s.dev&&n.ino===s.ino}var Be=!1,$=null,f=null,v=!0,O=process.argv.slice(2);for(let t=0;t=O.length&&B(1),$=O[t]):v&&(e==="-h"||e==="--help")?B(0):v&&e.startsWith("-")?(process.stderr.write(`render-md: unknown option: ${e}
`),B(1)):(f!==null&&(process.stderr.write(`render-md: multiple input files: ${f}, ${e}
`),B(1)),f=e)}var qe=null;if(Be)try{let{createHtmlSanitizer:t}=await import(se);qe=t()}catch{process.stderr.write(`render-md: -x/--xss requires gh-proxy XSS config at ${se}
Install: ensure /x/proj/gh-proxy exists with npm dependencies installed
`),process.exit(1)}!f&&process.stdin.isTTY&&B(0);var ie;if(f){Q(f)||(process.stderr.write(`render-md: ${f}: No such file
`),process.exit(1));try{ie=Te(f,"utf-8")}catch(t){Ee("read",f,t)}}else ie=Te(0,"utf-8");var Bt=Lt(qe),qt=f?Tt(f).replace(/\.md$/i,""):"Untitled",Ct=Bt.parse(ie),q=It(qt,Ct);if(f){let t=_e(Ie(f)),e=vt(t+zt).href;q=q.replace("",`
`)}if($==="-")process.stdout.write(q);else if($){f&&Et(f,$)&&(process.stderr.write(`render-md: refusing to overwrite input file: ${$}
`),process.exit(1));try{ze($,q,"utf-8")}catch(t){Ee("write",$,t)}process.stderr.write(`Wrote ${$}
`)}else{let t;if(f){let n=Ie(process.env.PWD||process.cwd(),f);t=ve("/tmp","md",n+".html")}else t=ve("/tmp","md",`render-md-${Date.now()}.html`);Rt(_e(t),{recursive:!0}),ze(t,q,"utf-8");let e=_t();try{At("open",["-a",e,t],{stdio:"ignore"})}catch{process.stderr.write(`render-md: failed to open browser "${e}"
`),process.stderr.write(`Output written to ${t}
`),process.exit(1)}}