docfuse 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-WF7ZYYJD.js +2 -0
- package/dist/{check-RJPHTGI6.js → check-3M5AMXFL.js} +2 -2
- package/dist/chunk-2AE3ZZMC.js +6 -0
- package/dist/{chunk-S36HQTIA.js → chunk-BH2JJ2IK.js} +2 -2
- package/dist/{chunk-N26MW2YK.js → chunk-L7LBGDJ4.js} +16 -16
- package/dist/chunk-ZDXO2HQK.js +2 -0
- package/dist/{clean-KTIDWI35.js → clean-DQSSR6KV.js} +2 -2
- package/dist/cli.js +1 -1
- package/dist/{dev-BMFVSQSM.js → dev-3IGK7DO2.js} +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/{init-NJUIADRO.js → init-VP6PXRGZ.js} +2 -2
- package/dist/styles.input.css +18 -1
- package/package.json +2 -2
- package/dist/build-X3KCJUYB.js +0 -2
- package/dist/chunk-GRQDPV4U.js +0 -2
- package/dist/chunk-M47X2MM3.js +0 -6
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a,b}from"./chunk-L7LBGDJ4.js";import"./chunk-2AE3ZZMC.js";import"./chunk-GNYJERGG.js";import"./chunk-XYJ2OBL3.js";import"./chunk-BH2JJ2IK.js";import"./chunk-DOOG32NU.js";import"./chunk-5NTRNUFG.js";import"./chunk-ZDXO2HQK.js";import"./chunk-EAYVCA3Z.js";import"./chunk-JK7ZNBUA.js";import"./chunk-AYDF3IFZ.js";export{b as runBuild,a as versionSatisfies};
|
|
2
|
+
//# sourceMappingURL=build-WF7ZYYJD.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{e as I,j as b,k as M}from"./chunk-
|
|
1
|
+
import{e as I,j as b,k as M}from"./chunk-2AE3ZZMC.js";import"./chunk-GNYJERGG.js";import"./chunk-XYJ2OBL3.js";import{a as C,b as S,j as P}from"./chunk-DOOG32NU.js";import"./chunk-ZDXO2HQK.js";import"./chunk-EAYVCA3Z.js";import{d as $}from"./chunk-JK7ZNBUA.js";import{a}from"./chunk-AYDF3IFZ.js";import{mkdtemp as W,readdir as V,rm as N}from"fs/promises";import{tmpdir as Q}from"os";import{join as O,relative as K}from"path";import{posix as y}from"path";import{analyzeMarkdown as w}from"@docfuse/markdown/server/analyze";function E(e){return Array.from({length:w(e).missingCodeBlockLanguages},()=>({severity:"warning",message:"Code block is missing a language"}))}a(E,"checkCodeBlockLanguages");function H(e,n=0,o=[]){return w(e,{plugins:o}).directiveIssues.map(r=>({severity:"error",message:`${r.message}${r.line===void 0?"":` (line ${r.line+n}${r.column===void 0?"":`, column ${r.column}`})`}`}))}a(H,"checkRichDirectiveSyntax");function R(e){return typeof e.description=="string"&&e.description.trim()?[]:[{severity:"warning",message:"Frontmatter description is missing"}]}a(R,"checkFrontmatterDescription");function B(e,n){return typeof e.title=="string"&&e.title.trim()?[]:[{severity:"warning",page:n.relativePath,message:"Frontmatter title is missing"}]}a(B,"checkFrontmatterTitle");function L(e){return/^(?:[a-z][a-z\d+.-]*:|\/\/)/i.test(e)}a(L,"isExternalTarget");function D(e){let n=e.indexOf("#"),o=n===-1?e:e.slice(0,n),r=n===-1?"":e.slice(n+1);return{path:o.split("?")[0]??"",fragment:r}}a(D,"splitTarget");function A(e){try{return decodeURIComponent(e)}catch{return}}a(A,"decodeFragment");function F(e,n){let o=n.split("/").map(r=>{let i=decodeURIComponent(r);if(i.includes("/")||i.includes("\\"))throw new Error("Encoded path separator");return i}).join("/");return y.normalize(y.join(y.dirname(e),o.replace(/^\.\//,"")))}a(F,"resolveRelativeTarget");function j(e){try{return`public${e.split("/").map(o=>{let r=decodeURIComponent(o);if(r.includes("/")||r.includes("\\")||r==="..")throw new Error("Invalid public path");return r}).join("/")}`}catch{return}}a(j,"publicFileFor");function T(e){return e.replace(/\.(?:md|mdx)$/i,n=>n.toLocaleLowerCase("en-US"))}a(T,"markdownExtensionKey");function z(e,n,o="",r=new Set,i=new Set,u=new Map,m=new Map,f=new Set){let c=[],k=w(e),h=new Map([...n].filter(t=>/\.(?:md|mdx)$/i.test(t)).map(t=>[T(t),t]));for(let t of k.images){let s=D(t).path;if(!s||L(s))continue;if(s.startsWith("/")){n.has(j(s)??"")||c.push({severity:"error",message:`Image target does not exist: ${s}`});continue}let g;try{g=F(o,s)}catch{c.push({severity:"error",message:`Image target does not exist: ${s}`});continue}n.has(g)||c.push({severity:"error",message:`Image target does not exist: ${s}`})}for(let t of k.links){let{path:s,fragment:g}=D(t),p=A(g);if(L(s))continue;if(!s){g&&(!p||!i.has(p))&&c.push({severity:"error",message:`Heading target does not exist: #${g}`});continue}if(s.startsWith("/")){if(n.has(j(s)??""))continue;let d;try{d=S(s)}catch{c.push({severity:"error",message:`Link target does not exist: ${s}`});continue}if(f.has(d))continue;let x=d==="/"?"/":`${d.replace(/\/+$/,"")}/`;r.has(x)?g&&(!p||!u.get(x)?.has(p))&&c.push({severity:"error",message:`Heading target does not exist: ${t}`}):c.push({severity:"error",message:`Link target does not exist: ${s}`});continue}let l;try{l=F(o,s)}catch{c.push({severity:"error",message:`Link target does not exist: ${s}`});continue}let v=(/\.mdx?$/i.test(l)?[l]:[l,`${l}.md`,`${l}.mdx`,y.join(l,"index.md"),y.join(l,"index.mdx")]).map(d=>n.has(d)?d:h.get(T(d))).find(d=>!!d);v?g&&(!p||!m.get(v)?.has(p))&&c.push({severity:"error",message:`Heading target does not exist: ${t}`}):c.push({severity:"error",message:`Link target does not exist: ${s}`})}return c}a(z,"checkLinksAndImages");function U(e){let n=new Map;for(let o of e.headings){let r=o.text.normalize("NFKC").replace(/\s+/g," ").trim().toLocaleLowerCase(e.locale);r&&n.set(r,[...n.get(r)??[],o])}return[...n.values()].filter(o=>o.length>1).map(o=>{let r=o[0];return{severity:"warning",page:e.relativePath,message:`Repeated heading "${r.text}" uses numbered anchors (${o.map(i=>`#${i.slug}`).join(", ")})`}})}a(U,"checkDuplicateHeadings");function G(e){let n=new Map;for(let r of e.pages){let i=`${r.version}:${C(r.relativePath,r.locale)}`;n.set(i,(n.get(i)??new Set).add(r.locale))}let o=[];for(let[r,i]of n)for(let u of e.locales)if(!i.has(u)){let[m,...f]=r.split(":");o.push({severity:"warning",message:`Missing ${u} translation for ${f.join(":")} in version ${m}`})}return o}a(G,"checkMissingTranslations");async function q(e){let n=new Set;async function o(r){let i=await V(r,{withFileTypes:!0});for(let u of i){let m=O(r,u.name);if(u.isDirectory())await o(m);else{if(u.isSymbolicLink())throw new Error(`Documentation files must not use symbolic links: ${K(e,m)}`);n.add(K(e,m).replace(/\\/g,"/"))}}}return a(o,"walk"),await o(e),n}a(q,"collectFiles");function J(e){if(!e.body)return 0;let n=e.transformedSource.lastIndexOf(e.body);return n<0?0:e.transformedSource.slice(0,n).split(`
|
|
2
2
|
`).length-1}a(J,"bodyLineOffset");async function me({cwd:e}){let n=await P(e),o=await W(O(Q(),"docfuse-check-")),r=await M(e,o,n.extensions).finally(()=>N(o,{recursive:!0,force:!0})),i=await I(e,n,r),u=new Set([...b(n,i),...r.publicOutputPaths]),m=new Map(await Promise.all(n.versions.items.map(async t=>[t.id,await q($(e,t.docsDir,`versions.items[${t.id}].docsDir`))]))),f=new Set(i.pages.map(t=>t.routePath)),c=new Map(i.pages.map(t=>[t.routePath,new Set(t.headings.map(s=>s.slug))])),k=new Map(i.versions.map(t=>[t.id,new Map(i.pages.filter(s=>s.version===t.id).map(s=>[s.relativePath,new Set(s.headings.map(g=>g.slug))]))])),h=[...i.pages.flatMap(t=>[...E(t.body).map(s=>({...s,page:t.relativePath})),...H(t.body,J(t),n.markdown.plugins).map(s=>({...s,page:t.relativePath})),...B(t.frontmatter,t),...R(t.frontmatter).map(s=>({...s,page:t.relativePath})),...z(t.body,m.get(t.version)??new Set,t.relativePath,f,new Set(t.headings.map(s=>s.slug)),c,k.get(t.version),u).map(s=>({...s,page:t.sourceRelativePath})),...U(t)]),...G(i)];for(let t of h){let s=t.page?` ${t.page}`:"";console.log(`${t.severity.toUpperCase()}:${s} ${t.message}`)}return h.some(t=>t.severity==="error")&&(process.exitCode=1),h}a(me,"runCheck");export{me as runCheck};
|
|
3
|
-
//# sourceMappingURL=check-
|
|
3
|
+
//# sourceMappingURL=check-3M5AMXFL.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{a as X,b as Y,d as Q,f as E}from"./chunk-GNYJERGG.js";import{a as C,b as W,d as K,e as q,f as B,g as k,h as O}from"./chunk-DOOG32NU.js";import{a as z}from"./chunk-ZDXO2HQK.js";import{a as V,b as U,c as I}from"./chunk-EAYVCA3Z.js";import{a as R,b as P,d as H,e as _,f as J,h as v}from"./chunk-JK7ZNBUA.js";import{a as u}from"./chunk-AYDF3IFZ.js";import{analyzeMarkdown as jt}from"@docfuse/markdown/server/analyze";import It from"gray-matter";import{join as Rt,posix as Ct}from"path";import{z as d}from"zod";var tt=["ai","box","code","file","file-code","gauge","globe","layers","rocket","search","sparkles","terminal"],Pt=d.object({text:d.string().min(1),link:O,primary:d.boolean().optional(),icon:d.enum(tt).optional()}).strict(),bt=d.object({accent:d.string().optional(),tagline:d.string().optional(),image:O.optional(),imageAlt:d.string().optional(),actions:d.array(Pt).refine(t=>t.filter(e=>e.primary).length<=1,{message:"Home page hero actions can contain at most one primary action"}).optional()}).strict(),Et=d.object({icon:d.enum(tt).optional(),image:O.optional(),title:d.string().min(1),details:d.string().min(1)}).strict(),$t=d.string().trim().refine(t=>d.string().date().safeParse(t).success||d.string().datetime({offset:!0}).safeParse(t).success,"Expected an ISO 8601 date"),Z=d.preprocess(t=>t instanceof Date?t.toISOString():t,$t.transform(t=>new Date(t).toISOString())),et=d.object({title:d.string().optional(),seoTitle:d.string().trim().min(1).optional(),description:d.string().optional(),createdAt:Z.optional(),updatedAt:Z.optional(),order:d.number().finite().optional(),group:d.string().optional(),subgroup:d.string().optional(),collapsed:d.boolean().optional(),sidebar:d.boolean().optional(),layout:d.enum(["document","playground"]).optional(),status:d.enum(["draft","published"]).optional(),search:d.boolean().optional(),ai:d.boolean().optional(),tags:d.array(d.string()).optional(),owner:d.string().optional(),hero:bt.optional(),features:d.array(Et).optional()}).passthrough();function le(t){return Object.fromEntries(["title","description","createdAt","updatedAt","order","group","subgroup","tags","owner"].flatMap(o=>t[o]===void 0?[]:[[o,t[o]]]))}u(le,"publicFrontmatterFor");import{readdir as Dt,readFile as St,stat as vt}from"fs/promises";import{join as kt,relative as rt}from"path";async function ot(t,e,o){if(!Number.isFinite(e)||e<1)throw new Error("Concurrency must be a positive finite number");let n=new Array(t.length),r=0,s,l=Math.min(Math.floor(e),t.length);if(await Promise.all(Array.from({length:l},async()=>{for(;r<t.length&&s===void 0;){let c=r++;try{n[c]=await o(t[c],c)}catch(p){s??=p}}})),s)throw s;return n}u(ot,"mapConcurrent");var Ot=32;async function nt(t){async function e(r){let s=[],l=[r];for(;l.length>0;){let c=l.pop();if(!c)continue;let p=await Dt(c,{withFileTypes:!0});for(let i of p){let a=kt(c,i.name);if(i.isSymbolicLink())throw new Error(`Documentation content must not use symbolic links: ${rt(t,a)}`);i.isDirectory()?l.push(a):i.isFile()&&V(i.name)&&s.push(a)}}return s}u(e,"walk");let o=await e(t);return(await ot(o,Ot,async r=>{let[s,l]=await Promise.all([vt(r),St(r,"utf8")]);return{path:rt(t,r),raw:l,mtimeMs:s.mtimeMs}})).sort((r,s)=>r.path.localeCompare(s.path))}u(nt,"scanMarkdownFiles");function st(t){return t.split("-").filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}u(st,"humanize");function $(t){return I(C(t.relativePath,t.locale))}u($,"isLocaleHome");function Nt(t){return{type:"link",title:t.title||t.routePath,routePath:t.routePath}}u(Nt,"sidebarLink");function at(t){return C(t.relativePath,t.locale).split("/")}u(at,"pageSegments");function it(t){return at(t).slice(0,-1)}u(it,"pageDirectorySegments");function Tt(t){return I(at(t).at(-1)??"")}u(Tt,"isDirectoryIndex");function Ft(t){let e=new Map,o=new Map,n=new Map;for(let r of t)if(Tt(r)&&o.set(it(r).join("/"),r),r.group&&typeof r.frontmatter.group=="string"){let s=n.get(r.group);if(s&&s!==r.frontmatter.group)throw new Error(`Inconsistent group name for locale "${r.locale}" directory "${r.group}": "${s}" and "${r.frontmatter.group}"`);n.set(r.group,r.frontmatter.group)}for(let r of t){if($(r)||r.frontmatter.sidebar===!1)continue;let s=it(r),l=s[0]??"",c=o.get(l),p=l?typeof c?.frontmatter.group=="string"?c.frontmatter.group:c?.title||n.get(l)||st(l):"";if(typeof r.frontmatter.group=="string"&&r.frontmatter.group!==p)throw new Error(`Inconsistent group name for locale "${r.locale}" directory "${r.group}": "${p}" and "${r.frontmatter.group}"`);let i=e.get(l);if(!i)i={segment:l,title:p,items:[]},e.set(l,i);else if(i.title!==p)throw new Error(`Inconsistent group name for locale "${r.locale}" directory "${r.group}": "${i.title}" and "${p}"`);let a=i.items;for(let f=1;f<s.length;f+=1){let m=s[f];if(!m)continue;let g=s.slice(0,f+1).join("/"),h=o.get(g),w=f===1&&typeof r.frontmatter.subgroup=="string"?r.frontmatter.subgroup:void 0,y=(f===1&&typeof h?.frontmatter.subgroup=="string"?h.frontmatter.subgroup:void 0)??h?.title??w??st(m);if(w&&w!==y)throw new Error(`Inconsistent subgroup name for locale "${r.locale}" directory "${g}"`);let b=a.find(S=>S.type==="group"&&S.segment===m),x=b??{type:"group",segment:m,title:y,collapsed:h?.frontmatter.collapsed===!0,items:[]};b||a.push(x),a=x.items}a.push(Nt(r))}return[...e.values()]}u(Ft,"buildSidebar");function N(t){if(t.type==="link")return t;for(let e of t.items){let o=N(e);if(o)return o}}u(N,"firstSidebarLink");function At(t){return t.flatMap(e=>{let o=e.items[0]?N(e.items[0]):void 0;return e.title&&o?[{title:e.title,routePath:o.routePath}]:[]})}u(At,"buildAutomaticNav");function Gt(t,e){return!t.startsWith("/")||e.base==="/"?t:`${e.base}${t.replace(/^\//,"")}`}u(Gt,"versionedNavLink");function Mt(t,e){return t.map(o=>({title:o.text,routePath:Gt(o.link,e)}))}u(Mt,"buildConfiguredNav");function Lt(t,e){return t.map(o=>{if(!o.routePath.startsWith("/"))return o;let n=o.routePath.split("/").filter(Boolean),r=e.find(l=>l.segment&&n.at(-1)===l.segment&&n.length>0),s=r?.items[0]?N(r.items[0]):void 0;return s?{...o,routePath:s.routePath}:o})}u(Lt,"anchorConfiguredNavToSidebar");function Vt(t){let e=new Map;for(let o of t)for(let[n,r]of[["route",o.routePath],["output",o.outputPath],["markdown output",o.markdownOutputPath]]){let s=`${n}:${P(r)}`,l=e.get(s);if(l)throw new Error(`Duplicate ${n} target ${r} for ${l.sourceRelativePath} and ${o.sourceRelativePath}`);e.set(s,o)}}u(Vt,"assertUniquePageTargets");async function Ut(t,e,o,n){let r=H(t,o.docsDir,`versions.items[${o.id}].docsDir`),s=await nt(r),l=[];for(let c of s){let p=c.path.split(/[\\/]/);if(p[0]==="public")continue;let i=p[0]&&e.i18n.locales.includes(p[0])?p[0]:void 0,a=i??e.i18n.defaultLocale,f=i?p.slice(1):p;if(f.length===0)continue;let m=f.join("/"),g=Ct.join(o.docsDir.replace(/\\/g,"/"),c.path.replace(/\\/g,"/")),h=n?await n.transformSource({source:c.raw,sourceRelativePath:g,relativePath:c.path.replace(/\\/g,"/"),kind:U(c.path)?"mdx":"markdown",version:o.id,locale:a}):c.raw,w=It(h),y=et.parse(w.data),b=y.status??"published";if(b==="draft")continue;let x=jt(w.content),S=typeof y.order=="number"&&Number.isFinite(y.order)?y.order:Number.MAX_SAFE_INTEGER,xt=c.path.replace(/\\/g,"/"),L={sourcePath:Rt(r,c.path),transformedSource:h,sourceRelativePath:g,relativePath:xt,version:o.id,versionBase:o.base,docsDir:o.docsDir,locale:a,routePath:K(a,e.i18n.defaultLocale,m,o.base),outputPath:q(a,e.i18n.defaultLocale,m,o.base),markdownOutputPath:B(a,e.i18n.defaultLocale,m,o.base),title:typeof y.title=="string"?y.title:x.headings[0]?.text??"",description:typeof y.description=="string"?y.description:"",order:S,group:f.length>1?f[0]??"":"",status:b,search:y.search!==!1,ai:y.ai!==!1,body:w.content,headings:x.headings,searchText:x.text,codeExamples:x.codeExamples,lastUpdated:y.updatedAt??new Date(c.mtimeMs).toISOString(),frontmatter:y};l.push(n?await n.extendPage(L):L)}return l}u(Ut,"scanVersionPages");async function je(t,e,o){let n=[];for(let i of e.versions.items)for(let a of await Ut(t,e,i,o))n.push(a);let r=new Map(e.versions.items.map((i,a)=>[i.id,a])),s=new Map(e.i18n.locales.map((i,a)=>[i,a]));n.sort((i,a)=>{let f=(r.get(i.version)??0)-(r.get(a.version)??0);if(f!==0)return f;let m=(s.get(i.locale)??0)-(s.get(a.locale)??0);if(m!==0)return m;let g=$(i),h=$(a);return g!==h?g?-1:1:i.order!==a.order?i.order-a.order:i.routePath.localeCompare(a.routePath)}),Vt(n);for(let i of e.versions.items)for(let a of e.i18n.locales)if(!n.some(f=>f.version===i.id&&f.locale===a&&$(f)))throw new Error(`Missing published home page for version "${i.id}" locale "${a}"`);for(let i of e.versions.items)for(let a of e.i18n.locales){let f=n.filter(m=>m.version===i.id&&m.locale===a&&!$(m));f.forEach((m,g)=>{let h=f[g-1],w=f[g+1];h&&(m.previous={title:h.title||h.routePath,routePath:h.routePath}),w&&(m.next={title:w.title||w.routePath,routePath:w.routePath})})}let l={},c={};for(let i of e.versions.items){let a={},f={};l[i.id]=a,c[i.id]=f;for(let m of e.i18n.locales){let g=Ft(n.filter(h=>h.version===i.id&&h.locale===m));a[m]=g,f[m]=e.navigation[m]?Lt(Mt(e.navigation[m],i),g):At(g)}}let p=new Set(n.map(i=>i.routePath));for(let i of Object.values(c))for(let a of Object.values(i))for(let f of a)if(f.routePath.startsWith("/")&&!p.has(f.routePath))throw new Error(`Navigation target is not a generated page: "${f.routePath}"`);return{pages:n,sidebar:l,nav:c,locales:e.i18n.locales,defaultLocale:e.i18n.defaultLocale,versions:e.versions.items.map(i=>({...i})),currentVersion:e.versions.current}}u(je,"buildContentGraph");import{mkdir as Ht,writeFile as ct}from"fs/promises";import{dirname as _t,join as Jt}from"path";var zt={"&":"&","<":"<",">":">",'"':""","'":"'"};function T(t){return t.replace(/[&<>"']/g,e=>zt[e]??e)}u(T,"escapeHtml");function F(t){let e=t==="/"?"/":`${t.replace(/\/+$/,"")}/`;return W(e)}u(F,"normalizeRedirectRoute");function A(t,e){let o=new Set(e.pages.map(s=>F(s.routePath))),n=Object.entries(t.redirects).map(([s,l])=>[F(s),F(l)]),r=new Set(n.map(([s])=>s));for(let[s,l]of n){if(s==="/")throw new Error("Redirect source must not replace the site root");if(o.has(s))throw new Error(`Redirect source collides with a generated page: "${s}"`);if(r.has(l))throw new Error(`Redirect chains are not allowed: "${s}" points to redirect "${l}"`);if(!o.has(l))throw new Error(`Redirect target is not a published generated page: "${l}"`)}if(r.size!==n.length)throw new Error("Redirect sources must be unique after route normalization");return n}u(A,"resolveRedirects");async function Ve(t,e,o){let n=A(e,o);if(n.length===0)return;let r=_(t,e.outputDir);for(let[s,l]of n){let c=v(r,k(s),"redirect route"),p=Y(e,l),i=T(p),a=T(X(e,l)??p),f=JSON.stringify(p).replace(/</g,"\\u003c"),m=`<!doctype html><html><head><meta charset="utf-8"><meta name="robots" content="noindex"><link rel="canonical" href="${a}"><meta http-equiv="refresh" content="0;url=${i}"><script>location.replace(${f})</script></head><body><a href="${i}">Redirecting to ${i}</a></body></html>`;await Ht(_t(c),{recursive:!0}),await ct(c,m)}await ct(Jt(r,"redirects.json"),JSON.stringify(Object.fromEntries(n),null,2))}u(Ve,"writeRedirects");import{posix as ut}from"path";var Wt=new Set([".benchmark.json"]),Kt=["assets/docfuse-markdown","assets/docfuse-playground","assets/docfuse-plugins","assets/fonts","pagefind","ai/content","extensions"];function lt(t){let e=new Map;for(let o of t){let n=P(o),r=Kt.find(l=>n===l||n.startsWith(`${l}/`));if(r)throw new Error(`Generated output uses reserved directory "${r}": "${o}"`);let s=e.get(n);if(s)throw new Error(`Generated outputs overlap: "${s}" and "${o}"`);e.set(n,o)}for(let[o,n]of e){let r=ut.dirname(o);for(;r!==".";){let s=e.get(r);if(s)throw new Error(`Generated outputs overlap: "${s}" and "${n}"`);r=ut.dirname(r)}}}u(lt,"assertGeneratedOutputPlan");function pt(t,e){let o=[".benchmark.json","404.html","assets/docfuse.css","robots.txt","ai/pages.json","ai/manifest.json",...e.pages.flatMap(r=>[r.outputPath,r.markdownOutputPath])];if(t.search.enabled&&(o.push("assets/docfuse-search.js"),Q(t.search.provider)==="compact"))for(let r of e.versions)for(let s of e.locales)o.push(r.id===e.currentVersion?`search/${s}.json`:`search/${r.id}/${s}.json`);t.siteUrl&&o.push("sitemap.xml"),t.ai.pageSummaries&&o.push("ai/summaries.json"),t.ai.codeExamples&&o.push("ai/code-examples.json"),t.ai.markdownIndex&&o.push("ai/index.md"),t.ai.llmsTxt&&o.push("llms.txt"),t.ai.llmsFullTxt&&o.push("llms-full.txt");let n=A(t,e);if(n.length){o.push("redirects.json");for(let[r]of n)o.push(k(r))}return{paths:o,redirects:n}}u(pt,"plannedOutputPaths");function qe(t,e){let{paths:o}=pt(t,e);return lt(o),new Set(o)}u(qe,"generatedOutputPaths");function Be(t,e){let{paths:o,redirects:n}=pt(t,e);return lt(o),new Set([...o.filter(r=>!Wt.has(r)).map(r=>`/${r.split("/").map(encodeURIComponent).join("/")}`),...n.map(([r])=>r)])}u(Be,"generatedPublicPaths");import{randomUUID as Bt}from"crypto";import{mkdir as dt,readFile as Xt,rm as Yt,writeFile as gt}from"fs/promises";import{dirname as Qt,join as ht,posix as wt,resolve as Zt}from"path";import{pathToFileURL as te}from"url";import{build as ee}from"esbuild";import{createHash as ft}from"crypto";function G(t,e){if(t===null||typeof t=="boolean"||typeof t=="string")return t;if(typeof t=="number"){if(!Number.isFinite(t))throw new TypeError("Fingerprint values must contain only finite numbers");return t}if(typeof t!="object")throw new TypeError("Fingerprint values must be JSON-serializable");if(e.has(t))throw new TypeError("Fingerprint values must not be circular");let o=Object.getPrototypeOf(t);if(!Array.isArray(t)&&o!==Object.prototype&&o!==null)throw new TypeError("Fingerprint values must be JSON-serializable plain objects");e.add(t);try{if(Array.isArray(t)){if(Object.keys(t).length!==t.length)throw new TypeError("Fingerprint values must not contain sparse arrays");return t.map(r=>G(r,e))}let n=Object.entries(t).sort(([r],[s])=>r.localeCompare(s)).map(([r,s])=>[r,G(s,e)]);return Object.fromEntries(n)}finally{e.delete(t)}}u(G,"canonicalValue");function qt(t){return JSON.stringify(G(t,new WeakSet))}u(qt,"stableJson");function D(t){return ft("sha256").update(qt(t)).digest("hex")}u(D,"fingerprint");function M(t){return ft("sha256").update(t).digest("hex")}u(M,"fingerprintBytes");var oe=new Set(["apiVersion","name","outputs","transformSource","extendPage","generate"]),re=["pnpm-lock.yaml","package-lock.json","yarn.lock","bun.lock","bun.lockb"];function j(t){return t instanceof Error?t.message:String(t)}u(j,"errorMessage");function mt(t){return{sourceRelativePath:t.sourceRelativePath,relativePath:t.relativePath,version:t.version,locale:t.locale,routePath:t.routePath,title:t.title,description:t.description,status:t.status,search:t.search,ai:t.ai,body:t.body,searchText:t.searchText,frontmatter:structuredClone(t.frontmatter)}}u(mt,"extensionPage");function yt(t,e){if(!e||e.includes("\\")||e.startsWith("/")||e!==wt.normalize(e))throw new Error(`Extension "${t}" output must be a normalized relative POSIX path: "${e}"`);if(e.split("/").some(o=>o==="."||o===".."||!o))throw new Error(`Extension "${t}" output must not contain empty, . or .. segments: "${e}"`);return e}u(yt,"normalizeDeclaredOutput");function ne(t,e){if(!t||typeof t!="object")throw new Error(`Extension ${e.resolve} must export an extension object or factory`);let o=t,n=Object.keys(o).find(r=>!oe.has(r));if(n)throw new Error(`Extension ${e.resolve} has unknown key "${n}"`);if(o.apiVersion!==1)throw new Error(`Extension ${e.resolve} uses unsupported apiVersion ${String(o.apiVersion)}; expected ${1}`);if(typeof o.name!="string"||!/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/.test(o.name))throw new Error(`Extension ${e.resolve} name must be a lowercase portable slug`);for(let r of["transformSource","extendPage","generate"])if(o[r]!==void 0&&typeof o[r]!="function")throw new Error(`Extension "${o.name}" hook ${r} must be a function`);if(o.outputs!==void 0&&!Array.isArray(o.outputs))throw new Error(`Extension "${o.name}" outputs must be an array`);if(o.generate&&!o.outputs?.length)throw new Error(`Extension "${o.name}" with generate() must declare outputs`);if(!o.generate&&o.outputs?.length)throw new Error(`Extension "${o.name}" declares outputs without generate()`);return o}u(ne,"assertDefinition");function se(t,e){if(e===void 0)return{};if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`Extension "${t}" extendPage() must return an object or undefined`);let o=new Set(["title","description","searchText","search","ai"]),n=Object.keys(e).find(s=>!o.has(s));if(n)throw new Error(`Extension "${t}" extendPage() returned unknown key "${n}"`);let r=e;for(let s of["title","description","searchText"])if(r[s]!==void 0&&typeof r[s]!="string")throw new Error(`Extension "${t}" extendPage() field ${s} must be a string`);for(let s of["search","ai"])if(r[s]!==void 0&&typeof r[s]!="boolean")throw new Error(`Extension "${t}" extendPage() field ${s} must be a boolean`);return e}u(se,"assertPagePatch");async function ie(t){let e=[];for(let o of re){let n=ht(t,o);await R(n)&&e.push({path:o,fingerprint:M(await Xt(n))})}return D(e)}u(ie,"lockfileFingerprint");async function ae(t,e,o){let n=Zt(t,o.resolve);if(await J(t,n,`extension ${o.resolve}`),!await R(n))throw new Error(`Extension module not found: ${o.resolve}`);let s=(await ee({entryPoints:[n],bundle:!0,format:"esm",platform:"node",target:"node22",write:!1,sourcemap:"inline",plugins:[{name:"docfuse-extension-api",setup(c){c.onResolve({filter:/^docfuse$/},()=>({path:"docfuse-extension-api",namespace:"docfuse-extension-api"})),c.onLoad({filter:/.*/,namespace:"docfuse-extension-api"},()=>({loader:"js",contents:`
|
|
2
|
+
export const DOCFUSE_EXTENSION_API_VERSION = ${JSON.stringify(1)}
|
|
3
|
+
export const docfuseVersion = ${JSON.stringify(z)}
|
|
4
|
+
export const defineExtension = (factory) => factory
|
|
5
|
+
`}))}}]})).outputFiles[0];if(!s)throw new Error(`Failed to bundle extension ${o.resolve}`);await dt(e,{recursive:!0});let l=ht(e,`extension-${Bt()}.mjs`);await gt(l,s.contents);try{let p=(await import(`${te(l).href}?t=${Date.now()}`)).default,i=typeof p=="function"?await p(structuredClone(o.options??{})):p,a=ne(i,o),f=(a.outputs??[]).map(m=>yt(a.name,m));if(new Set(f.map(P)).size!==f.length)throw new Error(`Extension "${a.name}" declares duplicate portable output paths`);return{definition:a,declaredOutputs:new Set(f),fingerprint:D({descriptor:o,bundle:M(s.contents)})}}finally{await Yt(l,{force:!0})}}u(ae,"loadOneExtension");async function lo(t,e,o){let n=[];for(let c of o)try{n.push(await ae(t,e,c))}catch(p){throw new Error(`Failed to load extension ${c.resolve}: ${j(p)}`,{cause:p})}let r=new Set;for(let c of n){if(r.has(c.definition.name))throw new Error(`Duplicate extension name "${c.definition.name}"`);r.add(c.definition.name)}let s=n.length?await ie(t):D({lockfiles:[]}),l=n.flatMap(({definition:c,declaredOutputs:p})=>[...p].map(i=>`/extensions/${c.name}/${i.split("/").map(encodeURIComponent).join("/")}`));return{fingerprint:D({apiVersion:1,dependencyFingerprint:s,extensions:n.map(c=>({name:c.definition.name,fingerprint:c.fingerprint}))}),publicOutputPaths:l,async transformSource(c){let p=c.source;for(let{definition:i}of n)if(i.transformSource)try{let a=await i.transformSource({...c,source:p});if(typeof a!="string")throw new Error("transformSource() must return a string");p=a}catch(a){throw new Error(`Extension "${i.name}" transformSource failed for ${c.sourceRelativePath}: ${j(a)}`,{cause:a})}return p},async extendPage(c){let p=c;for(let{definition:i}of n)if(i.extendPage)try{let a=se(i.name,await i.extendPage(mt(p)));p={...p,...a}}catch(a){throw new Error(`Extension "${i.name}" extendPage failed for ${p.sourceRelativePath}: ${j(a)}`,{cause:a})}return p},async generate(c,p){for(let{definition:i,declaredOutputs:a}of n){if(!i.generate)continue;let f=new Set;try{await i.generate({pages:p.map(mt),emitFile:u(async(g,h)=>{let w=yt(i.name,g);if(!a.has(w))throw new Error(`generate() emitted undeclared output "${w}"`);if(f.has(w))throw new Error(`generate() emitted "${w}" more than once`);f.add(w);let y=v(c,wt.join("extensions",i.name,w),`extension ${i.name} output`);await dt(Qt(y),{recursive:!0}),await gt(y,h)},"emitFile")});let m=[...a].filter(g=>!f.has(g));if(m.length)throw new Error(`generate() did not emit declared outputs: ${m.join(", ")}`)}catch(m){throw new Error(`Extension "${i.name}" generate failed: ${j(m)}`,{cause:m})}}}}}u(lo,"loadExtensionHost");export{D as a,M as b,le as c,ot as d,je as e,T as f,Ve as g,Kt as h,qe as i,Be as j,lo as k};
|
|
6
|
+
//# sourceMappingURL=chunk-2AE3ZZMC.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as h}from"./chunk-
|
|
1
|
+
import{a as h}from"./chunk-ZDXO2HQK.js";import{d as a,e as E,f as d,g as u}from"./chunk-JK7ZNBUA.js";import{a as o}from"./chunk-AYDF3IFZ.js";import{randomUUID as b}from"crypto";import{mkdir as B,open as x,readFile as p,rename as S,rm as f,stat as k,writeFile as M}from"fs/promises";import{hostname as O}from"os";import{dirname as v,join as y}from"path";var w=600*1e3,A=Math.floor(w/3);function l(t){return typeof t=="string"&&t.length>0&&!t.startsWith("/")&&!t.includes("\\")&&t.split("/").every(e=>e!==""&&e!=="."&&e!=="..")}o(l,"isSafeOutputPath");function Q(t){return a(t,".docfuse/cache","build cache")}o(Q,"resolveBuildCacheRoot");function Y(t){return a(t,".docfuse/tmp","temporary build files")}o(Y,"resolveBuildTemporaryRoot");function P(t){return y(t,"build-manifest.json")}o(P,"manifestPath");function D(t){if(!t||typeof t!="object")return!1;let e=t;return typeof e.fingerprint=="string"&&l(e.outputPath)&&l(e.markdownOutputPath)&&Array.isArray(e.assetOutputPaths)&&e.assetOutputPaths.every(l)}o(D,"isPageState");function R(t){if(!t||typeof t!="object")return!1;let e=t;return typeof e.fingerprint=="string"&&Number.isSafeInteger(e.size)&&Number(e.size)>=0}o(R,"isOutputState");function j(t){if(!t||typeof t!="object")return!1;let e=t;return e.schemaVersion===3&&e.docfuseVersion===h&&typeof e.buildFingerprint=="string"&&typeof e.sharedFingerprint=="string"&&!!e.pages&&typeof e.pages=="object"&&Object.values(e.pages).every(D)&&!!e.outputs&&typeof e.outputs=="object"&&Object.keys(e.outputs).length>0&&Object.keys(e.outputs).every(l)&&Object.values(e.outputs).every(R)}o(j,"isBuildManifest");async function Z(t){try{let e=JSON.parse(await p(P(t),"utf8"));return j(e)?e:void 0}catch(e){if(e.code==="ENOENT"||e instanceof SyntaxError)return;throw e}}o(Z,"readBuildManifest");async function tt(t,e){await B(t,{recursive:!0});let n=P(t),i=y(t,`.build-manifest.${b()}.tmp`);try{await M(i,`${JSON.stringify(e,null,2)}
|
|
2
2
|
`,{flag:"wx",flush:!0});try{await S(i,n)}catch(r){let s=r.code;if(s!=="EEXIST"&&s!=="EPERM")throw r;await f(n,{force:!0}),await S(i,n)}}finally{await f(i,{force:!0})}}o(tt,"writeBuildManifest");function T(t){try{return process.kill(t,0),!0}catch(e){return e.code!=="ESRCH"}}o(T,"processIsAlive");function F(t,e,n=Date.now()){if(t.hostname===O()&&typeof t.pid=="number"&&Number.isSafeInteger(t.pid)&&t.pid>0&&!T(t.pid))return!0;let i=typeof t.updatedAt=="number"?t.updatedAt:typeof t.createdAt=="number"?t.createdAt:void 0,r=i===void 0?e:Math.max(i,e);return r===void 0||!Number.isFinite(r)||r>n+w||n-r>w}o(F,"lockIsStale");function J(t,e){return JSON.stringify({ownerId:t,pid:process.pid,hostname:O(),createdAt:e})}o(J,"lockContents");async function g(t){try{return JSON.parse(await p(t,"utf8"))}catch(e){if(e.code==="ENOENT")return;throw e}}o(g,"readBuildLock");async function m(t){let e=await x(t,"wx"),n=b(),i=Date.now();try{return await e.writeFile(J(n,i)),{handle:e,path:t,ownerId:n,createdAt:i}}catch(r){throw await e.close(),await f(t,{force:!0}),r}}o(m,"createBuildLock");async function N(t){(await g(t.path))?.ownerId===t.ownerId&&await f(t.path,{force:!0})}o(N,"releaseBuildLock");async function I(t){let e,n;try{let[r,s]=await Promise.all([p(t,"utf8"),k(t)]);e=r,n=s.mtimeMs}catch(r){if(r.code==="ENOENT")return!0;throw r}let i;try{i=F(JSON.parse(e),n)}catch{i=Date.now()-n>w}if(!i)return!1;try{let[r,s]=await Promise.all([p(t,"utf8"),k(t)]);return r!==e||s.mtimeMs!==n?!1:(await f(t),!0)}catch(r){if(r.code==="ENOENT")return!0;throw r}}o(I,"removeStaleLock");async function _(t){try{return await m(t)}catch(e){if(e.code!=="EEXIST")throw e;if(!await I(t))throw new Error("Another Docfuse build is already running for this project");try{return await m(t)}catch(n){throw n.code==="EEXIST"?new Error("Another Docfuse build is already running for this project"):n}}}o(_,"acquireBuildLock");async function C(t){let e=v(t);await B(e,{recursive:!0});let n=y(e,"build.lock"),i=await _(`${n}.reclaim`);try{try{return await m(n)}catch(r){if(r.code!=="EEXIST")throw r;if(!await I(n))throw new Error("Another Docfuse build is already running for this project");return await m(n)}}finally{await i.handle.close(),await N(i)}}o(C,"openBuildLock");async function $(t){if((await g(t.path))?.ownerId!==t.ownerId)return!1;let n=new Date;return await t.handle.utimes(n,n),!0}o($,"refreshBuildLock");async function V(t){if((await g(t.path))?.ownerId!==t.ownerId)throw new Error("Docfuse build lock ownership was lost during the build")}o(V,"assertBuildLockOwned");async function et(t,e){let n=await C(t),i,r=setInterval(()=>{$(n).then(s=>{s||(i=new Error("Docfuse build lock ownership was lost during the build"))}).catch(s=>{i=s})},A);r.unref();try{let s=o(()=>V(n),"assertOwned"),c=await e(s);if(i)throw i;return await s(),c}finally{clearInterval(r),await n.handle.close(),await N(n)}}o(et,"withBuildLock");async function ot(t,e,n){let i=E(t,e.outputDir);await d(t,i,"outputDir"),await d(t,n,"build cache"),await u(i,n,"build cache");for(let r of e.versions.items){let s=a(t,r.docsDir,`versions.items[${r.id}].docsDir`);await d(t,s,`versions.items[${r.id}].docsDir`),await u(i,s,`versions.items[${r.id}].docsDir`),await u(n,s,`versions.items[${r.id}].docsDir`,"build cache")}for(let[r,s]of e.styles.entries()){let c=a(t,s,`styles[${r}]`);await d(t,c,`styles[${r}]`),await u(i,c,`styles[${r}]`),await u(n,c,`styles[${r}]`,"build cache")}return i}o(ot,"resolveSafeOutputRoot");export{Q as a,Y as b,Z as c,tt as d,et as e,ot as f};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# sourceMappingURL=chunk-BH2JJ2IK.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import{a as H,b as B,c as yt,d as F,e as bt,f as _,g as wt,h as Pt,i as St,k as Et}from"./chunk-
|
|
1
|
+
import{a as H,b as B,c as yt,d as F,e as bt,f as _,g as wt,h as Pt,i as St,k as Et}from"./chunk-2AE3ZZMC.js";import{a as V,b as g,d as kt,e as vt}from"./chunk-GNYJERGG.js";import{a as xt,b as Dt,c as Mt,d as Ct,e as Nt,f as At}from"./chunk-BH2JJ2IK.js";import{a as ht,c as j,j as gt}from"./chunk-DOOG32NU.js";import{a as Z}from"./chunk-5NTRNUFG.js";import{a as q}from"./chunk-ZDXO2HQK.js";import{b as G}from"./chunk-EAYVCA3Z.js";import{a as X,b as O,c as ee,d as K,e as L,f as ft,h as T}from"./chunk-JK7ZNBUA.js";import{a as s}from"./chunk-AYDF3IFZ.js";import{randomUUID as Rn}from"crypto";import{mkdir as Ln,rename as Me,rm as me,writeFile as Tn}from"fs/promises";import{basename as ao,dirname as ct,join as lt,relative as $n,resolve as On}from"path";import{mkdir as Ee,open as co,rm as lo,writeFile as Ae}from"fs/promises";import{dirname as uo,join as $,posix as Tt}from"path";import{analyzeMarkdown as Rt}from"@docfuse/markdown/server/analyze";function Lt({description:e,body:t}){if(e.trim())return e.trim();let r=t.split(/\n\n+/).find(o=>{let a=o.trim();if(!a)return!1;let i=Rt(a);return i.text&&i.headings.length===0});return r?Rt(r.trim()).text:""}s(Lt,"createDeterministicSummary");var mo=1;function $t(e){return e.replace(/\r?\n/g," ").replace(/([\\[\]])/g,"\\$1")}s($t,"markdownLinkLabel");function Ot(e,t){let r=`${t.routePath}index.md`;return{title:t.title,description:t.description,routePath:g(e,t.routePath),markdownPath:g(e,r),version:t.version,locale:t.locale,status:t.status,tags:Array.isArray(t.frontmatter.tags)?t.frontmatter.tags.filter(o=>typeof o=="string"):[],owner:typeof t.frontmatter.owner=="string"?t.frontmatter.owner:void 0,headings:t.headings,lastUpdated:t.lastUpdated,frontmatter:yt(t.frontmatter)}}s(Ot,"pageMetadata");async function fe(e,t){await Ee(uo(e),{recursive:!0});let r=await co(e,"w");try{for await(let o of t)await r.write(o)}finally{await r.close()}}s(fe,"writePieces");async function Ne(e,t,r){async function*o(){yield`{"${t}":[`;let a=!0;for(let i of r)yield`${a?"":","}
|
|
2
2
|
${JSON.stringify(i,null,2)}`,a=!1;yield`${a?"":`
|
|
3
3
|
`}]}
|
|
4
4
|
`}s(o,"pieces"),await fe(e,o())}s(Ne,"writeJsonArray");function po(e,t){return t.pages.filter(r=>r.ai&&(e.ai.versions==="all"||r.version===t.currentVersion))}s(po,"selectedPages");function fo(e){if(e==='"'||e==="\\")return 2;let t=e.codePointAt(0)??0;return t===8||t===9||t===10||t===12||t===13?2:t<32?6:Buffer.byteLength(e)}s(fo,"jsonEscapedCharacterBytes");function ho(e,t,r){let o=Buffer.byteLength(JSON.stringify({...e,part:999999999,parts:999999999,content:""})+`
|
|
5
5
|
`),a=r-o;if(a<1)throw new Error(`AI chunkSizeBytes ${r} is too small for page metadata`);let i=[],c=0,n=0,d=0;for(let l of t){let m=fo(l);n>c&&d+m>a&&(i.push(t.slice(c,n)),c=n,d=0),n+=l.length,d+=m}i.push(t.slice(c,n));let u=i.map((l,m)=>({...e,part:m+1,parts:i.length,content:l}));for(let l of u)if(Buffer.byteLength(JSON.stringify(l)+`
|
|
6
|
-
`)>r)throw new Error(`Unable to keep AI content record within ${r} bytes: ${e.routePath}`);return u}s(ho,"splitContentRecord");async function go(e,t,r,o,a){let i=Tt.join("ai","content",r,o),c=[],n="",d=0;async function u(){if(!n)return;let l=`${String(c.length+1).padStart(4,"0")}.jsonl`,m=Tt.join(i,l),
|
|
6
|
+
`)>r)throw new Error(`Unable to keep AI content record within ${r} bytes: ${e.routePath}`);return u}s(ho,"splitContentRecord");async function go(e,t,r,o,a){let i=Tt.join("ai","content",r,o),c=[],n="",d=0;async function u(){if(!n)return;let l=`${String(c.length+1).padStart(4,"0")}.jsonl`,m=Tt.join(i,l),p=Buffer.byteLength(n);await Ae($(e,m),n),c.push({path:g(t,`/${m}`),bytes:p,records:d,fingerprint:B(Buffer.from(n))}),n="",d=0}s(u,"flush"),await Ee($(e,i),{recursive:!0});for(let l of a){let m=Ot(t,l),p={routePath:m.routePath,markdownPath:m.markdownPath,title:l.title,description:l.description,version:l.version,locale:l.locale};for(let w of ho(p,l.body,t.ai.chunkSizeBytes)){let h=JSON.stringify(w)+`
|
|
7
7
|
`;n&&Buffer.byteLength(n)+Buffer.byteLength(h)>t.ai.chunkSizeBytes&&await u(),n+=h,d+=1}}return await u(),c}s(go,"writePartition");function yo(e){let t=Buffer.byteLength(`
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
`);return e.reduce((r,o,a)=>r+Buffer.byteLength(o.body)+(a?t:0),0)}s(yo,"llmsFullBytes");async function Ft(e,t,r){let o=L(e,t.outputDir),a=$(o,"ai"),i=$(a,"content");await Ee(a,{recursive:!0}),await lo(i,{recursive:!0,force:!0});let c=po(t,r),n=c.map(
|
|
12
|
-
`)),t.ai.llmsTxt&&await fe($(o,"llms.txt"),n.map(
|
|
13
|
-
`));let l=yo(c),m="disabled";if(t.ai.llmsFullTxt)if(l<=t.ai.llmsFullMaxBytes){async function*
|
|
11
|
+
`);return e.reduce((r,o,a)=>r+Buffer.byteLength(o.body)+(a?t:0),0)}s(yo,"llmsFullBytes");async function Ft(e,t,r){let o=L(e,t.outputDir),a=$(o,"ai"),i=$(a,"content");await Ee(a,{recursive:!0}),await lo(i,{recursive:!0,force:!0});let c=po(t,r),n=c.map(p=>Ot(t,p)),d=new Map;for(let p of c){let w=`${p.version}\0${p.locale}`,h=d.get(w)??[];h.push(p),d.set(w,h)}let u=[];for(let[p,w]of d){let[h="",S=""]=p.split("\0"),D=await go(o,t,h,S,w);u.push({version:h,locale:S,pages:w.length,sourceBytes:w.reduce((b,f)=>b+Buffer.byteLength(f.body),0),shards:D})}if(await Ne($(a,"pages.json"),"pages",n),t.ai.pageSummaries&&await Ne($(a,"summaries.json"),"summaries",c.map(p=>({routePath:g(t,p.routePath),summary:Lt({description:p.description,body:p.body})}))),t.ai.codeExamples){function*p(){for(let w of c)for(let h of w.codeExamples)yield{routePath:g(t,w.routePath),...h}}s(p,"examples"),await Ne($(a,"code-examples.json"),"examples",p())}t.ai.markdownIndex&&await fe($(a,"index.md"),n.map(p=>`- [${$t(p.title||p.routePath)}](${p.markdownPath})
|
|
12
|
+
`)),t.ai.llmsTxt&&await fe($(o,"llms.txt"),n.map(p=>`- [${$t(p.title||p.routePath)}](${p.routePath})
|
|
13
|
+
`));let l=yo(c),m="disabled";if(t.ai.llmsFullTxt)if(l<=t.ai.llmsFullMaxBytes){async function*p(){for(let[w,h]of c.entries())w&&(yield`
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
`),yield h.body}s(
|
|
18
|
-
`)),m="manifest",Z(`llms-full.txt exceeded ${t.ai.llmsFullMaxBytes} bytes; wrote a bounded manifest pointer instead`)}await Ae($(a,"manifest.json"),JSON.stringify({schemaVersion:mo,currentVersion:r.currentVersion,includedVersions:t.ai.versions,totals:{pages:c.length,sourceBytes:c.reduce((
|
|
17
|
+
`),yield h.body}s(p,"bodies"),await fe($(o,"llms-full.txt"),p()),m="full"}else{if(t.ai.llmsFullOverflow==="error")throw new Error(`llms-full.txt requires ${l} bytes, exceeding ai.llmsFullMaxBytes ${t.ai.llmsFullMaxBytes}`);await Ae($(o,"llms-full.txt"),["# Docfuse AI content manifest","",`The full Markdown corpus requires ${l} bytes and exceeds the configured single-file budget of ${t.ai.llmsFullMaxBytes} bytes.`,"",`Use ${g(t,"/ai/manifest.json")} to load the complete versioned and locale-partitioned content shards.`,""].join(`
|
|
18
|
+
`)),m="manifest",Z(`llms-full.txt exceeded ${t.ai.llmsFullMaxBytes} bytes; wrote a bounded manifest pointer instead`)}await Ae($(a,"manifest.json"),JSON.stringify({schemaVersion:mo,currentVersion:r.currentVersion,includedVersions:t.ai.versions,totals:{pages:c.length,sourceBytes:c.reduce((p,w)=>p+Buffer.byteLength(w.body),0)},budgets:{chunkSizeBytes:t.ai.chunkSizeBytes,llmsFullMaxBytes:t.ai.llmsFullMaxBytes},llmsFull:{enabled:t.ai.llmsFullTxt,mode:m,sourceBytes:l,path:t.ai.llmsFullTxt?g(t,"/llms-full.txt"):null},partitions:u},null,2))}s(Ft,"writeAiOutputs");import{cp as tn,mkdir as Ze,rm as et,writeFile as xe}from"fs/promises";import{dirname as jr,join as W}from"path";import{renderToStaticMarkup as rn}from"react-dom/server";import{createMarkdownRenderer as on}from"@docfuse/markdown/server";import{detectMarkdownAssets as Hr}from"@docfuse/markdown/server/analyze";import{createRequire as bo}from"module";import{readFile as Bt}from"fs/promises";import{dirname as _t,join as Ut}from"path";var qt=bo(import.meta.url);function jt(e){return qt.resolve(e)}s(jt,"resolveFromModule");function Ht(e){try{return qt.resolve(e,{paths:[process.cwd()]})}catch(t){throw new Error(`Cannot resolve ${e} from ${process.cwd()}. Install @docfuse/plugins to include math styles.`,{cause:t})}}s(Ht,"resolveFromProject");async function wo(){return Bt(new URL("./styles.input.css",import.meta.url),"utf8")}s(wo,"readInputCss");function zt(){return Ut(_t(Ht("@docfuse/plugins/math.css")),"fonts")}s(zt,"mathFontsDir");function Gt(){return Ut(_t(jt("@docfuse/markdown/base.css")),"file-icons")}s(Gt,"markdownFileIconsDir");async function Re(e,t=!1){return Bt(t?Ht(e):jt(e),"utf8")}s(Re,"readPublishedCss");async function ko({math:e=!1}={}){let[t,r,o,a]=await Promise.all([wo(),Re("@docfuse/markdown/base.css"),Re("@docfuse/markdown/theme.css"),e?Re("@docfuse/plugins/math.css",!0):void 0]);return`/* Markdown base */
|
|
19
19
|
${r}
|
|
20
20
|
/* Default theme */
|
|
21
21
|
${o}
|
|
@@ -23,7 +23,7 @@ ${a?`/* Math */
|
|
|
23
23
|
${a}
|
|
24
24
|
`:""}/* Docfuse shell */
|
|
25
25
|
${t}
|
|
26
|
-
`}s(ko,"compileCss");var It=new Map;function Kt(e={}){let t=e.math===!0,r=It.get(t);return r||(r=ko({math:t}),It.set(t,r)),r}s(Kt,"buildCssCached");import{Bot as vo,Box as Po,Code2 as So,FileCode2 as xo,FileText as Do,Gauge as Mo,Globe2 as Co,Layers3 as No,Rocket as Ao,Search as Eo,Sparkles as Ro,SquareTerminal as Lo}from"lucide-react";import{Fragment as $o,jsx as A,jsxs as te}from"react/jsx-runtime";var To={ai:vo,box:Po,code:So,file:Do,"file-code":xo,gauge:Mo,globe:Co,layers:No,rocket:Ao,search:Eo,sparkles:Ro,terminal:Lo};function Vt({name:e,className:t}){if(!e)return null;let r=To[e];return A(r,{"aria-hidden":"true",className:t,strokeWidth:1.8})}s(Vt,"HomeIcon");function Wt({page:e,config:t}){let r=e.frontmatter.hero??{},o=e.frontmatter.features??[],a=r.actions??[];return te($o,{children:[te("section",{className:`df-hero${r.image?" df-hero-with-visual":""}`,children:[te("div",{className:"df-hero-copy",children:[A("h1",{className:"df-hero-title",children:e.title}),r.accent?A("p",{className:"df-hero-accent",children:r.accent}):null,r.tagline?A("p",{className:"df-hero-tagline",children:r.tagline}):null,a.length>0?A("div",{className:"df-hero-actions",children:a.map(i=>te("a",{className:`df-btn ${i.primary?"df-btn-primary":"df-btn-secondary"}`,href:g(t,i.link),children:[A(Vt,{name:i.icon}),i.text]},i.link))}):null]}),r.image?A("div",{className:"df-hero-visual",children:A("img",{src:g(t,r.image),alt:r.imageAlt??"",decoding:"async",fetchPriority:"high"})}):null]}),o.length>0?A("section",{className:"df-feature-section",children:A("div",{className:"df-features",children:o.map((i,c)=>te("article",{className:"df-feature",children:[i.image||i.icon?A("div",{className:"df-feature-icon",children:i.image?A("img",{src:g(t,i.image),alt:"",width:"32",height:"32",decoding:"async"}):A(Vt,{name:i.icon})}):null,A("h3",{children:i.title}),A("p",{children:i.details})]},`${i.title}-${c}`))})}):null]})}s(Wt,"HomeHero");import{ChevronDown as Go,Code2 as Ko,Eye as Vo}from"lucide-react";var Oo={labels:{skipToContent:"\u8DF3\u5230\u6B63\u6587",search:"\u641C\u7D22\u6587\u6863",searchEmpty:"\u6CA1\u6709\u627E\u5230\u5339\u914D\u6587\u6863",searchUnavailable:"\u641C\u7D22\u7D22\u5F15\u6682\u65F6\u4E0D\u53EF\u7528",language:"\u8BED\u8A00",primaryNavigation:"\u4E3B\u5BFC\u822A",theme:"\u5207\u6362\u4E3B\u9898",openSidebar:"\u6253\u5F00\u4FA7\u8FB9\u680F",onThisPage:"\u672C\u9875\u76EE\u5F55",edit:"\u7F16\u8F91\u6B64\u9875",updated:"\u6700\u540E\u66F4\u65B0",previous:"\u4E0A\u4E00\u9875",next:"\u4E0B\u4E00\u9875",close:"\u5173\u95ED",source:"\u6E90\u6587\u6863",preview:"\u9884\u89C8\u6548\u679C",copySource:"\u590D\u5236\u6E90\u6587\u6863",sourceCopied:"\u6E90\u6587\u6863\u5DF2\u590D\u5236",quickActions:"\u5FEB\u6377\u5165\u53E3",github:"GitHub \u4ED3\u5E93",docsNavigation:"\u6587\u6863\u5BFC\u822A",pageNavigation:"\u9875\u9762\u5BFC\u822A",advertisement:"\u63A8\u5E7F",version:"\u6587\u6863\u7248\u672C"},brandTagline:"\u9762\u5411 AI \u7684 React/MDX \u6587\u6863",markdownElementGroups:[{id:"headings",label:"\u6807\u9898\u4E0E\u6B63\u6587",detail:"H1-H6 \xB7 p \xB7 hr",hash:"\u6807\u9898\u4E0E\u6B63\u6587"},{id:"inline",label:"\u884C\u5185\u8BED\u4E49",detail:"a \xB7 strong \xB7 code",hash:"\u884C\u5185\u8BED\u4E49"},{id:"lists",label:"\u5217\u8868\u4E0E\u4EFB\u52A1",detail:"ul \xB7 ol \xB7 task",hash:"\u5217\u8868\u4E0E\u4EFB\u52A1"},{id:"callouts",label:"\u5F15\u7528\u4E0E\u63D0\u793A",detail:"quote \xB7 callout",hash:"\u5F15\u7528\u4E0E\u63D0\u793A"},{id:"code",label:"\u4EE3\u7801\u4E0E\u7EC8\u7AEF",detail:"Shiki \xB7 pre \xB7 diff",hash:"\u4EE3\u7801\u4E0E\u7EC8\u7AEF"},{id:"tables",label:"\u8868\u683C\u4E0E\u6570\u636E",detail:"table \xB7 CSV \xB7 sort",hash:"\u8868\u683C\u4E0E\u6570\u636E"},{id:"media",label:"\u5A92\u4F53\u4E0E\u5D4C\u5165",detail:"img \xB7 video \xB7 iframe",hash:"\u5A92\u4F53\u4E0E\u5D4C\u5165"},{id:"diagrams",label:"\u56FE\u8868\u4E0E\u6570\u5B66",detail:"Mermaid \xB7 PlantUML \xB7 KaTeX",hash:"\u56FE\u8868\u4E0E\u6570\u5B66"},{id:"disclosure",label:"\u6298\u53E0\u4E0E\u811A\u6CE8",detail:"details \xB7 footnotes",hash:"\u6298\u53E0\u4E0E\u811A\u6CE8"},{id:"extensions",label:"\u6269\u5C55\u5185\u5BB9\u7EC4\u4EF6",detail:"tabs \xB7 steps \xB7 cards \xB7 tree",hash:"\u6269\u5C55\u5185\u5BB9\u7EC4\u4EF6"},{id:"api",label:"API \u4E0E\u4FA7\u6CE8",detail:"API \xB7 aside",hash:"api-\u4E0E\u4FA7\u6CE8"},{id:"metadata",label:"\u6587\u6863\u5143\u4FE1\u606F",detail:"meta \xB7 breadcrumb \xB7 pagination",hash:"\u6587\u6863\u5143\u4FE1\u606F"}],quickActions:{headingsTitle:"\u6807\u9898 H1-H6",headingsDescription:"\u67E5\u770B\u5B8C\u6574\u6807\u9898\u5C42\u7EA7\u4E0E\u6B63\u6587\u8282\u594F",codeTitle:"\u4EE3\u7801\u4E0E\u8BED\u6CD5\u9AD8\u4EAE",codeDescription:"Shiki \u9AD8\u4EAE\u3001diff \u884C\u72B6\u6001\u4E0E\u590D\u5236",tableTitle:"\u8868\u683C\u4E0E\u6570\u636E\u64CD\u4F5C",tableDescription:"\u6392\u5E8F\u3001\u590D\u5236 CSV \u4E0E\u653E\u5927\u9884\u89C8",diagramTitle:"Mermaid\u3001PlantUML \u4E0E\u6570\u5B66\u516C\u5F0F",diagramDescription:"\u56FE\u8868\u9884\u89C8\u3001\u6E90\u7801\u4E0E\u7F29\u653E",sourceDescription:"\u6253\u5F00\u5F53\u524D\u9875\u9762\u7684 Markdown \u539F\u6587",themeDescription:"\u5728\u6D45\u8272\u4E0E\u6DF1\u8272\u9605\u8BFB\u6A21\u5F0F\u95F4\u5207\u6362"}},Fo={labels:{skipToContent:"Skip to content",search:"Search docs",searchEmpty:"No matching documents",searchUnavailable:"Search index is unavailable",language:"Language",primaryNavigation:"Primary navigation",theme:"Toggle theme",openSidebar:"Open sidebar",onThisPage:"On this page",edit:"Edit this page",updated:"Last updated",previous:"Previous",next:"Next",close:"Close",source:"Source",preview:"Preview",copySource:"Copy source",sourceCopied:"Markdown source copied",quickActions:"Quick actions",github:"GitHub repository",docsNavigation:"Docs navigation",pageNavigation:"Page navigation",advertisement:"Advertisement",version:"Documentation version"},brandTagline:"AI-friendly React/MDX documentation",markdownElementGroups:[{id:"headings",label:"Headings & prose",detail:"H1-H6 \xB7 p \xB7 hr",hash:"headings-and-prose"},{id:"inline",label:"Inline semantics",detail:"a \xB7 strong \xB7 code",hash:"inline-semantics"},{id:"lists",label:"Lists & tasks",detail:"ul \xB7 ol \xB7 task",hash:"lists-and-tasks"},{id:"callouts",label:"Quotes & callouts",detail:"quote \xB7 callout",hash:"quotes-and-callouts"},{id:"code",label:"Code & terminal",detail:"Shiki \xB7 pre \xB7 diff",hash:"code-and-terminal"},{id:"tables",label:"Tables & data",detail:"table \xB7 CSV \xB7 sort",hash:"tables-and-data"},{id:"media",label:"Media & embeds",detail:"img \xB7 video \xB7 iframe",hash:"media-and-embeds"},{id:"diagrams",label:"Diagrams & math",detail:"Mermaid \xB7 PlantUML \xB7 KaTeX",hash:"diagrams-and-math"},{id:"disclosure",label:"Disclosure & notes",detail:"details \xB7 footnotes",hash:"disclosure-and-notes"},{id:"extensions",label:"Extended components",detail:"tabs \xB7 steps \xB7 cards \xB7 tree",hash:"extended-content-components"},{id:"api",label:"API & sidenote",detail:"API \xB7 aside",hash:"api-and-sidenote"},{id:"metadata",label:"Document metadata",detail:"meta \xB7 breadcrumb \xB7 pagination",hash:"document-metadata"}],quickActions:{headingsTitle:"Headings H1-H6",headingsDescription:"Inspect the complete heading scale and prose rhythm",codeTitle:"Code and syntax highlighting",codeDescription:"Shiki highlighting, diff line states, and copy",tableTitle:"Tables and data actions",tableDescription:"Sort, copy CSV, and zoom",diagramTitle:"Mermaid, PlantUML, and math",diagramDescription:"Diagram preview, source, and scale",sourceDescription:"Open the current page Markdown source",themeDescription:"Switch between light and dark reading modes"}},Io={copyCode:"\u590D\u5236\u4EE3\u7801",copyFailed:"\u590D\u5236\u5931\u8D25",copySnippet:"\u590D\u5236\u7247\u6BB5",copyTerminal:"\u590D\u5236\u7EC8\u7AEF\u8F93\u51FA",terminalTitle:"\u7EC8\u7AEF",tabsTitle:"\u9009\u9879\u5361",tabItem:"\u9009\u9879 {index}",codeGroupTitle:"\u4EE3\u7801\u7EC4",codeGroupItem:"\u4EE3\u7801 {index}",taskCompleted:"\u5DF2\u5B8C\u6210\u4EFB\u52A1",taskIncomplete:"\u672A\u5B8C\u6210\u4EFB\u52A1",copySectionLink:"\u590D\u5236\u7AE0\u8282\u94FE\u63A5",tableTitle:"\u8868\u683C",copyTableCsv:"\u590D\u5236\u4E3A CSV",downloadTableCsv:"\u4E0B\u8F7D CSV",zoomTable:"\u653E\u5927\u8868\u683C",closeTablePreview:"\u5173\u95ED\u8868\u683C\u9884\u89C8",sortTableColumn:"\u6309\u7B2C {column} \u5217\u6392\u5E8F",zoomImage:"\u653E\u5927\u56FE\u7247",closeImagePreview:"\u5173\u95ED\u56FE\u7247\u9884\u89C8",imageGallery:"\u56FE\u7247\u753B\u5ECA",closeImageGallery:"\u5173\u95ED\u56FE\u7247\u753B\u5ECA",previousGalleryImage:"\u4E0A\u4E00\u5F20\u56FE\u7247",nextGalleryImage:"\u4E0B\u4E00\u5F20\u56FE\u7247",galleryThumbnails:"\u56FE\u7247\u753B\u5ECA\u7F29\u7565\u56FE",galleryImage:"\u56FE\u7247"},Jt={zh:{title:"\u9875\u9762\u672A\u627E\u5230",description:"\u8BE5\u9875\u9762\u4E0D\u5B58\u5728\u3001\u5DF2\u88AB\u79FB\u52A8\u6216\u5730\u5740\u6709\u8BEF\u3002",home:"\u8FD4\u56DE\u9996\u9875 \u2192"},en:{title:"Page not found",description:"The page you're looking for doesn't exist or has been moved.",home:"Go back home \u2192"}};function he(e){return e.toLowerCase().split("-")[0]??e.toLowerCase()}s(he,"languageCode");function Xt(e,t){if(!e)return;let r=t.toLowerCase();return Object.entries(e).find(([o])=>o.toLowerCase()===r)?.[1]}s(Xt,"localizedValue");function Le(e,t){return Xt(t,e)}s(Le,"localeMessagesFor");function Yt(e,t){let r=he(e)==="zh"?Oo:Fo,o=Le(e,t);return{labels:{...r.labels,...o?.labels},brandTagline:o?.brandTagline??r.brandTagline,markdownElementGroups:r.markdownElementGroups.map(a=>({...a,...o?.markdownElementGroups?.[a.id]})),quickActions:{...r.quickActions,...o?.quickActions}}}s(Yt,"layoutContentFor");function ge(e,t){let r=Le(e,t)?.markdown,o=he(e)==="zh"?Io:void 0;if(!(!o&&!r))return{...o,...r}}s(ge,"markdownLabelsFor");function Te(e,t){return{...he(e)==="zh"?Jt.zh:Jt.en,...Le(e,t)?.notFound}}s(Te,"notFoundContentFor");function Qt(e,t){let r=Xt(t,e);if(r)return r;let o=he(e);if(o==="zh")return"\u7B80\u4F53\u4E2D\u6587";if(o==="en")return"English";try{return new Intl.DisplayNames([e],{type:"language"}).of(e)??e}catch{return e}}s(Qt,"localeNameFor");var ye="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='7' fill='%230088FF'/%3E%3Cpath d='M9 7h10l4 4v14H9z' fill='none' stroke='white' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M19 7v5h5' fill='none' stroke='white' stroke-width='2'/%3E%3Ccircle cx='21' cy='22' r='5' fill='%230088FF' stroke='white' stroke-width='2'/%3E%3C/svg%3E";import{ChevronDown as Zt,Languages as Bo,Moon as _o,PanelLeft as Uo,Search as qo,Sun as jo}from"lucide-react";import{Fragment as tr,jsx as y,jsxs as M}from"react/jsx-runtime";function Ho(){return M("svg",{className:"df-brand-mark",width:"32",height:"32",viewBox:"0 0 512 512","aria-hidden":"true",children:[M("defs",{children:[M("linearGradient",{id:"df-brand-top",x1:"80",y1:"70",x2:"430",y2:"245",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#1768FF"}),y("stop",{offset:"0.48",stopColor:"#119BFA"}),y("stop",{offset:"1",stopColor:"#18D8D3"})]}),M("linearGradient",{id:"df-brand-mid",x1:"215",y1:"255",x2:"440",y2:"245",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#2C7BFF"}),y("stop",{offset:"1",stopColor:"#1768F4"})]}),M("linearGradient",{id:"df-brand-bottom",x1:"215",y1:"292",x2:"92",y2:"445",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#554FF5"}),y("stop",{offset:"0.62",stopColor:"#7845FA"}),y("stop",{offset:"1",stopColor:"#8637F5"})]}),M("mask",{id:"df-brand-spark-cut",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"512",height:"512",children:[y("rect",{width:"512",height:"512",fill:"#fff"}),y("path",{d:"M220 245C225 273 247 295 275 300C247 305 225 327 220 355C215 327 193 305 165 300C193 295 215 273 220 245Z",fill:"#000"})]})]}),M("g",{mask:"url(#df-brand-spark-cut)",fill:"none",strokeLinejoin:"round",children:[y("path",{d:"M173 321C128 321 101 296 101 255V159C101 112 134 79 181 79H242C322 79 383 120 420 184",stroke:"url(#df-brand-top)",strokeWidth:"82",strokeLinecap:"round"}),y("path",{d:"M213 286C241 247 279 225 327 225H427",stroke:"url(#df-brand-mid)",strokeWidth:"70",strokeLinecap:"round"}),y("path",{d:"M220 296C248 333 238 371 207 402C176 433 137 444 101 444",stroke:"url(#df-brand-bottom)",strokeWidth:"72",strokeLinecap:"round"})]})]})}s(Ho,"BrandMark");function $e({size:e=16}){return y(qo,{size:e,strokeWidth:2,"aria-hidden":"true"})}s($e,"SearchIcon");function zo(){return M(tr,{children:[y(jo,{className:"df-icon-sun",size:18,strokeWidth:2,"aria-hidden":"true"}),y(_o,{className:"df-icon-moon",size:18,strokeWidth:2,"aria-hidden":"true"})]})}s(zo,"ThemeIcon");function Oe(e,t){let r=t.split("/").filter(Boolean);return t.startsWith("/")&&(e.page.routePath===t||e.page.routePath.startsWith(t)||e.page.group!==""&&r.includes(e.page.group))}s(Oe,"navItemIsActive");function er({model:e}){let{config:t,page:r,home:o,labels:a,localeRoot:i,navItems:c,versionLabel:n,versionOptions:d,languageOptions:u,hasSidebarItems:l}=e;return M("header",{className:o?"df-header df-header-home":"df-header",children:[M("div",{className:"df-header-inner",children:[!o&&l?y("button",{className:"df-sidebar-toggle",type:"button","data-docfuse-sidebar-open":"","data-docfuse-sidebar-open-label":a.openSidebar,"data-docfuse-sidebar-close-label":a.close,"aria-label":a.openSidebar,"aria-expanded":"false",children:y(Uo,{size:18,strokeWidth:2,"aria-hidden":"true"})}):null,y("a",{className:"df-brand",href:i,"aria-label":t.title,children:t.theme.logo?M(tr,{children:[y("img",{className:t.theme.logoDark?"df-brand-logo df-brand-logo-light":"df-brand-logo",src:g(t,t.theme.logo),alt:t.title}),t.theme.logoDark?y("img",{className:"df-brand-logo df-brand-logo-dark",src:g(t,t.theme.logoDark),alt:t.title}):null]}):y(Ho,{})}),t.search.enabled?M("button",{className:"df-search-trigger",type:"button","data-docfuse-search-open":"","aria-haspopup":"dialog","aria-label":a.search,children:[y($e,{size:15}),y("span",{children:a.search}),y("kbd",{className:"df-kbd",children:"\u2318K"})]}):null,M("div",{className:"df-header-right",children:[c.length>0?y("nav",{className:"df-header-nav","aria-label":a.primaryNavigation,children:c.map(m=>{let f=Oe(e,m.routePath),b=/^https?:\/\//.test(m.routePath);return y("a",{className:f?"df-header-link df-header-link-active":"df-header-link",href:g(t,m.routePath),"aria-current":f?"page":void 0,...b?{target:"_blank",rel:"noreferrer"}:{},children:m.title},m.routePath)})}):null,d.length>1?M("details",{className:"df-menu df-version-menu","data-docfuse-menu":"",children:[M("summary",{className:"df-version-badge","aria-label":a.version,children:[y("span",{children:n}),y(Zt,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),y("div",{className:"df-menu-list",children:d.map(m=>y("a",{className:m.id===r.version?"df-menu-item df-menu-item-active":"df-menu-item",href:g(t,m.routePath),children:y("span",{children:m.label})},m.id))})]}):y("span",{className:"df-version-badge",children:n}),u.length>1?M("details",{className:"df-menu df-lang","data-docfuse-menu":"",children:[M("summary",{className:"df-icon-button df-lang-trigger","aria-label":a.language,children:[y(Bo,{size:19,strokeWidth:1.9,"aria-hidden":"true"}),y(Zt,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),y("div",{className:"df-menu-list df-language-menu-list",children:u.map(m=>y("a",{className:m.locale===r.locale?"df-menu-item df-language-menu-item df-menu-item-active":"df-menu-item df-language-menu-item",href:g(t,m.routePath),lang:m.locale,"aria-current":m.locale===r.locale?"page":void 0,children:Qt(m.locale,t.i18n.localeNames)},m.locale))})]}):null,t.theme.darkMode?y("button",{className:"df-icon-button",type:"button","data-docfuse-theme-toggle":"","aria-label":a.theme,children:y(zo,{})}):null,t.github?y("a",{className:"df-icon-button df-github-link",href:t.github,target:"_blank",rel:"noreferrer","aria-label":a.github,children:y("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:y("path",{d:"M12 2C6.48 2 2 6.58 2 12.25c0 4.53 2.87 8.37 6.84 9.73.5.1.68-.22.68-.49 0-.24-.01-.87-.01-1.71-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.62.07-.62 1 .07 1.53 1.06 1.53 1.06.89 1.56 2.34 1.11 2.91.85.09-.66.35-1.11.63-1.37-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.03 1.03-2.75-.1-.26-.45-1.3.1-2.71 0 0 .84-.27 2.75 1.05a9.36 9.36 0 0 1 5 0c1.91-1.32 2.75-1.05 2.75-1.05.55 1.41.2 2.45.1 2.71.64.72 1.03 1.63 1.03 2.75 0 3.94-2.34 4.81-4.57 5.06.36.32.68.94.68 1.9 0 1.37-.01 2.47-.01 2.81 0 .27.18.6.69.49A10.26 10.26 0 0 0 22 12.25C22 6.58 17.52 2 12 2z"})})}):null]})]}),o?null:y("div",{className:"df-progress","aria-hidden":"true",children:y("span",{"data-docfuse-progress":""})})]})}s(er,"LayoutHeader");import{jsx as w,jsxs as C}from"react/jsx-runtime";function or(e,t){return e.type==="link"?e.routePath===t:e.items.some(r=>or(r,t))}s(or,"sidebarContainsRoute");function rr(e){return{"--df-sidebar-indent":`${Math.min(e,4)*10}px`}}s(rr,"sidebarDepthStyle");function ar({item:e,model:t,depth:r=0}){let o={"data-depth":r,style:rr(r)};if(e.type==="link"){let i=e.routePath===t.page.routePath;return w("a",{...o,className:i?"df-sidebar-link df-sidebar-link-active":"df-sidebar-link",href:g(t.config,e.routePath),"aria-current":i?"page":void 0,"data-docfuse-sidebar-link":"",children:e.title})}let a=or(e,t.page.routePath);return C("details",{className:"df-sidebar-subgroup",open:a||!e.collapsed,"data-depth":r,children:[C("summary",{className:"df-sidebar-subgroup-title",style:rr(r),children:[e.title,w(Go,{className:"df-chevron",size:12,strokeWidth:2.5,"aria-hidden":"true"})]}),w("div",{className:"df-sidebar-subgroup-items",children:e.items.map((i,c)=>w(ar,{item:i,model:t,depth:r+1},i.type==="link"?i.routePath:i.segment||c))})]})}s(ar,"SidebarEntry");function nr({model:e}){let{config:t,labels:r,navItems:o,sidebarGroups:a}=e,i=[e.page.version,e.page.locale,e.page.group].join(":");return C("aside",{className:"df-sidebar","data-docfuse-sidebar":"","data-docfuse-sidebar-key":i,children:[o.length>0?w("nav",{className:"df-sidebar-primary-nav","aria-label":r.primaryNavigation,children:o.map(c=>{let n=Oe(e,c.routePath),d=/^https?:\/\//.test(c.routePath);return w("a",{className:n?"df-sidebar-primary-link df-sidebar-primary-link-active":"df-sidebar-primary-link",href:g(t,c.routePath),"aria-current":n?"page":void 0,"data-docfuse-sidebar-link":"",...d?{target:"_blank",rel:"noreferrer"}:{},children:c.title},c.routePath)})}):null,w("nav",{className:"df-sidebar-nav","aria-label":r.docsNavigation,children:a.map((c,n)=>w("div",{className:"df-sidebar-items df-sidebar-root",children:c.items.map((d,u)=>w(ar,{item:d,model:e,depth:0},d.type==="link"?d.routePath:d.segment||u))},c.segment||n))})]})}s(nr,"Sidebar");function Wo({model:e}){let{editHref:t,labels:r,page:o}=e,a=new Intl.DateTimeFormat(o.locale,{dateStyle:"medium"}).format(new Date(o.lastUpdated));return C("footer",{className:"df-page-footer",children:[C("div",{className:"df-page-meta",children:[C("div",{className:"df-page-meta-actions",children:[t?w("a",{href:t,children:r.edit}):null,w("button",{className:"df-page-source",type:"button","data-docfuse-source-open":"","aria-haspopup":"dialog",children:r.source})]}),C("span",{children:[r.updated," ",a]})]}),C("nav",{className:"df-doc-pagination","aria-label":r.pageNavigation,children:[o.previous?C("a",{className:"df-doc-pagination-link",href:g(e.config,o.previous.routePath),children:[w("span",{className:"df-doc-pagination-label",children:r.previous}),w("strong",{className:"df-doc-pagination-title",children:o.previous.title})]}):w("span",{}),o.next?C("a",{className:"df-doc-pagination-link df-doc-pagination-link-next",href:g(e.config,o.next.routePath),children:[w("span",{className:"df-doc-pagination-label",children:r.next}),w("strong",{className:"df-doc-pagination-title",children:o.next.title})]}):null]})]})}s(Wo,"PageFooter");function Jo({model:e}){let{config:t,labels:r,outlineHeadings:o}=e,a=t.advertising;return C("aside",{className:"df-outline","data-docfuse-outline":"","aria-label":r.onThisPage,children:[o.length>0?w("nav",{className:"df-outline-nav",children:o.map(i=>w("a",{className:`df-outline-link df-outline-link-${i.level}`,"data-docfuse-outline-link":"",href:`#${i.slug}`,children:i.text},i.slug))}):null,a?C("a",{className:"df-outline-ad",href:g(t,a.href),target:"_blank",rel:"sponsored noopener noreferrer","aria-label":a.alt,children:[w("span",{children:a.label??r.advertisement}),w("img",{src:g(t,a.image),alt:a.alt,loading:"lazy"})]}):null]})}s(Jo,"Outline");function Xo({model:e,children:t}){let{config:r,labels:o,page:a}=e,i=a.body.trim(),c={...ge(a.locale,r.i18n.messages),...r.markdown.labels};return C("div",{className:"df-shell df-shell-playground",children:[w("div",{className:"df-sidebar-backdrop","data-docfuse-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),w(nr,{model:e}),w("main",{id:"docfuse-main",className:"df-main df-playground-main",tabIndex:-1,"data-pagefind-body":a.search?"":void 0,children:C("div",{className:"df-playground","data-docfuse-playground":"","data-docfuse-playground-labels":JSON.stringify(c),"data-docfuse-playground-preview-label":o.preview,"data-view":"preview",children:[C("button",{className:"df-playground-toggle",type:"button","data-docfuse-playground-toggle":"","data-source-label":o.source,"data-preview-label":o.preview,"aria-label":o.source,title:o.source,children:[w(Ko,{className:"df-playground-toggle-source",size:18,strokeWidth:2,"aria-hidden":"true"}),w(Vo,{className:"df-playground-toggle-preview",size:18,strokeWidth:2,"aria-hidden":"true"})]}),w("section",{className:"df-playground-pane df-playground-source","aria-label":o.source,"data-pagefind-ignore":"",children:w("textarea",{defaultValue:i,"aria-label":o.source,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-docfuse-playground-source":""})}),w("div",{className:"df-playground-resizer",role:"separator","aria-label":`${o.source} / ${o.preview}`,"aria-orientation":"vertical","aria-valuemin":25,"aria-valuemax":75,"aria-valuenow":45,tabIndex:0,"data-docfuse-playground-resizer":""}),w("section",{className:"df-playground-pane df-playground-preview","aria-label":o.preview,children:w("div",{className:"df-playground-preview-scroll","data-docfuse-playground-preview":"",children:t})})]})})]})}s(Xo,"Playground");function sr({model:e,children:t}){return e.page.frontmatter.layout==="playground"?w(Xo,{model:e,children:t}):C("div",{className:"df-shell",children:[w("div",{className:"df-sidebar-backdrop","data-docfuse-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),w(nr,{model:e}),C("main",{id:"docfuse-main",className:"df-main",tabIndex:-1,"data-pagefind-body":e.page.search?"":void 0,children:[t,w(Wo,{model:e})]}),w(Jo,{model:e})]})}s(sr,"LayoutDocument");function be(e){return ht(e.relativePath,e.locale)}s(be,"subPath");function re(e,t){let r=e.find(o=>o.id===t);if(!r)throw new Error(`Missing Markdown element group: ${t}`);return r.hash}s(re,"markdownGroupHash");function ir({config:e,graph:t,page:r,home:o,assets:a,rawSource:i}){let c=t.pages.filter(p=>p.version===r.version&&be(p)===be(r)),n=t.locales.map(p=>{let P=c.find(x=>x.locale===p);return{locale:p,routePath:P?.routePath??j(p,t.defaultLocale,r.versionBase)}}),d=t.versions.map(p=>{let P=t.pages.find(x=>x.version===p.id&&x.locale===r.locale&&be(x)===be(r));return{id:p.id,label:p.label,routePath:P?.routePath??j(r.locale,t.defaultLocale,p.base)}}),u=t.sidebar[r.version]?.[r.locale]??[],l=Yt(r.locale,e.i18n.messages),m=j(r.locale,t.defaultLocale,r.versionBase),f=`${m}markdown/playground/`,b=t.pages.some(p=>p.locale===r.locale&&p.routePath===f),h=s(p=>p.type==="link"?p.routePath===r.routePath:p.items.some(h),"isActiveItem"),S=s(p=>p.items.some(h),"isActiveGroup"),D=u.filter(p=>p.title===""||p.segment===r.group||S(p));return{config:e,page:r,home:o,assets:a,title:r.title&&r.title!==e.title?`${r.title} | ${e.title}`:e.title,description:r.description||e.description,...e.editUrl&&r.version===t.currentVersion?{editHref:`${e.editUrl.replace(/\/$/,"")}/${r.relativePath}`}:{},alternatePages:c,languageOptions:n,versionOptions:d,navItems:t.nav[r.version]?.[r.locale]??[],content:l,labels:l.labels,brandTagline:e.i18n.messages?.[r.locale]?.brandTagline||e.description||l.brandTagline,versionLabel:t.versions.length===1&&r.version==="current"?`v${q}`:t.versions.find(p=>p.id===r.version)?.label??r.version,localeRoot:g(e,m),markdownShowcaseHref:g(e,f),hasMarkdownShowcase:b,sidebarGroups:D,hasSidebarItems:D.some(p=>p.items.length>0),outlineHeadings:r.headings.filter(p=>p.level>=1&&p.level<=6),searchProvider:kt(e.search.provider),searchIndexUrl:r.version===t.currentVersion?g(e,`/search/${r.locale}.json`):g(e,`/search/${r.version}/${r.locale}.json`),searchBundleUrl:g(e,"/pagefind/pagefind.js"),markdownClientScript:`window.__docfuseEnhanceMarkdown = async (target) => {
|
|
26
|
+
`}s(ko,"compileCss");var It=new Map;function Kt(e={}){let t=e.math===!0,r=It.get(t);return r||(r=ko({math:t}),It.set(t,r)),r}s(Kt,"buildCssCached");import{Bot as vo,Box as Po,Code2 as So,FileCode2 as xo,FileText as Do,Gauge as Mo,Globe2 as Co,Layers3 as No,Rocket as Ao,Search as Eo,Sparkles as Ro,SquareTerminal as Lo}from"lucide-react";import{Fragment as $o,jsx as E,jsxs as te}from"react/jsx-runtime";var To={ai:vo,box:Po,code:So,file:Do,"file-code":xo,gauge:Mo,globe:Co,layers:No,rocket:Ao,search:Eo,sparkles:Ro,terminal:Lo};function Vt({name:e,className:t}){if(!e)return null;let r=To[e];return E(r,{"aria-hidden":"true",className:t,strokeWidth:1.8})}s(Vt,"HomeIcon");function Wt({page:e,config:t}){let r=e.frontmatter.hero??{},o=e.frontmatter.features??[],a=r.actions??[];return te($o,{children:[te("section",{className:`df-hero${r.image?" df-hero-with-visual":""}`,children:[te("div",{className:"df-hero-copy",children:[E("h1",{className:"df-hero-title",children:e.title}),r.accent?E("p",{className:"df-hero-accent",children:r.accent}):null,r.tagline?E("p",{className:"df-hero-tagline",children:r.tagline}):null,a.length>0?E("div",{className:"df-hero-actions",children:a.map(i=>te("a",{className:`df-btn ${i.primary?"df-btn-primary":"df-btn-secondary"}`,href:g(t,i.link),children:[E(Vt,{name:i.icon}),i.text]},i.link))}):null]}),r.image?E("div",{className:"df-hero-visual",children:E("img",{src:g(t,r.image),alt:r.imageAlt??"",decoding:"async",fetchPriority:"high"})}):null]}),o.length>0?E("section",{className:"df-feature-section",children:E("div",{className:"df-features",children:o.map((i,c)=>te("article",{className:"df-feature",children:[i.image||i.icon?E("div",{className:"df-feature-icon",children:i.image?E("img",{src:g(t,i.image),alt:"",width:"32",height:"32",decoding:"async"}):E(Vt,{name:i.icon})}):null,E("h3",{children:i.title}),E("p",{children:i.details})]},`${i.title}-${c}`))})}):null]})}s(Wt,"HomeHero");import{ChevronDown as Go,Code2 as Ko,Eye as Vo}from"lucide-react";var Oo={labels:{skipToContent:"\u8DF3\u5230\u6B63\u6587",search:"\u641C\u7D22\u6587\u6863",searchEmpty:"\u6CA1\u6709\u627E\u5230\u5339\u914D\u6587\u6863",searchUnavailable:"\u641C\u7D22\u7D22\u5F15\u6682\u65F6\u4E0D\u53EF\u7528",language:"\u8BED\u8A00",primaryNavigation:"\u4E3B\u5BFC\u822A",theme:"\u5207\u6362\u4E3B\u9898",openSidebar:"\u6253\u5F00\u4FA7\u8FB9\u680F",onThisPage:"\u672C\u9875\u76EE\u5F55",edit:"\u7F16\u8F91\u6B64\u9875",updated:"\u6700\u540E\u66F4\u65B0",previous:"\u4E0A\u4E00\u9875",next:"\u4E0B\u4E00\u9875",close:"\u5173\u95ED",source:"\u6E90\u6587\u6863",preview:"\u9884\u89C8\u6548\u679C",copySource:"\u590D\u5236\u6E90\u6587\u6863",sourceCopied:"\u6E90\u6587\u6863\u5DF2\u590D\u5236",quickActions:"\u5FEB\u6377\u5165\u53E3",github:"GitHub \u4ED3\u5E93",docsNavigation:"\u6587\u6863\u5BFC\u822A",pageNavigation:"\u9875\u9762\u5BFC\u822A",advertisement:"\u63A8\u5E7F",version:"\u6587\u6863\u7248\u672C"},brandTagline:"\u9762\u5411 AI \u7684 React/MDX \u6587\u6863",markdownElementGroups:[{id:"headings",label:"\u6807\u9898\u4E0E\u6B63\u6587",detail:"H1-H6 \xB7 p \xB7 hr",hash:"\u6807\u9898\u4E0E\u6B63\u6587"},{id:"inline",label:"\u884C\u5185\u8BED\u4E49",detail:"a \xB7 strong \xB7 code",hash:"\u884C\u5185\u8BED\u4E49"},{id:"lists",label:"\u5217\u8868\u4E0E\u4EFB\u52A1",detail:"ul \xB7 ol \xB7 task",hash:"\u5217\u8868\u4E0E\u4EFB\u52A1"},{id:"callouts",label:"\u5F15\u7528\u4E0E\u63D0\u793A",detail:"quote \xB7 callout",hash:"\u5F15\u7528\u4E0E\u63D0\u793A"},{id:"code",label:"\u4EE3\u7801\u4E0E\u7EC8\u7AEF",detail:"Shiki \xB7 pre \xB7 diff",hash:"\u4EE3\u7801\u4E0E\u7EC8\u7AEF"},{id:"tables",label:"\u8868\u683C\u4E0E\u6570\u636E",detail:"table \xB7 CSV \xB7 sort",hash:"\u8868\u683C\u4E0E\u6570\u636E"},{id:"media",label:"\u5A92\u4F53\u4E0E\u5D4C\u5165",detail:"img \xB7 video \xB7 iframe",hash:"\u5A92\u4F53\u4E0E\u5D4C\u5165"},{id:"diagrams",label:"\u56FE\u8868\u4E0E\u6570\u5B66",detail:"Mermaid \xB7 PlantUML \xB7 KaTeX",hash:"\u56FE\u8868\u4E0E\u6570\u5B66"},{id:"disclosure",label:"\u6298\u53E0\u4E0E\u811A\u6CE8",detail:"details \xB7 footnotes",hash:"\u6298\u53E0\u4E0E\u811A\u6CE8"},{id:"extensions",label:"\u6269\u5C55\u5185\u5BB9\u7EC4\u4EF6",detail:"tabs \xB7 steps \xB7 cards \xB7 tree",hash:"\u6269\u5C55\u5185\u5BB9\u7EC4\u4EF6"},{id:"api",label:"API \u4E0E\u4FA7\u6CE8",detail:"API \xB7 aside",hash:"api-\u4E0E\u4FA7\u6CE8"},{id:"metadata",label:"\u6587\u6863\u5143\u4FE1\u606F",detail:"meta \xB7 breadcrumb \xB7 pagination",hash:"\u6587\u6863\u5143\u4FE1\u606F"}],quickActions:{headingsTitle:"\u6807\u9898 H1-H6",headingsDescription:"\u67E5\u770B\u5B8C\u6574\u6807\u9898\u5C42\u7EA7\u4E0E\u6B63\u6587\u8282\u594F",codeTitle:"\u4EE3\u7801\u4E0E\u8BED\u6CD5\u9AD8\u4EAE",codeDescription:"Shiki \u9AD8\u4EAE\u3001diff \u884C\u72B6\u6001\u4E0E\u590D\u5236",tableTitle:"\u8868\u683C\u4E0E\u6570\u636E\u64CD\u4F5C",tableDescription:"\u6392\u5E8F\u3001\u590D\u5236 CSV \u4E0E\u653E\u5927\u9884\u89C8",diagramTitle:"Mermaid\u3001PlantUML \u4E0E\u6570\u5B66\u516C\u5F0F",diagramDescription:"\u56FE\u8868\u9884\u89C8\u3001\u6E90\u7801\u4E0E\u7F29\u653E",sourceDescription:"\u6253\u5F00\u5F53\u524D\u9875\u9762\u7684 Markdown \u539F\u6587",themeDescription:"\u5728\u6D45\u8272\u4E0E\u6DF1\u8272\u9605\u8BFB\u6A21\u5F0F\u95F4\u5207\u6362"}},Fo={labels:{skipToContent:"Skip to content",search:"Search docs",searchEmpty:"No matching documents",searchUnavailable:"Search index is unavailable",language:"Language",primaryNavigation:"Primary navigation",theme:"Toggle theme",openSidebar:"Open sidebar",onThisPage:"On this page",edit:"Edit this page",updated:"Last updated",previous:"Previous",next:"Next",close:"Close",source:"Source",preview:"Preview",copySource:"Copy source",sourceCopied:"Markdown source copied",quickActions:"Quick actions",github:"GitHub repository",docsNavigation:"Docs navigation",pageNavigation:"Page navigation",advertisement:"Advertisement",version:"Documentation version"},brandTagline:"AI-friendly React/MDX documentation",markdownElementGroups:[{id:"headings",label:"Headings & prose",detail:"H1-H6 \xB7 p \xB7 hr",hash:"headings-and-prose"},{id:"inline",label:"Inline semantics",detail:"a \xB7 strong \xB7 code",hash:"inline-semantics"},{id:"lists",label:"Lists & tasks",detail:"ul \xB7 ol \xB7 task",hash:"lists-and-tasks"},{id:"callouts",label:"Quotes & callouts",detail:"quote \xB7 callout",hash:"quotes-and-callouts"},{id:"code",label:"Code & terminal",detail:"Shiki \xB7 pre \xB7 diff",hash:"code-and-terminal"},{id:"tables",label:"Tables & data",detail:"table \xB7 CSV \xB7 sort",hash:"tables-and-data"},{id:"media",label:"Media & embeds",detail:"img \xB7 video \xB7 iframe",hash:"media-and-embeds"},{id:"diagrams",label:"Diagrams & math",detail:"Mermaid \xB7 PlantUML \xB7 KaTeX",hash:"diagrams-and-math"},{id:"disclosure",label:"Disclosure & notes",detail:"details \xB7 footnotes",hash:"disclosure-and-notes"},{id:"extensions",label:"Extended components",detail:"tabs \xB7 steps \xB7 cards \xB7 tree",hash:"extended-content-components"},{id:"api",label:"API & sidenote",detail:"API \xB7 aside",hash:"api-and-sidenote"},{id:"metadata",label:"Document metadata",detail:"meta \xB7 breadcrumb \xB7 pagination",hash:"document-metadata"}],quickActions:{headingsTitle:"Headings H1-H6",headingsDescription:"Inspect the complete heading scale and prose rhythm",codeTitle:"Code and syntax highlighting",codeDescription:"Shiki highlighting, diff line states, and copy",tableTitle:"Tables and data actions",tableDescription:"Sort, copy CSV, and zoom",diagramTitle:"Mermaid, PlantUML, and math",diagramDescription:"Diagram preview, source, and scale",sourceDescription:"Open the current page Markdown source",themeDescription:"Switch between light and dark reading modes"}},Io={copyCode:"\u590D\u5236\u4EE3\u7801",copyFailed:"\u590D\u5236\u5931\u8D25",copySnippet:"\u590D\u5236\u7247\u6BB5",copyTerminal:"\u590D\u5236\u7EC8\u7AEF\u8F93\u51FA",terminalTitle:"\u7EC8\u7AEF",tabsTitle:"\u9009\u9879\u5361",tabItem:"\u9009\u9879 {index}",codeGroupTitle:"\u4EE3\u7801\u7EC4",codeGroupItem:"\u4EE3\u7801 {index}",taskCompleted:"\u5DF2\u5B8C\u6210\u4EFB\u52A1",taskIncomplete:"\u672A\u5B8C\u6210\u4EFB\u52A1",copySectionLink:"\u590D\u5236\u7AE0\u8282\u94FE\u63A5",tableTitle:"\u8868\u683C",copyTableCsv:"\u590D\u5236\u4E3A CSV",downloadTableCsv:"\u4E0B\u8F7D CSV",zoomTable:"\u653E\u5927\u8868\u683C",closeTablePreview:"\u5173\u95ED\u8868\u683C\u9884\u89C8",sortTableColumn:"\u6309\u7B2C {column} \u5217\u6392\u5E8F",zoomImage:"\u653E\u5927\u56FE\u7247",closeImagePreview:"\u5173\u95ED\u56FE\u7247\u9884\u89C8",imageGallery:"\u56FE\u7247\u753B\u5ECA",closeImageGallery:"\u5173\u95ED\u56FE\u7247\u753B\u5ECA",previousGalleryImage:"\u4E0A\u4E00\u5F20\u56FE\u7247",nextGalleryImage:"\u4E0B\u4E00\u5F20\u56FE\u7247",galleryThumbnails:"\u56FE\u7247\u753B\u5ECA\u7F29\u7565\u56FE",galleryImage:"\u56FE\u7247"},Jt={zh:{title:"\u9875\u9762\u672A\u627E\u5230",description:"\u8BE5\u9875\u9762\u4E0D\u5B58\u5728\u3001\u5DF2\u88AB\u79FB\u52A8\u6216\u5730\u5740\u6709\u8BEF\u3002",home:"\u8FD4\u56DE\u9996\u9875 \u2192"},en:{title:"Page not found",description:"The page you're looking for doesn't exist or has been moved.",home:"Go back home \u2192"}};function he(e){return e.toLowerCase().split("-")[0]??e.toLowerCase()}s(he,"languageCode");function Xt(e,t){if(!e)return;let r=t.toLowerCase();return Object.entries(e).find(([o])=>o.toLowerCase()===r)?.[1]}s(Xt,"localizedValue");function Le(e,t){return Xt(t,e)}s(Le,"localeMessagesFor");function Yt(e,t){let r=he(e)==="zh"?Oo:Fo,o=Le(e,t);return{labels:{...r.labels,...o?.labels},brandTagline:o?.brandTagline??r.brandTagline,markdownElementGroups:r.markdownElementGroups.map(a=>({...a,...o?.markdownElementGroups?.[a.id]})),quickActions:{...r.quickActions,...o?.quickActions}}}s(Yt,"layoutContentFor");function ge(e,t){let r=Le(e,t)?.markdown,o=he(e)==="zh"?Io:void 0;if(!(!o&&!r))return{...o,...r}}s(ge,"markdownLabelsFor");function Te(e,t){return{...he(e)==="zh"?Jt.zh:Jt.en,...Le(e,t)?.notFound}}s(Te,"notFoundContentFor");function Qt(e,t){let r=Xt(t,e);if(r)return r;let o=he(e);if(o==="zh")return"\u7B80\u4F53\u4E2D\u6587";if(o==="en")return"English";try{return new Intl.DisplayNames([e],{type:"language"}).of(e)??e}catch{return e}}s(Qt,"localeNameFor");var ye="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='7' fill='%230088FF'/%3E%3Cpath d='M9 7h10l4 4v14H9z' fill='none' stroke='white' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M19 7v5h5' fill='none' stroke='white' stroke-width='2'/%3E%3Ccircle cx='21' cy='22' r='5' fill='%230088FF' stroke='white' stroke-width='2'/%3E%3C/svg%3E";import{ChevronDown as Zt,Languages as Bo,Moon as _o,PanelLeft as Uo,Search as qo,Sun as jo}from"lucide-react";import{Fragment as tr,jsx as y,jsxs as C}from"react/jsx-runtime";function Ho(){return C("svg",{className:"df-brand-mark",width:"32",height:"32",viewBox:"0 0 512 512","aria-hidden":"true",children:[C("defs",{children:[C("linearGradient",{id:"df-brand-top",x1:"80",y1:"70",x2:"430",y2:"245",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#1768FF"}),y("stop",{offset:"0.48",stopColor:"#119BFA"}),y("stop",{offset:"1",stopColor:"#18D8D3"})]}),C("linearGradient",{id:"df-brand-mid",x1:"215",y1:"255",x2:"440",y2:"245",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#2C7BFF"}),y("stop",{offset:"1",stopColor:"#1768F4"})]}),C("linearGradient",{id:"df-brand-bottom",x1:"215",y1:"292",x2:"92",y2:"445",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#554FF5"}),y("stop",{offset:"0.62",stopColor:"#7845FA"}),y("stop",{offset:"1",stopColor:"#8637F5"})]}),C("mask",{id:"df-brand-spark-cut",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"512",height:"512",children:[y("rect",{width:"512",height:"512",fill:"#fff"}),y("path",{d:"M220 245C225 273 247 295 275 300C247 305 225 327 220 355C215 327 193 305 165 300C193 295 215 273 220 245Z",fill:"#000"})]})]}),C("g",{mask:"url(#df-brand-spark-cut)",fill:"none",strokeLinejoin:"round",children:[y("path",{d:"M173 321C128 321 101 296 101 255V159C101 112 134 79 181 79H242C322 79 383 120 420 184",stroke:"url(#df-brand-top)",strokeWidth:"82",strokeLinecap:"round"}),y("path",{d:"M213 286C241 247 279 225 327 225H427",stroke:"url(#df-brand-mid)",strokeWidth:"70",strokeLinecap:"round"}),y("path",{d:"M220 296C248 333 238 371 207 402C176 433 137 444 101 444",stroke:"url(#df-brand-bottom)",strokeWidth:"72",strokeLinecap:"round"})]})]})}s(Ho,"BrandMark");function $e({size:e=16}){return y(qo,{size:e,strokeWidth:2,"aria-hidden":"true"})}s($e,"SearchIcon");function zo(){return C(tr,{children:[y(jo,{className:"df-icon-sun",size:18,strokeWidth:2,"aria-hidden":"true"}),y(_o,{className:"df-icon-moon",size:18,strokeWidth:2,"aria-hidden":"true"})]})}s(zo,"ThemeIcon");function Oe(e,t){let r=t.split("/").filter(Boolean);return t.startsWith("/")&&(e.page.routePath===t||e.page.routePath.startsWith(t)||e.page.group!==""&&r.includes(e.page.group))}s(Oe,"navItemIsActive");function er({model:e}){let{config:t,page:r,home:o,labels:a,localeRoot:i,navItems:c,versionLabel:n,versionOptions:d,languageOptions:u,hasSidebarItems:l}=e;return C("header",{className:o?"df-header df-header-home":"df-header",children:[C("div",{className:"df-header-inner",children:[!o&&l?y("button",{className:"df-sidebar-toggle",type:"button","data-docfuse-sidebar-open":"","data-docfuse-sidebar-open-label":a.openSidebar,"data-docfuse-sidebar-close-label":a.close,"aria-label":a.openSidebar,"aria-expanded":"false",children:y(Uo,{size:18,strokeWidth:2,"aria-hidden":"true"})}):null,y("a",{className:"df-brand",href:i,"aria-label":t.title,children:t.theme.logo?C(tr,{children:[y("img",{className:t.theme.logoDark?"df-brand-logo df-brand-logo-light":"df-brand-logo",src:g(t,t.theme.logo),alt:t.title}),t.theme.logoDark?y("img",{className:"df-brand-logo df-brand-logo-dark",src:g(t,t.theme.logoDark),alt:t.title}):null]}):y(Ho,{})}),t.search.enabled?C("button",{className:"df-search-trigger",type:"button","data-docfuse-search-open":"","aria-haspopup":"dialog","aria-label":a.search,children:[y($e,{size:15}),y("span",{children:a.search}),y("kbd",{className:"df-kbd",children:"\u2318K"})]}):null,C("div",{className:"df-header-right",children:[c.length>0?y("nav",{className:"df-header-nav","aria-label":a.primaryNavigation,children:c.map(m=>{let p=Oe(e,m.routePath),w=/^https?:\/\//.test(m.routePath);return y("a",{className:p?"df-header-link df-header-link-active":"df-header-link",href:g(t,m.routePath),"aria-current":p?"page":void 0,...w?{target:"_blank",rel:"noreferrer"}:{},children:m.title},m.routePath)})}):null,d.length>1?C("details",{className:"df-menu df-version-menu","data-docfuse-menu":"",children:[C("summary",{className:"df-version-badge","aria-label":a.version,children:[y("span",{children:n}),y(Zt,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),y("div",{className:"df-menu-list",children:d.map(m=>y("a",{className:m.id===r.version?"df-menu-item df-menu-item-active":"df-menu-item",href:g(t,m.routePath),children:y("span",{children:m.label})},m.id))})]}):y("span",{className:"df-version-badge",children:n}),u.length>1?C("details",{className:"df-menu df-lang","data-docfuse-menu":"",children:[C("summary",{className:"df-icon-button df-lang-trigger","aria-label":a.language,children:[y(Bo,{size:19,strokeWidth:1.9,"aria-hidden":"true"}),y(Zt,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),y("div",{className:"df-menu-list df-language-menu-list",children:u.map(m=>y("a",{className:m.locale===r.locale?"df-menu-item df-language-menu-item df-menu-item-active":"df-menu-item df-language-menu-item",href:g(t,m.routePath),lang:m.locale,"aria-current":m.locale===r.locale?"page":void 0,children:Qt(m.locale,t.i18n.localeNames)},m.locale))})]}):null,t.theme.darkMode?y("button",{className:"df-icon-button",type:"button","data-docfuse-theme-toggle":"","aria-label":a.theme,children:y(zo,{})}):null,t.github?y("a",{className:"df-icon-button df-github-link",href:t.github,target:"_blank",rel:"noreferrer","aria-label":a.github,children:y("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:y("path",{d:"M12 2C6.48 2 2 6.58 2 12.25c0 4.53 2.87 8.37 6.84 9.73.5.1.68-.22.68-.49 0-.24-.01-.87-.01-1.71-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.62.07-.62 1 .07 1.53 1.06 1.53 1.06.89 1.56 2.34 1.11 2.91.85.09-.66.35-1.11.63-1.37-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.03 1.03-2.75-.1-.26-.45-1.3.1-2.71 0 0 .84-.27 2.75 1.05a9.36 9.36 0 0 1 5 0c1.91-1.32 2.75-1.05 2.75-1.05.55 1.41.2 2.45.1 2.71.64.72 1.03 1.63 1.03 2.75 0 3.94-2.34 4.81-4.57 5.06.36.32.68.94.68 1.9 0 1.37-.01 2.47-.01 2.81 0 .27.18.6.69.49A10.26 10.26 0 0 0 22 12.25C22 6.58 17.52 2 12 2z"})})}):null]})]}),o?null:y("div",{className:"df-progress","aria-hidden":"true",children:y("span",{"data-docfuse-progress":""})})]})}s(er,"LayoutHeader");import{jsx as k,jsxs as N}from"react/jsx-runtime";function or(e,t){return e.type==="link"?e.routePath===t:e.items.some(r=>or(r,t))}s(or,"sidebarContainsRoute");function rr(e){return{"--df-sidebar-indent":`${Math.min(e,4)*10}px`}}s(rr,"sidebarDepthStyle");function ar({item:e,model:t,depth:r=0}){let o={"data-depth":r,style:rr(r)};if(e.type==="link"){let i=e.routePath===t.page.routePath;return k("a",{...o,className:i?"df-sidebar-link df-sidebar-link-active":"df-sidebar-link",href:g(t.config,e.routePath),"aria-current":i?"page":void 0,"data-docfuse-sidebar-link":"",children:e.title})}let a=or(e,t.page.routePath);return N("details",{className:"df-sidebar-subgroup",open:a||!e.collapsed,"data-depth":r,children:[N("summary",{className:"df-sidebar-subgroup-title",style:rr(r),children:[e.title,k(Go,{className:"df-chevron",size:12,strokeWidth:2.5,"aria-hidden":"true"})]}),k("div",{className:"df-sidebar-subgroup-items",children:e.items.map((i,c)=>k(ar,{item:i,model:t,depth:r+1},i.type==="link"?i.routePath:i.segment||c))})]})}s(ar,"SidebarEntry");function nr({model:e}){let{config:t,labels:r,navItems:o,sidebarGroups:a}=e,i=[e.page.version,e.page.locale,e.page.group].join(":");return N("aside",{className:"df-sidebar","data-docfuse-sidebar":"","data-docfuse-sidebar-key":i,children:[o.length>0?k("nav",{className:"df-sidebar-primary-nav","aria-label":r.primaryNavigation,children:o.map(c=>{let n=Oe(e,c.routePath),d=/^https?:\/\//.test(c.routePath);return k("a",{className:n?"df-sidebar-primary-link df-sidebar-primary-link-active":"df-sidebar-primary-link",href:g(t,c.routePath),"aria-current":n?"page":void 0,"data-docfuse-sidebar-link":"",...d?{target:"_blank",rel:"noreferrer"}:{},children:c.title},c.routePath)})}):null,k("nav",{className:"df-sidebar-nav","aria-label":r.docsNavigation,children:a.map((c,n)=>k("div",{className:"df-sidebar-items df-sidebar-root",children:c.items.map((d,u)=>k(ar,{item:d,model:e,depth:0},d.type==="link"?d.routePath:d.segment||u))},c.segment||n))})]})}s(nr,"Sidebar");function Wo({model:e}){let{editHref:t,labels:r,page:o}=e,a=new Intl.DateTimeFormat(o.locale,{dateStyle:"medium"}).format(new Date(o.lastUpdated));return N("footer",{className:"df-page-footer",children:[N("div",{className:"df-page-meta",children:[N("div",{className:"df-page-meta-actions",children:[t?k("a",{href:t,children:r.edit}):null,k("button",{className:"df-page-source",type:"button","data-docfuse-source-open":"","aria-haspopup":"dialog",children:r.source})]}),N("span",{children:[r.updated," ",a]})]}),N("nav",{className:"df-doc-pagination","aria-label":r.pageNavigation,children:[o.previous?N("a",{className:"df-doc-pagination-link",href:g(e.config,o.previous.routePath),children:[k("span",{className:"df-doc-pagination-label",children:r.previous}),k("strong",{className:"df-doc-pagination-title",children:o.previous.title})]}):k("span",{}),o.next?N("a",{className:"df-doc-pagination-link df-doc-pagination-link-next",href:g(e.config,o.next.routePath),children:[k("span",{className:"df-doc-pagination-label",children:r.next}),k("strong",{className:"df-doc-pagination-title",children:o.next.title})]}):null]})]})}s(Wo,"PageFooter");function Jo({model:e}){let{config:t,labels:r,outlineHeadings:o}=e,a=t.advertising;return N("aside",{className:"df-outline","data-docfuse-outline":"","aria-label":r.onThisPage,children:[o.length>0?k("nav",{className:"df-outline-nav",children:o.map(i=>k("a",{className:`df-outline-link df-outline-link-${i.level}`,"data-docfuse-outline-link":"",href:`#${i.slug}`,children:i.text},i.slug))}):null,a?N("a",{className:"df-outline-ad",href:g(t,a.href),target:"_blank",rel:"sponsored noopener noreferrer","aria-label":a.alt,children:[k("span",{children:a.label??r.advertisement}),k("img",{src:g(t,a.image),alt:a.alt,loading:"lazy"})]}):null]})}s(Jo,"Outline");function Xo({model:e,children:t}){let{config:r,labels:o,page:a}=e,i=a.body.trim(),c={...ge(a.locale,r.i18n.messages),...r.markdown.labels};return N("div",{className:"df-shell df-shell-playground",children:[k("div",{className:"df-sidebar-backdrop","data-docfuse-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),k(nr,{model:e}),k("main",{id:"docfuse-main",className:"df-main df-playground-main",tabIndex:-1,"data-pagefind-body":a.search?"":void 0,children:N("div",{className:"df-playground","data-docfuse-playground":"","data-docfuse-playground-labels":JSON.stringify(c),"data-docfuse-playground-preview-label":o.preview,"data-view":"preview",children:[N("button",{className:"df-playground-toggle",type:"button","data-docfuse-playground-toggle":"","data-source-label":o.source,"data-preview-label":o.preview,"aria-label":o.source,title:o.source,children:[k(Ko,{className:"df-playground-toggle-source",size:18,strokeWidth:2,"aria-hidden":"true"}),k(Vo,{className:"df-playground-toggle-preview",size:18,strokeWidth:2,"aria-hidden":"true"})]}),k("section",{className:"df-playground-pane df-playground-source","aria-label":o.source,"data-pagefind-ignore":"",children:k("textarea",{defaultValue:i,"aria-label":o.source,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-docfuse-playground-source":""})}),k("div",{className:"df-playground-resizer",role:"separator","aria-label":`${o.source} / ${o.preview}`,"aria-orientation":"vertical","aria-valuemin":25,"aria-valuemax":75,"aria-valuenow":45,tabIndex:0,"data-docfuse-playground-resizer":""}),k("section",{className:"df-playground-pane df-playground-preview","aria-label":o.preview,children:k("div",{className:"df-playground-preview-scroll","data-docfuse-playground-preview":"",children:t})})]})})]})}s(Xo,"Playground");function sr({model:e,children:t}){return e.page.frontmatter.layout==="playground"?k(Xo,{model:e,children:t}):N("div",{className:"df-shell",children:[k("div",{className:"df-sidebar-backdrop","data-docfuse-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),k(nr,{model:e}),N("main",{id:"docfuse-main",className:"df-main",tabIndex:-1,"data-pagefind-body":e.page.search?"":void 0,children:[t,k(Wo,{model:e})]}),k(Jo,{model:e})]})}s(sr,"LayoutDocument");function be(e){return ht(e.relativePath,e.locale)}s(be,"subPath");function re(e,t){let r=e.find(o=>o.id===t);if(!r)throw new Error(`Missing Markdown element group: ${t}`);return r.hash}s(re,"markdownGroupHash");function ir({config:e,graph:t,page:r,home:o,assets:a,rawSource:i}){let c=t.pages.filter(f=>f.version===r.version&&be(f)===be(r)),n=t.locales.map(f=>{let M=c.find(x=>x.locale===f);return{locale:f,routePath:M?.routePath??j(f,t.defaultLocale,r.versionBase)}}),d=t.versions.map(f=>{let M=t.pages.find(x=>x.version===f.id&&x.locale===r.locale&&be(x)===be(r));return{id:f.id,label:f.label,routePath:M?.routePath??j(r.locale,t.defaultLocale,f.base)}}),u=t.sidebar[r.version]?.[r.locale]??[],l=Yt(r.locale,e.i18n.messages),m=j(r.locale,t.defaultLocale,r.versionBase),p=`${m}markdown/playground/`,w=t.pages.some(f=>f.locale===r.locale&&f.routePath===p),h=s(f=>f.type==="link"?f.routePath===r.routePath:f.items.some(h),"isActiveItem"),S=s(f=>f.items.some(h),"isActiveGroup"),D=u.filter(f=>f.title===""||f.segment===r.group||S(f)),b=typeof r.frontmatter.seoTitle=="string"?r.frontmatter.seoTitle.trim():"";return{config:e,page:r,home:o,assets:a,title:b||(r.title&&r.title!==e.title?`${r.title} | ${e.title}`:e.title),description:r.description||e.description,...e.editUrl&&r.version===t.currentVersion?{editHref:`${e.editUrl.replace(/\/$/,"")}/${r.relativePath}`}:{},alternatePages:c,languageOptions:n,versionOptions:d,navItems:t.nav[r.version]?.[r.locale]??[],content:l,labels:l.labels,brandTagline:e.i18n.messages?.[r.locale]?.brandTagline||e.description||l.brandTagline,versionLabel:t.versions.length===1&&r.version==="current"?`v${q}`:t.versions.find(f=>f.id===r.version)?.label??r.version,localeRoot:g(e,m),markdownShowcaseHref:g(e,p),hasMarkdownShowcase:w,sidebarGroups:D,hasSidebarItems:D.some(f=>f.items.length>0),outlineHeadings:r.headings.filter(f=>f.level>=1&&f.level<=6),searchProvider:kt(e.search.provider),searchIndexUrl:r.version===t.currentVersion?g(e,`/search/${r.locale}.json`):g(e,`/search/${r.version}/${r.locale}.json`),searchBundleUrl:g(e,"/pagefind/pagefind.js"),markdownClientScript:`window.__docfuseEnhanceMarkdown = async (target) => {
|
|
27
27
|
const pageRoot = document.querySelector('[data-docfuse-page-root]')
|
|
28
28
|
if (!pageRoot) return () => {}
|
|
29
29
|
const root = target || pageRoot
|
|
@@ -74,7 +74,7 @@ window.__docfuseBootstrapMarkdown = () => {
|
|
|
74
74
|
window.__docfuseMarkdownReady = ready
|
|
75
75
|
return ready
|
|
76
76
|
}
|
|
77
|
-
window.__docfuseBootstrapMarkdown()`,rawSource:i}}s(ir,"createLayoutModel");import{Braces as Yo,Clipboard as Qo,ExternalLink as Zo,Heading2 as ea,SunMoon as ta,Table2 as ra,Workflow as oa,X as aa}from"lucide-react";import{Fragment as Fe,jsx as
|
|
77
|
+
window.__docfuseBootstrapMarkdown()`,rawSource:i}}s(ir,"createLayoutModel");import{Braces as Yo,Clipboard as Qo,ExternalLink as Zo,Heading2 as ea,SunMoon as ta,Table2 as ra,Workflow as oa,X as aa}from"lucide-react";import{Fragment as Fe,jsx as v,jsxs as R}from"react/jsx-runtime";function Y({href:e,action:t,icon:r,title:o,description:a}){let i=R(Fe,{children:[v("span",{className:"df-command-glyph","aria-hidden":"true",children:r}),R("span",{children:[v("strong",{children:o}),v("small",{children:a})]})]});return e?v("a",{className:"df-command-item",href:e,children:i}):v("button",{className:"df-command-item",type:"button","data-docfuse-search-action":t,children:i})}s(Y,"QuickAction");function na({model:e}){let{config:t,page:r,home:o,labels:a,content:i,markdownShowcaseHref:c,hasMarkdownShowcase:n}=e,d=i.markdownElementGroups,u=i.quickActions;return t.search.enabled?R("div",{className:"df-search-modal","data-docfuse-search":"","data-locale":r.locale,"data-version":r.version,"data-search-provider":e.searchProvider,"data-search-index-url":e.searchIndexUrl,"data-search-bundle-url":e.searchBundleUrl,"data-empty-label":a.searchEmpty,"data-error-label":a.searchUnavailable,hidden:!0,children:[v("div",{className:"df-search-backdrop","data-docfuse-search-close":"","aria-hidden":"true"}),R("div",{className:"df-search-panel",role:"dialog","aria-modal":"true","aria-label":a.search,tabIndex:-1,children:[R("div",{className:"df-search-field",children:[v($e,{}),v("input",{className:"df-search-input",type:"search",placeholder:`${a.search}...`,"aria-label":a.search}),v("button",{className:"df-search-close",type:"button","data-docfuse-search-close":"","aria-label":a.close,children:"Esc"})]}),R("div",{className:"df-search-body",children:[R("div",{className:"df-search-default","data-docfuse-search-default":"",children:[v("p",{className:"df-search-section-label",children:a.quickActions}),n?R(Fe,{children:[v(Y,{href:`${c}#${re(d,"headings")}`,icon:v(ea,{size:17,strokeWidth:2}),title:u.headingsTitle,description:u.headingsDescription}),v(Y,{href:`${c}#${re(d,"code")}`,icon:v(Yo,{size:17,strokeWidth:2}),title:u.codeTitle,description:u.codeDescription}),v(Y,{href:`${c}#${re(d,"tables")}`,icon:v(ra,{size:17,strokeWidth:2}),title:u.tableTitle,description:u.tableDescription}),v(Y,{href:`${c}#${re(d,"diagrams")}`,icon:v(oa,{size:17,strokeWidth:2}),title:u.diagramTitle,description:u.diagramDescription})]}):null,o?null:v(Y,{action:"source",icon:v(Zo,{size:17,strokeWidth:2}),title:a.source,description:u.sourceDescription}),t.theme.darkMode?v(Y,{action:"theme",icon:v(ta,{size:17,strokeWidth:2}),title:a.theme,description:u.themeDescription}):null]}),v("div",{className:"df-search-results","data-docfuse-search-results":"","aria-live":"polite",hidden:!0})]})]})]}):null}s(na,"SearchModal");function sa({model:e}){let{home:t,labels:r,page:o}=e;return t?null:R("div",{className:"df-source-sheet","data-docfuse-source-sheet":"",hidden:!0,children:[v("div",{className:"df-source-backdrop","data-docfuse-source-close":"","aria-hidden":"true"}),R("aside",{className:"df-source-panel",role:"dialog","aria-modal":"true","aria-label":r.source,tabIndex:-1,children:[R("div",{className:"df-source-head",children:[R("div",{children:[v("p",{children:r.source}),v("span",{children:o.sourceRelativePath})]}),R("div",{className:"df-source-actions",children:[v("button",{className:"df-icon-button",type:"button","data-docfuse-source-copy":"","data-docfuse-action-success":r.sourceCopied,"aria-label":r.copySource,children:v(Qo,{size:16,strokeWidth:2,"aria-hidden":"true"})}),v("button",{className:"df-icon-button",type:"button","data-docfuse-source-close":"","aria-label":r.close,children:v(aa,{size:16,strokeWidth:2,"aria-hidden":"true"})})]})]}),v("textarea",{"data-docfuse-source-text":"","aria-label":r.source,spellCheck:!1,readOnly:!0,defaultValue:e.rawSource})]})]})}s(sa,"SourceSheet");function cr({model:e}){return R(Fe,{children:[v(na,{model:e}),v(sa,{model:e})]})}s(cr,"LayoutOverlays");var we="try{var t=localStorage.getItem('docfuse-theme');if(t==='dark'||(!t&&window.matchMedia('(prefers-color-scheme:dark)').matches)){document.documentElement.classList.add('dark')}}catch(e){}";var lr=`window.__docfuseBootstrapShell = () => {
|
|
78
78
|
window.__docfuseShellDispose?.()
|
|
79
79
|
const controller = new AbortController()
|
|
80
80
|
const signal = controller.signal
|
|
@@ -616,7 +616,7 @@ window.__docfuseBootstrapShell()`,dr=`window.__docfuseBootstrapOutline = () => {
|
|
|
616
616
|
if (hashTimer) clearTimeout(hashTimer)
|
|
617
617
|
}
|
|
618
618
|
}
|
|
619
|
-
window.__docfuseBootstrapOutline()`;import{Fragment as ia,jsx as v,jsxs as oe}from"react/jsx-runtime";function ur({config:e,graph:t,page:r,home:o=!1,markdownAssets:a,rawSource:i,children:c}){let n=ir({config:e,graph:t,page:r,home:o,assets:a,rawSource:i}),d=n.assets.behaviors.length>0,u=n.assets.pluginClients.map(h=>g(e,`/assets/docfuse-plugins/${h.id}.js`)),l=V(e,r.routePath),m=g(e,e.theme.favicon??ye),f=[e.layout.header?void 0:"df-header-hidden",r.frontmatter.layout==="playground"?"df-playground-page":void 0].filter(Boolean).join(" "),b=r.frontmatter.layout==="playground";return oe("html",{lang:r.locale,className:f||void 0,children:[oe("head",{children:[v("meta",{charSet:"utf-8"}),v("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),v("title",{children:n.title}),v("meta",{name:"description",content:n.description,"data-docfuse-page-head":""}),v("meta",{property:"og:title",content:n.title,"data-docfuse-page-head":""}),v("meta",{property:"og:description",content:n.description,"data-docfuse-page-head":""}),e.search.enabled&&r.search?oe(ia,{children:[v("meta",{"data-pagefind-meta":"title[content]",content:r.title,"data-docfuse-page-head":""}),v("meta",{"data-pagefind-meta":"description[content]",content:r.description,"data-docfuse-page-head":""}),v("meta",{"data-pagefind-filter":`version:${r.version}`,"data-docfuse-page-head":""}),v("meta",{"data-pagefind-filter":`locale:${r.locale}`,"data-docfuse-page-head":""}),v("meta",{"data-pagefind-filter":`status:${r.status}`,"data-docfuse-page-head":""}),(Array.isArray(r.frontmatter.tags)?r.frontmatter.tags:[]).filter(h=>typeof h=="string").map(h=>v("meta",{"data-pagefind-filter":`tag:${h}`,"data-docfuse-page-head":""},h))]}):null,l?v("meta",{property:"og:url",content:l,"data-docfuse-page-head":""}):null,v("meta",{name:"twitter:card",content:"summary"}),v("link",{rel:"icon",href:m}),l?v("link",{rel:"canonical",href:l,"data-docfuse-page-head":""}):null,e.siteUrl?n.alternatePages.map(h=>v("link",{rel:"alternate",hrefLang:h.locale,href:V(e,h.routePath),"data-docfuse-page-head":""},h.locale)):null,v("link",{rel:"stylesheet",href:g(e,"/assets/docfuse.css")}),n.assets.pluginStyles.map(h=>v("link",{rel:"stylesheet",href:g(e,`/assets/docfuse-plugins/${h.id}.css`),"data-docfuse-page-head":""},h.id)),e.theme.darkMode?v("script",{dangerouslySetInnerHTML:{__html:we}}):null]}),oe("body",{children:[oe("div",{className:"df-page-root",style:{"--df-docfuse-config-icon":`url(${JSON.stringify(m)})`},"data-docfuse-page-root":"","data-markdown-behaviors":d?JSON.stringify(n.assets.behaviors):void 0,"data-markdown-client-url":d?g(e,"/assets/docfuse-markdown/index.js"):void 0,"data-markdown-plugin-clients":u.length>0?JSON.stringify(u):void 0,"data-docfuse-playground-client-url":b?g(e,"/assets/docfuse-playground/index.js"):void 0,children:[v("a",{className:"df-skip-link",href:"#docfuse-main",children:n.labels.skipToContent}),e.layout.header?v(er,{model:n}):null,o?v("main",{id:"docfuse-main",className:"df-home",tabIndex:-1,"data-pagefind-body":r.search?"":void 0,children:c}):v(sr,{model:n,children:c}),v(cr,{model:n})]}),v("script",{type:"module",dangerouslySetInnerHTML:{__html:n.markdownClientScript}}),b?v("script",{type:"module",src:g(e,"/assets/docfuse-playground/index.js")}):null,v("script",{dangerouslySetInnerHTML:{__html:lr}}),v("script",{dangerouslySetInnerHTML:{__html:dr}}),e.search.enabled?v("script",{type:"module",src:g(e,"/assets/docfuse-search.js")}):null]})]})}s(ur,"Layout");import{createMarkdownRenderer as Ma}from"@docfuse/markdown/server";import*as Ca from"react";import*as Na from"react/jsx-runtime";import{analyzeMdxModuleBoundary as ca}from"@docfuse/markdown/server/analyze";var la=["react","react/jsx-runtime"],da=new Set(la);function Ie(e){return da.has(e)}s(Ie,"isDocsImportSpecifier");function Be(e){return e.startsWith(".")||Ie(e)}s(Be,"isAllowedDocsImport");function ke(e){let t=ca(e);for(let r of t.unsupportedReferences){let o=r.kind==="dynamic-import"?"Dynamic import":"Re-export";throw new Error(`${o} is not allowed in MDX${r.specifier?`: ${r.specifier}`:""}`)}for(let{specifier:r}of t.imports)if(!Be(r))throw new Error(`External import is not allowed: ${r}`);return{source:t.sourceWithoutImports,imports:t.imports}}s(ke,"prepareMdxSource");import{access as ua,readFile as ma,realpath as Pe}from"fs/promises";import{dirname as pa,extname as fr,isAbsolute as He,relative as hr,resolve as mr,sep as gr}from"path";import{build as fa}from"esbuild";import*as ha from"react";import*as ga from"react/jsx-runtime";import{detectMarkdownAssets as ya}from"@docfuse/markdown/server/analyze";var _e=[".tsx",".ts",".jsx",".js"],pr={react:ha,"react/jsx-runtime":ga};function ba(e){if(Object.hasOwn(pr,e))return pr[e];throw new Error(`External import is not allowed in local docs components: ${e}`)}s(ba,"requireLocalComponentRuntime");function ve(e,t){let r=hr(e,t);return r===""||!r.startsWith(`..${gr}`)&&r!==".."&&!He(r)}s(ve,"isInsideRoot");async function Ue(e){try{return await ua(e),!0}catch{return!1}}s(Ue,"fileExists");async function qe(e,t){let r=await Pe(e);if(!t)return r;let o=await Pe(t),a=hr(o,r);if(a===".."||a.startsWith(`..${gr}`)||He(a))throw new Error(`Local component import escapes the project root: ${e}`);return r}s(qe,"assertInsideProjectRoot");async function je(e,t,r){let o=mr(pa(e),t),a=fr(o);if(a&&!_e.includes(a))throw new Error(`Unsupported local component import: ${t}`);if(a&&await Ue(o))return qe(o,r);for(let i of _e){let c=`${o}${i}`;if(await Ue(c))return qe(c,r)}for(let i of _e){let c=mr(o,`index${i}`);if(await Ue(c))return qe(c,r)}throw new Error(`Local component import not found: ${t}`)}s(je,"resolveLocalModule");async function wa(e,t){let r=t?await Pe(t):void 0,o=new Set([e]),i=(await fa({entryPoints:[e],bundle:!0,outfile:"local-component.js",write:!1,platform:"node",format:"cjs",target:"node22",jsx:"automatic",plugins:[{name:"docfuse-components-alias",setup(c){c.onResolve({filter:/^(?:react|react\/jsx-runtime)$/},n=>({path:n.path,external:!0})),c.onResolve({filter:/.*/},async n=>{if(!He(n.path)||!n.importer||!(r?ve(r,n.importer):o.has(n.importer)))return;let u=await je(n.importer,n.path,t);return o.add(u),{path:u}}),c.onResolve({filter:/^\./},async n=>{if(n.importer&&!(r?ve(r,n.importer):o.has(n.importer)))return;let d=await je(n.importer,n.path,t);return o.add(d),{path:d}}),c.onLoad({filter:/\.(?:[jt]sx?)$/},async n=>{let d=await Pe(n.path);(r?ve(r,d):o.has(d))&&o.add(d)}),c.onResolve({filter:/^react-dom$/},n=>(n.importer?r?ve(r,n.importer):o.has(n.importer):!1)?{errors:[{text:"External import is not allowed in local docs components: react-dom"}]}:void 0),c.onResolve({filter:/^[^./].*/},n=>{if(!Be(n.path))return{errors:[{text:`External import is not allowed in local docs components: ${n.path}`}]}})}}]})).outputFiles.find(c=>fr(c.path)===".js");if(!i)throw new Error(`Failed to bundle local component: ${e}`);return{code:i.text,sourcePaths:[...o]}}s(wa,"bundleLocalModule");async function ka(e){let t={exports:{}};return new Function("module","exports","require",e.code)(t,t.exports,ba),t.exports}s(ka,"importBundle");function va(e){return e.filter(t=>t.specifier.startsWith("."))}s(va,"localImports");async function yr(e,t,r){let o=va(e);if(!o.length)return[];if(!t)throw new Error("Local MDX component imports require the Markdown source file path");let a=new Map;return Promise.all(o.map(async i=>{let c=await je(t,i.specifier,r),n=a.get(c);return n||(n=wa(c,r),a.set(c,n)),{localImport:i,bundle:await n}}))}s(yr,"bundleLocalImports");async function br(e,t,r){let o=await yr(e,t,r);return[...new Set(o.flatMap(({bundle:a})=>a.sourcePaths))].sort()}s(br,"localComponentDependencyPaths");async function Pa(e){let t={},r=new Map;for(let{localImport:o,bundle:a}of e){let i=r.get(a);i||(i=ka(a),r.set(a,i));let c=await i;for(let n of o.bindings)if(n.namespace)t[n.local]=c;else{if(!Object.hasOwn(c,n.imported))throw new Error(`Local module ${JSON.stringify(o.specifier)} does not export ${JSON.stringify(n.imported)}`);t[n.local]=c[n.imported]}}return t}s(Pa,"componentsFromBundles");function Sa(e,t){e.behaviors=[...new Set([...e.behaviors,...t.behaviors])],e.math||=t.math,e.pluginClients=[...new Map([...e.pluginClients,...t.pluginClients].map(r=>[r.id,r])).values()],e.pluginStyles=[...new Map([...e.pluginStyles,...t.pluginStyles].map(r=>[r.id,r])).values()]}s(Sa,"mergeAssets");function xa(){return{behaviors:[],math:!1,pluginClients:[],pluginStyles:[]}}s(xa,"emptyAssets");async function Da(e,t=[]){let r=xa(),o=new Set;for(let{bundle:a}of e)for(let i of a.sourcePaths)o.has(i)||(o.add(i),Sa(r,ya(await ma(i,"utf8"),t,"mdx")));return r}s(Da,"assetsFromBundles");async function wr(e,t,r,o=[]){let a=await yr(e,t,r),[i,c]=await Promise.all([Pa(a),Da(a,o)]);return{components:i,assets:c}}s(wr,"loadLocalComponentBundle");function Aa(...e){return{behaviors:[...new Set(e.flatMap(t=>t.behaviors))],math:e.some(t=>t.math),pluginClients:[...new Map(e.flatMap(t=>t.pluginClients).map(t=>[t.id,t])).values()],pluginStyles:[...new Map(e.flatMap(t=>t.pluginStyles).map(t=>[t.id,t])).values()]}}s(Aa,"mergeAssets");function Ea(e,t){let r={react:Ca,"react/jsx-runtime":Na},o={...t};for(let a of e){if(!Ie(a.specifier))continue;let i=r[a.specifier];for(let c of a.bindings){if(c.namespace){o[c.local]=i;continue}if(c.imported==="default"&&a.specifier==="react"){o[c.local]=i.default??i;continue}if(!Object.hasOwn(i,c.imported))throw new Error(`Module ${JSON.stringify(a.specifier)} does not export ${JSON.stringify(c.imported)}`);o[c.local]=i[c.imported]}}return o}s(Ea,"bindImports");async function kr(e,t,r,o,a,i,c=Ma()){let n=ke(e),{components:d,assets:u}=await wr(n.imports,t,r,o?.plugins),l=await c.renderMdx(n.source,{markdown:o,classNames:a,urlTransform:i,as:"article",components:{...Ea(n.imports,d)}});return{content:l.content,assets:Aa(l.assets,u)}}s(kr,"renderMdxResult");import{mkdir as Ra}from"fs/promises";import{dirname as La,join as Ta}from"path";import{fileURLToPath as $a}from"url";function Oa(){let e=import.meta.url.endsWith(".js")?"./search-client.js":"./searchClientRuntime.ts";return $a(new URL(e,import.meta.url))}s(Oa,"searchRuntimeEntry");async function vr(e){let{build:t}=await import("esbuild"),r=Ta(e,"assets/docfuse-search.js");await Ra(La(r),{recursive:!0}),await t({entryPoints:[Oa()],bundle:!0,format:"iife",platform:"browser",target:"es2022",outfile:r,minify:!0,sourcemap:!1,legalComments:"none",logLevel:"silent"})}s(vr,"buildSearchBundle");import{DEFAULT_SEMANTIC_COLORS as N,DEFAULT_MARKDOWN_THEME as Ge,markdownThemeDeclarations as Fa,resolveMarkdownTheme as Ia}from"@docfuse/markdown/theme";var Ba={docfuse:{light:N.light.blue,dark:N.dark.blue},cyan:{light:N.light.cyan,dark:N.dark.cyan},emerald:{light:N.light.green,dark:N.dark.green},blue:{light:N.light.blue,dark:N.dark.blue},green:{light:N.light.green,dark:N.dark.green},red:{light:N.light.red,dark:N.dark.red},orange:{light:N.light.orange,dark:N.dark.orange},violet:{light:N.light.indigo,dark:N.dark.indigo},neutral:{light:"oklch(0.3 0 0)",dark:"oklch(0.85 0 0)"}};function Pr(e){let t=Ge.colors[e];return{background:t.canvas,foreground:t.foreground,text:t.text,muted:t.muted,muted2:t.mutedSubtle,card:t.surface,card2:t.surfaceSecondary,soft:t.surfaceSoft,popover:t.surfaceElevated,border:t.border,borderStrong:t.borderStrong,hairline:t.hairline,primarySoft:t.primarySoft,primaryForeground:t.primaryForeground,primaryDeep:t.primaryDeep,accent:t.accent,info:t.info,infoDeep:t.infoDeep,success:t.success,successDeep:t.successDeep,warning:t.warning,warningDeep:t.warningDeep,danger:t.danger,dangerDeep:t.dangerDeep,codeBackground:t.codeBackground,codeForeground:t.codeForeground,overlay:t.overlay,shadow:t.shadow,shadowSmall:t.shadowSmall}}s(Pr,"paletteFromMarkdown");var _a={paper:{light:Pr("light"),dark:Pr("dark")},neutral:{light:{background:"oklch(0.994 0.003 95)",foreground:"oklch(0.205 0.008 80)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.505 0.01 80)",muted2:"oklch(0.62 0.01 80)",card:"oklch(0.985 0.004 95)",card2:"oklch(0.96 0.004 95)",soft:"oklch(0.955 0.006 95)",popover:"oklch(0.997 0.002 95)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.004 90)"},dark:{background:"oklch(0.17 0.006 85)",foreground:"oklch(0.92 0.005 90)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.66 0.01 88)",muted2:"oklch(0.54 0.01 88)",card:"oklch(0.205 0.006 85)",card2:"oklch(0.235 0.006 85)",soft:"oklch(0.255 0.007 85)",popover:"oklch(0.21 0.006 85)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},slate:{light:{background:"oklch(0.99 0.004 250)",foreground:"oklch(0.22 0.018 255)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.49 0.02 255)",muted2:"oklch(0.61 0.018 255)",card:"oklch(0.982 0.005 250)",card2:"oklch(0.955 0.007 250)",soft:"oklch(0.95 0.01 250)",popover:"oklch(0.996 0.003 250)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.008 250)"},dark:{background:"oklch(0.17 0.014 255)",foreground:"oklch(0.92 0.006 250)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.68 0.018 250)",muted2:"oklch(0.54 0.018 250)",card:"oklch(0.21 0.014 255)",card2:"oklch(0.25 0.014 255)",soft:"oklch(0.27 0.014 255)",popover:"oklch(0.215 0.014 255)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},zinc:{light:{background:"oklch(0.992 0 0)",foreground:"oklch(0.21 0.005 285)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.5 0.01 285)",muted2:"oklch(0.62 0.008 285)",card:"oklch(0.982 0.002 285)",card2:"oklch(0.955 0.003 285)",soft:"oklch(0.95 0.003 285)",popover:"oklch(0.996 0 0)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.003 285)"},dark:{background:"oklch(0.17 0.004 285)",foreground:"oklch(0.92 0.003 285)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.67 0.006 285)",muted2:"oklch(0.54 0.006 285)",card:"oklch(0.21 0.004 285)",card2:"oklch(0.245 0.004 285)",soft:"oklch(0.265 0.004 285)",popover:"oklch(0.215 0.004 285)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},stone:{light:{background:"oklch(0.992 0.004 70)",foreground:"oklch(0.22 0.01 70)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.5 0.012 70)",muted2:"oklch(0.62 0.012 70)",card:"oklch(0.982 0.005 70)",card2:"oklch(0.955 0.006 70)",soft:"oklch(0.95 0.007 70)",popover:"oklch(0.996 0.003 70)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.006 70)"},dark:{background:"oklch(0.17 0.008 70)",foreground:"oklch(0.92 0.005 70)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.67 0.01 70)",muted2:"oklch(0.54 0.01 70)",card:"oklch(0.21 0.008 70)",card2:"oklch(0.245 0.008 70)",soft:"oklch(0.265 0.008 70)",popover:"oklch(0.215 0.008 70)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}}};function ze(e){return typeof e=="number"?`${e}px`:e}s(ze,"cssLength");function Ua(e,t){return Ba[t]?.[e]??t}s(Ua,"accentFor");function Sr(e,t){let r=Ua(t,e.theme.accentColor),o=_a[e.theme.baseColor][t],a=e.theme.accentColor==="docfuse",i=Ge.colors[t];return{...o,primary:r,primarySoft:a&&o.primarySoft?o.primarySoft:`color-mix(in oklab, ${r} 12%, var(--df-surface))`,primaryForeground:a&&o.primaryForeground?o.primaryForeground:`color-mix(in oklab, ${r} 76%, var(--df-ink))`,primaryDeep:a&&o.primaryDeep?o.primaryDeep:`color-mix(in oklab, ${r} 84%, var(--df-ink))`,accent:o.accent??r,info:o.info??i.info,infoDeep:o.infoDeep??i.infoDeep,success:o.success??i.success,successDeep:o.successDeep??i.successDeep,warning:o.warning??i.warning,warningDeep:o.warningDeep??i.warningDeep,danger:o.danger??i.danger,dangerDeep:o.dangerDeep??i.dangerDeep,codeBackground:o.codeBackground??o.card2??o.card,codeForeground:o.codeForeground??o.foreground,overlay:o.overlay??i.overlay,shadow:o.shadow??i.shadow,shadowSmall:o.shadowSmall??i.shadowSmall}}s(Sr,"resolveTokens");function xr(e,t){let r=Ge.colors[t];return{canvas:e.background??r.canvas,foreground:e.foreground??r.foreground,text:e.text??r.text,muted:e.muted??r.muted,mutedSubtle:e.muted2??r.mutedSubtle,surface:e.card??r.surface,surfaceSecondary:e.card2??r.surfaceSecondary,surfaceSoft:e.soft??r.surfaceSoft,surfaceElevated:e.popover??r.surfaceElevated,border:e.border??r.border,borderStrong:e.borderStrong??r.borderStrong,hairline:e.hairline??r.hairline,primary:e.primary??r.primary,primarySoft:e.primarySoft??r.primarySoft,primaryForeground:e.primaryForeground??r.primaryForeground,primaryDeep:e.primaryDeep??r.primaryDeep,accent:e.accent??r.accent,info:e.info??r.info,infoDeep:e.infoDeep??r.infoDeep,success:e.success??r.success,successDeep:e.successDeep??r.successDeep,warning:e.warning??r.warning,warningDeep:e.warningDeep??r.warningDeep,danger:e.danger??r.danger,dangerDeep:e.dangerDeep??r.dangerDeep,codeBackground:e.codeBackground??r.codeBackground,codeForeground:e.codeForeground??r.codeForeground,overlay:e.overlay??r.overlay,shadow:e.shadow??r.shadow,shadowSmall:e.shadowSmall??r.shadowSmall}}s(xr,"themeColors");function qa(e){let t=ze(e.theme.radius);return Ia({colors:{light:{...xr(Sr(e,"light"),"light"),...e.theme.tokens.colors?.light},dark:{...xr(Sr(e,"dark"),"dark"),...e.theme.tokens.colors?.dark}},typography:e.theme.tokens.typography,layout:e.theme.tokens.layout,geometry:{radiusSmall:t,radiusMedium:t,radiusLarge:t,...e.theme.tokens.geometry},motion:e.theme.tokens.motion})}s(qa,"resolveDocfuseTheme");function Dr(e,t){let r=t.colors[e].primary;return`${Fa(t,e)}
|
|
619
|
+
window.__docfuseBootstrapOutline()`;import{Fragment as ia,jsx as P,jsxs as oe}from"react/jsx-runtime";function ur({config:e,graph:t,page:r,home:o=!1,markdownAssets:a,rawSource:i,children:c}){let n=ir({config:e,graph:t,page:r,home:o,assets:a,rawSource:i}),d=n.assets.behaviors.length>0,u=n.assets.pluginClients.map(h=>g(e,`/assets/docfuse-plugins/${h.id}.js`)),l=V(e,r.routePath),m=g(e,e.theme.favicon??ye),p=[e.layout.header?void 0:"df-header-hidden",r.frontmatter.layout==="playground"?"df-playground-page":void 0].filter(Boolean).join(" "),w=r.frontmatter.layout==="playground";return oe("html",{lang:r.locale,className:p||void 0,children:[oe("head",{children:[P("meta",{charSet:"utf-8"}),P("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),P("title",{children:n.title}),P("meta",{name:"description",content:n.description,"data-docfuse-page-head":""}),P("meta",{property:"og:title",content:n.title,"data-docfuse-page-head":""}),P("meta",{property:"og:description",content:n.description,"data-docfuse-page-head":""}),e.search.enabled&&r.search?oe(ia,{children:[P("meta",{"data-pagefind-meta":"title[content]",content:r.title,"data-docfuse-page-head":""}),P("meta",{"data-pagefind-meta":"description[content]",content:r.description,"data-docfuse-page-head":""}),P("meta",{"data-pagefind-filter":`version:${r.version}`,"data-docfuse-page-head":""}),P("meta",{"data-pagefind-filter":`locale:${r.locale}`,"data-docfuse-page-head":""}),P("meta",{"data-pagefind-filter":`status:${r.status}`,"data-docfuse-page-head":""}),(Array.isArray(r.frontmatter.tags)?r.frontmatter.tags:[]).filter(h=>typeof h=="string").map(h=>P("meta",{"data-pagefind-filter":`tag:${h}`,"data-docfuse-page-head":""},h))]}):null,l?P("meta",{property:"og:url",content:l,"data-docfuse-page-head":""}):null,P("meta",{name:"twitter:card",content:"summary"}),P("link",{rel:"icon",href:m}),l?P("link",{rel:"canonical",href:l,"data-docfuse-page-head":""}):null,e.siteUrl?n.alternatePages.map(h=>P("link",{rel:"alternate",hrefLang:h.locale,href:V(e,h.routePath),"data-docfuse-page-head":""},h.locale)):null,P("link",{rel:"stylesheet",href:g(e,"/assets/docfuse.css")}),n.assets.pluginStyles.map(h=>P("link",{rel:"stylesheet",href:g(e,`/assets/docfuse-plugins/${h.id}.css`),"data-docfuse-page-head":""},h.id)),e.theme.darkMode?P("script",{dangerouslySetInnerHTML:{__html:we}}):null]}),oe("body",{children:[oe("div",{className:"df-page-root",style:{"--df-docfuse-config-icon":`url(${JSON.stringify(m)})`},"data-docfuse-page-root":"","data-markdown-behaviors":d?JSON.stringify(n.assets.behaviors):void 0,"data-markdown-client-url":d?g(e,"/assets/docfuse-markdown/index.js"):void 0,"data-markdown-plugin-clients":u.length>0?JSON.stringify(u):void 0,"data-docfuse-playground-client-url":w?g(e,"/assets/docfuse-playground/index.js"):void 0,children:[P("a",{className:"df-skip-link",href:"#docfuse-main",children:n.labels.skipToContent}),e.layout.header?P(er,{model:n}):null,o?P("main",{id:"docfuse-main",className:"df-home",tabIndex:-1,"data-pagefind-body":r.search?"":void 0,children:c}):P(sr,{model:n,children:c}),P(cr,{model:n})]}),P("script",{type:"module",dangerouslySetInnerHTML:{__html:n.markdownClientScript}}),w?P("script",{type:"module",src:g(e,"/assets/docfuse-playground/index.js")}):null,P("script",{dangerouslySetInnerHTML:{__html:lr}}),P("script",{dangerouslySetInnerHTML:{__html:dr}}),e.search.enabled?P("script",{type:"module",src:g(e,"/assets/docfuse-search.js")}):null]})]})}s(ur,"Layout");import{createMarkdownRenderer as Ma}from"@docfuse/markdown/server";import*as Ca from"react";import*as Na from"react/jsx-runtime";import{analyzeMdxModuleBoundary as ca}from"@docfuse/markdown/server/analyze";var la=["react","react/jsx-runtime"],da=new Set(la);function Ie(e){return da.has(e)}s(Ie,"isDocsImportSpecifier");function Be(e){return e.startsWith(".")||Ie(e)}s(Be,"isAllowedDocsImport");function ke(e){let t=ca(e);for(let r of t.unsupportedReferences){let o=r.kind==="dynamic-import"?"Dynamic import":"Re-export";throw new Error(`${o} is not allowed in MDX${r.specifier?`: ${r.specifier}`:""}`)}for(let{specifier:r}of t.imports)if(!Be(r))throw new Error(`External import is not allowed: ${r}`);return{source:t.sourceWithoutImports,imports:t.imports}}s(ke,"prepareMdxSource");import{access as ua,readFile as ma,realpath as Pe}from"fs/promises";import{dirname as pa,extname as fr,isAbsolute as He,relative as hr,resolve as mr,sep as gr}from"path";import{build as fa}from"esbuild";import*as ha from"react";import*as ga from"react/jsx-runtime";import{detectMarkdownAssets as ya}from"@docfuse/markdown/server/analyze";var _e=[".tsx",".ts",".jsx",".js"],pr={react:ha,"react/jsx-runtime":ga};function ba(e){if(Object.hasOwn(pr,e))return pr[e];throw new Error(`External import is not allowed in local docs components: ${e}`)}s(ba,"requireLocalComponentRuntime");function ve(e,t){let r=hr(e,t);return r===""||!r.startsWith(`..${gr}`)&&r!==".."&&!He(r)}s(ve,"isInsideRoot");async function Ue(e){try{return await ua(e),!0}catch{return!1}}s(Ue,"fileExists");async function qe(e,t){let r=await Pe(e);if(!t)return r;let o=await Pe(t),a=hr(o,r);if(a===".."||a.startsWith(`..${gr}`)||He(a))throw new Error(`Local component import escapes the project root: ${e}`);return r}s(qe,"assertInsideProjectRoot");async function je(e,t,r){let o=mr(pa(e),t),a=fr(o);if(a&&!_e.includes(a))throw new Error(`Unsupported local component import: ${t}`);if(a&&await Ue(o))return qe(o,r);for(let i of _e){let c=`${o}${i}`;if(await Ue(c))return qe(c,r)}for(let i of _e){let c=mr(o,`index${i}`);if(await Ue(c))return qe(c,r)}throw new Error(`Local component import not found: ${t}`)}s(je,"resolveLocalModule");async function wa(e,t){let r=t?await Pe(t):void 0,o=new Set([e]),i=(await fa({entryPoints:[e],bundle:!0,outfile:"local-component.js",write:!1,platform:"node",format:"cjs",target:"node22",jsx:"automatic",plugins:[{name:"docfuse-components-alias",setup(c){c.onResolve({filter:/^(?:react|react\/jsx-runtime)$/},n=>({path:n.path,external:!0})),c.onResolve({filter:/.*/},async n=>{if(!He(n.path)||!n.importer||!(r?ve(r,n.importer):o.has(n.importer)))return;let u=await je(n.importer,n.path,t);return o.add(u),{path:u}}),c.onResolve({filter:/^\./},async n=>{if(n.importer&&!(r?ve(r,n.importer):o.has(n.importer)))return;let d=await je(n.importer,n.path,t);return o.add(d),{path:d}}),c.onLoad({filter:/\.(?:[jt]sx?)$/},async n=>{let d=await Pe(n.path);(r?ve(r,d):o.has(d))&&o.add(d)}),c.onResolve({filter:/^react-dom$/},n=>(n.importer?r?ve(r,n.importer):o.has(n.importer):!1)?{errors:[{text:"External import is not allowed in local docs components: react-dom"}]}:void 0),c.onResolve({filter:/^[^./].*/},n=>{if(!Be(n.path))return{errors:[{text:`External import is not allowed in local docs components: ${n.path}`}]}})}}]})).outputFiles.find(c=>fr(c.path)===".js");if(!i)throw new Error(`Failed to bundle local component: ${e}`);return{code:i.text,sourcePaths:[...o]}}s(wa,"bundleLocalModule");async function ka(e){let t={exports:{}};return new Function("module","exports","require",e.code)(t,t.exports,ba),t.exports}s(ka,"importBundle");function va(e){return e.filter(t=>t.specifier.startsWith("."))}s(va,"localImports");async function yr(e,t,r){let o=va(e);if(!o.length)return[];if(!t)throw new Error("Local MDX component imports require the Markdown source file path");let a=new Map;return Promise.all(o.map(async i=>{let c=await je(t,i.specifier,r),n=a.get(c);return n||(n=wa(c,r),a.set(c,n)),{localImport:i,bundle:await n}}))}s(yr,"bundleLocalImports");async function br(e,t,r){let o=await yr(e,t,r);return[...new Set(o.flatMap(({bundle:a})=>a.sourcePaths))].sort()}s(br,"localComponentDependencyPaths");async function Pa(e){let t={},r=new Map;for(let{localImport:o,bundle:a}of e){let i=r.get(a);i||(i=ka(a),r.set(a,i));let c=await i;for(let n of o.bindings)if(n.namespace)t[n.local]=c;else{if(!Object.hasOwn(c,n.imported))throw new Error(`Local module ${JSON.stringify(o.specifier)} does not export ${JSON.stringify(n.imported)}`);t[n.local]=c[n.imported]}}return t}s(Pa,"componentsFromBundles");function Sa(e,t){e.behaviors=[...new Set([...e.behaviors,...t.behaviors])],e.math||=t.math,e.pluginClients=[...new Map([...e.pluginClients,...t.pluginClients].map(r=>[r.id,r])).values()],e.pluginStyles=[...new Map([...e.pluginStyles,...t.pluginStyles].map(r=>[r.id,r])).values()]}s(Sa,"mergeAssets");function xa(){return{behaviors:[],math:!1,pluginClients:[],pluginStyles:[]}}s(xa,"emptyAssets");async function Da(e,t=[]){let r=xa(),o=new Set;for(let{bundle:a}of e)for(let i of a.sourcePaths)o.has(i)||(o.add(i),Sa(r,ya(await ma(i,"utf8"),t,"mdx")));return r}s(Da,"assetsFromBundles");async function wr(e,t,r,o=[]){let a=await yr(e,t,r),[i,c]=await Promise.all([Pa(a),Da(a,o)]);return{components:i,assets:c}}s(wr,"loadLocalComponentBundle");function Aa(...e){return{behaviors:[...new Set(e.flatMap(t=>t.behaviors))],math:e.some(t=>t.math),pluginClients:[...new Map(e.flatMap(t=>t.pluginClients).map(t=>[t.id,t])).values()],pluginStyles:[...new Map(e.flatMap(t=>t.pluginStyles).map(t=>[t.id,t])).values()]}}s(Aa,"mergeAssets");function Ea(e,t){let r={react:Ca,"react/jsx-runtime":Na},o={...t};for(let a of e){if(!Ie(a.specifier))continue;let i=r[a.specifier];for(let c of a.bindings){if(c.namespace){o[c.local]=i;continue}if(c.imported==="default"&&a.specifier==="react"){o[c.local]=i.default??i;continue}if(!Object.hasOwn(i,c.imported))throw new Error(`Module ${JSON.stringify(a.specifier)} does not export ${JSON.stringify(c.imported)}`);o[c.local]=i[c.imported]}}return o}s(Ea,"bindImports");async function kr(e,t,r,o,a,i,c=Ma()){let n=ke(e),{components:d,assets:u}=await wr(n.imports,t,r,o?.plugins),l=await c.renderMdx(n.source,{markdown:o,classNames:a,urlTransform:i,as:"article",components:{...Ea(n.imports,d)}});return{content:l.content,assets:Aa(l.assets,u)}}s(kr,"renderMdxResult");import{mkdir as Ra}from"fs/promises";import{dirname as La,join as Ta}from"path";import{fileURLToPath as $a}from"url";function Oa(){let e=import.meta.url.endsWith(".js")?"./search-client.js":"./searchClientRuntime.ts";return $a(new URL(e,import.meta.url))}s(Oa,"searchRuntimeEntry");async function vr(e){let{build:t}=await import("esbuild"),r=Ta(e,"assets/docfuse-search.js");await Ra(La(r),{recursive:!0}),await t({entryPoints:[Oa()],bundle:!0,format:"iife",platform:"browser",target:"es2022",outfile:r,minify:!0,sourcemap:!1,legalComments:"none",logLevel:"silent"})}s(vr,"buildSearchBundle");import{DEFAULT_SEMANTIC_COLORS as A,DEFAULT_MARKDOWN_THEME as Ge,markdownThemeDeclarations as Fa,resolveMarkdownTheme as Ia}from"@docfuse/markdown/theme";var Ba={docfuse:{light:A.light.blue,dark:A.dark.blue},cyan:{light:A.light.cyan,dark:A.dark.cyan},emerald:{light:A.light.green,dark:A.dark.green},blue:{light:A.light.blue,dark:A.dark.blue},green:{light:A.light.green,dark:A.dark.green},red:{light:A.light.red,dark:A.dark.red},orange:{light:A.light.orange,dark:A.dark.orange},violet:{light:A.light.indigo,dark:A.dark.indigo},neutral:{light:"oklch(0.3 0 0)",dark:"oklch(0.85 0 0)"}};function Pr(e){let t=Ge.colors[e];return{background:t.canvas,foreground:t.foreground,text:t.text,muted:t.muted,muted2:t.mutedSubtle,card:t.surface,card2:t.surfaceSecondary,soft:t.surfaceSoft,popover:t.surfaceElevated,border:t.border,borderStrong:t.borderStrong,hairline:t.hairline,primarySoft:t.primarySoft,primaryForeground:t.primaryForeground,primaryDeep:t.primaryDeep,accent:t.accent,info:t.info,infoDeep:t.infoDeep,success:t.success,successDeep:t.successDeep,warning:t.warning,warningDeep:t.warningDeep,danger:t.danger,dangerDeep:t.dangerDeep,codeBackground:t.codeBackground,codeForeground:t.codeForeground,overlay:t.overlay,shadow:t.shadow,shadowSmall:t.shadowSmall}}s(Pr,"paletteFromMarkdown");var _a={paper:{light:Pr("light"),dark:Pr("dark")},neutral:{light:{background:"oklch(0.994 0.003 95)",foreground:"oklch(0.205 0.008 80)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.505 0.01 80)",muted2:"oklch(0.62 0.01 80)",card:"oklch(0.985 0.004 95)",card2:"oklch(0.96 0.004 95)",soft:"oklch(0.955 0.006 95)",popover:"oklch(0.997 0.002 95)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.004 90)"},dark:{background:"oklch(0.17 0.006 85)",foreground:"oklch(0.92 0.005 90)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.66 0.01 88)",muted2:"oklch(0.54 0.01 88)",card:"oklch(0.205 0.006 85)",card2:"oklch(0.235 0.006 85)",soft:"oklch(0.255 0.007 85)",popover:"oklch(0.21 0.006 85)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},slate:{light:{background:"oklch(0.99 0.004 250)",foreground:"oklch(0.22 0.018 255)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.49 0.02 255)",muted2:"oklch(0.61 0.018 255)",card:"oklch(0.982 0.005 250)",card2:"oklch(0.955 0.007 250)",soft:"oklch(0.95 0.01 250)",popover:"oklch(0.996 0.003 250)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.008 250)"},dark:{background:"oklch(0.17 0.014 255)",foreground:"oklch(0.92 0.006 250)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.68 0.018 250)",muted2:"oklch(0.54 0.018 250)",card:"oklch(0.21 0.014 255)",card2:"oklch(0.25 0.014 255)",soft:"oklch(0.27 0.014 255)",popover:"oklch(0.215 0.014 255)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},zinc:{light:{background:"oklch(0.992 0 0)",foreground:"oklch(0.21 0.005 285)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.5 0.01 285)",muted2:"oklch(0.62 0.008 285)",card:"oklch(0.982 0.002 285)",card2:"oklch(0.955 0.003 285)",soft:"oklch(0.95 0.003 285)",popover:"oklch(0.996 0 0)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.003 285)"},dark:{background:"oklch(0.17 0.004 285)",foreground:"oklch(0.92 0.003 285)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.67 0.006 285)",muted2:"oklch(0.54 0.006 285)",card:"oklch(0.21 0.004 285)",card2:"oklch(0.245 0.004 285)",soft:"oklch(0.265 0.004 285)",popover:"oklch(0.215 0.004 285)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},stone:{light:{background:"oklch(0.992 0.004 70)",foreground:"oklch(0.22 0.01 70)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.5 0.012 70)",muted2:"oklch(0.62 0.012 70)",card:"oklch(0.982 0.005 70)",card2:"oklch(0.955 0.006 70)",soft:"oklch(0.95 0.007 70)",popover:"oklch(0.996 0.003 70)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.006 70)"},dark:{background:"oklch(0.17 0.008 70)",foreground:"oklch(0.92 0.005 70)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.67 0.01 70)",muted2:"oklch(0.54 0.01 70)",card:"oklch(0.21 0.008 70)",card2:"oklch(0.245 0.008 70)",soft:"oklch(0.265 0.008 70)",popover:"oklch(0.215 0.008 70)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}}};function ze(e){return typeof e=="number"?`${e}px`:e}s(ze,"cssLength");function Ua(e,t){return Ba[t]?.[e]??t}s(Ua,"accentFor");function Sr(e,t){let r=Ua(t,e.theme.accentColor),o=_a[e.theme.baseColor][t],a=e.theme.accentColor==="docfuse",i=Ge.colors[t];return{...o,primary:r,primarySoft:a&&o.primarySoft?o.primarySoft:`color-mix(in oklab, ${r} 12%, var(--df-surface))`,primaryForeground:a&&o.primaryForeground?o.primaryForeground:`color-mix(in oklab, ${r} 76%, var(--df-ink))`,primaryDeep:a&&o.primaryDeep?o.primaryDeep:`color-mix(in oklab, ${r} 84%, var(--df-ink))`,accent:o.accent??r,info:o.info??i.info,infoDeep:o.infoDeep??i.infoDeep,success:o.success??i.success,successDeep:o.successDeep??i.successDeep,warning:o.warning??i.warning,warningDeep:o.warningDeep??i.warningDeep,danger:o.danger??i.danger,dangerDeep:o.dangerDeep??i.dangerDeep,codeBackground:o.codeBackground??o.card2??o.card,codeForeground:o.codeForeground??o.foreground,overlay:o.overlay??i.overlay,shadow:o.shadow??i.shadow,shadowSmall:o.shadowSmall??i.shadowSmall}}s(Sr,"resolveTokens");function xr(e,t){let r=Ge.colors[t];return{canvas:e.background??r.canvas,foreground:e.foreground??r.foreground,text:e.text??r.text,muted:e.muted??r.muted,mutedSubtle:e.muted2??r.mutedSubtle,surface:e.card??r.surface,surfaceSecondary:e.card2??r.surfaceSecondary,surfaceSoft:e.soft??r.surfaceSoft,surfaceElevated:e.popover??r.surfaceElevated,border:e.border??r.border,borderStrong:e.borderStrong??r.borderStrong,hairline:e.hairline??r.hairline,primary:e.primary??r.primary,primarySoft:e.primarySoft??r.primarySoft,primaryForeground:e.primaryForeground??r.primaryForeground,primaryDeep:e.primaryDeep??r.primaryDeep,accent:e.accent??r.accent,info:e.info??r.info,infoDeep:e.infoDeep??r.infoDeep,success:e.success??r.success,successDeep:e.successDeep??r.successDeep,warning:e.warning??r.warning,warningDeep:e.warningDeep??r.warningDeep,danger:e.danger??r.danger,dangerDeep:e.dangerDeep??r.dangerDeep,codeBackground:e.codeBackground??r.codeBackground,codeForeground:e.codeForeground??r.codeForeground,overlay:e.overlay??r.overlay,shadow:e.shadow??r.shadow,shadowSmall:e.shadowSmall??r.shadowSmall}}s(xr,"themeColors");function qa(e){let t=ze(e.theme.radius);return Ia({colors:{light:{...xr(Sr(e,"light"),"light"),...e.theme.tokens.colors?.light},dark:{...xr(Sr(e,"dark"),"dark"),...e.theme.tokens.colors?.dark}},typography:e.theme.tokens.typography,layout:e.theme.tokens.layout,geometry:{radiusSmall:t,radiusMedium:t,radiusLarge:t,...e.theme.tokens.geometry},motion:e.theme.tokens.motion})}s(qa,"resolveDocfuseTheme");function Dr(e,t){let r=t.colors[e].primary;return`${Fa(t,e)}
|
|
620
620
|
--df-accent-50: color-mix(in oklab, ${r} 8%, var(--df-surface));
|
|
621
621
|
--df-accent-100: color-mix(in oklab, ${r} 16%, var(--df-surface));
|
|
622
622
|
--df-accent-200: color-mix(in oklab, ${r} 28%, var(--df-surface));
|
|
@@ -644,12 +644,12 @@ const options = {
|
|
|
644
644
|
] }
|
|
645
645
|
}
|
|
646
646
|
window.__docfuseBootstrapPlayground = () => mountPlaygrounds(options)
|
|
647
|
-
window.__docfuseBootstrapPlayground()`;await Ka({absWorkingDir:e,stdin:{contents:d,loader:"js",resolveDir:e,sourcefile:"docfuse-playground-entry.js"},bundle:!0,format:"esm",platform:"browser",target:"es2022",outdir:o,entryNames:"index",chunkNames:"chunks/[name]-[hash]",assetNames:"assets/[name]-[hash]",splitting:!0,minify:!0,sourcemap:!1,define:{"process.env.NODE_ENV":JSON.stringify("production")},logLevel:"silent"})}s(Nr,"buildPlaygroundBundle");import{copyFile as se,cp as Rr,lstat as Wa,mkdir as Se,readFile as Ve,readdir as Lr,realpath as Ar,rm as Tr,stat as Ja}from"fs/promises";import{createRequire as $r}from"module";import{dirname as ie,join as I,posix as z,relative as Xa,resolve as ne}from"path";import{analyzeMarkdown as Ya}from"@docfuse/markdown/server/analyze";var We=$r(import.meta.url);async function Qa(e,t){await Rr(e,t,{recursive:!0,filter:s(async r=>(await Ja(r)).isDirectory()||r.endsWith(".js"),"filter")})}s(Qa,"copyJavaScriptDirectory");async function Or(e){let t=We.resolve("@docfuse/markdown/client"),r=I(e,"assets/docfuse-markdown");await Qa(ie(t),r)}s(Or,"copyMarkdownClient");var Za=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function Er(e,t,r){if(!Za.test(t.id))throw new Error(`Invalid Markdown plugin ${r} id: ${t.id}`);let o=e.get(t.id);if(o&&JSON.stringify(o)!==JSON.stringify(t))throw new Error(`Markdown plugin ${r} id "${t.id}" is declared by both "${o.module}" and "${t.module}"`);e.set(t.id,t)}s(Er,"registerPluginAsset");function Ke(e,t){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(r=>r===""||r==="."||r===".."))throw new Error(`Invalid Markdown plugin ${t} path: ${e}`)}s(Ke,"assertSafePluginResourcePath");async function Fr(e,t,r){await Se(t,{recursive:!0});for(let o of await Lr(e,{withFileTypes:!0})){if(o.isSymbolicLink())throw new Error(`Markdown plugin resources must not use symbolic links: ${I(e,o.name)}`);let a=I(e,o.name),i=I(t,o.name);o.isDirectory()?await Fr(a,i,r):o.isFile()&&(!r.extensions||r.extensions.some(c=>o.name.endsWith(c)))&&await se(a,i)}}s(Fr,"copyPluginResourceDirectory");async function en(e,t){let r=We.resolve(t.module);if(await se(r,I(e,`${t.id}.js`)),!t.resources?.length)return;let o=I(e,t.id),a=$r(r);for(let i of t.resources){Ke(i.output,"resource output");let c=a.resolve(i.module),n=ne(o,i.output);if(!ee(o,n))throw new Error(`Markdown plugin resource output escapes its client directory: ${i.output}`);await Se(ie(n),{recursive:!0}),await se(c,n);for(let d of i.directories??[]){Ke(d.source,"resource source"),Ke(d.output,"resource directory output");let u=ie(c),l=ne(u,d.source),m=ne(o,d.output);if(!ee(u,l)||!ee(o,m))throw new Error(`Markdown plugin resource directory escapes its declared root: ${d.source}`);await Fr(l,m,d)}}}s(en,"copyMarkdownPluginClient");function le(e,t,r){e.pluginClients.forEach(o=>Er(t,o,"client")),e.pluginStyles.forEach(o=>Er(r,o,"style"))}s(le,"registerPluginAssets");async function Ir(e,t,r){let o=I(e,"assets/docfuse-plugins");await Tr(o,{recursive:!0,force:!0}),!(t.size===0&&r.size===0)&&(await Se(o,{recursive:!0}),await Promise.all([...[...t.values()].map(a=>en(o,a)),...[...r.values()].map(a=>se(We.resolve(a.module),I(o,`${a.id}.css`)))]))}s(Ir,"copyMarkdownPluginAssets");async function Je(e,t){try{await Rr(e,t,{recursive:!0,force:!0})}catch(r){throw new Error(`Failed to copy required KaTeX fonts from ${e}`,{cause:r})}}s(Je,"copyRequiredMathFonts");async function Xe(e,t){let r=[];async function o(i,c){for(let n of await Lr(i,{withFileTypes:!0})){if(n.isSymbolicLink())throw new Error(`Public assets must not be symbolic links: ${z.join(c,n.name)}`);let d=I(i,n.name),u=z.join(c,n.name);n.isDirectory()?await o(d,u):n.isFile()&&r.push({source:d,outputPath:u})}}s(o,"walk");let a=new Set(t.versions.items.map(i=>i.docsDir));for(let i of a){let c=I(K(e,i,`public directory for ${i}`),"public");try{await o(c,"")}catch(n){if(n.code!=="ENOENT")throw n}}return r}s(Xe,"collectPublicAssets");function Br(e){let t=Ya(e);return[...new Set([...t.images,...t.links])].map(r=>(r.split("#")[0]??"").split("?")[0]??"").filter(r=>r&&!r.startsWith("/")&&!/^(?:[a-z][a-z\d+.-]*:|\/\/|#)/i.test(r)&&!/\.mdx?$/i.test(r))}s(Br,"relativeAssetTargets");function _r(e){return e.split("/").map(t=>{let r=decodeURIComponent(t);if(r.includes("/")||r.includes("\\"))throw new Error(`Invalid relative asset path: ${e}`);return r}).join("/")}s(_r,"decodeRelativeUrlPath");async function Ye(e,t){let r=[];for(let o of t){let a=K(e,o.docsDir,"docsDir"),i=await Ar(a);for(let c of Br(o.body)){let n=_r(c),d=ne(ie(o.sourcePath),n),u;try{u=await Wa(d)}catch(
|
|
647
|
+
window.__docfuseBootstrapPlayground()`;await Ka({absWorkingDir:e,stdin:{contents:d,loader:"js",resolveDir:e,sourcefile:"docfuse-playground-entry.js"},bundle:!0,format:"esm",platform:"browser",target:"es2022",outdir:o,entryNames:"index",chunkNames:"chunks/[name]-[hash]",assetNames:"assets/[name]-[hash]",splitting:!0,minify:!0,sourcemap:!1,define:{"process.env.NODE_ENV":JSON.stringify("production")},logLevel:"silent"})}s(Nr,"buildPlaygroundBundle");import{copyFile as se,cp as Rr,lstat as Wa,mkdir as Se,readFile as Ve,readdir as Lr,realpath as Ar,rm as Tr,stat as Ja}from"fs/promises";import{createRequire as $r}from"module";import{dirname as ie,join as I,posix as z,relative as Xa,resolve as ne}from"path";import{analyzeMarkdown as Ya}from"@docfuse/markdown/server/analyze";var We=$r(import.meta.url);async function Qa(e,t){await Rr(e,t,{recursive:!0,filter:s(async r=>(await Ja(r)).isDirectory()||r.endsWith(".js"),"filter")})}s(Qa,"copyJavaScriptDirectory");async function Or(e){let t=We.resolve("@docfuse/markdown/client"),r=I(e,"assets/docfuse-markdown");await Qa(ie(t),r)}s(Or,"copyMarkdownClient");var Za=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function Er(e,t,r){if(!Za.test(t.id))throw new Error(`Invalid Markdown plugin ${r} id: ${t.id}`);let o=e.get(t.id);if(o&&JSON.stringify(o)!==JSON.stringify(t))throw new Error(`Markdown plugin ${r} id "${t.id}" is declared by both "${o.module}" and "${t.module}"`);e.set(t.id,t)}s(Er,"registerPluginAsset");function Ke(e,t){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(r=>r===""||r==="."||r===".."))throw new Error(`Invalid Markdown plugin ${t} path: ${e}`)}s(Ke,"assertSafePluginResourcePath");async function Fr(e,t,r){await Se(t,{recursive:!0});for(let o of await Lr(e,{withFileTypes:!0})){if(o.isSymbolicLink())throw new Error(`Markdown plugin resources must not use symbolic links: ${I(e,o.name)}`);let a=I(e,o.name),i=I(t,o.name);o.isDirectory()?await Fr(a,i,r):o.isFile()&&(!r.extensions||r.extensions.some(c=>o.name.endsWith(c)))&&await se(a,i)}}s(Fr,"copyPluginResourceDirectory");async function en(e,t){let r=We.resolve(t.module);if(await se(r,I(e,`${t.id}.js`)),!t.resources?.length)return;let o=I(e,t.id),a=$r(r);for(let i of t.resources){Ke(i.output,"resource output");let c=a.resolve(i.module),n=ne(o,i.output);if(!ee(o,n))throw new Error(`Markdown plugin resource output escapes its client directory: ${i.output}`);await Se(ie(n),{recursive:!0}),await se(c,n);for(let d of i.directories??[]){Ke(d.source,"resource source"),Ke(d.output,"resource directory output");let u=ie(c),l=ne(u,d.source),m=ne(o,d.output);if(!ee(u,l)||!ee(o,m))throw new Error(`Markdown plugin resource directory escapes its declared root: ${d.source}`);await Fr(l,m,d)}}}s(en,"copyMarkdownPluginClient");function le(e,t,r){e.pluginClients.forEach(o=>Er(t,o,"client")),e.pluginStyles.forEach(o=>Er(r,o,"style"))}s(le,"registerPluginAssets");async function Ir(e,t,r){let o=I(e,"assets/docfuse-plugins");await Tr(o,{recursive:!0,force:!0}),!(t.size===0&&r.size===0)&&(await Se(o,{recursive:!0}),await Promise.all([...[...t.values()].map(a=>en(o,a)),...[...r.values()].map(a=>se(We.resolve(a.module),I(o,`${a.id}.css`)))]))}s(Ir,"copyMarkdownPluginAssets");async function Je(e,t){try{await Rr(e,t,{recursive:!0,force:!0})}catch(r){throw new Error(`Failed to copy required KaTeX fonts from ${e}`,{cause:r})}}s(Je,"copyRequiredMathFonts");async function Xe(e,t){let r=[];async function o(i,c){for(let n of await Lr(i,{withFileTypes:!0})){if(n.isSymbolicLink())throw new Error(`Public assets must not be symbolic links: ${z.join(c,n.name)}`);let d=I(i,n.name),u=z.join(c,n.name);n.isDirectory()?await o(d,u):n.isFile()&&r.push({source:d,outputPath:u})}}s(o,"walk");let a=new Set(t.versions.items.map(i=>i.docsDir));for(let i of a){let c=I(K(e,i,`public directory for ${i}`),"public");try{await o(c,"")}catch(n){if(n.code!=="ENOENT")throw n}}return r}s(Xe,"collectPublicAssets");function Br(e){let t=Ya(e);return[...new Set([...t.images,...t.links])].map(r=>(r.split("#")[0]??"").split("?")[0]??"").filter(r=>r&&!r.startsWith("/")&&!/^(?:[a-z][a-z\d+.-]*:|\/\/|#)/i.test(r)&&!/\.mdx?$/i.test(r))}s(Br,"relativeAssetTargets");function _r(e){return e.split("/").map(t=>{let r=decodeURIComponent(t);if(r.includes("/")||r.includes("\\"))throw new Error(`Invalid relative asset path: ${e}`);return r}).join("/")}s(_r,"decodeRelativeUrlPath");async function Ye(e,t){let r=[];for(let o of t){let a=K(e,o.docsDir,"docsDir"),i=await Ar(a);for(let c of Br(o.body)){let n=_r(c),d=ne(ie(o.sourcePath),n),u;try{u=await Wa(d)}catch(p){if(p.code==="ENOENT")continue;throw p}if(u.isSymbolicLink())throw new Error(`Relative assets must not use symbolic links: ${c}`);if(!u.isFile())continue;let l=await Ar(d),m=ne(i,Xa(a,d));if(O(l)!==O(m))throw new Error(`Relative assets must not use symbolic links: ${c}`);if(!ee(i,l))throw new Error(`Relative asset must stay inside docsDir: ${c}`);r.push({source:l,outputPath:z.resolve("/",z.dirname(o.outputPath),n).slice(1)})}}return r}s(Ye,"collectPageAssets");function ce(e){let t=new Set;for(let r of e){if("assetOutputPaths"in r&&r.assetOutputPaths){r.assetOutputPaths.forEach(o=>t.add(o));continue}if("body"in r)for(let o of Br(r.body)){let a=_r(o);t.add(z.resolve("/",z.dirname(r.outputPath),a).slice(1))}}return t}s(ce,"pageAssetOutputPathsFor");async function Ur(e,t,r,o){if(!t.length)return;let a=new Set([...ce(r),...o].map(O)),i=[...ce(t)].filter(c=>!a.has(O(c)));await Promise.all(i.map(c=>Tr(T(e,c,`stale page asset ${c}`),{force:!0})))}s(Ur,"removeStalePageAssets");async function Qe(e,t,r){let o=new Set([...r].map(O)),a=s(u=>{let l=[],m=z.dirname(u);for(;m!==".";)l.push(m),m=z.dirname(m);return l},"ancestorsOf"),i=new Set([...o].flatMap(u=>a(u))),c=Pt.map(O),n=new Map,d=new Set;for(let u of t){let l=O(u.outputPath),m=a(l);if(o.has(l)||i.has(l)||m.some(h=>o.has(h))||c.some(h=>l===h||l.startsWith(`${h}/`)))throw new Error(`Static asset conflicts with generated output: ${u.outputPath}`);let p=n.get(l);if(p&&p!==u.source){let[h,S]=await Promise.all([Ve(p),Ve(u.source)]);if(!h.equals(S))throw new Error(`Multiple static assets target the same output path: ${u.outputPath}`)}if(p)continue;if(d.has(l)||m.some(h=>n.has(h)))throw new Error(`Multiple static assets target overlapping output paths: ${u.outputPath}`);n.set(l,u.source);for(let h of m)d.add(h);let w=T(e,u.outputPath,`static asset ${u.outputPath}`);await Se(ie(w),{recursive:!0}),await se(u.source,w)}}s(Qe,"copyStaticAssets");async function qr(e,t){return t.length?(await Promise.all(t.map(async o=>{let a=await Ve(K(e,o,"styles entry"),"utf8");return`/* User style: ${o} */
|
|
648
648
|
${a}`}))).join(`
|
|
649
|
-
`):""}s(qr,"readCustomStyles");import{Fragment as ln,jsx as tt,jsxs as dn}from"react/jsx-runtime";var an={behaviors:[],math:!1,pluginClients:[],pluginStyles:[]};function nn(e,t){let r=new Map,o=new Map;le(e,r,o);for(let a of t)le({behaviors:[],math:a.assets?.math===!0,pluginClients:[...a.assets?.clients??[]],pluginStyles:[...a.assets?.styles??[]]},r,o);return{behaviors:e.behaviors,math:e.math||t.some(a=>a.assets?.math===!0),pluginClients:[...r.values()],pluginStyles:[...o.values()]}}s(nn,"playgroundMarkdownAssets");function sn(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}s(sn,"jsonForInlineScript");function cn(e,t){let r=t.defaultLocale,o=Te(r,e.i18n.messages),a=_(e.title),i=_(g(e,e.theme.favicon??ye)),c=_(g(e,"/assets/docfuse.css")),n=t.versions.find(S=>S.id===t.currentVersion),d=g(e,j(r,t.defaultLocale,n?.base??"/")),u=_(d),l=_(o.title),m=_(o.description),
|
|
649
|
+
`):""}s(qr,"readCustomStyles");import{Fragment as ln,jsx as tt,jsxs as dn}from"react/jsx-runtime";var an={behaviors:[],math:!1,pluginClients:[],pluginStyles:[]};function nn(e,t){let r=new Map,o=new Map;le(e,r,o);for(let a of t)le({behaviors:[],math:a.assets?.math===!0,pluginClients:[...a.assets?.clients??[]],pluginStyles:[...a.assets?.styles??[]]},r,o);return{behaviors:e.behaviors,math:e.math||t.some(a=>a.assets?.math===!0),pluginClients:[...r.values()],pluginStyles:[...o.values()]}}s(nn,"playgroundMarkdownAssets");function sn(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}s(sn,"jsonForInlineScript");function cn(e,t){let r=t.defaultLocale,o=Te(r,e.i18n.messages),a=_(e.title),i=_(g(e,e.theme.favicon??ye)),c=_(g(e,"/assets/docfuse.css")),n=t.versions.find(S=>S.id===t.currentVersion),d=g(e,j(r,t.defaultLocale,n?.base??"/")),u=_(d),l=_(o.title),m=_(o.description),p=_(o.home),w=t.versions.flatMap(S=>t.locales.map(D=>{let b=Te(D,e.i18n.messages),f=g(e,j(D,t.defaultLocale,S.base));return{locale:D,prefix:f,home:f,title:b.title,description:b.description,homeLabel:b.home,documentTitle:`404 - ${b.title} | ${e.title}`}})).sort((S,D)=>D.prefix.length-S.prefix.length),h=`(function(){var p=${sn(w)},n=location.pathname,m=p.find(function(x){var r=x.prefix.replace(//$/,'');return n===r||n.indexOf(x.prefix)===0});if(!m)return;document.documentElement.lang=m.locale;document.title=m.documentTitle;var t=document.getElementById('docfuse-404-title'),d=document.getElementById('docfuse-404-description'),h=document.getElementById('docfuse-404-home');if(t)t.textContent=m.title;if(d)d.textContent=m.description;if(h){h.textContent=m.homeLabel;h.setAttribute('href',m.home)}})()`;return`<!doctype html><html lang="${_(r)}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>404 - ${l} | ${a}</title><meta name="robots" content="noindex"><link rel="icon" href="${i}"><link rel="stylesheet" href="${c}"><script>${we}</script></head><body><div class="df-not-found"><span class="df-not-found-code">404</span><h1 id="docfuse-404-title" class="df-not-found-title">${l}</h1><p id="docfuse-404-description" class="df-not-found-desc">${m}</p><a id="docfuse-404-home" href="${u}" class="df-not-found-link">${p}</a></div><script>${h}</script></body></html>`}s(cn,"render404Page");async function zr({cwd:e,config:t,graph:r,pages:o=r.pages,previousPages:a=[],renderer:i=on(),writeSharedAssets:c=!0}){let n=L(e,t.outputDir),d=St(t,r),u=r.pages.some(b=>b.frontmatter.layout==="playground"),l=[];if(await Ze(W(n,"assets"),{recursive:!0}),c){let b=u&&t.markdown.plugins.some(U=>U.assets?.math===!0)||r.pages.some(U=>Hr(U.body,t.markdown.plugins,G(U.relativePath)?"mdx":"markdown").math),[f,M]=await Promise.all([Kt({math:b}),qr(e,t.styles)]);await xe(W(n,"assets/docfuse.css"),`${f}
|
|
650
650
|
${Mr(t)}
|
|
651
|
-
${
|
|
652
|
-
`),await tn(Gt(),W(n,"assets/file-icons"),{recursive:!0,force:!0});let
|
|
651
|
+
${M}
|
|
652
|
+
`),await tn(Gt(),W(n,"assets/file-icons"),{recursive:!0,force:!0});let x=W(n,"assets/fonts");if(b){let U=zt();await Je(U,x)}else await et(x,{recursive:!0,force:!0});t.search.enabled&&await vr(n),u?await Nr(e,n,t):await et(W(n,"assets/docfuse-playground"),{recursive:!0,force:!0});let[pe,Ce]=await Promise.all([Xe(e,t),Ye(e,r.pages)]);l=pe,await Qe(n,[...l,...Ce],d),await xe(W(n,"404.html"),cn(t,r))}else{let[b,f]=await Promise.all([Xe(e,t),Ye(e,o)]);l=b,await Qe(n,f,d)}let m=c?o:r.pages,p=new Map,w=new Map,h=new Set;m.forEach(b=>{let f=Hr(b.body,t.markdown.plugins,G(b.relativePath)?"mdx":"markdown");le(f,p,w),f.behaviors.forEach(M=>h.add(M))});let S=8,D=Cr(t.basePath);await F(o,S,async b=>{let f=b.routePath===j(b.locale,r.defaultLocale,b.versionBase),M,x=an,pe={...t.markdown,locale:b.locale,labels:{...ge(b.locale,t.i18n.messages),...t.markdown.labels}};if(G(b.relativePath)){let J={...pe,html:"trusted"},pt=await kr(b.body,b.sourcePath,e,J,void 0,D,i);M=pt.content,x=pt.assets}else{let J=await i.render(b.body,{markdown:pe,as:"article",urlTransform:D});M=J.content,x=J.assets}b.frontmatter.layout==="playground"&&(x=nn(x,t.markdown.plugins)),le(x,p,w),x.behaviors.forEach(J=>h.add(J));let Ce=!!(b.frontmatter.hero||b.frontmatter.features?.length),U=b.body.trim().length>0,so=f?dn(ln,{children:[Ce?tt(Wt,{page:b,config:t}):null,U?M:null]}):M??tt("article",{className:"df-content"}),dt=T(n,b.markdownOutputPath,`page ${b.sourceRelativePath}`),ut=b.transformedSource,io="<!doctype html>"+rn(tt(ur,{config:t,graph:r,page:b,home:f,markdownAssets:x,rawSource:ut,children:so})),mt=T(n,b.outputPath,`page ${b.sourceRelativePath}`);await Ze(jr(mt),{recursive:!0}),await xe(mt,io),await Ze(jr(dt),{recursive:!0}),await xe(dt,ut)}),h.size>0?await Or(n):await et(W(n,"assets/docfuse-markdown"),{recursive:!0,force:!0}),await Ir(n,p,w),await Ur(n,a,r.pages,[...d,...l.map(b=>b.outputPath)])}s(zr,"renderSite");import{writeFile as un}from"fs/promises";import{join as mn}from"path";async function Gr(e,t){let r=V(t,"/sitemap.xml");await un(mn(L(e,t.outputDir),"robots.txt"),`User-agent: *
|
|
653
653
|
Allow: /
|
|
654
654
|
${r?`Sitemap: ${r}
|
|
655
655
|
`:""}`)}s(Gr,"writeRobots");import{writeFile as pn}from"fs/promises";import{join as fn}from"path";async function Kr(e,t,r){if(!t.siteUrl)return;let o=s(i=>i.replace(/[&<>"']/g,c=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[c]??c),"escapeXml"),a=r.pages.map(i=>` <url><loc>${o(V(t,i.routePath))}</loc></url>`).join(`
|
|
@@ -657,5 +657,5 @@ ${r?`Sitemap: ${r}
|
|
|
657
657
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
658
658
|
${a}
|
|
659
659
|
</urlset>
|
|
660
|
-
`)}s(Kr,"writeSitemap");import{createMarkdownRenderer as Fn}from"@docfuse/markdown/server";import{satisfies as In,valid as Bn,validRange as _n}from"semver";function Vr({current:e,previous:t,outputExists:r,outputValid:o=r,forceClean:a=!1}){if(a)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"forced"};if(!t)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"missing-manifest"};if(!r)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"missing-output"};if(!o)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"invalid-output"};if(e.buildFingerprint===t.buildFingerprint)return{mode:"cached",changedPageKeys:[],removedPageKeys:[],reason:"unchanged-inputs"};if(e.sharedFingerprint!==t.sharedFingerprint)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"shared-inputs-changed"};let i=Object.entries(e.pages).filter(([n,d])=>t.pages[n]?.fingerprint!==d.fingerprint).map(([n])=>n),c=Object.keys(t.pages).filter(n=>!e.pages[n]);return i.length===0&&c.length===0?{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"unclassified-inputs-changed"}:{mode:"incremental",changedPageKeys:i,removedPageKeys:c,reason:"page-inputs-changed"}}s(Vr,"planBuild");import{copyFile as hn,mkdir as gn,readFile as Wr,readdir as yn,stat as bn}from"fs/promises";import{dirname as wn,relative as kn,resolve as rt}from"path";var ot=16;function Jr(e,t){return kn(rt(e),rt(t)).replace(/\\/g,"/")}s(Jr,"portablePath");async function Xr(e){async function t(r){let o=await yn(r,{withFileTypes:!0});return(await Promise.all(o.map(async a=>{let i=rt(r,a.name);if(a.isSymbolicLink())throw new Error(`Generated output must not be a symbolic link: ${i}`);return a.isDirectory()?t(i):a.isFile()?[i]:[]}))).flat()}return s(t,"walk"),t(e)}s(Xr,"outputFilesUnder");async function Yr(e){let t=(await Xr(e)).sort(),r=await F(t,ot,async o=>{let a=await Wr(o);return[Jr(e,o),{fingerprint:B(a),size:a.byteLength}]});return Object.fromEntries(r)}s(Yr,"captureBuildOutputs");async function Qr(e,t){try{let r=Object.keys(t).sort(),o=(await Xr(e)).map(i=>Jr(e,i)).sort();return o.length!==r.length||o.some((i,c)=>i!==r[c])?!1:(await F(Object.entries(t),ot,async([i,c])=>{let n=T(e,i,`cached output ${i}`),d=await bn(n);return!d.isFile()||d.size!==c.size?!1:B(await Wr(n))===c.fingerprint})).every(Boolean)}catch(r){if(r.code==="ENOENT")return!1;throw r}}s(Qr,"verifyBuildOutputs");async function Zr(e,t,r){await F(Object.keys(r),ot,async o=>{let a=T(e,o,`cached output ${o}`),i=T(t,o,`staged output ${o}`);await gn(wn(i),{recursive:!0}),await hn(a,i)})}s(Zr,"copyBuildOutputs");import{readFile as st,readdir as Pn}from"fs/promises";import{dirname as eo,join as Q,relative as Sn,resolve as ue}from"path";import{fileURLToPath as at}from"url";import{detectMarkdownAssets as xn}from"@docfuse/markdown/server/analyze";var De=16;function it(e,t){return Sn(ue(e),ue(t)).replace(/\\/g,"/")}s(it,"portablePath");function de(e){return JSON.stringify([e.version,e.sourceRelativePath])}s(de,"buildPageKey");async function to(e){async function t(r){let o=await Pn(r,{withFileTypes:!0});return(await Promise.all(o.map(async a=>{let i=Q(r,a.name);if(a.isDirectory())return t(i);if(a.isSymbolicLink())throw new Error(`Documentation support files must not use symbolic links: ${it(e,i)}`);return!a.isFile()||/\.mdx?$/i.test(a.name)?[]:[i]}))).flat()}return s(t,"walk"),t(e)}s(to,"supportFilesUnder");async function Dn(e){let t=[...new Set(e.map(o=>ue(o)))].sort(),r=(await F(t,De,async o=>{try{return{path:o,fingerprint:B(await st(o))}}catch(a){if(!a||typeof a!="object"||!("code"in a)||a.code!=="ENOENT")throw a;return null}})).filter(o=>o!==null);return H(r)}s(Dn,"fingerprintExistingFiles");async function nt(e){try{return await to(e)}catch(t){if(t&&typeof t=="object"&&"code"in t&&t.code==="ENOENT")return[];throw t}}s(nt,"filesUnderIfPresent");async function Mn(){let e=eo(at(import.meta.url)),t=[];try{let r=at(import.meta.resolve("@docfuse/markdown/theme")),o=eo(r);t.push(Q(o,"tokens.css"),Q(o,"styles.css"),Q(o,"theme.css"),Q(o,"base.css"),r)}catch{}return Dn([...await nt(e),...await nt(Q(e,"render")),...await nt(at(new URL("../render",import.meta.url))),...t])}s(Mn,"runtimeFingerprint");async function Cn(e,t,r){let o=[...new Set(t.versions.items.map(n=>n.docsDir))].map(n=>K(e,n,"docsDir")),a=(await Promise.all(o.map(n=>to(n)))).flat();for(let n of t.styles)a.push(K(e,n,"styles"));let i=[...new Set(a.map(n=>ue(n)))].filter(n=>!r.has(n)).sort(),c=await F(i,De,async n=>({path:it(e,n),fingerprint:B(await st(n))}));return H(c)}s(Cn,"supportFingerprint");function Nn(e){return{sourceRelativePath:e.sourceRelativePath,relativePath:e.relativePath,version:e.version,versionBase:e.versionBase,docsDir:e.docsDir,locale:e.locale,routePath:e.routePath,outputPath:e.outputPath,markdownOutputPath:e.markdownOutputPath,title:e.title,description:e.description,order:e.order,group:e.group,status:e.status,search:e.search,ai:e.ai,body:e.body,transformedSource:e.transformedSource,headings:e.headings,searchText:e.searchText,codeExamples:e.codeExamples,lastUpdated:e.lastUpdated,...e.previous?{previous:e.previous}:{},...e.next?{next:e.next}:{},frontmatter:e.frontmatter}}s(Nn,"serializablePage");function An(e,t){return{sidebar:e.sidebar[t.version]?.[t.locale]??[],nav:e.nav[t.version]?.[t.locale]??[],locales:e.locales,defaultLocale:e.defaultLocale,versions:e.versions,currentVersion:e.currentVersion}}s(An,"pageLayoutContext");function En(e){let t=e.search.provider;return{...e,markdown:{...e.markdown,plugins:e.markdown.plugins.map(r=>({name:r.name,version:r.version??"",cacheKey:r.cacheKey??null}))},search:{...e.search,provider:typeof t=="string"?t:{id:t.id,client:t.client,version:t.version??"",cacheKey:t.cacheKey??null}}}}s(En,"serializableConfig");async function ro(e,t,r,o=H({extensions:[]})){let a=new Map;await F(r.pages,De,async l=>{if(!G(l.relativePath))return;let m=ke(l.body).imports,f=await br(m,l.sourcePath,e),b=await F(f,De,async h=>({path:it(e,h),fingerprint:B(await st(h))}));a.set(de(l),b.sort((h,S)=>h.path.localeCompare(S.path)))});let i=new Set([...a.values()].flat().map(l=>ue(e,l.path))),c=H(En(t)),n=H({docfuseVersion:q,runtimeFingerprint:await Mn(),configFingerprint:c,benchmarkReport:process.env.DOCFUSE_BENCHMARK_REPORT==="1",extensionFingerprint:o,math:r.pages.some(l=>xn(l.body,t.markdown.plugins,G(l.relativePath)?"mdx":"markdown").math),playground:r.pages.some(l=>l.frontmatter.layout==="playground"),support:await Cn(e,t,i)}),d=Object.fromEntries(r.pages.map(l=>[de(l),{fingerprint:H({page:Nn(l),localComponents:a.get(de(l))??[],layout:An(r,l)}),outputPath:l.outputPath,markdownOutputPath:l.markdownOutputPath,assetOutputPaths:[...ce([l])].sort()}])),u=H({sharedFingerprint:n,pages:d});return{schemaVersion:3,docfuseVersion:q,buildFingerprint:u,sharedFingerprint:n,pages:d,outputs:{}}}s(ro,"createBuildManifest");function Un(e,t){if(!Bn(e))throw new Error(`Invalid Docfuse version: ${e}`);if(!_n(t))throw new Error(`Invalid requiredVersion range: ${t}`);return In(e,t)}s(Un,"versionSatisfies");function qn(e){if(e.requiredVersion&&!Un(q,e.requiredVersion))throw new Error(`Docfuse ${q} does not satisfy requiredVersion ${e.requiredVersion}`)}s(qn,"assertRequiredVersion");async function oo({cwd:e,config:t,graph:r,pages:o,previousPages:a,renderer:i,writeSharedAssets:c,extensions:n}){await zr({cwd:e,config:t,graph:r,pages:o,previousPages:a,renderer:i,writeSharedAssets:c}),await vt(e,t,r),await Kr(e,t,r),await Gr(e,t),await Ft(e,t,r),await wt(e,t,r),await n.generate(L(e,t.outputDir),r.pages),process.env.DOCFUSE_BENCHMARK_REPORT==="1"&&await Tn(lt(L(e,t.outputDir),".benchmark.json"),JSON.stringify({maxRssBytes:process.resourceUsage().maxRSS*1024}))}s(oo,"writeBuildOutputs");function no(e){return lt(ct(e),`.${ao(e)}.backup`)}s(no,"outputBackupRoot");async function jn(e){let t=no(e);await X(t)&&(await X(e)?await me(t,{recursive:!0,force:!0}):await Me(t,e))}s(jn,"recoverInterruptedOutputReplacement");async function Hn(e,t){let r=no(e),o=await X(e);try{o&&await Me(e,r),await Me(t,e)}catch(a){throw o&&await X(r)&&(await me(e,{recursive:!0,force:!0}),await Me(r,e)),a}await me(r,{recursive:!0,force:!0})}s(Hn,"replaceOutputDirectory");async function zn(e,t,r,o){let a=L(e,t.outputDir),i=new Set(o.flatMap(c=>[c.outputPath,c.markdownOutputPath]).map(O));await Promise.all(r.flatMap(c=>[c.outputPath,c.markdownOutputPath].filter(n=>!i.has(O(n))).map(n=>me(T(a,n,`removed page output ${n}`),{force:!0}))))}s(zn,"removeDeletedPageOutputs");async function Gn(e,t,r,o,a){await jn(o);let i=await Et(e.cwd,Dt(e.cwd),r.extensions),c=await bt(e.cwd,r,i),n=await ro(e.cwd,r,c,i.fingerprint),d=e.noCache?void 0:await Mt(t),u=await X(o),l=u&&d?await Qr(o,d.outputs):u,m=Vr({current:n,previous:d,outputExists:u,outputValid:l,forceClean:e.forceClean||e.noCache}),f=e.renderer??Fn();if(m.mode==="cached")return Z(`Built ${r.outputDir} (cache hit)`),{config:r,graph:c,incremental:!1,cached:!0,mode:m.mode,changedPages:[],partialReload:!1,reason:m.reason};let b=new Map(c.pages.map(P=>[de(P),P])),h=m.changedPageKeys.flatMap(P=>{let x=b.get(P);return x?[x]:[]}),S=lt(ct(o),`.${ao(o)}.tmp-${Rn()}`),D={...r,outputDir:$n(On(e.cwd),S)};await Ln(ct(S),{recursive:!0});try{if(m.mode==="incremental"){await Zr(o,S,d?.outputs??{}),await oo({cwd:e.cwd,config:D,graph:c,pages:h,previousPages:d?Object.values(d.pages):[],renderer:f,writeSharedAssets:!1,extensions:i});let P=m.removedPageKeys.flatMap(x=>{let R=d?.pages[x];return R?[R]:[]});await zn(e.cwd,D,P,Object.values(n.pages))}else f.clear(),await oo({cwd:e.cwd,config:D,graph:c,pages:c.pages,renderer:f,writeSharedAssets:!0,extensions:i});await a(),await Hn(o,S)}finally{await me(S,{recursive:!0,force:!0})}let p={...n,outputs:await Yr(o)};return await a(),await Ct(t,p),Z(`Built ${r.outputDir} (${m.mode}: ${m.reason})`),{config:r,graph:c,incremental:m.mode==="incremental",cached:!1,mode:m.mode,changedPages:[...new Set(h.map(P=>P.sourceRelativePath))],partialReload:m.mode==="incremental"&&m.changedPageKeys.length===1&&m.removedPageKeys.length===0&&d?.pages[m.changedPageKeys[0]??""]?.outputPath===n.pages[m.changedPageKeys[0]??""]?.outputPath,reason:m.reason}}s(Gn,"runBuildLocked");async function bl(e){let t=xt(e.cwd);await ft(e.cwd,t,"build cache");let r=await gt(e.cwd);qn(r);let o=await At(e.cwd,r,t);return Nt(t,a=>Gn(e,t,r,o,a))}s(bl,"runBuild");export{Un as a,bl as b};
|
|
661
|
-
//# sourceMappingURL=chunk-
|
|
660
|
+
`)}s(Kr,"writeSitemap");import{createMarkdownRenderer as Fn}from"@docfuse/markdown/server";import{satisfies as In,valid as Bn,validRange as _n}from"semver";function Vr({current:e,previous:t,outputExists:r,outputValid:o=r,forceClean:a=!1}){if(a)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"forced"};if(!t)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"missing-manifest"};if(!r)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"missing-output"};if(!o)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"invalid-output"};if(e.buildFingerprint===t.buildFingerprint)return{mode:"cached",changedPageKeys:[],removedPageKeys:[],reason:"unchanged-inputs"};if(e.sharedFingerprint!==t.sharedFingerprint)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"shared-inputs-changed"};let i=Object.entries(e.pages).filter(([n,d])=>t.pages[n]?.fingerprint!==d.fingerprint).map(([n])=>n),c=Object.keys(t.pages).filter(n=>!e.pages[n]);return i.length===0&&c.length===0?{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"unclassified-inputs-changed"}:{mode:"incremental",changedPageKeys:i,removedPageKeys:c,reason:"page-inputs-changed"}}s(Vr,"planBuild");import{copyFile as hn,mkdir as gn,readFile as Wr,readdir as yn,stat as bn}from"fs/promises";import{dirname as wn,relative as kn,resolve as rt}from"path";var ot=16;function Jr(e,t){return kn(rt(e),rt(t)).replace(/\\/g,"/")}s(Jr,"portablePath");async function Xr(e){async function t(r){let o=await yn(r,{withFileTypes:!0});return(await Promise.all(o.map(async a=>{let i=rt(r,a.name);if(a.isSymbolicLink())throw new Error(`Generated output must not be a symbolic link: ${i}`);return a.isDirectory()?t(i):a.isFile()?[i]:[]}))).flat()}return s(t,"walk"),t(e)}s(Xr,"outputFilesUnder");async function Yr(e){let t=(await Xr(e)).sort(),r=await F(t,ot,async o=>{let a=await Wr(o);return[Jr(e,o),{fingerprint:B(a),size:a.byteLength}]});return Object.fromEntries(r)}s(Yr,"captureBuildOutputs");async function Qr(e,t){try{let r=Object.keys(t).sort(),o=(await Xr(e)).map(i=>Jr(e,i)).sort();return o.length!==r.length||o.some((i,c)=>i!==r[c])?!1:(await F(Object.entries(t),ot,async([i,c])=>{let n=T(e,i,`cached output ${i}`),d=await bn(n);return!d.isFile()||d.size!==c.size?!1:B(await Wr(n))===c.fingerprint})).every(Boolean)}catch(r){if(r.code==="ENOENT")return!1;throw r}}s(Qr,"verifyBuildOutputs");async function Zr(e,t,r){await F(Object.keys(r),ot,async o=>{let a=T(e,o,`cached output ${o}`),i=T(t,o,`staged output ${o}`);await gn(wn(i),{recursive:!0}),await hn(a,i)})}s(Zr,"copyBuildOutputs");import{readFile as st,readdir as Pn}from"fs/promises";import{dirname as eo,join as Q,relative as Sn,resolve as ue}from"path";import{fileURLToPath as at}from"url";import{detectMarkdownAssets as xn}from"@docfuse/markdown/server/analyze";var De=16;function it(e,t){return Sn(ue(e),ue(t)).replace(/\\/g,"/")}s(it,"portablePath");function de(e){return JSON.stringify([e.version,e.sourceRelativePath])}s(de,"buildPageKey");async function to(e){async function t(r){let o=await Pn(r,{withFileTypes:!0});return(await Promise.all(o.map(async a=>{let i=Q(r,a.name);if(a.isDirectory())return t(i);if(a.isSymbolicLink())throw new Error(`Documentation support files must not use symbolic links: ${it(e,i)}`);return!a.isFile()||/\.mdx?$/i.test(a.name)?[]:[i]}))).flat()}return s(t,"walk"),t(e)}s(to,"supportFilesUnder");async function Dn(e){let t=[...new Set(e.map(o=>ue(o)))].sort(),r=(await F(t,De,async o=>{try{return{path:o,fingerprint:B(await st(o))}}catch(a){if(!a||typeof a!="object"||!("code"in a)||a.code!=="ENOENT")throw a;return null}})).filter(o=>o!==null);return H(r)}s(Dn,"fingerprintExistingFiles");async function nt(e){try{return await to(e)}catch(t){if(t&&typeof t=="object"&&"code"in t&&t.code==="ENOENT")return[];throw t}}s(nt,"filesUnderIfPresent");async function Mn(){let e=eo(at(import.meta.url)),t=[];try{let r=at(import.meta.resolve("@docfuse/markdown/theme")),o=eo(r);t.push(Q(o,"tokens.css"),Q(o,"styles.css"),Q(o,"theme.css"),Q(o,"base.css"),r)}catch{}return Dn([...await nt(e),...await nt(Q(e,"render")),...await nt(at(new URL("../render",import.meta.url))),...t])}s(Mn,"runtimeFingerprint");async function Cn(e,t,r){let o=[...new Set(t.versions.items.map(n=>n.docsDir))].map(n=>K(e,n,"docsDir")),a=(await Promise.all(o.map(n=>to(n)))).flat();for(let n of t.styles)a.push(K(e,n,"styles"));let i=[...new Set(a.map(n=>ue(n)))].filter(n=>!r.has(n)).sort(),c=await F(i,De,async n=>({path:it(e,n),fingerprint:B(await st(n))}));return H(c)}s(Cn,"supportFingerprint");function Nn(e){return{sourceRelativePath:e.sourceRelativePath,relativePath:e.relativePath,version:e.version,versionBase:e.versionBase,docsDir:e.docsDir,locale:e.locale,routePath:e.routePath,outputPath:e.outputPath,markdownOutputPath:e.markdownOutputPath,title:e.title,description:e.description,order:e.order,group:e.group,status:e.status,search:e.search,ai:e.ai,body:e.body,transformedSource:e.transformedSource,headings:e.headings,searchText:e.searchText,codeExamples:e.codeExamples,lastUpdated:e.lastUpdated,...e.previous?{previous:e.previous}:{},...e.next?{next:e.next}:{},frontmatter:e.frontmatter}}s(Nn,"serializablePage");function An(e,t){return{sidebar:e.sidebar[t.version]?.[t.locale]??[],nav:e.nav[t.version]?.[t.locale]??[],locales:e.locales,defaultLocale:e.defaultLocale,versions:e.versions,currentVersion:e.currentVersion}}s(An,"pageLayoutContext");function En(e){let t=e.search.provider;return{...e,markdown:{...e.markdown,plugins:e.markdown.plugins.map(r=>({name:r.name,version:r.version??"",cacheKey:r.cacheKey??null}))},search:{...e.search,provider:typeof t=="string"?t:{id:t.id,client:t.client,version:t.version??"",cacheKey:t.cacheKey??null}}}}s(En,"serializableConfig");async function ro(e,t,r,o=H({extensions:[]})){let a=new Map;await F(r.pages,De,async l=>{if(!G(l.relativePath))return;let m=ke(l.body).imports,p=await br(m,l.sourcePath,e),w=await F(p,De,async h=>({path:it(e,h),fingerprint:B(await st(h))}));a.set(de(l),w.sort((h,S)=>h.path.localeCompare(S.path)))});let i=new Set([...a.values()].flat().map(l=>ue(e,l.path))),c=H(En(t)),n=H({docfuseVersion:q,runtimeFingerprint:await Mn(),configFingerprint:c,benchmarkReport:process.env.DOCFUSE_BENCHMARK_REPORT==="1",extensionFingerprint:o,math:r.pages.some(l=>xn(l.body,t.markdown.plugins,G(l.relativePath)?"mdx":"markdown").math),playground:r.pages.some(l=>l.frontmatter.layout==="playground"),support:await Cn(e,t,i)}),d=Object.fromEntries(r.pages.map(l=>[de(l),{fingerprint:H({page:Nn(l),localComponents:a.get(de(l))??[],layout:An(r,l)}),outputPath:l.outputPath,markdownOutputPath:l.markdownOutputPath,assetOutputPaths:[...ce([l])].sort()}])),u=H({sharedFingerprint:n,pages:d});return{schemaVersion:3,docfuseVersion:q,buildFingerprint:u,sharedFingerprint:n,pages:d,outputs:{}}}s(ro,"createBuildManifest");function Un(e,t){if(!Bn(e))throw new Error(`Invalid Docfuse version: ${e}`);if(!_n(t))throw new Error(`Invalid requiredVersion range: ${t}`);return In(e,t)}s(Un,"versionSatisfies");function qn(e){if(e.requiredVersion&&!Un(q,e.requiredVersion))throw new Error(`Docfuse ${q} does not satisfy requiredVersion ${e.requiredVersion}`)}s(qn,"assertRequiredVersion");async function oo({cwd:e,config:t,graph:r,pages:o,previousPages:a,renderer:i,writeSharedAssets:c,extensions:n}){await zr({cwd:e,config:t,graph:r,pages:o,previousPages:a,renderer:i,writeSharedAssets:c}),await vt(e,t,r),await Kr(e,t,r),await Gr(e,t),await Ft(e,t,r),await wt(e,t,r),await n.generate(L(e,t.outputDir),r.pages),process.env.DOCFUSE_BENCHMARK_REPORT==="1"&&await Tn(lt(L(e,t.outputDir),".benchmark.json"),JSON.stringify({maxRssBytes:process.resourceUsage().maxRSS*1024}))}s(oo,"writeBuildOutputs");function no(e){return lt(ct(e),`.${ao(e)}.backup`)}s(no,"outputBackupRoot");async function jn(e){let t=no(e);await X(t)&&(await X(e)?await me(t,{recursive:!0,force:!0}):await Me(t,e))}s(jn,"recoverInterruptedOutputReplacement");async function Hn(e,t){let r=no(e),o=await X(e);try{o&&await Me(e,r),await Me(t,e)}catch(a){throw o&&await X(r)&&(await me(e,{recursive:!0,force:!0}),await Me(r,e)),a}await me(r,{recursive:!0,force:!0})}s(Hn,"replaceOutputDirectory");async function zn(e,t,r,o){let a=L(e,t.outputDir),i=new Set(o.flatMap(c=>[c.outputPath,c.markdownOutputPath]).map(O));await Promise.all(r.flatMap(c=>[c.outputPath,c.markdownOutputPath].filter(n=>!i.has(O(n))).map(n=>me(T(a,n,`removed page output ${n}`),{force:!0}))))}s(zn,"removeDeletedPageOutputs");async function Gn(e,t,r,o,a){await jn(o);let i=await Et(e.cwd,Dt(e.cwd),r.extensions),c=await bt(e.cwd,r,i),n=await ro(e.cwd,r,c,i.fingerprint),d=e.noCache?void 0:await Mt(t),u=await X(o),l=u&&d?await Qr(o,d.outputs):u,m=Vr({current:n,previous:d,outputExists:u,outputValid:l,forceClean:e.forceClean||e.noCache}),p=e.renderer??Fn();if(m.mode==="cached")return Z(`Built ${r.outputDir} (cache hit)`),{config:r,graph:c,incremental:!1,cached:!0,mode:m.mode,changedPages:[],partialReload:!1,reason:m.reason};let w=new Map(c.pages.map(f=>[de(f),f])),h=m.changedPageKeys.flatMap(f=>{let M=w.get(f);return M?[M]:[]}),S=lt(ct(o),`.${ao(o)}.tmp-${Rn()}`),D={...r,outputDir:$n(On(e.cwd),S)};await Ln(ct(S),{recursive:!0});try{if(m.mode==="incremental"){await Zr(o,S,d?.outputs??{}),await oo({cwd:e.cwd,config:D,graph:c,pages:h,previousPages:d?Object.values(d.pages):[],renderer:p,writeSharedAssets:!1,extensions:i});let f=m.removedPageKeys.flatMap(M=>{let x=d?.pages[M];return x?[x]:[]});await zn(e.cwd,D,f,Object.values(n.pages))}else p.clear(),await oo({cwd:e.cwd,config:D,graph:c,pages:c.pages,renderer:p,writeSharedAssets:!0,extensions:i});await a(),await Hn(o,S)}finally{await me(S,{recursive:!0,force:!0})}let b={...n,outputs:await Yr(o)};return await a(),await Ct(t,b),Z(`Built ${r.outputDir} (${m.mode}: ${m.reason})`),{config:r,graph:c,incremental:m.mode==="incremental",cached:!1,mode:m.mode,changedPages:[...new Set(h.map(f=>f.sourceRelativePath))],partialReload:m.mode==="incremental"&&m.changedPageKeys.length===1&&m.removedPageKeys.length===0&&d?.pages[m.changedPageKeys[0]??""]?.outputPath===n.pages[m.changedPageKeys[0]??""]?.outputPath,reason:m.reason}}s(Gn,"runBuildLocked");async function bl(e){let t=xt(e.cwd);await ft(e.cwd,t,"build cache");let r=await gt(e.cwd);qn(r);let o=await At(e.cwd,r,t);return Nt(t,a=>Gn(e,t,r,o,a))}s(bl,"runBuild");export{Un as a,bl as b};
|
|
661
|
+
//# sourceMappingURL=chunk-L7LBGDJ4.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as m,b as f,e as p,f as l}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=clean-
|
|
1
|
+
import{a as m,b as f,e as p,f as l}from"./chunk-BH2JJ2IK.js";import{j as s}from"./chunk-DOOG32NU.js";import{a as n}from"./chunk-5NTRNUFG.js";import"./chunk-ZDXO2HQK.js";import"./chunk-EAYVCA3Z.js";import"./chunk-JK7ZNBUA.js";import{a as c}from"./chunk-AYDF3IFZ.js";import{readdir as R,rm as o}from"fs/promises";import{basename as h,dirname as g,join as b}from"path";async function x({cwd:t}){let i=await s(t),r=m(t),a=await l(t,i,r);await p(r,async()=>{let u=g(a),d=h(a).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),w=new RegExp(`^\\.${d}\\.(?:backup|(?:tmp|backup)-[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})$`,"i"),v=await R(u,{withFileTypes:!0}).catch(e=>{if(e.code==="ENOENT")return[];throw e});await Promise.all(v.filter(e=>w.test(e.name)).map(e=>o(b(u,e.name),{recursive:!0,force:!0}))),await o(a,{recursive:!0,force:!0}),await o(r,{recursive:!0,force:!0}),await o(f(t),{recursive:!0,force:!0})}),n(`Removed ${i.outputDir}, .docfuse/cache, and temporary or interrupted build files`)}c(x,"runClean");export{x as runClean};
|
|
2
|
+
//# sourceMappingURL=clean-DQSSR6KV.js.map
|
package/dist/cli.js
CHANGED
|
@@ -13,5 +13,5 @@ Commands:
|
|
|
13
13
|
Preview .docfuse/dist on a custom local port
|
|
14
14
|
check Run documentation checks
|
|
15
15
|
deploy Generate deployment guidance
|
|
16
|
-
`)}l(g,"printHelp");function a(n,o){let t=n[o];if(t!==void 0)throw new Error(`Unknown option: ${t}`)}l(a,"assertArgumentCount");async function m(n,o=process.cwd()){let t=n[0]??"help";if(t==="help"||t==="--help"||t==="-h"){a(n,1),g();return}if(t==="init"){let{runInit:r}=await import("./init-
|
|
16
|
+
`)}l(g,"printHelp");function a(n,o){let t=n[o];if(t!==void 0)throw new Error(`Unknown option: ${t}`)}l(a,"assertArgumentCount");async function m(n,o=process.cwd()){let t=n[0]??"help";if(t==="help"||t==="--help"||t==="-h"){a(n,1),g();return}if(t==="init"){let{runInit:r}=await import("./init-VP6PXRGZ.js");return r({cwd:o,...h(n)})}if(t==="build"){let{runBuild:r}=await import("./build-WF7ZYYJD.js");return r({cwd:o,...d(n)})}if(t==="clean"){a(n,1);let{runClean:r}=await import("./clean-DQSSR6KV.js");return r({cwd:o})}if(t==="dev"){let{runDev:r}=await import("./dev-3IGK7DO2.js");return r({cwd:o,port:u(n)})}if(t==="preview"){let{runPreview:r}=await import("./preview-FI2XY4WS.js"),i=u(n);return r({cwd:o,port:i})}if(t==="check"){a(n,1);let{runCheck:r}=await import("./check-3M5AMXFL.js");return r({cwd:o})}if(t==="deploy"){a(n,1);let{runDeploy:r}=await import("./deploy-UPDSE6GI.js");return r({cwd:o})}throw new Error(`Unknown command: ${t}`)}l(m,"runCli");m(process.argv.slice(2)).catch(n=>{f(n instanceof Error?n.message:String(n)),process.exitCode=1});
|
|
17
17
|
//# sourceMappingURL=cli.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as b}from"./chunk-FF7ZHS4U.js";import{b as g}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=dev-
|
|
1
|
+
import{a as b}from"./chunk-FF7ZHS4U.js";import{b as g}from"./chunk-L7LBGDJ4.js";import"./chunk-2AE3ZZMC.js";import{b as h}from"./chunk-GNYJERGG.js";import"./chunk-XYJ2OBL3.js";import{a as B}from"./chunk-BH2JJ2IK.js";import"./chunk-DOOG32NU.js";import{a as v,b as f}from"./chunk-5NTRNUFG.js";import"./chunk-ZDXO2HQK.js";import"./chunk-EAYVCA3Z.js";import{c as p,e as m}from"./chunk-JK7ZNBUA.js";import{a as o}from"./chunk-AYDF3IFZ.js";import w from"chokidar";import{createMarkdownRenderer as S}from"@docfuse/markdown/server";import{relative as P,resolve as k,sep as R}from"path";function D({build:i,reload:c,onBuildError:l=o(t=>f(t instanceof Error?t.message:String(t)),"onBuildError"),onBuildOk:n,debounceMs:s=80}){let t,u,e=!1,r=!1,a=o(()=>{if(t=void 0,!r){if(u){e=!0;return}u=(async()=>{try{let d=await i();r||(n?.(),c(d))}catch(d){l(d)}finally{u=void 0,e&&!r&&(e=!1,t=setTimeout(a,0))}})()}},"run");return{schedule(){if(!r){if(u){e=!0;return}t&&clearTimeout(t),t=setTimeout(a,s)}},async close(){r=!0,e=!1,t&&clearTimeout(t),t=void 0,await u}}}o(D,"createBuildScheduler");async function y({cwd:i,port:c}){let l=S(),n=await g({cwd:i,renderer:l}),s=await b({root:o(()=>m(i,n.config.outputDir),"root"),port:c,liveReload:!0,basePath:o(()=>n.config.basePath,"basePath")}),t=w.watch(".",{cwd:i,ignoreInitial:!0,ignored:o(e=>{let r=k(i,e),a=P(i,r).split(R);return a.includes("node_modules")||a.includes(".git")||a.includes(".docfuse")||a.some(d=>/^\..+\.(?:tmp|backup)-/.test(d))?!0:p(m(i,n.config.outputDir),r)||p(B(i),r)},"ignored")}),u=D({build:o(async()=>{n=await g({cwd:i,renderer:l});let e=n.changedPages.flatMap(r=>{let a=n.graph.pages.find(d=>d.sourceRelativePath===r);return a?[h(n.config,a.routePath)]:[]});return{protocol:1,type:"update",mode:n.partialReload&&e.length===1?"page":"full",routes:e}},"build"),reload:o(e=>s.reload(e),"reload"),onBuildError:o(e=>{let r=e instanceof Error?e.message:String(e);f("Build error:",r),s.sendBuildError(r)},"onBuildError"),onBuildOk:o(()=>s.sendBuildOk(),"onBuildOk")});return t.on("all",()=>u.schedule()),t.on("error",e=>{let r=e instanceof Error?e.message:String(e);f("File watcher error:",r),s.sendBuildError(r)}),{port:s.port,close:o(async()=>{await t.close(),await u.close(),await s.close()},"close")}}o(y,"startDevServer");async function z({cwd:i,port:c=3333}){let l=await y({cwd:i,port:c});return v(`Dev server running at http://127.0.0.1:${l.port}/`),l}o(z,"runDev");export{z as runDev};
|
|
2
|
+
//# sourceMappingURL=dev-3IGK7DO2.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ declare const homeIconNames: readonly ["ai", "box", "code", "file", "file-code",
|
|
|
9
9
|
type HomeIconName = (typeof homeIconNames)[number];
|
|
10
10
|
interface DocfuseFrontmatter {
|
|
11
11
|
title?: string;
|
|
12
|
+
seoTitle?: string;
|
|
12
13
|
description?: string;
|
|
13
14
|
createdAt?: string;
|
|
14
15
|
updatedAt?: string;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as n,f,g as r}from"./chunk-GNYJERGG.js";import"./chunk-XYJ2OBL3.js";import{a as t}from"./chunk-
|
|
1
|
+
import{c as n,f,g as r}from"./chunk-GNYJERGG.js";import"./chunk-XYJ2OBL3.js";import{a as t}from"./chunk-ZDXO2HQK.js";import"./chunk-JK7ZNBUA.js";import{a as e}from"./chunk-AYDF3IFZ.js";function i(o){return o}e(i,"defineConfig");export{f as DOCFUSE_EXTENSION_API_VERSION,i as defineConfig,r as defineExtension,n as defineSearchProvider,t as docfuseVersion};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as d}from"./chunk-5NTRNUFG.js";import{a as b}from"./chunk-
|
|
1
|
+
import{a as d}from"./chunk-5NTRNUFG.js";import{a as b}from"./chunk-ZDXO2HQK.js";import{a as k,d as S}from"./chunk-EAYVCA3Z.js";import{a as T,d as j,f as N}from"./chunk-JK7ZNBUA.js";import{a as l}from"./chunk-AYDF3IFZ.js";import{mkdir as U,readFile as B,readdir as G,rm as V,rmdir as Y,writeFile as _}from"fs/promises";import{dirname as W,isAbsolute as Q,join as E}from"path";import{createInterface as Z}from"readline/promises";import{join as y}from"path";var R=`/**
|
|
2
2
|
* Minimal declarations for trusted project-local TSX components.
|
|
3
3
|
*
|
|
4
4
|
* Docfuse intentionally does not publish or emulate a UI component module.
|
|
@@ -68,4 +68,4 @@ export default defineConfig({
|
|
|
68
68
|
}
|
|
69
69
|
})
|
|
70
70
|
`}l(H,"configTemplate");function O(e){let{docsDir:t,defaultLocale:n,locales:i,includeContent:r,includeConfig:c}=e,a={[y(t,"docfuse-env.d.ts")]:R};if(c&&(a["docfuse.config.ts"]=H(t,n,i)),!r)return a;for(let u of i){let p=u===n?t:y(t,u),s=q(u);a[y(p,"index.md")]=s?.index??A,s&&(a[y(p,"guide.md")]=s.guide)}return a}l(O,"createInitFiles");async function J(e,t=""){let n;try{n=await G(e,{withFileTypes:!0})}catch(r){if(r.code==="ENOENT")return[];throw r}let i=[];for(let r of n){let c=t?E(t,r.name):r.name;if(r.isFile()&&k(r.name)&&i.push(c),r.isDirectory()&&(t||r.name!=="public"))for(let a of await J(E(e,r.name),c))i.push(a)}return i.sort((r,c)=>r.localeCompare(c))}l(J,"listMarkdownFiles");function ee(e,t){for(let n of t)try{Intl.getCanonicalLocales(n)}catch{throw new Error(`Invalid locale: ${n}`)}if(new Set(t.map(n=>n.toLowerCase())).size!==t.length)throw new Error("Locales must not contain duplicates");if(!t.some(n=>n.toLowerCase()===e.toLowerCase()))throw new Error(`Default locale ${e} must be included in locales`)}l(ee,"validateLocaleSelection");async function te(e=Z({input:process.stdin,output:process.stdout})){try{let n=((await e.question("Existing documents found. Enter their locale, or a comma-separated locale list (default: zh): ")).trim()||"zh").split(",").map(i=>i.trim());if(n.some(i=>!i))throw new Error("Locales must be a comma-separated list of locale identifiers");return n}catch(t){throw t.code==="ABORT_ERR"?new Error("Docfuse initialization cancelled"):t}finally{e.close()}}l(te,"promptForLocales");function ne(e,t){return e.length===t.length&&e.every((n,i)=>n.toLowerCase()===t[i]?.toLowerCase())}l(ne,"sameLocales");function oe(e,t){if(e.docsDir&&e.docsDir!==t.docsDir)throw new Error(`--docs-dir ${e.docsDir} conflicts with configured docsDir ${t.docsDir}`);if(e.locale&&e.locale.toLowerCase()!==t.i18n.defaultLocale.toLowerCase())throw new Error(`--locale ${e.locale} conflicts with configured defaultLocale ${t.i18n.defaultLocale}`);if(e.locales&&!ne(e.locales,t.i18n.locales))throw new Error(`--locales ${e.locales.join(",")} conflicts with configured locales ${t.i18n.locales.join(",")}`)}l(oe,"assertOptionsMatchConfig");function $(e){return S(e.replace(/\\/g,"/")).normalize("NFC").toLocaleLowerCase("en-US")}l($,"portablePageKey");function ie(e,t,n){if(!e.length)return[];let i=[],r=e.map(s=>s.replace(/\\/g,"/")),c=l(s=>n==="."?s:`${n.replace(/\\/g,"/")}/${s}`,"displayPath"),a=t.normalize("NFC").toLocaleLowerCase("en-US");r.some(s=>{let h=$(s);return h==="index"||h===`${a}/index`})||i.push(`no default-language index.md or index.mdx was found in ${n}`);let p=new Map;for(let s of r)s.startsWith(`${t}/`)||p.set($(s),s);for(let s of r){if(!s.startsWith(`${t}/`))continue;let h=s.slice(t.length+1),g=p.get($(h));g&&i.push(`${c(g)} and ${c(s)} map to the same default-language page; keep only one source`)}return i}l(ie,"existingContentWarnings");async function re(e,t){let n=[],i=e;for(;!await T(i);){n.push(i);let r=W(i);if(r===i)break;i=r}for(let r of n.reverse())try{await U(r),t.push(r)}catch(c){if(c.code!=="EEXIST")throw c}}l(re,"createMissingDirectoryChain");async function De(e,t={}){let n=e.targetDir?E(e.cwd,e.targetDir):e.cwd,{findConfigPath:i,loadConfig:r}=await import("./load-WVXTLQUE.js"),c=!!await i(n),a=c?await r(n):void 0;a&&oe(e,a);let u=a?.docsDir??e.docsDir??"docs";if(Q(u))throw new Error("docsDir must be a relative path");let p=j(n,u,"docsDir");await N(n,p,"docsDir");let s=await J(p),h=s.length>0,g=e.locales;if(h&&!c&&!e.locale&&!g){let o=e.localePrompt??(process.stdin.isTTY&&process.stdout.isTTY?te:void 0);if(!o){let f=s[0]??"";throw new Error(`Found ${s.length} existing Markdown file(s) in "${u}" (e.g. "${f}"), but cannot determine their language in a non-interactive environment. Specify the locale explicitly: docfuse init --locale <locale> (e.g. --locale zh)`)}g=await o()}let D=a?.i18n.defaultLocale??e.locale??g?.[0]??"zh";g=a?.i18n.locales??g??[D],ee(D,g);let M=O({docsDir:u,defaultLocale:D,locales:g,includeContent:!h,includeConfig:!c}),C=[],P=[],F=ie(s,D,u);for(let[o,f]of Object.entries(M)){let w=E(n,o);try{let x=await B(w,"utf8");P.push(o),x!==f&&F.push(`${o} already exists with different content`)}catch(x){let v=x.code;if(v==="EISDIR")throw new Error(`Cannot create ${o} because a directory exists at that path`);if(v!=="ENOENT")throw x;C.push({relativePath:o,content:f,fullPath:w})}}let m={mode:c?"configured":h?"adopt":"create",createFiles:C,keepFiles:P,warnings:F};if(!m.createFiles.length){for(let o of m.warnings)d(`Warning: ${o}`);d(`Docfuse is already initialized in ${n}`);return}let L=[],K=t.writeFile??((o,f,w)=>_(o,f,w)),X=[...new Set(m.createFiles.map(o=>W(o.fullPath)))].sort((o,f)=>o.length-f.length),I=[];try{for(let o of X)await re(o,I);for(let o of m.createFiles)await K(o.fullPath,o.content,{flag:"wx"}),L.push(o.fullPath)}catch(o){await Promise.all(L.map(f=>V(f,{force:!0})));for(let f of I.sort((w,x)=>x.length-w.length))try{await Y(f)}catch{}throw o}for(let o of m.createFiles)d(`Created ${o.relativePath}`);for(let o of m.keepFiles)d(`Kept existing ${o}`);for(let o of m.warnings)d(`Warning: ${o}`);if(m.mode==="adopt"){let o=s.length===1?"document":"documents";d(`Adopted ${s.length} existing ${o} in ${n}`),d(`Kept ${s.length} existing ${o} unchanged`),d("Next: docfuse check")}else m.mode==="configured"?(d(`Created missing documentation files in ${n}`),d("Next: docfuse dev")):(d(`Created Docfuse docs in ${n}`),d("Next: docfuse dev"));d("Add .docfuse/ to .gitignore if this directory is versioned.")}l(De,"runInit");export{te as promptForLocales,De as runInit};
|
|
71
|
-
//# sourceMappingURL=init-
|
|
71
|
+
//# sourceMappingURL=init-VP6PXRGZ.js.map
|
package/dist/styles.input.css
CHANGED
|
@@ -1624,7 +1624,24 @@ a {
|
|
|
1624
1624
|
|
|
1625
1625
|
@media (max-width: 35rem) {
|
|
1626
1626
|
.df-header-inner {
|
|
1627
|
-
gap:
|
|
1627
|
+
gap: 4px;
|
|
1628
|
+
padding-inline: 12px;
|
|
1629
|
+
}
|
|
1630
|
+
|
|
1631
|
+
.df-brand-logo {
|
|
1632
|
+
max-width: clamp(5rem, 27vw, 7rem);
|
|
1633
|
+
height: auto;
|
|
1634
|
+
max-height: 2.25rem;
|
|
1635
|
+
}
|
|
1636
|
+
|
|
1637
|
+
.df-search-trigger {
|
|
1638
|
+
width: 36px;
|
|
1639
|
+
margin-inline-start: 0;
|
|
1640
|
+
padding: 8px;
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
.df-kbd {
|
|
1644
|
+
display: none;
|
|
1628
1645
|
}
|
|
1629
1646
|
|
|
1630
1647
|
.df-header-right {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docfuse",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "A static documentation CLI for Markdown, MDX, React components, search, and AI-readable output.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Docfuse Contributors",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"react-dom": "^19.0.0",
|
|
57
57
|
"semver": "^7.8.5",
|
|
58
58
|
"zod": "^3.24.1",
|
|
59
|
-
"@docfuse/markdown": "0.1.
|
|
59
|
+
"@docfuse/markdown": "0.1.1"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/react": "^19.0.0",
|
package/dist/build-X3KCJUYB.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a,b}from"./chunk-N26MW2YK.js";import"./chunk-M47X2MM3.js";import"./chunk-GNYJERGG.js";import"./chunk-XYJ2OBL3.js";import"./chunk-S36HQTIA.js";import"./chunk-DOOG32NU.js";import"./chunk-5NTRNUFG.js";import"./chunk-GRQDPV4U.js";import"./chunk-EAYVCA3Z.js";import"./chunk-JK7ZNBUA.js";import"./chunk-AYDF3IFZ.js";export{b as runBuild,a as versionSatisfies};
|
|
2
|
-
//# sourceMappingURL=build-X3KCJUYB.js.map
|
package/dist/chunk-GRQDPV4U.js
DELETED
package/dist/chunk-M47X2MM3.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{a as X,b as Y,d as Q,f as E}from"./chunk-GNYJERGG.js";import{a as C,b as W,d as K,e as q,f as B,g as k,h as O}from"./chunk-DOOG32NU.js";import{a as z}from"./chunk-GRQDPV4U.js";import{a as V,b as U,c as I}from"./chunk-EAYVCA3Z.js";import{a as R,b as P,d as H,e as _,f as J,h as v}from"./chunk-JK7ZNBUA.js";import{a as u}from"./chunk-AYDF3IFZ.js";import{analyzeMarkdown as jt}from"@docfuse/markdown/server/analyze";import It from"gray-matter";import{join as Rt,posix as Ct}from"path";import{z as d}from"zod";var tt=["ai","box","code","file","file-code","gauge","globe","layers","rocket","search","sparkles","terminal"],Pt=d.object({text:d.string().min(1),link:O,primary:d.boolean().optional(),icon:d.enum(tt).optional()}).strict(),bt=d.object({accent:d.string().optional(),tagline:d.string().optional(),image:O.optional(),imageAlt:d.string().optional(),actions:d.array(Pt).refine(t=>t.filter(e=>e.primary).length<=1,{message:"Home page hero actions can contain at most one primary action"}).optional()}).strict(),Et=d.object({icon:d.enum(tt).optional(),image:O.optional(),title:d.string().min(1),details:d.string().min(1)}).strict(),$t=d.string().trim().refine(t=>d.string().date().safeParse(t).success||d.string().datetime({offset:!0}).safeParse(t).success,"Expected an ISO 8601 date"),Z=d.preprocess(t=>t instanceof Date?t.toISOString():t,$t.transform(t=>new Date(t).toISOString())),et=d.object({title:d.string().optional(),description:d.string().optional(),createdAt:Z.optional(),updatedAt:Z.optional(),order:d.number().finite().optional(),group:d.string().optional(),subgroup:d.string().optional(),collapsed:d.boolean().optional(),sidebar:d.boolean().optional(),layout:d.enum(["document","playground"]).optional(),status:d.enum(["draft","published"]).optional(),search:d.boolean().optional(),ai:d.boolean().optional(),tags:d.array(d.string()).optional(),owner:d.string().optional(),hero:bt.optional(),features:d.array(Et).optional()}).passthrough();function le(t){return Object.fromEntries(["title","description","createdAt","updatedAt","order","group","subgroup","tags","owner"].flatMap(o=>t[o]===void 0?[]:[[o,t[o]]]))}u(le,"publicFrontmatterFor");import{readdir as Dt,readFile as St,stat as vt}from"fs/promises";import{join as kt,relative as rt}from"path";async function ot(t,e,o){if(!Number.isFinite(e)||e<1)throw new Error("Concurrency must be a positive finite number");let n=new Array(t.length),r=0,s,l=Math.min(Math.floor(e),t.length);if(await Promise.all(Array.from({length:l},async()=>{for(;r<t.length&&s===void 0;){let c=r++;try{n[c]=await o(t[c],c)}catch(f){s??=f}}})),s)throw s;return n}u(ot,"mapConcurrent");var Ot=32;async function nt(t){async function e(r){let s=[],l=[r];for(;l.length>0;){let c=l.pop();if(!c)continue;let f=await Dt(c,{withFileTypes:!0});for(let i of f){let a=kt(c,i.name);if(i.isSymbolicLink())throw new Error(`Documentation content must not use symbolic links: ${rt(t,a)}`);i.isDirectory()?l.push(a):i.isFile()&&V(i.name)&&s.push(a)}}return s}u(e,"walk");let o=await e(t);return(await ot(o,Ot,async r=>{let[s,l]=await Promise.all([vt(r),St(r,"utf8")]);return{path:rt(t,r),raw:l,mtimeMs:s.mtimeMs}})).sort((r,s)=>r.path.localeCompare(s.path))}u(nt,"scanMarkdownFiles");function st(t){return t.split("-").filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}u(st,"humanize");function $(t){return I(C(t.relativePath,t.locale))}u($,"isLocaleHome");function Nt(t){return{type:"link",title:t.title||t.routePath,routePath:t.routePath}}u(Nt,"sidebarLink");function at(t){return C(t.relativePath,t.locale).split("/")}u(at,"pageSegments");function it(t){return at(t).slice(0,-1)}u(it,"pageDirectorySegments");function Ft(t){return I(at(t).at(-1)??"")}u(Ft,"isDirectoryIndex");function Tt(t){let e=new Map,o=new Map,n=new Map;for(let r of t)if(Ft(r)&&o.set(it(r).join("/"),r),r.group&&typeof r.frontmatter.group=="string"){let s=n.get(r.group);if(s&&s!==r.frontmatter.group)throw new Error(`Inconsistent group name for locale "${r.locale}" directory "${r.group}": "${s}" and "${r.frontmatter.group}"`);n.set(r.group,r.frontmatter.group)}for(let r of t){if($(r)||r.frontmatter.sidebar===!1)continue;let s=it(r),l=s[0]??"",c=o.get(l),f=l?typeof c?.frontmatter.group=="string"?c.frontmatter.group:c?.title||n.get(l)||st(l):"";if(typeof r.frontmatter.group=="string"&&r.frontmatter.group!==f)throw new Error(`Inconsistent group name for locale "${r.locale}" directory "${r.group}": "${f}" and "${r.frontmatter.group}"`);let i=e.get(l);if(!i)i={segment:l,title:f,items:[]},e.set(l,i);else if(i.title!==f)throw new Error(`Inconsistent group name for locale "${r.locale}" directory "${r.group}": "${i.title}" and "${f}"`);let a=i.items;for(let p=1;p<s.length;p+=1){let m=s[p];if(!m)continue;let g=s.slice(0,p+1).join("/"),h=o.get(g),w=p===1&&typeof r.frontmatter.subgroup=="string"?r.frontmatter.subgroup:void 0,y=(p===1&&typeof h?.frontmatter.subgroup=="string"?h.frontmatter.subgroup:void 0)??h?.title??w??st(m);if(w&&w!==y)throw new Error(`Inconsistent subgroup name for locale "${r.locale}" directory "${g}"`);let b=a.find(S=>S.type==="group"&&S.segment===m),x=b??{type:"group",segment:m,title:y,collapsed:h?.frontmatter.collapsed===!0,items:[]};b||a.push(x),a=x.items}a.push(Nt(r))}return[...e.values()]}u(Tt,"buildSidebar");function N(t){if(t.type==="link")return t;for(let e of t.items){let o=N(e);if(o)return o}}u(N,"firstSidebarLink");function At(t){return t.flatMap(e=>{let o=e.items[0]?N(e.items[0]):void 0;return e.title&&o?[{title:e.title,routePath:o.routePath}]:[]})}u(At,"buildAutomaticNav");function Gt(t,e){return!t.startsWith("/")||e.base==="/"?t:`${e.base}${t.replace(/^\//,"")}`}u(Gt,"versionedNavLink");function Mt(t,e){return t.map(o=>({title:o.text,routePath:Gt(o.link,e)}))}u(Mt,"buildConfiguredNav");function Lt(t,e){return t.map(o=>{if(!o.routePath.startsWith("/"))return o;let n=o.routePath.split("/").filter(Boolean),r=e.find(l=>l.segment&&n.at(-1)===l.segment&&n.length>0),s=r?.items[0]?N(r.items[0]):void 0;return s?{...o,routePath:s.routePath}:o})}u(Lt,"anchorConfiguredNavToSidebar");function Vt(t){let e=new Map;for(let o of t)for(let[n,r]of[["route",o.routePath],["output",o.outputPath],["markdown output",o.markdownOutputPath]]){let s=`${n}:${P(r)}`,l=e.get(s);if(l)throw new Error(`Duplicate ${n} target ${r} for ${l.sourceRelativePath} and ${o.sourceRelativePath}`);e.set(s,o)}}u(Vt,"assertUniquePageTargets");async function Ut(t,e,o,n){let r=H(t,o.docsDir,`versions.items[${o.id}].docsDir`),s=await nt(r),l=[];for(let c of s){let f=c.path.split(/[\\/]/);if(f[0]==="public")continue;let i=f[0]&&e.i18n.locales.includes(f[0])?f[0]:void 0,a=i??e.i18n.defaultLocale,p=i?f.slice(1):f;if(p.length===0)continue;let m=p.join("/"),g=Ct.join(o.docsDir.replace(/\\/g,"/"),c.path.replace(/\\/g,"/")),h=n?await n.transformSource({source:c.raw,sourceRelativePath:g,relativePath:c.path.replace(/\\/g,"/"),kind:U(c.path)?"mdx":"markdown",version:o.id,locale:a}):c.raw,w=It(h),y=et.parse(w.data),b=y.status??"published";if(b==="draft")continue;let x=jt(w.content),S=typeof y.order=="number"&&Number.isFinite(y.order)?y.order:Number.MAX_SAFE_INTEGER,xt=c.path.replace(/\\/g,"/"),L={sourcePath:Rt(r,c.path),transformedSource:h,sourceRelativePath:g,relativePath:xt,version:o.id,versionBase:o.base,docsDir:o.docsDir,locale:a,routePath:K(a,e.i18n.defaultLocale,m,o.base),outputPath:q(a,e.i18n.defaultLocale,m,o.base),markdownOutputPath:B(a,e.i18n.defaultLocale,m,o.base),title:typeof y.title=="string"?y.title:x.headings[0]?.text??"",description:typeof y.description=="string"?y.description:"",order:S,group:p.length>1?p[0]??"":"",status:b,search:y.search!==!1,ai:y.ai!==!1,body:w.content,headings:x.headings,searchText:x.text,codeExamples:x.codeExamples,lastUpdated:y.updatedAt??new Date(c.mtimeMs).toISOString(),frontmatter:y};l.push(n?await n.extendPage(L):L)}return l}u(Ut,"scanVersionPages");async function je(t,e,o){let n=[];for(let i of e.versions.items)for(let a of await Ut(t,e,i,o))n.push(a);let r=new Map(e.versions.items.map((i,a)=>[i.id,a])),s=new Map(e.i18n.locales.map((i,a)=>[i,a]));n.sort((i,a)=>{let p=(r.get(i.version)??0)-(r.get(a.version)??0);if(p!==0)return p;let m=(s.get(i.locale)??0)-(s.get(a.locale)??0);if(m!==0)return m;let g=$(i),h=$(a);return g!==h?g?-1:1:i.order!==a.order?i.order-a.order:i.routePath.localeCompare(a.routePath)}),Vt(n);for(let i of e.versions.items)for(let a of e.i18n.locales)if(!n.some(p=>p.version===i.id&&p.locale===a&&$(p)))throw new Error(`Missing published home page for version "${i.id}" locale "${a}"`);for(let i of e.versions.items)for(let a of e.i18n.locales){let p=n.filter(m=>m.version===i.id&&m.locale===a&&!$(m));p.forEach((m,g)=>{let h=p[g-1],w=p[g+1];h&&(m.previous={title:h.title||h.routePath,routePath:h.routePath}),w&&(m.next={title:w.title||w.routePath,routePath:w.routePath})})}let l={},c={};for(let i of e.versions.items){let a={},p={};l[i.id]=a,c[i.id]=p;for(let m of e.i18n.locales){let g=Tt(n.filter(h=>h.version===i.id&&h.locale===m));a[m]=g,p[m]=e.navigation[m]?Lt(Mt(e.navigation[m],i),g):At(g)}}let f=new Set(n.map(i=>i.routePath));for(let i of Object.values(c))for(let a of Object.values(i))for(let p of a)if(p.routePath.startsWith("/")&&!f.has(p.routePath))throw new Error(`Navigation target is not a generated page: "${p.routePath}"`);return{pages:n,sidebar:l,nav:c,locales:e.i18n.locales,defaultLocale:e.i18n.defaultLocale,versions:e.versions.items.map(i=>({...i})),currentVersion:e.versions.current}}u(je,"buildContentGraph");import{mkdir as Ht,writeFile as ct}from"fs/promises";import{dirname as _t,join as Jt}from"path";var zt={"&":"&","<":"<",">":">",'"':""","'":"'"};function F(t){return t.replace(/[&<>"']/g,e=>zt[e]??e)}u(F,"escapeHtml");function T(t){let e=t==="/"?"/":`${t.replace(/\/+$/,"")}/`;return W(e)}u(T,"normalizeRedirectRoute");function A(t,e){let o=new Set(e.pages.map(s=>T(s.routePath))),n=Object.entries(t.redirects).map(([s,l])=>[T(s),T(l)]),r=new Set(n.map(([s])=>s));for(let[s,l]of n){if(s==="/")throw new Error("Redirect source must not replace the site root");if(o.has(s))throw new Error(`Redirect source collides with a generated page: "${s}"`);if(r.has(l))throw new Error(`Redirect chains are not allowed: "${s}" points to redirect "${l}"`);if(!o.has(l))throw new Error(`Redirect target is not a published generated page: "${l}"`)}if(r.size!==n.length)throw new Error("Redirect sources must be unique after route normalization");return n}u(A,"resolveRedirects");async function Ve(t,e,o){let n=A(e,o);if(n.length===0)return;let r=_(t,e.outputDir);for(let[s,l]of n){let c=v(r,k(s),"redirect route"),f=Y(e,l),i=F(f),a=F(X(e,l)??f),p=JSON.stringify(f).replace(/</g,"\\u003c"),m=`<!doctype html><html><head><meta charset="utf-8"><meta name="robots" content="noindex"><link rel="canonical" href="${a}"><meta http-equiv="refresh" content="0;url=${i}"><script>location.replace(${p})</script></head><body><a href="${i}">Redirecting to ${i}</a></body></html>`;await Ht(_t(c),{recursive:!0}),await ct(c,m)}await ct(Jt(r,"redirects.json"),JSON.stringify(Object.fromEntries(n),null,2))}u(Ve,"writeRedirects");import{posix as ut}from"path";var Wt=new Set([".benchmark.json"]),Kt=["assets/docfuse-markdown","assets/docfuse-playground","assets/docfuse-plugins","assets/fonts","pagefind","ai/content","extensions"];function lt(t){let e=new Map;for(let o of t){let n=P(o),r=Kt.find(l=>n===l||n.startsWith(`${l}/`));if(r)throw new Error(`Generated output uses reserved directory "${r}": "${o}"`);let s=e.get(n);if(s)throw new Error(`Generated outputs overlap: "${s}" and "${o}"`);e.set(n,o)}for(let[o,n]of e){let r=ut.dirname(o);for(;r!==".";){let s=e.get(r);if(s)throw new Error(`Generated outputs overlap: "${s}" and "${n}"`);r=ut.dirname(r)}}}u(lt,"assertGeneratedOutputPlan");function ft(t,e){let o=[".benchmark.json","404.html","assets/docfuse.css","robots.txt","ai/pages.json","ai/manifest.json",...e.pages.flatMap(r=>[r.outputPath,r.markdownOutputPath])];if(t.search.enabled&&(o.push("assets/docfuse-search.js"),Q(t.search.provider)==="compact"))for(let r of e.versions)for(let s of e.locales)o.push(r.id===e.currentVersion?`search/${s}.json`:`search/${r.id}/${s}.json`);t.siteUrl&&o.push("sitemap.xml"),t.ai.pageSummaries&&o.push("ai/summaries.json"),t.ai.codeExamples&&o.push("ai/code-examples.json"),t.ai.markdownIndex&&o.push("ai/index.md"),t.ai.llmsTxt&&o.push("llms.txt"),t.ai.llmsFullTxt&&o.push("llms-full.txt");let n=A(t,e);if(n.length){o.push("redirects.json");for(let[r]of n)o.push(k(r))}return{paths:o,redirects:n}}u(ft,"plannedOutputPaths");function qe(t,e){let{paths:o}=ft(t,e);return lt(o),new Set(o)}u(qe,"generatedOutputPaths");function Be(t,e){let{paths:o,redirects:n}=ft(t,e);return lt(o),new Set([...o.filter(r=>!Wt.has(r)).map(r=>`/${r.split("/").map(encodeURIComponent).join("/")}`),...n.map(([r])=>r)])}u(Be,"generatedPublicPaths");import{randomUUID as Bt}from"crypto";import{mkdir as dt,readFile as Xt,rm as Yt,writeFile as gt}from"fs/promises";import{dirname as Qt,join as ht,posix as wt,resolve as Zt}from"path";import{pathToFileURL as te}from"url";import{build as ee}from"esbuild";import{createHash as pt}from"crypto";function G(t,e){if(t===null||typeof t=="boolean"||typeof t=="string")return t;if(typeof t=="number"){if(!Number.isFinite(t))throw new TypeError("Fingerprint values must contain only finite numbers");return t}if(typeof t!="object")throw new TypeError("Fingerprint values must be JSON-serializable");if(e.has(t))throw new TypeError("Fingerprint values must not be circular");let o=Object.getPrototypeOf(t);if(!Array.isArray(t)&&o!==Object.prototype&&o!==null)throw new TypeError("Fingerprint values must be JSON-serializable plain objects");e.add(t);try{if(Array.isArray(t)){if(Object.keys(t).length!==t.length)throw new TypeError("Fingerprint values must not contain sparse arrays");return t.map(r=>G(r,e))}let n=Object.entries(t).sort(([r],[s])=>r.localeCompare(s)).map(([r,s])=>[r,G(s,e)]);return Object.fromEntries(n)}finally{e.delete(t)}}u(G,"canonicalValue");function qt(t){return JSON.stringify(G(t,new WeakSet))}u(qt,"stableJson");function D(t){return pt("sha256").update(qt(t)).digest("hex")}u(D,"fingerprint");function M(t){return pt("sha256").update(t).digest("hex")}u(M,"fingerprintBytes");var oe=new Set(["apiVersion","name","outputs","transformSource","extendPage","generate"]),re=["pnpm-lock.yaml","package-lock.json","yarn.lock","bun.lock","bun.lockb"];function j(t){return t instanceof Error?t.message:String(t)}u(j,"errorMessage");function mt(t){return{sourceRelativePath:t.sourceRelativePath,relativePath:t.relativePath,version:t.version,locale:t.locale,routePath:t.routePath,title:t.title,description:t.description,status:t.status,search:t.search,ai:t.ai,body:t.body,searchText:t.searchText,frontmatter:structuredClone(t.frontmatter)}}u(mt,"extensionPage");function yt(t,e){if(!e||e.includes("\\")||e.startsWith("/")||e!==wt.normalize(e))throw new Error(`Extension "${t}" output must be a normalized relative POSIX path: "${e}"`);if(e.split("/").some(o=>o==="."||o===".."||!o))throw new Error(`Extension "${t}" output must not contain empty, . or .. segments: "${e}"`);return e}u(yt,"normalizeDeclaredOutput");function ne(t,e){if(!t||typeof t!="object")throw new Error(`Extension ${e.resolve} must export an extension object or factory`);let o=t,n=Object.keys(o).find(r=>!oe.has(r));if(n)throw new Error(`Extension ${e.resolve} has unknown key "${n}"`);if(o.apiVersion!==1)throw new Error(`Extension ${e.resolve} uses unsupported apiVersion ${String(o.apiVersion)}; expected ${1}`);if(typeof o.name!="string"||!/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/.test(o.name))throw new Error(`Extension ${e.resolve} name must be a lowercase portable slug`);for(let r of["transformSource","extendPage","generate"])if(o[r]!==void 0&&typeof o[r]!="function")throw new Error(`Extension "${o.name}" hook ${r} must be a function`);if(o.outputs!==void 0&&!Array.isArray(o.outputs))throw new Error(`Extension "${o.name}" outputs must be an array`);if(o.generate&&!o.outputs?.length)throw new Error(`Extension "${o.name}" with generate() must declare outputs`);if(!o.generate&&o.outputs?.length)throw new Error(`Extension "${o.name}" declares outputs without generate()`);return o}u(ne,"assertDefinition");function se(t,e){if(e===void 0)return{};if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`Extension "${t}" extendPage() must return an object or undefined`);let o=new Set(["title","description","searchText","search","ai"]),n=Object.keys(e).find(s=>!o.has(s));if(n)throw new Error(`Extension "${t}" extendPage() returned unknown key "${n}"`);let r=e;for(let s of["title","description","searchText"])if(r[s]!==void 0&&typeof r[s]!="string")throw new Error(`Extension "${t}" extendPage() field ${s} must be a string`);for(let s of["search","ai"])if(r[s]!==void 0&&typeof r[s]!="boolean")throw new Error(`Extension "${t}" extendPage() field ${s} must be a boolean`);return e}u(se,"assertPagePatch");async function ie(t){let e=[];for(let o of re){let n=ht(t,o);await R(n)&&e.push({path:o,fingerprint:M(await Xt(n))})}return D(e)}u(ie,"lockfileFingerprint");async function ae(t,e,o){let n=Zt(t,o.resolve);if(await J(t,n,`extension ${o.resolve}`),!await R(n))throw new Error(`Extension module not found: ${o.resolve}`);let s=(await ee({entryPoints:[n],bundle:!0,format:"esm",platform:"node",target:"node22",write:!1,sourcemap:"inline",plugins:[{name:"docfuse-extension-api",setup(c){c.onResolve({filter:/^docfuse$/},()=>({path:"docfuse-extension-api",namespace:"docfuse-extension-api"})),c.onLoad({filter:/.*/,namespace:"docfuse-extension-api"},()=>({loader:"js",contents:`
|
|
2
|
-
export const DOCFUSE_EXTENSION_API_VERSION = ${JSON.stringify(1)}
|
|
3
|
-
export const docfuseVersion = ${JSON.stringify(z)}
|
|
4
|
-
export const defineExtension = (factory) => factory
|
|
5
|
-
`}))}}]})).outputFiles[0];if(!s)throw new Error(`Failed to bundle extension ${o.resolve}`);await dt(e,{recursive:!0});let l=ht(e,`extension-${Bt()}.mjs`);await gt(l,s.contents);try{let f=(await import(`${te(l).href}?t=${Date.now()}`)).default,i=typeof f=="function"?await f(structuredClone(o.options??{})):f,a=ne(i,o),p=(a.outputs??[]).map(m=>yt(a.name,m));if(new Set(p.map(P)).size!==p.length)throw new Error(`Extension "${a.name}" declares duplicate portable output paths`);return{definition:a,declaredOutputs:new Set(p),fingerprint:D({descriptor:o,bundle:M(s.contents)})}}finally{await Yt(l,{force:!0})}}u(ae,"loadOneExtension");async function lo(t,e,o){let n=[];for(let c of o)try{n.push(await ae(t,e,c))}catch(f){throw new Error(`Failed to load extension ${c.resolve}: ${j(f)}`,{cause:f})}let r=new Set;for(let c of n){if(r.has(c.definition.name))throw new Error(`Duplicate extension name "${c.definition.name}"`);r.add(c.definition.name)}let s=n.length?await ie(t):D({lockfiles:[]}),l=n.flatMap(({definition:c,declaredOutputs:f})=>[...f].map(i=>`/extensions/${c.name}/${i.split("/").map(encodeURIComponent).join("/")}`));return{fingerprint:D({apiVersion:1,dependencyFingerprint:s,extensions:n.map(c=>({name:c.definition.name,fingerprint:c.fingerprint}))}),publicOutputPaths:l,async transformSource(c){let f=c.source;for(let{definition:i}of n)if(i.transformSource)try{let a=await i.transformSource({...c,source:f});if(typeof a!="string")throw new Error("transformSource() must return a string");f=a}catch(a){throw new Error(`Extension "${i.name}" transformSource failed for ${c.sourceRelativePath}: ${j(a)}`,{cause:a})}return f},async extendPage(c){let f=c;for(let{definition:i}of n)if(i.extendPage)try{let a=se(i.name,await i.extendPage(mt(f)));f={...f,...a}}catch(a){throw new Error(`Extension "${i.name}" extendPage failed for ${f.sourceRelativePath}: ${j(a)}`,{cause:a})}return f},async generate(c,f){for(let{definition:i,declaredOutputs:a}of n){if(!i.generate)continue;let p=new Set;try{await i.generate({pages:f.map(mt),emitFile:u(async(g,h)=>{let w=yt(i.name,g);if(!a.has(w))throw new Error(`generate() emitted undeclared output "${w}"`);if(p.has(w))throw new Error(`generate() emitted "${w}" more than once`);p.add(w);let y=v(c,wt.join("extensions",i.name,w),`extension ${i.name} output`);await dt(Qt(y),{recursive:!0}),await gt(y,h)},"emitFile")});let m=[...a].filter(g=>!p.has(g));if(m.length)throw new Error(`generate() did not emit declared outputs: ${m.join(", ")}`)}catch(m){throw new Error(`Extension "${i.name}" generate failed: ${j(m)}`,{cause:m})}}}}}u(lo,"loadExtensionHost");export{D as a,M as b,le as c,ot as d,je as e,F as f,Ve as g,Kt as h,qe as i,Be as j,lo as k};
|
|
6
|
-
//# sourceMappingURL=chunk-M47X2MM3.js.map
|