@hanzo/docs-mdx 14.2.6 → 14.3.0

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.
Files changed (73) hide show
  1. package/dist/{config-s4QVhqzA.js → adapter-Jwap8N8Y.js} +36 -36
  2. package/dist/{config-s4QVhqzA.js.map → adapter-Jwap8N8Y.js.map} +1 -1
  3. package/dist/{build-DbdeZyKK.js → build-DP5xMGSd.js} +2 -2
  4. package/dist/{build-DbdeZyKK.js.map → build-DP5xMGSd.js.map} +1 -1
  5. package/dist/{build-mdx-BTwSGUFs.js → build-mdx-B98VCkri.js} +2 -2
  6. package/dist/{build-mdx-BTwSGUFs.js.map → build-mdx-B98VCkri.js.map} +1 -1
  7. package/dist/build-mdx-CKU70o5p.js +5 -0
  8. package/dist/{build-mdx-DyJk_jWV.d.ts → build-mdx-DWx1HtNY.d.ts} +7 -7
  9. package/dist/build-mdx-DWx1HtNY.d.ts.map +1 -0
  10. package/dist/bun/index.d.ts +1 -1
  11. package/dist/bun/index.js +8 -8
  12. package/dist/{codegen-IYa8t8xV.js → codegen-DleOVLNr.js} +1 -1
  13. package/dist/{codegen-IYa8t8xV.js.map → codegen-DleOVLNr.js.map} +1 -1
  14. package/dist/config/index.d.ts +1 -1
  15. package/dist/config/index.js +3 -3
  16. package/dist/{core-CCsY8cxS.js → core-BJualF84.js} +3 -3
  17. package/dist/core-BJualF84.js.map +1 -0
  18. package/dist/{core-CgLkZ4NQ.d.ts → core-INx0uFn9.d.ts} +4 -14
  19. package/dist/core-INx0uFn9.d.ts.map +1 -0
  20. package/dist/{fuma-matter-BWdOvvCf.js → frontmatter-Cq6XTjTb.js} +6 -6
  21. package/dist/frontmatter-Cq6XTjTb.js.map +1 -0
  22. package/dist/{index-file-DsOEtYCF.js → index-file-BVTnUkr9.js} +5 -5
  23. package/dist/index-file-BVTnUkr9.js.map +1 -0
  24. package/dist/index.d.ts +2 -2
  25. package/dist/load-from-file-BD2SdoUT.js +5 -0
  26. package/dist/{load-from-file-Bx1TjN0x.js → load-from-file-CSjo1gN1.js} +2 -2
  27. package/dist/{load-from-file-Bx1TjN0x.js.map → load-from-file-CSjo1gN1.js.map} +1 -1
  28. package/dist/{loaders-BjG6ii1-.js → loaders-BVwYfelL.js} +1 -1
  29. package/dist/{loaders-BjG6ii1-.js.map → loaders-BVwYfelL.js.map} +1 -1
  30. package/dist/{mdx-DBBqLhht.js → mdx-B8Ub7Bro.js} +7 -7
  31. package/dist/mdx-B8Ub7Bro.js.map +1 -0
  32. package/dist/{meta-u6oJ9ej1.js → meta-DyieTM4Z.js} +2 -2
  33. package/dist/{meta-u6oJ9ej1.js.map → meta-DyieTM4Z.js.map} +1 -1
  34. package/dist/next/index.cjs +5 -5
  35. package/dist/next/index.d.ts +1 -1
  36. package/dist/next/index.js +8 -8
  37. package/dist/node/loader.js +6 -6
  38. package/dist/plugins/index-file.d.ts +1 -1
  39. package/dist/plugins/index-file.js +3 -3
  40. package/dist/plugins/json-schema.d.ts +1 -1
  41. package/dist/plugins/json-schema.js +2 -2
  42. package/dist/plugins/last-modified.d.ts +1 -1
  43. package/dist/plugins/last-modified.js +1 -1
  44. package/dist/{preset-D_quDsKp.js → preset-DtKimtBh.js} +1 -1
  45. package/dist/{preset-D_quDsKp.js.map → preset-DtKimtBh.js.map} +1 -1
  46. package/dist/{remark-include-BnRd6OBo.js → remark-include-CIiVrABN.js} +4 -4
  47. package/dist/remark-include-CIiVrABN.js.map +1 -0
  48. package/dist/runtime/browser.d.ts +2 -2
  49. package/dist/runtime/dynamic.d.ts +1 -1
  50. package/dist/runtime/dynamic.js +9 -9
  51. package/dist/runtime/dynamic.js.map +1 -1
  52. package/dist/runtime/server.d.ts +2 -2
  53. package/dist/runtime/server.js +4 -10
  54. package/dist/runtime/server.js.map +1 -1
  55. package/dist/vite/index.d.ts +2 -2
  56. package/dist/vite/index.js +10 -10
  57. package/dist/vite/index.js.map +1 -1
  58. package/dist/webpack/mdx.d.ts +1 -1
  59. package/dist/webpack/mdx.js +6 -6
  60. package/dist/webpack/meta.d.ts +1 -1
  61. package/dist/webpack/meta.js +5 -5
  62. package/dist/{webpack-fHsy5QQI.js → webpack-DPxDgZAx.js} +2 -2
  63. package/dist/{webpack-fHsy5QQI.js.map → webpack-DPxDgZAx.js.map} +1 -1
  64. package/package.json +1 -1
  65. package/dist/build-mdx-Cg4YpCKX.js +0 -5
  66. package/dist/build-mdx-DyJk_jWV.d.ts.map +0 -1
  67. package/dist/core-CCsY8cxS.js.map +0 -1
  68. package/dist/core-CgLkZ4NQ.d.ts.map +0 -1
  69. package/dist/fuma-matter-BWdOvvCf.js.map +0 -1
  70. package/dist/index-file-DsOEtYCF.js.map +0 -1
  71. package/dist/load-from-file-DPPJI83O.js +0 -5
  72. package/dist/mdx-DBBqLhht.js.map +0 -1
  73. package/dist/remark-include-BnRd6OBo.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":["path","data: DocData","data: CompiledMDXProperties","files: VirtualFile<{\n pageData: Page;\n metaData: Meta;\n }>[]"],"sources":["../../src/runtime/server.ts"],"sourcesContent":["import type { MetaData, PageData, Source, VirtualFile } from '@hanzo/docs-core/source';\nimport * as path from 'node:path';\nimport type { DocCollection, DocsCollection, MetaCollection } from '@/config';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { CompiledMDXProperties } from '@/loaders/mdx/build-mdx';\nimport type { InternalTypeConfig, DocData, DocMethods, FileInfo, MetaMethods } from './types';\n\nexport type MetaCollectionEntry<Data> = Data & MetaMethods;\n\nexport type DocCollectionEntry<\n Name extends string = string,\n Frontmatter = unknown,\n TC extends InternalTypeConfig = InternalTypeConfig,\n> = DocData & DocMethods & Frontmatter & TC['DocData'][Name];\n\nexport type AsyncDocCollectionEntry<\n Name extends string = string,\n Frontmatter = unknown,\n TC extends InternalTypeConfig = InternalTypeConfig,\n> = {\n load: () => Promise<DocData & TC['DocData'][Name]>;\n} & DocMethods &\n Frontmatter;\n\nexport interface DocsCollectionEntry<\n Name extends string = string,\n Frontmatter extends PageData = PageData,\n Meta extends MetaData = MetaData,\n TC extends InternalTypeConfig = InternalTypeConfig,\n> {\n docs: DocCollectionEntry<Name, Frontmatter, TC>[];\n meta: MetaCollectionEntry<Meta>[];\n /** @deprecated Use toSource() instead */\n toFumadocsSource: () => Source<{\n pageData: DocCollectionEntry<Name, Frontmatter, TC>;\n metaData: MetaCollectionEntry<Meta>;\n }>;\n toSource: () => Source<{\n pageData: DocCollectionEntry<Name, Frontmatter, TC>;\n metaData: MetaCollectionEntry<Meta>;\n }>;\n}\n\nexport interface AsyncDocsCollectionEntry<\n Name extends string = string,\n Frontmatter extends PageData = PageData,\n Meta extends MetaData = MetaData,\n TC extends InternalTypeConfig = InternalTypeConfig,\n> {\n docs: AsyncDocCollectionEntry<Name, Frontmatter, TC>[];\n meta: MetaCollectionEntry<Meta>[];\n /** @deprecated Use toSource() instead */\n toFumadocsSource: () => Source<{\n pageData: AsyncDocCollectionEntry<Name, Frontmatter, TC>;\n metaData: MetaCollectionEntry<Meta>;\n }>;\n toSource: () => Source<{\n pageData: AsyncDocCollectionEntry<Name, Frontmatter, TC>;\n metaData: MetaCollectionEntry<Meta>;\n }>;\n}\n\ntype AwaitableGlobEntries<T> = Record<string, T | (() => Promise<T>)>;\n\nexport type ServerCreate<Config, TC extends InternalTypeConfig = InternalTypeConfig> = ReturnType<\n typeof server<Config, TC>\n>;\n\nexport interface ServerOptions {\n doc?: {\n passthroughs?: string[];\n };\n}\n\nexport function server<Config, TC extends InternalTypeConfig>(options: ServerOptions = {}) {\n const { doc: { passthroughs: docPassthroughs = [] } = {} } = options;\n\n function fileInfo(file: string, base: string): FileInfo {\n if (file.startsWith('./')) {\n file = file.slice(2);\n }\n\n return {\n path: file,\n fullPath: path.join(base, file),\n };\n }\n\n function mapDocData(entry: CompiledMDXProperties): DocData {\n const data: DocData = {\n body: entry.default,\n toc: entry.toc,\n structuredData: entry.structuredData,\n _exports: entry as unknown as Record<string, unknown>,\n };\n\n for (const key of docPassthroughs) {\n // @ts-expect-error -- handle passthrough properties\n data[key] = entry[key];\n }\n\n return data;\n }\n\n return {\n async doc<Name extends keyof Config & string>(\n _name: Name,\n base: string,\n glob: AwaitableGlobEntries<unknown>,\n ) {\n const out = await Promise.all(\n Object.entries(glob).map(async ([k, v]) => {\n const data: CompiledMDXProperties = typeof v === 'function' ? await v() : v;\n\n return {\n ...mapDocData(data),\n ...(data.frontmatter as object),\n ...createDocMethods(fileInfo(k, base), () => data),\n } satisfies DocCollectionEntry;\n }),\n );\n\n return out as unknown as Config[Name] extends\n | DocCollection<infer Schema>\n | DocsCollection<infer Schema>\n ? DocCollectionEntry<Name, StandardSchemaV1.InferOutput<Schema>, TC>[]\n : never;\n },\n async docLazy<Name extends keyof Config & string>(\n _name: Name,\n base: string,\n head: AwaitableGlobEntries<unknown>,\n body: Record<string, () => Promise<unknown>>,\n ) {\n const out = await Promise.all(\n Object.entries(head).map(async ([k, v]) => {\n const data = typeof v === 'function' ? await v() : v;\n const content = body[k] as () => Promise<CompiledMDXProperties>;\n\n return {\n ...data,\n ...createDocMethods(fileInfo(k, base), content),\n async load() {\n return mapDocData(await content());\n },\n } satisfies AsyncDocCollectionEntry;\n }),\n );\n\n return out as unknown as Config[Name] extends\n | DocCollection<infer Schema>\n | DocsCollection<infer Schema>\n ? AsyncDocCollectionEntry<Name, StandardSchemaV1.InferOutput<Schema>, TC>[]\n : never;\n },\n async meta<Name extends keyof Config & string>(\n _name: Name,\n base: string,\n glob: AwaitableGlobEntries<unknown>,\n ) {\n const out = await Promise.all(\n Object.entries(glob).map(async ([k, v]) => {\n const data = typeof v === 'function' ? await v() : v;\n\n return {\n info: fileInfo(k, base),\n ...data,\n } satisfies MetaCollectionEntry<unknown>;\n }),\n );\n\n return out as unknown as Config[Name] extends\n | MetaCollection<infer Schema>\n | DocsCollection<StandardSchemaV1, infer Schema>\n ? MetaCollectionEntry<StandardSchemaV1.InferOutput<Schema>>[]\n : never;\n },\n\n async docs<Name extends keyof Config & string>(\n name: Name,\n base: string,\n metaGlob: AwaitableGlobEntries<unknown>,\n docGlob: AwaitableGlobEntries<unknown>,\n ) {\n const entry = {\n docs: await this.doc(name, base, docGlob),\n meta: await this.meta(name, base, metaGlob),\n toFumadocsSource() {\n return toFumadocsSource(this.docs, this.meta);\n },\n toSource() {\n return toFumadocsSource(this.docs, this.meta);\n },\n } satisfies DocsCollectionEntry;\n\n return entry as Config[Name] extends DocsCollection<infer Page, infer Meta>\n ? StandardSchemaV1.InferOutput<Page> extends PageData\n ? StandardSchemaV1.InferOutput<Meta> extends MetaData\n ? DocsCollectionEntry<\n Name,\n StandardSchemaV1.InferOutput<Page>,\n StandardSchemaV1.InferOutput<Meta>,\n TC\n >\n : never\n : never\n : never;\n },\n async docsLazy<Name extends keyof Config & string>(\n name: Name,\n base: string,\n metaGlob: AwaitableGlobEntries<unknown>,\n docHeadGlob: AwaitableGlobEntries<unknown>,\n docBodyGlob: Record<string, () => Promise<unknown>>,\n ) {\n const entry = {\n docs: await this.docLazy(name, base, docHeadGlob, docBodyGlob),\n meta: await this.meta(name, base, metaGlob),\n toFumadocsSource() {\n return toFumadocsSource(this.docs, this.meta);\n },\n toSource() {\n return toFumadocsSource(this.docs, this.meta);\n },\n } satisfies AsyncDocsCollectionEntry;\n\n return entry as Config[Name] extends DocsCollection<infer Page, infer Meta>\n ? StandardSchemaV1.InferOutput<Page> extends PageData\n ? StandardSchemaV1.InferOutput<Meta> extends MetaData\n ? AsyncDocsCollectionEntry<\n Name,\n StandardSchemaV1.InferOutput<Page>,\n StandardSchemaV1.InferOutput<Meta>,\n TC\n >\n : never\n : never\n : never;\n },\n };\n}\n\nexport function toFumadocsSource<\n Page extends DocMethods & PageData,\n Meta extends MetaMethods & MetaData,\n>(\n pages: Page[],\n metas: Meta[],\n): Source<{\n pageData: Page;\n metaData: Meta;\n}> {\n const files: VirtualFile<{\n pageData: Page;\n metaData: Meta;\n }>[] = [];\n\n for (const entry of pages) {\n files.push({\n type: 'page',\n path: entry.info.path,\n absolutePath: entry.info.fullPath,\n data: entry,\n });\n }\n\n for (const entry of metas) {\n files.push({\n type: 'meta',\n path: entry.info.path,\n absolutePath: entry.info.fullPath,\n data: entry,\n });\n }\n\n return {\n files,\n };\n}\n\nfunction createDocMethods(\n info: FileInfo,\n load: () => CompiledMDXProperties | Promise<CompiledMDXProperties>,\n): DocMethods {\n return {\n info,\n async getText(type) {\n if (type === 'raw') {\n const fs = await import('node:fs/promises');\n\n return (await fs.readFile(info.fullPath)).toString();\n }\n\n const data = await load();\n if (typeof data._markdown !== 'string')\n throw new Error(\n \"getText('processed') requires `includeProcessedMarkdown` to be enabled in your collection config.\",\n );\n return data._markdown;\n },\n async getMDAST() {\n const data = await load();\n\n if (!data._mdast)\n throw new Error(\n 'getMDAST() requires `includeMDAST` to be enabled in your collection config.',\n );\n return JSON.parse(data._mdast);\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"server.js","names":["path","data: DocData","data: CompiledMDXProperties","files: VirtualFile<{\n pageData: Page;\n metaData: Meta;\n }>[]"],"sources":["../../src/runtime/server.ts"],"sourcesContent":["import type { MetaData, PageData, Source, VirtualFile } from '@hanzo/docs-core/source';\nimport * as path from 'node:path';\nimport type { DocCollection, DocsCollection, MetaCollection } from '@/config';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { CompiledMDXProperties } from '@/loaders/mdx/build-mdx';\nimport type { InternalTypeConfig, DocData, DocMethods, FileInfo, MetaMethods } from './types';\n\nexport type MetaCollectionEntry<Data> = Data & MetaMethods;\n\nexport type DocCollectionEntry<\n Name extends string = string,\n Frontmatter = unknown,\n TC extends InternalTypeConfig = InternalTypeConfig,\n> = DocData & DocMethods & Frontmatter & TC['DocData'][Name];\n\nexport type AsyncDocCollectionEntry<\n Name extends string = string,\n Frontmatter = unknown,\n TC extends InternalTypeConfig = InternalTypeConfig,\n> = {\n load: () => Promise<DocData & TC['DocData'][Name]>;\n} & DocMethods &\n Frontmatter;\n\nexport interface DocsCollectionEntry<\n Name extends string = string,\n Frontmatter extends PageData = PageData,\n Meta extends MetaData = MetaData,\n TC extends InternalTypeConfig = InternalTypeConfig,\n> {\n docs: DocCollectionEntry<Name, Frontmatter, TC>[];\n meta: MetaCollectionEntry<Meta>[];\n toSource: () => Source<{\n pageData: DocCollectionEntry<Name, Frontmatter, TC>;\n metaData: MetaCollectionEntry<Meta>;\n }>;\n}\n\nexport interface AsyncDocsCollectionEntry<\n Name extends string = string,\n Frontmatter extends PageData = PageData,\n Meta extends MetaData = MetaData,\n TC extends InternalTypeConfig = InternalTypeConfig,\n> {\n docs: AsyncDocCollectionEntry<Name, Frontmatter, TC>[];\n meta: MetaCollectionEntry<Meta>[];\n toSource: () => Source<{\n pageData: AsyncDocCollectionEntry<Name, Frontmatter, TC>;\n metaData: MetaCollectionEntry<Meta>;\n }>;\n}\n\ntype AwaitableGlobEntries<T> = Record<string, T | (() => Promise<T>)>;\n\nexport type ServerCreate<Config, TC extends InternalTypeConfig = InternalTypeConfig> = ReturnType<\n typeof server<Config, TC>\n>;\n\nexport interface ServerOptions {\n doc?: {\n passthroughs?: string[];\n };\n}\n\nexport function server<Config, TC extends InternalTypeConfig>(options: ServerOptions = {}) {\n const { doc: { passthroughs: docPassthroughs = [] } = {} } = options;\n\n function fileInfo(file: string, base: string): FileInfo {\n if (file.startsWith('./')) {\n file = file.slice(2);\n }\n\n return {\n path: file,\n fullPath: path.join(base, file),\n };\n }\n\n function mapDocData(entry: CompiledMDXProperties): DocData {\n const data: DocData = {\n body: entry.default,\n toc: entry.toc,\n structuredData: entry.structuredData,\n _exports: entry as unknown as Record<string, unknown>,\n };\n\n for (const key of docPassthroughs) {\n // @ts-expect-error -- handle passthrough properties\n data[key] = entry[key];\n }\n\n return data;\n }\n\n return {\n async doc<Name extends keyof Config & string>(\n _name: Name,\n base: string,\n glob: AwaitableGlobEntries<unknown>,\n ) {\n const out = await Promise.all(\n Object.entries(glob).map(async ([k, v]) => {\n const data: CompiledMDXProperties = typeof v === 'function' ? await v() : v;\n\n return {\n ...mapDocData(data),\n ...(data.frontmatter as object),\n ...createDocMethods(fileInfo(k, base), () => data),\n } satisfies DocCollectionEntry;\n }),\n );\n\n return out as unknown as Config[Name] extends\n | DocCollection<infer Schema>\n | DocsCollection<infer Schema>\n ? DocCollectionEntry<Name, StandardSchemaV1.InferOutput<Schema>, TC>[]\n : never;\n },\n async docLazy<Name extends keyof Config & string>(\n _name: Name,\n base: string,\n head: AwaitableGlobEntries<unknown>,\n body: Record<string, () => Promise<unknown>>,\n ) {\n const out = await Promise.all(\n Object.entries(head).map(async ([k, v]) => {\n const data = typeof v === 'function' ? await v() : v;\n const content = body[k] as () => Promise<CompiledMDXProperties>;\n\n return {\n ...data,\n ...createDocMethods(fileInfo(k, base), content),\n async load() {\n return mapDocData(await content());\n },\n } satisfies AsyncDocCollectionEntry;\n }),\n );\n\n return out as unknown as Config[Name] extends\n | DocCollection<infer Schema>\n | DocsCollection<infer Schema>\n ? AsyncDocCollectionEntry<Name, StandardSchemaV1.InferOutput<Schema>, TC>[]\n : never;\n },\n async meta<Name extends keyof Config & string>(\n _name: Name,\n base: string,\n glob: AwaitableGlobEntries<unknown>,\n ) {\n const out = await Promise.all(\n Object.entries(glob).map(async ([k, v]) => {\n const data = typeof v === 'function' ? await v() : v;\n\n return {\n info: fileInfo(k, base),\n ...data,\n } satisfies MetaCollectionEntry<unknown>;\n }),\n );\n\n return out as unknown as Config[Name] extends\n | MetaCollection<infer Schema>\n | DocsCollection<StandardSchemaV1, infer Schema>\n ? MetaCollectionEntry<StandardSchemaV1.InferOutput<Schema>>[]\n : never;\n },\n\n async docs<Name extends keyof Config & string>(\n name: Name,\n base: string,\n metaGlob: AwaitableGlobEntries<unknown>,\n docGlob: AwaitableGlobEntries<unknown>,\n ) {\n const entry = {\n docs: await this.doc(name, base, docGlob),\n meta: await this.meta(name, base, metaGlob),\n toSource() {\n return createSource(this.docs, this.meta);\n },\n } satisfies DocsCollectionEntry;\n\n return entry as Config[Name] extends DocsCollection<infer Page, infer Meta>\n ? StandardSchemaV1.InferOutput<Page> extends PageData\n ? StandardSchemaV1.InferOutput<Meta> extends MetaData\n ? DocsCollectionEntry<\n Name,\n StandardSchemaV1.InferOutput<Page>,\n StandardSchemaV1.InferOutput<Meta>,\n TC\n >\n : never\n : never\n : never;\n },\n async docsLazy<Name extends keyof Config & string>(\n name: Name,\n base: string,\n metaGlob: AwaitableGlobEntries<unknown>,\n docHeadGlob: AwaitableGlobEntries<unknown>,\n docBodyGlob: Record<string, () => Promise<unknown>>,\n ) {\n const entry = {\n docs: await this.docLazy(name, base, docHeadGlob, docBodyGlob),\n meta: await this.meta(name, base, metaGlob),\n toSource() {\n return createSource(this.docs, this.meta);\n },\n } satisfies AsyncDocsCollectionEntry;\n\n return entry as Config[Name] extends DocsCollection<infer Page, infer Meta>\n ? StandardSchemaV1.InferOutput<Page> extends PageData\n ? StandardSchemaV1.InferOutput<Meta> extends MetaData\n ? AsyncDocsCollectionEntry<\n Name,\n StandardSchemaV1.InferOutput<Page>,\n StandardSchemaV1.InferOutput<Meta>,\n TC\n >\n : never\n : never\n : never;\n },\n };\n}\n\nexport function createSource<\n Page extends DocMethods & PageData,\n Meta extends MetaMethods & MetaData,\n>(\n pages: Page[],\n metas: Meta[],\n): Source<{\n pageData: Page;\n metaData: Meta;\n}> {\n const files: VirtualFile<{\n pageData: Page;\n metaData: Meta;\n }>[] = [];\n\n for (const entry of pages) {\n files.push({\n type: 'page',\n path: entry.info.path,\n absolutePath: entry.info.fullPath,\n data: entry,\n });\n }\n\n for (const entry of metas) {\n files.push({\n type: 'meta',\n path: entry.info.path,\n absolutePath: entry.info.fullPath,\n data: entry,\n });\n }\n\n return {\n files,\n };\n}\n\nfunction createDocMethods(\n info: FileInfo,\n load: () => CompiledMDXProperties | Promise<CompiledMDXProperties>,\n): DocMethods {\n return {\n info,\n async getText(type) {\n if (type === 'raw') {\n const fs = await import('node:fs/promises');\n\n return (await fs.readFile(info.fullPath)).toString();\n }\n\n const data = await load();\n if (typeof data._markdown !== 'string')\n throw new Error(\n \"getText('processed') requires `includeProcessedMarkdown` to be enabled in your collection config.\",\n );\n return data._markdown;\n },\n async getMDAST() {\n const data = await load();\n\n if (!data._mdast)\n throw new Error(\n 'getMDAST() requires `includeMDAST` to be enabled in your collection config.',\n );\n return JSON.parse(data._mdast);\n },\n };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { h as IndexFilePluginOptions } from "../core-CgLkZ4NQ.js";
1
+ import { h as IndexFilePluginOptions } from "../core-INx0uFn9.js";
2
2
  import { Plugin } from "vite";
3
3
 
4
4
  //#region src/vite/index.d.ts
@@ -14,7 +14,7 @@ interface PluginOptions {
14
14
  */
15
15
  configPath?: string;
16
16
  /**
17
- * Update Vite config to fix module resolution of Fumadocs
17
+ * Update Vite config to fix module resolution of Hanzo Docs
18
18
  *
19
19
  * @defaultValue true
20
20
  */
@@ -1,12 +1,12 @@
1
- import "../preset-D_quDsKp.js";
2
- import { t as buildConfig } from "../build-DbdeZyKK.js";
3
- import { n as createCore, r as ValidationError, t as _Defaults } from "../core-CCsY8cxS.js";
4
- import "../codegen-IYa8t8xV.js";
5
- import { t as indexFile } from "../index-file-DsOEtYCF.js";
6
- import "../fuma-matter-BWdOvvCf.js";
7
- import { t as createMdxLoader } from "../mdx-DBBqLhht.js";
8
- import { a as toVite, t as createIntegratedConfigLoader } from "../config-s4QVhqzA.js";
9
- import { t as createMetaLoader } from "../meta-u6oJ9ej1.js";
1
+ import "../frontmatter-Cq6XTjTb.js";
2
+ import { t as createMdxLoader } from "../mdx-B8Ub7Bro.js";
3
+ import "../preset-DtKimtBh.js";
4
+ import { t as buildConfig } from "../build-DP5xMGSd.js";
5
+ import { n as createCore, r as ValidationError, t as _Defaults } from "../core-BJualF84.js";
6
+ import "../codegen-DleOVLNr.js";
7
+ import { a as createIntegratedConfigLoader, r as toVite } from "../adapter-Jwap8N8Y.js";
8
+ import { t as createMetaLoader } from "../meta-DyieTM4Z.js";
9
+ import { t as indexFile } from "../index-file-BVTnUkr9.js";
10
10
  import { mergeConfig } from "vite";
11
11
 
12
12
  //#region src/vite/index.ts
@@ -56,7 +56,7 @@ async function mdx(config, pluginOptions = {}) {
56
56
  };
57
57
  }
58
58
  async function postInstall(pluginOptions = {}) {
59
- const { loadConfig } = await import("../load-from-file-DPPJI83O.js");
59
+ const { loadConfig } = await import("../load-from-file-BD2SdoUT.js");
60
60
  const core = createViteCore(applyDefaults(pluginOptions));
61
61
  await core.init({ config: loadConfig(core, true) });
62
62
  await core.emit({ write: true });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["config"],"sources":["../../src/vite/index.ts"],"sourcesContent":["import { mergeConfig, type Plugin, type UserConfig } from 'vite';\nimport { buildConfig } from '@/config/build';\nimport { ValidationError } from '@/utils/validation';\nimport { createMdxLoader } from '@/loaders/mdx';\nimport { toVite } from '@/loaders/adapter';\nimport type { FSWatcher } from 'chokidar';\nimport { _Defaults, createCore } from '@/core';\nimport { createIntegratedConfigLoader } from '@/loaders/config';\nimport { createMetaLoader } from '@/loaders/meta';\nimport indexFile, { IndexFilePluginOptions } from '@/plugins/index-file';\n\nexport interface PluginOptions {\n /**\n * Generate index files for accessing content.\n *\n * @defaultValue true\n */\n index?: boolean | IndexFilePluginOptions;\n\n /**\n * @defaultValue source.config.ts\n */\n configPath?: string;\n\n /**\n * Update Vite config to fix module resolution of Fumadocs\n *\n * @defaultValue true\n */\n updateViteConfig?: boolean;\n\n /**\n * Output directory of generated files\n *\n * @defaultValue '.docs'\n */\n outDir?: string;\n}\n\nexport default async function mdx(\n config: Record<string, unknown>,\n pluginOptions: PluginOptions = {},\n): Promise<Plugin> {\n const options = applyDefaults(pluginOptions);\n const core = createViteCore(options);\n await core.init({\n config: buildConfig(config),\n });\n\n const configLoader = createIntegratedConfigLoader(core);\n const mdxLoader = toVite(createMdxLoader(configLoader));\n const metaLoader = toVite(\n createMetaLoader(configLoader, {\n // vite has built-in plugin for JSON files\n json: 'json',\n }),\n );\n\n return {\n name: 'hanzo-docs-mdx',\n // needed, otherwise other plugins will be executed before our `transform`.\n enforce: 'pre',\n config(config) {\n if (!options.updateViteConfig) return config;\n\n return mergeConfig(config, {\n resolve: {\n noExternal: [\n '@hanzo/docs-core',\n '@hanzo/docs-ui',\n '@hanzo/docs-openapi',\n '@hanzo/docs-base-ui',\n '@hanzo/docs-ui',\n ],\n // only dedupe for public, non-transitive libs\n dedupe: ['@hanzo/docs-core', '@hanzo/docs-ui', '@hanzo/docs-openapi', '@hanzo/docs-base-ui'],\n },\n } satisfies UserConfig);\n },\n async buildStart() {\n await core.emit({ write: true });\n },\n async configureServer(server) {\n await core.initServer({\n watcher: server.watcher as unknown as FSWatcher,\n });\n },\n async transform(value, id) {\n try {\n if (metaLoader.filter(id)) {\n return await metaLoader.transform.call(this, value, id);\n }\n\n if (mdxLoader.filter(id)) {\n return await mdxLoader.transform.call(this, value, id);\n }\n } catch (e) {\n if (e instanceof ValidationError) {\n throw new Error(await e.toStringFormatted());\n }\n\n throw e;\n }\n },\n };\n}\n\nexport async function postInstall(pluginOptions: PluginOptions = {}) {\n const { loadConfig } = await import('@/config/load-from-file');\n const core = createViteCore(applyDefaults(pluginOptions));\n await core.init({\n config: loadConfig(core, true),\n });\n await core.emit({ write: true });\n}\n\nfunction createViteCore({ index, configPath, outDir }: Required<PluginOptions>) {\n if (index === true) index = {};\n\n return createCore({\n environment: 'vite',\n configPath,\n outDir,\n plugins: [\n index &&\n indexFile({\n ...index,\n target: index.target ?? 'vite',\n }),\n ],\n });\n}\n\nfunction applyDefaults(options: PluginOptions): Required<PluginOptions> {\n return {\n updateViteConfig: options.updateViteConfig ?? true,\n index: options.index ?? true,\n configPath: options.configPath ?? _Defaults.configPath,\n outDir: options.outDir ?? _Defaults.outDir,\n };\n}\n"],"mappings":";;;;;;;;;;;;AAuCA,eAA8B,IAC5B,QACA,gBAA+B,EAAE,EAChB;CACjB,MAAM,UAAU,cAAc,cAAc;CAC5C,MAAM,OAAO,eAAe,QAAQ;AACpC,OAAM,KAAK,KAAK,EACd,QAAQ,YAAY,OAAO,EAC5B,CAAC;CAEF,MAAM,eAAe,6BAA6B,KAAK;CACvD,MAAM,YAAY,OAAO,gBAAgB,aAAa,CAAC;CACvD,MAAM,aAAa,OACjB,iBAAiB,cAAc,EAE7B,MAAM,QACP,CAAC,CACH;AAED,QAAO;EACL,MAAM;EAEN,SAAS;EACT,OAAO,UAAQ;AACb,OAAI,CAAC,QAAQ,iBAAkB,QAAOA;AAEtC,UAAO,YAAYA,UAAQ,EACzB,SAAS;IACP,YAAY;KACV;KACA;KACA;KACA;KACA;KACD;IAED,QAAQ;KAAC;KAAoB;KAAkB;KAAuB;KAAsB;IAC7F,EACF,CAAsB;;EAEzB,MAAM,aAAa;AACjB,SAAM,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC;;EAElC,MAAM,gBAAgB,QAAQ;AAC5B,SAAM,KAAK,WAAW,EACpB,SAAS,OAAO,SACjB,CAAC;;EAEJ,MAAM,UAAU,OAAO,IAAI;AACzB,OAAI;AACF,QAAI,WAAW,OAAO,GAAG,CACvB,QAAO,MAAM,WAAW,UAAU,KAAK,MAAM,OAAO,GAAG;AAGzD,QAAI,UAAU,OAAO,GAAG,CACtB,QAAO,MAAM,UAAU,UAAU,KAAK,MAAM,OAAO,GAAG;YAEjD,GAAG;AACV,QAAI,aAAa,gBACf,OAAM,IAAI,MAAM,MAAM,EAAE,mBAAmB,CAAC;AAG9C,UAAM;;;EAGX;;AAGH,eAAsB,YAAY,gBAA+B,EAAE,EAAE;CACnE,MAAM,EAAE,eAAe,MAAM,OAAO;CACpC,MAAM,OAAO,eAAe,cAAc,cAAc,CAAC;AACzD,OAAM,KAAK,KAAK,EACd,QAAQ,WAAW,MAAM,KAAK,EAC/B,CAAC;AACF,OAAM,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC;;AAGlC,SAAS,eAAe,EAAE,OAAO,YAAY,UAAmC;AAC9E,KAAI,UAAU,KAAM,SAAQ,EAAE;AAE9B,QAAO,WAAW;EAChB,aAAa;EACb;EACA;EACA,SAAS,CACP,SACE,UAAU;GACR,GAAG;GACH,QAAQ,MAAM,UAAU;GACzB,CAAC,CACL;EACF,CAAC;;AAGJ,SAAS,cAAc,SAAiD;AACtE,QAAO;EACL,kBAAkB,QAAQ,oBAAoB;EAC9C,OAAO,QAAQ,SAAS;EACxB,YAAY,QAAQ,cAAc,UAAU;EAC5C,QAAQ,QAAQ,UAAU,UAAU;EACrC"}
1
+ {"version":3,"file":"index.js","names":["config"],"sources":["../../src/vite/index.ts"],"sourcesContent":["import { mergeConfig, type Plugin, type UserConfig } from 'vite';\nimport { buildConfig } from '@/config/build';\nimport { ValidationError } from '@/utils/validation';\nimport { createMdxLoader } from '@/loaders/mdx';\nimport { toVite } from '@/loaders/adapter';\nimport type { FSWatcher } from 'chokidar';\nimport { _Defaults, createCore } from '@/core';\nimport { createIntegratedConfigLoader } from '@/loaders/config';\nimport { createMetaLoader } from '@/loaders/meta';\nimport indexFile, { IndexFilePluginOptions } from '@/plugins/index-file';\n\nexport interface PluginOptions {\n /**\n * Generate index files for accessing content.\n *\n * @defaultValue true\n */\n index?: boolean | IndexFilePluginOptions;\n\n /**\n * @defaultValue source.config.ts\n */\n configPath?: string;\n\n /**\n * Update Vite config to fix module resolution of Hanzo Docs\n *\n * @defaultValue true\n */\n updateViteConfig?: boolean;\n\n /**\n * Output directory of generated files\n *\n * @defaultValue '.docs'\n */\n outDir?: string;\n}\n\nexport default async function mdx(\n config: Record<string, unknown>,\n pluginOptions: PluginOptions = {},\n): Promise<Plugin> {\n const options = applyDefaults(pluginOptions);\n const core = createViteCore(options);\n await core.init({\n config: buildConfig(config),\n });\n\n const configLoader = createIntegratedConfigLoader(core);\n const mdxLoader = toVite(createMdxLoader(configLoader));\n const metaLoader = toVite(\n createMetaLoader(configLoader, {\n // vite has built-in plugin for JSON files\n json: 'json',\n }),\n );\n\n return {\n name: 'hanzo-docs-mdx',\n // needed, otherwise other plugins will be executed before our `transform`.\n enforce: 'pre',\n config(config) {\n if (!options.updateViteConfig) return config;\n\n return mergeConfig(config, {\n resolve: {\n noExternal: [\n '@hanzo/docs-core',\n '@hanzo/docs-ui',\n '@hanzo/docs-openapi',\n '@hanzo/docs-base-ui',\n '@hanzo/docs-ui',\n ],\n // only dedupe for public, non-transitive libs\n dedupe: ['@hanzo/docs-core', '@hanzo/docs-ui', '@hanzo/docs-openapi', '@hanzo/docs-base-ui'],\n },\n } satisfies UserConfig);\n },\n async buildStart() {\n await core.emit({ write: true });\n },\n async configureServer(server) {\n await core.initServer({\n watcher: server.watcher as unknown as FSWatcher,\n });\n },\n async transform(value, id) {\n try {\n if (metaLoader.filter(id)) {\n return await metaLoader.transform.call(this, value, id);\n }\n\n if (mdxLoader.filter(id)) {\n return await mdxLoader.transform.call(this, value, id);\n }\n } catch (e) {\n if (e instanceof ValidationError) {\n throw new Error(await e.toStringFormatted());\n }\n\n throw e;\n }\n },\n };\n}\n\nexport async function postInstall(pluginOptions: PluginOptions = {}) {\n const { loadConfig } = await import('@/config/load-from-file');\n const core = createViteCore(applyDefaults(pluginOptions));\n await core.init({\n config: loadConfig(core, true),\n });\n await core.emit({ write: true });\n}\n\nfunction createViteCore({ index, configPath, outDir }: Required<PluginOptions>) {\n if (index === true) index = {};\n\n return createCore({\n environment: 'vite',\n configPath,\n outDir,\n plugins: [\n index &&\n indexFile({\n ...index,\n target: index.target ?? 'vite',\n }),\n ],\n });\n}\n\nfunction applyDefaults(options: PluginOptions): Required<PluginOptions> {\n return {\n updateViteConfig: options.updateViteConfig ?? true,\n index: options.index ?? true,\n configPath: options.configPath ?? _Defaults.configPath,\n outDir: options.outDir ?? _Defaults.outDir,\n };\n}\n"],"mappings":";;;;;;;;;;;;AAuCA,eAA8B,IAC5B,QACA,gBAA+B,EAAE,EAChB;CACjB,MAAM,UAAU,cAAc,cAAc;CAC5C,MAAM,OAAO,eAAe,QAAQ;AACpC,OAAM,KAAK,KAAK,EACd,QAAQ,YAAY,OAAO,EAC5B,CAAC;CAEF,MAAM,eAAe,6BAA6B,KAAK;CACvD,MAAM,YAAY,OAAO,gBAAgB,aAAa,CAAC;CACvD,MAAM,aAAa,OACjB,iBAAiB,cAAc,EAE7B,MAAM,QACP,CAAC,CACH;AAED,QAAO;EACL,MAAM;EAEN,SAAS;EACT,OAAO,UAAQ;AACb,OAAI,CAAC,QAAQ,iBAAkB,QAAOA;AAEtC,UAAO,YAAYA,UAAQ,EACzB,SAAS;IACP,YAAY;KACV;KACA;KACA;KACA;KACA;KACD;IAED,QAAQ;KAAC;KAAoB;KAAkB;KAAuB;KAAsB;IAC7F,EACF,CAAsB;;EAEzB,MAAM,aAAa;AACjB,SAAM,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC;;EAElC,MAAM,gBAAgB,QAAQ;AAC5B,SAAM,KAAK,WAAW,EACpB,SAAS,OAAO,SACjB,CAAC;;EAEJ,MAAM,UAAU,OAAO,IAAI;AACzB,OAAI;AACF,QAAI,WAAW,OAAO,GAAG,CACvB,QAAO,MAAM,WAAW,UAAU,KAAK,MAAM,OAAO,GAAG;AAGzD,QAAI,UAAU,OAAO,GAAG,CACtB,QAAO,MAAM,UAAU,UAAU,KAAK,MAAM,OAAO,GAAG;YAEjD,GAAG;AACV,QAAI,aAAa,gBACf,OAAM,IAAI,MAAM,MAAM,EAAE,mBAAmB,CAAC;AAG9C,UAAM;;;EAGX;;AAGH,eAAsB,YAAY,gBAA+B,EAAE,EAAE;CACnE,MAAM,EAAE,eAAe,MAAM,OAAO;CACpC,MAAM,OAAO,eAAe,cAAc,cAAc,CAAC;AACzD,OAAM,KAAK,KAAK,EACd,QAAQ,WAAW,MAAM,KAAK,EAC/B,CAAC;AACF,OAAM,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC;;AAGlC,SAAS,eAAe,EAAE,OAAO,YAAY,UAAmC;AAC9E,KAAI,UAAU,KAAM,SAAQ,EAAE;AAE9B,QAAO,WAAW;EAChB,aAAa;EACb;EACA;EACA,SAAS,CACP,SACE,UAAU;GACR,GAAG;GACH,QAAQ,MAAM,UAAU;GACzB,CAAC,CACL;EACF,CAAC;;AAGJ,SAAS,cAAc,SAAiD;AACtE,QAAO;EACL,kBAAkB,QAAQ,oBAAoB;EAC9C,OAAO,QAAQ,SAAS;EACxB,YAAY,QAAQ,cAAc,UAAU;EAC5C,QAAQ,QAAQ,UAAU,UAAU;EACrC"}
@@ -1,4 +1,4 @@
1
- import "../core-CgLkZ4NQ.js";
1
+ import "../core-INx0uFn9.js";
2
2
  import { t as WebpackLoaderOptions } from "../index-Bc_4I1HE.js";
3
3
  import { LoaderContext } from "webpack";
4
4
 
@@ -1,9 +1,9 @@
1
- import "../core-CCsY8cxS.js";
2
- import "../codegen-IYa8t8xV.js";
3
- import "../fuma-matter-BWdOvvCf.js";
4
- import { t as createMdxLoader } from "../mdx-DBBqLhht.js";
5
- import { n as createStandaloneConfigLoader, o as toWebpack } from "../config-s4QVhqzA.js";
6
- import { t as getCore } from "../webpack-fHsy5QQI.js";
1
+ import "../frontmatter-Cq6XTjTb.js";
2
+ import { t as createMdxLoader } from "../mdx-B8Ub7Bro.js";
3
+ import "../core-BJualF84.js";
4
+ import "../codegen-DleOVLNr.js";
5
+ import { i as toWebpack, o as createStandaloneConfigLoader } from "../adapter-Jwap8N8Y.js";
6
+ import { t as getCore } from "../webpack-DPxDgZAx.js";
7
7
 
8
8
  //#region src/webpack/mdx.ts
9
9
  let instance;
@@ -1,4 +1,4 @@
1
- import "../core-CgLkZ4NQ.js";
1
+ import "../core-INx0uFn9.js";
2
2
  import { t as WebpackLoaderOptions } from "../index-Bc_4I1HE.js";
3
3
  import { LoaderContext } from "webpack";
4
4
 
@@ -1,8 +1,8 @@
1
- import "../core-CCsY8cxS.js";
2
- import "../codegen-IYa8t8xV.js";
3
- import { n as createStandaloneConfigLoader, o as toWebpack } from "../config-s4QVhqzA.js";
4
- import { t as createMetaLoader } from "../meta-u6oJ9ej1.js";
5
- import { t as getCore } from "../webpack-fHsy5QQI.js";
1
+ import "../core-BJualF84.js";
2
+ import "../codegen-DleOVLNr.js";
3
+ import { i as toWebpack, o as createStandaloneConfigLoader } from "../adapter-Jwap8N8Y.js";
4
+ import { t as createMetaLoader } from "../meta-DyieTM4Z.js";
5
+ import { t as getCore } from "../webpack-DPxDgZAx.js";
6
6
 
7
7
  //#region src/webpack/meta.ts
8
8
  let instance;
@@ -1,4 +1,4 @@
1
- import { n as createCore } from "./core-CCsY8cxS.js";
1
+ import { n as createCore } from "./core-BJualF84.js";
2
2
 
3
3
  //#region src/webpack/index.ts
4
4
  let core;
@@ -12,4 +12,4 @@ function getCore(options) {
12
12
 
13
13
  //#endregion
14
14
  export { getCore as t };
15
- //# sourceMappingURL=webpack-fHsy5QQI.js.map
15
+ //# sourceMappingURL=webpack-DPxDgZAx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webpack-fHsy5QQI.js","names":["core: Core"],"sources":["../src/webpack/index.ts"],"sourcesContent":["import { type Core, createCore } from '@/core';\n\nexport interface WebpackLoaderOptions {\n absoluteCompiledConfigPath: string;\n configPath: string;\n outDir: string;\n isDev: boolean;\n}\n\nlet core: Core;\n\nexport function getCore(options: WebpackLoaderOptions) {\n return (core ??= createCore({\n environment: 'webpack',\n outDir: options.outDir,\n configPath: options.configPath,\n }));\n}\n"],"mappings":";;;AASA,IAAIA;AAEJ,SAAgB,QAAQ,SAA+B;AACrD,QAAQ,SAAS,WAAW;EAC1B,aAAa;EACb,QAAQ,QAAQ;EAChB,YAAY,QAAQ;EACrB,CAAC"}
1
+ {"version":3,"file":"webpack-DPxDgZAx.js","names":["core: Core"],"sources":["../src/webpack/index.ts"],"sourcesContent":["import { type Core, createCore } from '@/core';\n\nexport interface WebpackLoaderOptions {\n absoluteCompiledConfigPath: string;\n configPath: string;\n outDir: string;\n isDev: boolean;\n}\n\nlet core: Core;\n\nexport function getCore(options: WebpackLoaderOptions) {\n return (core ??= createCore({\n environment: 'webpack',\n outDir: options.outDir,\n configPath: options.configPath,\n }));\n}\n"],"mappings":";;;AASA,IAAIA;AAEJ,SAAgB,QAAQ,SAA+B;AACrD,QAAQ,SAAS,WAAW;EAC1B,aAAa;EACb,QAAQ,QAAQ;EAChB,YAAY,QAAQ;EACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/docs-mdx",
3
- "version": "14.2.6",
3
+ "version": "14.3.0",
4
4
  "description": "The built-in source for Hanzo Docs",
5
5
  "keywords": [
6
6
  "Docs",
@@ -1,5 +0,0 @@
1
- import "./fuma-matter-BWdOvvCf.js";
2
- import "./remark-include-BnRd6OBo.js";
3
- import { t as buildMDX } from "./build-mdx-BTwSGUFs.js";
4
-
5
- export { buildMDX };
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-mdx-DyJk_jWV.d.ts","names":[],"sources":["../src/loaders/mdx/build-mdx.ts"],"sourcesContent":[],"mappings":";;;;;;;;AASwD,KAEnD,SAAA,GAAY,UAAH,CAAqB,OAAA,eAAlB,CAAA;AAiDH,UAlCG,eAAA,CAkCH;EAK8B,aAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAAA,IAAA;;AAC3C,UApCgB,qBAoChB,CAAA,cApCoD,MAoCpD,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA;EAAA,WAAA,EAnCc,WAmCd;gBAI2B,EAtCV,cAsCyB;EAAA,GAAA,EArCpC,WAqCoC,EAAA;EAAA,OAAA,EApChC,EAoCgC,CApC7B,QAoC6B,CAAA;;;;;;;;;;UAxB1B,eAAA;;;;gBAID;;;;;;;;;;;cAUF;;;;4CAK8B;;;4BAKhB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-CCsY8cxS.js","names":["plugins: Plugin[]","config: LoadedConfig","out: EmitOutput","options","lines: string[]","postprocessOptions: Partial<PostprocessOptions> | undefined"],"sources":["../src/utils/validation.ts","../src/core.ts"],"sourcesContent":["import type { CollectionSchema } from '@/config';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport class ValidationError extends Error {\n title: string;\n issues: readonly StandardSchemaV1.Issue[];\n\n constructor(message: string, issues: readonly StandardSchemaV1.Issue[]) {\n super(`${message}:\\n${issues.map((issue) => ` ${issue.path}: ${issue.message}`).join('\\n')}`);\n\n this.title = message;\n this.issues = issues;\n }\n\n async toStringFormatted() {\n // Handle ESM/CJS interop: picocolors is a CJS module that exports via\n // module.exports = createColors(). When dynamically imported in ESM context\n // (e.g., Next.js 16 Turbopack), the exports are wrapped under .default\n const picocolorsModule = await import('picocolors');\n const picocolors = picocolorsModule.default ?? picocolorsModule;\n\n return [\n picocolors.bold(`[MDX] ${this.title}:`),\n ...this.issues.map((issue) =>\n picocolors.redBright(\n `- ${picocolors.bold(issue.path?.join('.') ?? '*')}: ${issue.message}`,\n ),\n ),\n ].join('\\n');\n }\n}\n\nexport async function validate<Schema extends StandardSchemaV1, Context>(\n schema: CollectionSchema<Schema, Context>,\n data: unknown,\n context: Context,\n errorMessage: string,\n): Promise<StandardSchemaV1.InferOutput<Schema>> {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n schema = schema(context);\n }\n\n if ('~standard' in schema) {\n const result = await (schema as StandardSchemaV1)['~standard'].validate(data);\n\n if (result.issues) {\n throw new ValidationError(errorMessage, result.issues);\n }\n\n return result.value;\n }\n\n return data;\n}\n","import type {\n CollectionItem,\n DocCollectionItem,\n LoadedConfig,\n MetaCollectionItem,\n} from '@/config/build';\nimport path from 'node:path';\nimport fs from 'node:fs/promises';\nimport type { FSWatcher } from 'chokidar';\nimport { validate } from './utils/validation';\nimport type { VFile } from 'vfile';\nimport type { IndexFilePlugin } from './plugins/index-file';\nimport type { PostprocessOptions } from './config';\nimport { ident } from './utils/codegen';\n\ntype Awaitable<T> = T | Promise<T>;\n\nexport interface EmitEntry {\n /**\n * path relative to output directory\n */\n path: string;\n content: string;\n}\n\nexport interface PluginContext {\n core: Core;\n}\n\nexport type CompilationContext<Collection> = PluginContext & TransformOptions<Collection>;\n\nexport interface TransformOptions<Collection> {\n collection: Collection;\n filePath: string;\n source: string;\n}\n\nexport interface Plugin extends IndexFilePlugin {\n name?: string;\n\n /**\n * on config loaded/updated\n */\n config?: (this: PluginContext, config: LoadedConfig) => Awaitable<void | LoadedConfig>;\n\n /**\n * Generate files (e.g. types, index file, or JSON schemas)\n */\n emit?: (this: PluginContext) => Awaitable<EmitEntry[]>;\n\n /**\n * Configure Fumadocs dev server\n */\n configureServer?: (this: PluginContext, server: ServerContext) => Awaitable<void>;\n\n meta?: {\n /**\n * Transform metadata\n */\n transform?: (\n this: CompilationContext<MetaCollectionItem>,\n data: unknown,\n ) => Awaitable<unknown | void>;\n };\n\n doc?: {\n /**\n * Transform frontmatter\n */\n frontmatter?: (\n this: CompilationContext<DocCollectionItem>,\n data: Record<string, unknown>,\n ) => Awaitable<Record<string, unknown> | void>;\n\n /**\n * Transform `vfile` on compilation stage\n */\n vfile?: (this: CompilationContext<DocCollectionItem>, file: VFile) => Awaitable<VFile | void>;\n };\n}\n\nexport type PluginOption = Awaitable<Plugin | PluginOption[] | false | undefined>;\n\nexport interface ServerContext {\n /**\n * the file watcher, by default all content files are watched, along with other files.\n *\n * make sure to filter when listening to events\n */\n watcher?: FSWatcher;\n}\n\nexport interface CoreOptions {\n environment: string;\n configPath: string;\n outDir: string;\n plugins?: PluginOption[];\n\n /**\n * the workspace info if this instance is created as a workspace\n */\n workspace?: {\n parent: Core;\n name: string;\n dir: string;\n };\n}\n\nexport interface EmitOptions {\n /**\n * filter the plugins to run emit\n */\n filterPlugin?: (plugin: Plugin) => boolean;\n\n /**\n * filter the workspaces to run emit\n */\n filterWorkspace?: (workspace: string) => boolean;\n\n /**\n * write files\n */\n write?: boolean;\n}\n\nexport interface EmitOutput {\n entries: EmitEntry[];\n workspaces: Record<string, EmitEntry[]>;\n}\n\nexport const _Defaults = {\n configPath: 'source.config.ts',\n outDir: '.docs',\n};\n\nasync function getPlugins(pluginOptions: PluginOption[]): Promise<Plugin[]> {\n const plugins: Plugin[] = [];\n\n for await (const option of pluginOptions) {\n if (!option) continue;\n if (Array.isArray(option)) plugins.push(...(await getPlugins(option)));\n else plugins.push(option);\n }\n\n return plugins;\n}\n\nexport function createCore(options: CoreOptions) {\n let config: LoadedConfig;\n let plugins: Plugin[];\n const workspaces = new Map<string, Core>();\n\n async function transformMetadata<T>(\n { collection, filePath, source }: TransformOptions<DocCollectionItem | MetaCollectionItem>,\n data: unknown,\n ): Promise<T> {\n if (collection.schema) {\n data = await validate(\n collection.schema,\n data,\n { path: filePath, source },\n collection.type === 'doc'\n ? `invalid frontmatter in ${filePath}`\n : `invalid data in ${filePath}`,\n );\n }\n\n return data as T;\n }\n\n return {\n /**\n * Convenient cache store, reset when config changes\n */\n cache: new Map<string, unknown>(),\n async init({ config: newConfig }: { config: Awaitable<LoadedConfig> }) {\n config = await newConfig;\n this.cache.clear();\n workspaces.clear();\n plugins = await getPlugins([postprocessPlugin(), options.plugins, config.global.plugins]);\n\n for (const plugin of plugins) {\n const out = await plugin.config?.call(this.getPluginContext(), config);\n if (out) config = out;\n }\n\n // only support workspaces with max depth 1\n if (!options.workspace) {\n await Promise.all(\n Object.entries(config.workspaces).map(async ([name, workspace]) => {\n const core = createCore({\n ...options,\n outDir: path.join(options.outDir, name),\n workspace: {\n name,\n parent: this,\n dir: workspace.dir,\n },\n });\n await core.init({ config: workspace.config });\n workspaces.set(name, core);\n }),\n );\n }\n },\n getWorkspaces() {\n return workspaces;\n },\n getOptions() {\n return options;\n },\n getConfig(): LoadedConfig {\n return config;\n },\n /**\n * The file path of compiled config file, the file may not exist (e.g. on Vite, or still compiling)\n */\n getCompiledConfigPath(): string {\n return path.join(options.outDir, 'source.config.mjs');\n },\n getPlugins() {\n return plugins;\n },\n getCollections(): CollectionItem[] {\n return Array.from(config.collections.values());\n },\n getCollection(name: string): CollectionItem | undefined {\n return config.collections.get(name);\n },\n getPluginContext(): PluginContext {\n return {\n core: this,\n };\n },\n async initServer(server: ServerContext): Promise<void> {\n const ctx = this.getPluginContext();\n for (const plugin of plugins) {\n await plugin.configureServer?.call(ctx, server);\n }\n for (const workspace of workspaces.values()) {\n await workspace.initServer(server);\n }\n },\n async emit(emitOptions: EmitOptions = {}): Promise<EmitOutput> {\n const { filterPlugin, filterWorkspace, write = false } = emitOptions;\n const start = performance.now();\n const ctx = this.getPluginContext();\n const added = new Set<string>();\n const out: EmitOutput = {\n entries: [],\n workspaces: {},\n };\n\n for (const li of await Promise.all(\n plugins.map((plugin) => {\n if ((filterPlugin && !filterPlugin(plugin)) || !plugin.emit) return;\n return plugin.emit.call(ctx);\n }),\n )) {\n if (!li) continue;\n for (const item of li) {\n if (added.has(item.path)) continue;\n out.entries.push(item);\n added.add(item.path);\n }\n }\n\n if (write) {\n await Promise.all(\n out.entries.map(async (entry) => {\n const file = path.join(options.outDir, entry.path);\n\n await fs.mkdir(path.dirname(file), { recursive: true });\n await fs.writeFile(file, entry.content);\n }),\n );\n\n console.log(\n options.workspace\n ? `[MDX: ${options.workspace.name}] generated files in ${performance.now() - start}ms`\n : `[MDX] generated files in ${performance.now() - start}ms`,\n );\n }\n\n for (const [name, workspace] of workspaces) {\n if (filterWorkspace && !filterWorkspace(name)) continue;\n out.workspaces[name] = (await workspace.emit(emitOptions)).entries;\n }\n\n return out;\n },\n async transformMeta(\n options: TransformOptions<MetaCollectionItem>,\n data: unknown,\n ): Promise<unknown> {\n const ctx = {\n ...this.getPluginContext(),\n ...options,\n };\n\n data = await transformMetadata(options, data);\n for (const plugin of plugins) {\n if (plugin.meta?.transform) data = (await plugin.meta.transform.call(ctx, data)) ?? data;\n }\n\n return data;\n },\n async transformFrontmatter(\n options: TransformOptions<DocCollectionItem>,\n data: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const ctx = {\n ...this.getPluginContext(),\n ...options,\n };\n\n data = await transformMetadata(options, data);\n for (const plugin of plugins) {\n if (plugin.doc?.frontmatter) data = (await plugin.doc.frontmatter.call(ctx, data)) ?? data;\n }\n\n return data;\n },\n async transformVFile(\n options: TransformOptions<DocCollectionItem>,\n file: VFile,\n ): Promise<VFile> {\n const ctx = {\n ...this.getPluginContext(),\n ...options,\n };\n\n for (const plugin of plugins) {\n if (plugin.doc?.vfile) file = (await plugin.doc.vfile.call(ctx, file)) ?? file;\n }\n\n return file;\n },\n };\n}\n\nfunction postprocessPlugin(): Plugin {\n const LinkReferenceTypes = `{\n /**\n * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.\n */\n extractedReferences: import(\"@hanzo/docs-mdx\").ExtractedReference[];\n}`;\n\n return {\n 'index-file': {\n generateTypeConfig() {\n const lines: string[] = [];\n lines.push('{');\n lines.push(' DocData: {');\n for (const collection of this.core.getCollections()) {\n let postprocessOptions: Partial<PostprocessOptions> | undefined;\n switch (collection.type) {\n case 'doc':\n postprocessOptions = collection.postprocess;\n break;\n case 'docs':\n postprocessOptions = collection.docs.postprocess;\n break;\n }\n\n if (postprocessOptions?.extractLinkReferences) {\n lines.push(ident(`${collection.name}: ${LinkReferenceTypes},`, 2));\n }\n }\n lines.push(' }');\n lines.push('}');\n return lines.join('\\n');\n },\n serverOptions(options) {\n options.doc ??= {};\n options.doc.passthroughs ??= [];\n options.doc.passthroughs.push('extractedReferences');\n },\n },\n };\n}\n\nexport type Core = ReturnType<typeof createCore>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-CgLkZ4NQ.d.ts","names":[],"sources":["../src/config/preset.ts","../src/loaders/mdx/remark-postprocess.ts","../src/config/define.ts","../src/config/build.ts","../src/loaders/mdx/remark-include.ts","../src/runtime/server.ts","../src/plugins/index-file.ts","../src/core.ts"],"sourcesContent":[],"mappings":"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WAAW,yBAClB,WAAW,qBACb,qBAAqB;QAE1B,mBAAmB,MAAM,aAAa;QACtC,oBAAoB;EL1BvB;EAAiB,gBAAA,EAAA,GAAA,GK4BI,ML5BJ,CAAA;IAAmB,QAAA,EK6B3B,kBL7B2B,CK6BR,IL7BQ,EK6BF,WL7BE,EK6BW,EL7BX,CAAA;IAAgB,QAAA,EK8B3C,mBL9B2C,CK8BvB,ML9BuB,CAAA;EAAS,CAAA,CAAA;EAEtD,QAAA,EAAA,GAAA,GK8BM,ML9BW,CAAA;IACf,QAAA,EK8BA,kBL9BA,CK8BmB,IL9BnB,EK8ByB,WL9BzB,EK8BsC,EL9BtC,CAAA;IAAZ,QAAA,EK+BY,mBL/BZ,CK+BgC,ML/BhC,CAAA;EAD8B,CAAA,CAAA;;AAKd,UK+BD,wBL/BC,CAAA,aAAA,MAAA,GAAA,MAAA,EAAA,oBKiCI,QLjCJ,GKiCe,QLjCf,EAAA,eKkCH,QLlCG,GKkCQ,QLlCR,EAAA,WKmCL,kBLnCK,GKmCgB,kBLnChB,CAAA,CAAA;EAOS,IAAA,EK8BnB,uBL9B2B,CK8BH,IL9BG,EK8BG,WL9BH,EK8BgB,EL9BhB,CAAA,EAAA;EACV,IAAA,EK8BjB,mBL9ByB,CK8BL,ML9BK,CAAA,EAAA;EACV;EACE,gBAAQ,EAAA,GAAA,GK8BP,ML9BO,CAAA;IACZ,QAAQ,EK8Bf,uBL9Be,CK8BS,IL9BT,EK8Be,WL9Bf,EK8B4B,EL9B5B,CAAA;IACP,QAAQ,EK8BhB,mBL9BgB,CK8BI,ML9BJ,CAAA;EAAiB,CAAA,CAAA;EAgBnC,QAAA,EAAA,GAAA,GKgBM,MLhBU,CAAA;IASZ,QAAA,EKQF,uBLRgB,CKQQ,ILRR,EKQc,WLRd,EKQ2B,ELR3B,CAAA;IACnB,QAAA,EKQG,mBLRH,CKQuB,MLRvB,CAAA;EACM,CAAA,CAAA;;KKWZ,oBLXiC,CAAA,CAAA,CAAA,GKWP,MLXO,CAAA,MAAA,EKWQ,CLXR,GAAA,CAAA,GAAA,GKWmB,OLXnB,CKW2B,CLX3B,CAAA,CAAA,CAAA;AAAO,KKajC,YLbiC,CAAA,MAAA,EAAA,WKaD,kBLbC,GKaoB,kBLbpB,CAAA,GKa0C,ULb1C,CAAA,OKcpC,MLdoC,CKc7B,ML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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fuma-matter-BWdOvvCf.js","names":["output: Output"],"sources":["../src/utils/fuma-matter.ts"],"sourcesContent":["/**\n * Inspired by https://github.com/jonschlinkert/gray-matter\n */\nimport { load } from 'js-yaml';\n\ninterface Output {\n /**\n * The matter section, including the delimiter.\n */\n matter: string;\n content: string;\n data: unknown;\n}\n\nconst regex = /^---\\r?\\n(.+?)\\r?\\n---\\r?\\n?/s;\n\n/**\n * parse frontmatter, it supports only yaml format\n */\nexport function fumaMatter(input: string): Output {\n const output: Output = { matter: '', data: {}, content: input };\n const match = regex.exec(input);\n if (!match) {\n return output;\n }\n\n // get the raw front-matter block\n output.matter = match[0];\n output.content = input.slice(match[0].length);\n\n const loaded = load(match[1]);\n output.data = loaded ?? {};\n\n return output;\n}\n"],"mappings":";;;;;;AAcA,MAAM,QAAQ;;;;AAKd,SAAgB,WAAW,OAAuB;CAChD,MAAMA,SAAiB;EAAE,QAAQ;EAAI,MAAM,EAAE;EAAE,SAAS;EAAO;CAC/D,MAAM,QAAQ,MAAM,KAAK,MAAM;AAC/B,KAAI,CAAC,MACH,QAAO;AAIT,QAAO,SAAS,MAAM;AACtB,QAAO,UAAU,MAAM,MAAM,MAAM,GAAG,OAAO;AAG7C,QAAO,OADQ,KAAK,MAAM,GAAG,IACL,EAAE;AAE1B,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-file-DsOEtYCF.js","names":["dynamicCollections: CollectionItem[]","serverOptions: ServerOptions","typeConfigs: string[]","out: Promise<EmitEntry>[]","metaGlob","partialOptions: CoreOptions","path","infoStr: string[]","collection: DocCollectionItem | undefined"],"sources":["../src/utils/fs-cache.ts","../src/plugins/index-file.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'node:path';\n\nconst map = new Map<string, Promise<string>>();\n\nexport function createFSCache() {\n return {\n read(file: string): Promise<string> {\n const fullPath = toFullPath(file);\n const cached = map.get(fullPath);\n if (cached) return cached;\n\n const read = fs.readFile(fullPath).then((s) => s.toString());\n map.set(fullPath, read);\n return read;\n },\n\n delete(file: string) {\n map.delete(toFullPath(file));\n },\n };\n}\n\n/**\n * make file paths relative to cwd\n */\nfunction toFullPath(file: string) {\n if (path.isAbsolute(file)) {\n return path.relative(process.cwd(), file);\n }\n\n return file;\n}\n","import type { Core, CoreOptions, Plugin, PluginContext } from '@/core';\nimport type { CollectionItem, DocCollectionItem, MetaCollectionItem } from '@/config/build';\nimport path from 'path';\nimport { type CodeGen, createCodegen, ident, slash } from '@/utils/codegen';\nimport { glob } from 'tinyglobby';\nimport { createFSCache } from '@/utils/fs-cache';\nimport { createHash } from 'crypto';\nimport type { LazyEntry } from '@/runtime/dynamic';\nimport type { EmitEntry } from '@/core';\nimport { fumaMatter } from '@/utils/fuma-matter';\nimport type { ServerOptions } from '@/runtime/server';\n\nexport interface IndexFilePluginOptions {\n target?: 'default' | 'vite';\n\n /**\n * add `.js` extensions to imports, needed for ESM without bundler resolution\n */\n addJsExtension?: boolean;\n\n /**\n * Generate entry point for browser\n * @defaultValue true\n */\n browser?: boolean;\n\n /**\n * Generate entry point for dynamic compilation\n * @defaultValue true\n */\n dynamic?: boolean;\n}\n\nexport interface IndexFilePlugin {\n ['index-file']?: {\n generateTypeConfig?: (this: PluginContext) => string | void;\n serverOptions?: (this: PluginContext, options: ServerOptions) => void;\n };\n}\n\ninterface FileGenContext {\n core: Core;\n workspace?: string;\n codegen: CodeGen;\n serverOptions: ServerOptions;\n tc: string;\n}\n\nconst indexFileCache = createFSCache();\n\nexport default function indexFile(options: IndexFilePluginOptions = {}): Plugin {\n const { target = 'default', addJsExtension, browser = true, dynamic = true } = options;\n let dynamicCollections: CollectionItem[];\n\n function isDynamic(collection: CollectionItem) {\n return (\n (collection.type === 'docs' && collection.docs.dynamic) ||\n (collection.type === 'doc' && collection.dynamic)\n );\n }\n\n function generateConfigs(core: Core): {\n serverOptions: ServerOptions;\n tc: string;\n } {\n const serverOptions: ServerOptions = {};\n const typeConfigs: string[] = ['import(\"@hanzo/docs-mdx/runtime/types\").InternalTypeConfig'];\n const ctx = core.getPluginContext();\n\n for (const plugin of core.getPlugins()) {\n const indexFilePlugin = plugin['index-file'];\n if (!indexFilePlugin) continue;\n\n indexFilePlugin.serverOptions?.call(ctx, serverOptions);\n const config = indexFilePlugin.generateTypeConfig?.call(ctx);\n if (config) typeConfigs.push(config);\n }\n\n return {\n serverOptions,\n tc: typeConfigs.join(' & '),\n };\n }\n\n return {\n name: 'index-file',\n config() {\n dynamicCollections = this.core.getCollections().filter(isDynamic);\n },\n configureServer(server) {\n if (!server.watcher) return;\n\n server.watcher.on('all', async (event, file) => {\n indexFileCache.delete(file);\n\n // dynamic collections always require re-generation on change\n if (dynamicCollections.length === 0) {\n // vite uses `import.meta.glob`, no need to re-generate\n if (target === 'vite') return;\n // only re-generate when adding/deleting entries\n if (target === 'default' && event === 'change') return;\n }\n\n const updatedCollection = this.core\n .getCollections()\n .find((collection) => collection.hasFile(file));\n\n if (!updatedCollection) return;\n if (!isDynamic(updatedCollection)) {\n if (target === 'vite') return;\n if (target === 'default' && event === 'change') return;\n }\n\n await this.core.emit({\n filterPlugin: (plugin) => plugin.name === 'index-file',\n filterWorkspace: () => false,\n write: true,\n });\n });\n },\n async emit() {\n const globCache = new Map<string, Promise<string[]>>();\n const { workspace, outDir } = this.core.getOptions();\n const { serverOptions, tc } = generateConfigs(this.core);\n const toEmitEntry = async (\n path: string,\n content: (ctx: FileGenContext) => Promise<void>,\n ): Promise<EmitEntry> => {\n const codegen = createCodegen({\n target,\n outDir: outDir,\n jsExtension: addJsExtension,\n globCache,\n });\n await content({\n core: this.core,\n codegen,\n serverOptions,\n tc,\n workspace: workspace?.name,\n });\n return {\n path,\n content: codegen.toString(),\n };\n };\n\n const out: Promise<EmitEntry>[] = [toEmitEntry('server.ts', generateServerIndexFile)];\n\n if (dynamic) out.push(toEmitEntry('dynamic.ts', generateDynamicIndexFile));\n\n if (browser) out.push(toEmitEntry('browser.ts', generateBrowserIndexFile));\n\n return await Promise.all(out);\n },\n };\n}\n\nasync function generateServerIndexFile(ctx: FileGenContext) {\n const { core, codegen, serverOptions, tc } = ctx;\n codegen.lines.push(\n `import { server } from '@hanzo/docs-mdx/runtime/server';`,\n `import type * as Config from '${codegen.formatImportPath(core.getOptions().configPath)}';`,\n '',\n `const create = server<typeof Config, ${tc}>(${JSON.stringify(serverOptions)});`,\n );\n\n async function generateCollectionObject(collection: CollectionItem): Promise<string | undefined> {\n const base = getBase(collection);\n\n switch (collection.type) {\n case 'docs': {\n if (collection.docs.dynamic) return;\n\n if (collection.docs.async) {\n const [metaGlob, headGlob, bodyGlob] = await Promise.all([\n generateMetaCollectionGlob(ctx, collection.meta, true),\n generateDocCollectionFrontmatterGlob(ctx, collection.docs, true),\n generateDocCollectionGlob(ctx, collection.docs),\n ]);\n\n return `await create.docsLazy(\"${collection.name}\", \"${base}\", ${metaGlob}, ${headGlob}, ${bodyGlob})`;\n }\n\n const [metaGlob, docGlob] = await Promise.all([\n generateMetaCollectionGlob(ctx, collection.meta, true),\n generateDocCollectionGlob(ctx, collection.docs, true),\n ]);\n\n return `await create.docs(\"${collection.name}\", \"${base}\", ${metaGlob}, ${docGlob})`;\n }\n case 'doc':\n if (collection.dynamic) return;\n\n if (collection.async) {\n const [headGlob, bodyGlob] = await Promise.all([\n generateDocCollectionFrontmatterGlob(ctx, collection, true),\n generateDocCollectionGlob(ctx, collection),\n ]);\n\n return `await create.docLazy(\"${collection.name}\", \"${base}\", ${headGlob}, ${bodyGlob})`;\n }\n\n return `await create.doc(\"${collection.name}\", \"${base}\", ${await generateDocCollectionGlob(\n ctx,\n collection,\n true,\n )})`;\n case 'meta':\n return `await create.meta(\"${collection.name}\", \"${base}\", ${await generateMetaCollectionGlob(\n ctx,\n collection,\n true,\n )})`;\n }\n }\n\n await codegen.pushAsync(\n core.getCollections().map(async (collection) => {\n const obj = await generateCollectionObject(collection);\n if (!obj) return;\n\n return `\\nexport const ${collection.name} = ${obj};`;\n }),\n );\n}\n\nasync function generateDynamicIndexFile(ctx: FileGenContext) {\n const { core, codegen, serverOptions, tc } = ctx;\n const { configPath, environment, outDir } = core.getOptions();\n // serializable config options\n const partialOptions: CoreOptions = {\n configPath,\n environment,\n outDir,\n };\n codegen.lines.push(\n `import { dynamic } from '@hanzo/docs-mdx/runtime/dynamic';`,\n `import * as Config from '${codegen.formatImportPath(configPath)}';`,\n '',\n `const create = await dynamic<typeof Config, ${tc}>(Config, ${JSON.stringify(partialOptions)}, ${JSON.stringify(serverOptions)});`,\n );\n\n async function generateCollectionObjectEntry(\n collection: DocCollectionItem,\n absolutePath: string,\n ) {\n const fullPath = path.relative(process.cwd(), absolutePath);\n const content = await indexFileCache.read(fullPath).catch(() => '');\n const parsed = fumaMatter(content);\n const data = await core.transformFrontmatter(\n {\n collection,\n filePath: fullPath,\n source: content,\n },\n parsed.data as Record<string, unknown>,\n );\n\n const hash = createHash('md5').update(content).digest('hex');\n const infoStr: string[] = [\n // make sure it's included in vercel/nft\n `absolutePath: path.resolve(${JSON.stringify(fullPath)})`,\n ];\n for (const [k, v] of Object.entries({\n info: {\n fullPath,\n path: path.relative(collection.dir, absolutePath),\n },\n data,\n hash,\n } satisfies LazyEntry)) {\n infoStr.push(`${k}: ${JSON.stringify(v)}`);\n }\n\n return `{ ${infoStr.join(', ')} }`;\n }\n\n async function generateCollectionObject(parent: CollectionItem): Promise<string | undefined> {\n let collection: DocCollectionItem | undefined;\n if (parent.type === 'doc') collection = parent;\n else if (parent.type === 'docs') collection = parent.docs;\n\n if (!collection || !collection.dynamic) return;\n\n const files = await glob(collection.patterns, {\n cwd: collection.dir,\n absolute: true,\n });\n const entries = await Promise.all(\n files.map((file) => generateCollectionObjectEntry(collection, file)),\n );\n\n switch (parent.type) {\n case 'docs': {\n const metaGlob = await generateMetaCollectionGlob(ctx, parent.meta, true);\n\n return `await create.docs(\"${parent.name}\", \"${getBase(parent)}\", ${metaGlob}, ${entries.join(', ')})`;\n }\n case 'doc':\n return `await create.doc(\"${collection.name}\", \"${getBase(collection)}\", ${entries.join(', ')})`;\n }\n }\n\n await codegen.pushAsync(\n core.getCollections().map(async (collection) => {\n const obj = await generateCollectionObject(collection);\n if (!obj) return;\n\n return `\\nexport const ${collection.name} = ${obj};`;\n }),\n );\n}\n\nasync function generateBrowserIndexFile(ctx: FileGenContext) {\n const { core, codegen, tc } = ctx;\n codegen.lines.push(\n `import { browser } from '@hanzo/docs-mdx/runtime/browser';`,\n `import type * as Config from '${codegen.formatImportPath(core.getOptions().configPath)}';`,\n '',\n `const create = browser<typeof Config, ${tc}>();`,\n );\n\n async function generateCollectionObject(collection: CollectionItem): Promise<string | undefined> {\n switch (collection.type) {\n case 'docs': {\n if (collection.docs.dynamic) return;\n\n return generateCollectionObject(collection.docs);\n }\n case 'doc':\n if (collection.dynamic) return;\n\n return `create.doc(\"${collection.name}\", ${await generateDocCollectionGlob(ctx, collection)})`;\n }\n }\n\n codegen.lines.push('const browserCollections = {');\n\n await codegen.pushAsync(\n core.getCollections().map(async (collection) => {\n const obj = await generateCollectionObject(collection);\n if (!obj) return;\n\n return ident(`${collection.name}: ${obj},`);\n }),\n );\n\n codegen.lines.push('};', 'export default browserCollections;');\n}\n\nfunction getBase(collection: CollectionItem) {\n return slash(path.relative(process.cwd(), collection.dir));\n}\n\nfunction generateDocCollectionFrontmatterGlob(\n { codegen, workspace }: FileGenContext,\n collection: DocCollectionItem,\n eager = false,\n) {\n return codegen.generateGlobImport(collection.patterns, {\n query: {\n collection: collection.name,\n only: 'frontmatter',\n workspace,\n },\n import: 'frontmatter',\n base: collection.dir,\n eager,\n });\n}\n\nfunction generateDocCollectionGlob(\n { codegen, workspace }: FileGenContext,\n collection: DocCollectionItem,\n eager = false,\n) {\n return codegen.generateGlobImport(collection.patterns, {\n query: {\n collection: collection.name,\n workspace,\n },\n base: collection.dir,\n eager,\n });\n}\n\nfunction generateMetaCollectionGlob(\n { codegen, workspace }: FileGenContext,\n collection: MetaCollectionItem,\n eager = false,\n) {\n return codegen.generateGlobImport(collection.patterns, {\n query: {\n collection: collection.name,\n workspace,\n },\n import: 'default',\n base: collection.dir,\n eager,\n });\n}\n"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import "./preset-D_quDsKp.js";
2
- import "./build-DbdeZyKK.js";
3
- import { t as loadConfig } from "./load-from-file-Bx1TjN0x.js";
4
-
5
- export { loadConfig };
@@ -1 +0,0 @@
1
- {"version":3,"file":"mdx-DBBqLhht.js","names":["after: (() => Promise<void>) | undefined","docCollection: DocCollectionItem | undefined"],"sources":["../src/loaders/mdx/index.ts"],"sourcesContent":["import { fumaMatter } from '@/utils/fuma-matter';\nimport type { SourceMap } from 'rollup';\nimport type { Loader } from '@/loaders/adapter';\nimport { z } from 'zod';\nimport type { DocCollectionItem } from '@/config/build';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { createHash } from 'node:crypto';\nimport type { ConfigLoader } from '@/loaders/config';\nimport { mdxLoaderGlob } from '..';\n\nconst querySchema = z\n .object({\n only: z.literal(['frontmatter', 'all']).default('all'),\n collection: z.string().optional(),\n workspace: z.string().optional(),\n })\n .loose();\n\nconst cacheEntry = z.object({\n code: z.string(),\n map: z.any().optional(),\n hash: z.string().optional(),\n});\n\ntype CacheEntry = z.infer<typeof cacheEntry>;\n\nexport function createMdxLoader({ getCore }: ConfigLoader): Loader {\n return {\n test: mdxLoaderGlob,\n async load({ getSource, development: isDevelopment, query, compiler, filePath }) {\n let core = await getCore();\n const value = await getSource();\n const matter = fumaMatter(value);\n const { collection: collectionName, workspace, only } = querySchema.parse(query);\n if (workspace) {\n core = core.getWorkspaces().get(workspace) ?? core;\n }\n\n let after: (() => Promise<void>) | undefined;\n\n const { experimentalBuildCache = false } = core.getConfig().global;\n if (!isDevelopment && experimentalBuildCache) {\n const cacheDir = experimentalBuildCache;\n const cacheKey = `${collectionName ?? 'global'}_${generateCacheHash(filePath)}`;\n\n const cached = await fs\n .readFile(path.join(cacheDir, cacheKey))\n .then((content) => cacheEntry.parse(JSON.parse(content.toString())))\n .catch(() => null);\n\n if (cached && cached.hash === generateCacheHash(value)) return cached;\n after = async () => {\n await fs.mkdir(cacheDir, { recursive: true });\n await fs.writeFile(\n path.join(cacheDir, cacheKey),\n JSON.stringify({\n ...out,\n hash: generateCacheHash(value),\n } satisfies CacheEntry),\n );\n };\n }\n\n const collection = collectionName ? core.getCollection(collectionName) : undefined;\n\n let docCollection: DocCollectionItem | undefined;\n switch (collection?.type) {\n case 'doc':\n docCollection = collection;\n break;\n case 'docs':\n docCollection = collection.docs;\n break;\n }\n\n if (docCollection) {\n matter.data = await core.transformFrontmatter(\n { collection: docCollection, filePath, source: value },\n matter.data as Record<string, unknown>,\n );\n }\n\n if (only === 'frontmatter') {\n return {\n code: `export const frontmatter = ${JSON.stringify(matter.data)}`,\n map: null,\n };\n }\n\n const { buildMDX } = await import('@/loaders/mdx/build-mdx');\n const compiled = await buildMDX(core, docCollection, {\n isDevelopment,\n // ensure the line number is correct in errors\n source: '\\n'.repeat(countLines(matter.matter)) + matter.content,\n filePath,\n frontmatter: matter.data as Record<string, unknown>,\n _compiler: compiler,\n environment: 'bundler',\n });\n\n const out = {\n code: String(compiled.value),\n map: compiled.map as SourceMap,\n };\n\n await after?.();\n return out;\n },\n };\n}\n\nfunction generateCacheHash(input: string): string {\n return createHash('md5').update(input).digest('hex');\n}\n\nfunction countLines(s: string) {\n let num = 0;\n\n for (const c of s) {\n if (c === '\\n') num++;\n }\n\n return num;\n}\n"],"mappings":";;;;;;;;AAWA,MAAM,cAAc,EACjB,OAAO;CACN,MAAM,EAAE,QAAQ,CAAC,eAAe,MAAM,CAAC,CAAC,QAAQ,MAAM;CACtD,YAAY,EAAE,QAAQ,CAAC,UAAU;CACjC,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC,CACD,OAAO;AAEV,MAAM,aAAa,EAAE,OAAO;CAC1B,MAAM,EAAE,QAAQ;CAChB,KAAK,EAAE,KAAK,CAAC,UAAU;CACvB,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC5B,CAAC;AAIF,SAAgB,gBAAgB,EAAE,WAAiC;AACjE,QAAO;EACL,MAAM;EACN,MAAM,KAAK,EAAE,WAAW,aAAa,eAAe,OAAO,UAAU,YAAY;GAC/E,IAAI,OAAO,MAAM,SAAS;GAC1B,MAAM,QAAQ,MAAM,WAAW;GAC/B,MAAM,SAAS,WAAW,MAAM;GAChC,MAAM,EAAE,YAAY,gBAAgB,WAAW,SAAS,YAAY,MAAM,MAAM;AAChF,OAAI,UACF,QAAO,KAAK,eAAe,CAAC,IAAI,UAAU,IAAI;GAGhD,IAAIA;GAEJ,MAAM,EAAE,yBAAyB,UAAU,KAAK,WAAW,CAAC;AAC5D,OAAI,CAAC,iBAAiB,wBAAwB;IAC5C,MAAM,WAAW;IACjB,MAAM,WAAW,GAAG,kBAAkB,SAAS,GAAG,kBAAkB,SAAS;IAE7E,MAAM,SAAS,MAAM,GAClB,SAAS,KAAK,KAAK,UAAU,SAAS,CAAC,CACvC,MAAM,YAAY,WAAW,MAAM,KAAK,MAAM,QAAQ,UAAU,CAAC,CAAC,CAAC,CACnE,YAAY,KAAK;AAEpB,QAAI,UAAU,OAAO,SAAS,kBAAkB,MAAM,CAAE,QAAO;AAC/D,YAAQ,YAAY;AAClB,WAAM,GAAG,MAAM,UAAU,EAAE,WAAW,MAAM,CAAC;AAC7C,WAAM,GAAG,UACP,KAAK,KAAK,UAAU,SAAS,EAC7B,KAAK,UAAU;MACb,GAAG;MACH,MAAM,kBAAkB,MAAM;MAC/B,CAAsB,CACxB;;;GAIL,MAAM,aAAa,iBAAiB,KAAK,cAAc,eAAe,GAAG;GAEzE,IAAIC;AACJ,WAAQ,YAAY,MAApB;IACE,KAAK;AACH,qBAAgB;AAChB;IACF,KAAK;AACH,qBAAgB,WAAW;AAC3B;;AAGJ,OAAI,cACF,QAAO,OAAO,MAAM,KAAK,qBACvB;IAAE,YAAY;IAAe;IAAU,QAAQ;IAAO,EACtD,OAAO,KACR;AAGH,OAAI,SAAS,cACX,QAAO;IACL,MAAM,8BAA8B,KAAK,UAAU,OAAO,KAAK;IAC/D,KAAK;IACN;GAGH,MAAM,EAAE,aAAa,MAAM,OAAO;GAClC,MAAM,WAAW,MAAM,SAAS,MAAM,eAAe;IACnD;IAEA,QAAQ,KAAK,OAAO,WAAW,OAAO,OAAO,CAAC,GAAG,OAAO;IACxD;IACA,aAAa,OAAO;IACpB,WAAW;IACX,aAAa;IACd,CAAC;GAEF,MAAM,MAAM;IACV,MAAM,OAAO,SAAS,MAAM;IAC5B,KAAK,SAAS;IACf;AAED,SAAM,SAAS;AACf,UAAO;;EAEV;;AAGH,SAAS,kBAAkB,OAAuB;AAChD,QAAO,WAAW,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM;;AAGtD,SAAS,WAAW,GAAW;CAC7B,IAAI,MAAM;AAEV,MAAK,MAAM,KAAK,EACd,KAAI,MAAM,KAAM;AAGlB,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"remark-include-BnRd6OBo.js","names":["newChildren: RootContent[]","extractedLines: string[]","ElementLikeTypes: ElementLikeContent['type'][]","attributes: Record<string, string | null>","nodes: RootContent[] | undefined","content: string","fs","path","queue: Promise<void>[]"],"sources":["../src/loaders/mdx/remark-unravel.ts","../src/loaders/mdx/mdast-utils.ts","../src/loaders/mdx/remark-include.ts"],"sourcesContent":["// from internal remark plugins in https://github.com/mdx-js/mdx/blob/main/packages/mdx/lib/plugin/remark-mark-and-unravel.js\n// we need to ensure consistency with MDX.js when parsing embed content in `remark-include`\nimport { visit } from 'unist-util-visit';\nimport type { Transformer } from 'unified';\nimport type { Root, RootContent } from 'mdast';\n\nexport function remarkMarkAndUnravel(): Transformer<Root, Root> {\n return (tree) => {\n visit(tree, function (node, index, parent) {\n let offset = -1;\n let all = true;\n let oneOrMore = false;\n\n if (parent && typeof index === 'number' && node.type === 'paragraph') {\n const children = node.children;\n\n while (++offset < children.length) {\n const child = children[offset];\n\n if (child.type === 'mdxJsxTextElement' || child.type === 'mdxTextExpression') {\n oneOrMore = true;\n } else if (child.type === 'text' && child.value.trim().length === 0) {\n // Empty.\n } else {\n all = false;\n break;\n }\n }\n\n if (all && oneOrMore) {\n offset = -1;\n const newChildren: RootContent[] = [];\n\n while (++offset < children.length) {\n const child = children[offset];\n\n if (child.type === 'mdxJsxTextElement') {\n // @ts-expect-error: mutate because it is faster; content model is fine.\n child.type = 'mdxJsxFlowElement';\n }\n\n if (child.type === 'mdxTextExpression') {\n // @ts-expect-error: mutate because it is faster; content model is fine.\n child.type = 'mdxFlowExpression';\n }\n\n if (child.type === 'text' && /^[\\t\\r\\n ]+$/.test(String(child.value))) {\n // Empty.\n } else {\n newChildren.push(child);\n }\n }\n\n parent.children.splice(index, 1, ...newChildren);\n return index;\n }\n }\n });\n };\n}\n","import type { RootContent } from 'mdast';\n\nexport function flattenNode(node: RootContent): string {\n if ('children' in node) return node.children.map((child) => flattenNode(child)).join('');\n\n if ('value' in node) return node.value;\n\n return '';\n}\n","import { type Processor, type Transformer, unified } from 'unified';\nimport { visit } from 'unist-util-visit';\nimport type { Code, Node, Root, RootContent } from 'mdast';\nimport * as path from 'node:path';\nimport * as fs from 'node:fs/promises';\nimport { fumaMatter } from '@/utils/fuma-matter';\nimport type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx';\nimport { remarkHeading } from '@hanzo/docs-core/mdx-plugins';\nimport { VFile } from 'vfile';\nimport type { Directives } from 'mdast-util-directive';\nimport { remarkMarkAndUnravel } from '@/loaders/mdx/remark-unravel';\nimport { flattenNode } from './mdast-utils';\n\n/**\n * VS Code–style region extraction\n * Adapted from VitePress:\n * https://github.com/vuejs/vitepress/blob/main/src/node/markdown/plugins/snippet.ts\n */\n\n// region marker regexes\nconst REGION_MARKERS = [\n {\n start: /^\\s*\\/\\/\\s*#?region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*\\/\\/\\s*#?endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*<!--\\s*#?region\\b\\s*(.*?)\\s*-->/,\n end: /^\\s*<!--\\s*#?endregion\\b\\s*(.*?)\\s*-->/,\n },\n {\n start: /^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\//,\n end: /^\\s*\\/\\*\\s*#endregion\\b\\s*(.*?)\\s*\\*\\//,\n },\n {\n start: /^\\s*#[rR]egion\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#[eE]nd ?[rR]egion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*#\\s*#?region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#\\s*#?endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*(?:--|::|@?REM)\\s*#region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*(?:--|::|@?REM)\\s*#endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*#pragma\\s+region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#pragma\\s+endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*\\(\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\)/,\n end: /^\\s*\\(\\*\\s*#endregion\\b\\s*(.*?)\\s*\\*\\)/,\n },\n];\n\nfunction dedent(lines: string[]): string {\n const minIndent = lines.reduce((min, line) => {\n const match = line.match(/^(\\s*)\\S/);\n return match ? Math.min(min, match[1].length) : min;\n }, Infinity);\n\n return minIndent === Infinity\n ? lines.join('\\n')\n : lines.map((l) => l.slice(minIndent)).join('\\n');\n}\n\nfunction extractCodeRegion(content: string, regionName: string): string {\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n for (const re of REGION_MARKERS) {\n let match = re.start.exec(lines[i]);\n if (match?.[1] !== regionName) continue;\n\n let depth = 1;\n const extractedLines: string[] = [];\n for (let j = i + 1; j < lines.length; j++) {\n match = re.start.exec(lines[j]);\n if (match) {\n depth++;\n continue;\n }\n\n match = re.end.exec(lines[j]);\n if (match) {\n if (match[1] === regionName) depth = 0;\n else if (match[1] === '') depth--;\n else continue;\n\n if (depth > 0) continue;\n return dedent(extractedLines);\n } else {\n extractedLines.push(lines[j]);\n }\n }\n }\n }\n throw new Error(`Region \"${regionName}\" not found`);\n}\n\nexport interface Params {\n lang?: string;\n meta?: string;\n}\n\nconst ElementLikeTypes: ElementLikeContent['type'][] = [\n 'mdxJsxFlowElement',\n 'mdxJsxTextElement',\n 'containerDirective',\n 'textDirective',\n 'leafDirective',\n];\ntype ElementLikeContent = MdxJsxFlowElement | MdxJsxTextElement | Directives;\n\nfunction isElementLike(node: Node): node is ElementLikeContent {\n return ElementLikeTypes.includes(node.type as ElementLikeContent['type']);\n}\n\nfunction parseElementAttributes(\n element: ElementLikeContent,\n): Record<string, string | null | undefined> {\n if (Array.isArray(element.attributes)) {\n const attributes: Record<string, string | null> = {};\n\n for (const attr of element.attributes) {\n if (\n attr.type === 'mdxJsxAttribute' &&\n (typeof attr.value === 'string' || attr.value === null)\n ) {\n attributes[attr.name] = attr.value;\n }\n }\n\n return attributes;\n }\n\n return element.attributes ?? {};\n}\n\nfunction parseSpecifier(specifier: string): {\n file: string;\n section?: string;\n} {\n const idx = specifier.lastIndexOf('#');\n if (idx === -1) return { file: specifier };\n\n return {\n file: specifier.slice(0, idx),\n section: specifier.slice(idx + 1),\n };\n}\n\nfunction extractSection(root: Root, section: string): Root | undefined {\n let nodes: RootContent[] | undefined;\n let capturingHeadingContent = false;\n\n visit(root, (node) => {\n if (node.type === 'heading') {\n if (capturingHeadingContent) {\n return false;\n }\n\n if (node.data?.hProperties?.id === section) {\n capturingHeadingContent = true;\n nodes = [node];\n return 'skip';\n }\n\n return;\n }\n\n if (capturingHeadingContent) {\n nodes?.push(node as RootContent);\n return 'skip';\n }\n\n if (isElementLike(node) && node.name === 'section') {\n const attributes = parseElementAttributes(node);\n\n if (attributes.id === section) {\n nodes = node.children;\n return false;\n }\n }\n });\n\n if (nodes)\n return {\n type: 'root',\n children: nodes,\n };\n}\n\nexport function remarkInclude(this: Processor): Transformer<Root, Root> {\n const TagName = 'include';\n\n const embedContent = async (\n targetPath: string,\n heading: string | undefined,\n params: Params,\n parent: VFile,\n ) => {\n const { _getProcessor = () => this, _compiler } = parent.data;\n let content: string;\n try {\n content = (await fs.readFile(targetPath)).toString();\n } catch (e) {\n throw new Error(\n `failed to read file ${targetPath}\\n${e instanceof Error ? e.message : String(e)}`,\n { cause: e },\n );\n }\n\n const ext = path.extname(targetPath);\n _compiler?.addDependency(targetPath);\n // For non-Markdown files, support VS Code–style region extraction\n if (params.lang || (ext !== '.md' && ext !== '.mdx')) {\n const lang = params.lang ?? ext.slice(1);\n let value = content;\n if (heading) {\n value = extractCodeRegion(content, heading.trim());\n }\n return {\n type: 'code',\n lang,\n meta: params.meta,\n value,\n data: {},\n } satisfies Code;\n }\n\n const parser = _getProcessor(ext === '.mdx' ? 'mdx' : 'md');\n const parsed = fumaMatter(content);\n const targetFile = new VFile({\n path: targetPath,\n value: parsed.content,\n data: {\n ...parent.data,\n frontmatter: parsed.data as Record<string, unknown>,\n },\n });\n let mdast = parser.parse(targetFile) as Root;\n const baseProcessor = unified().use(remarkMarkAndUnravel);\n\n if (heading) {\n // parse headings before extraction\n const extracted = extractSection(await baseProcessor.use(remarkHeading).run(mdast), heading);\n if (!extracted)\n throw new Error(\n `Cannot find section ${heading} in ${targetPath}, make sure you have encapsulated the section in a <section id=\"${heading}\"> tag, or a :::section directive with remark-directive configured.`,\n );\n\n mdast = extracted;\n } else {\n mdast = await baseProcessor.run(mdast);\n }\n\n await update(mdast, targetFile);\n return mdast;\n };\n\n async function update(tree: Root, file: VFile) {\n const queue: Promise<void>[] = [];\n\n visit(tree, ElementLikeTypes, (_node, _, parent) => {\n const node = _node as ElementLikeContent;\n if (node.name !== TagName) return;\n\n const specifier = flattenNode(node);\n if (specifier.length === 0) return 'skip';\n\n const attributes = parseElementAttributes(node);\n const { file: relativePath, section } = parseSpecifier(specifier);\n const targetPath = path.resolve('cwd' in attributes ? file.cwd : file.dirname!, relativePath);\n\n queue.push(\n embedContent(targetPath, section, attributes, file).then((replace) => {\n Object.assign(parent && parent.type === 'paragraph' ? parent : node, replace);\n }),\n );\n\n return 'skip';\n });\n\n await Promise.all(queue);\n }\n\n return async (tree, file) => {\n await update(tree, file);\n };\n}\n"],"mappings":";;;;;;;;;AAMA,SAAgB,uBAAgD;AAC9D,SAAQ,SAAS;AACf,QAAM,MAAM,SAAU,MAAM,OAAO,QAAQ;GACzC,IAAI,SAAS;GACb,IAAI,MAAM;GACV,IAAI,YAAY;AAEhB,OAAI,UAAU,OAAO,UAAU,YAAY,KAAK,SAAS,aAAa;IACpE,MAAM,WAAW,KAAK;AAEtB,WAAO,EAAE,SAAS,SAAS,QAAQ;KACjC,MAAM,QAAQ,SAAS;AAEvB,SAAI,MAAM,SAAS,uBAAuB,MAAM,SAAS,oBACvD,aAAY;cACH,MAAM,SAAS,UAAU,MAAM,MAAM,MAAM,CAAC,WAAW,GAAG,QAE9D;AACL,YAAM;AACN;;;AAIJ,QAAI,OAAO,WAAW;AACpB,cAAS;KACT,MAAMA,cAA6B,EAAE;AAErC,YAAO,EAAE,SAAS,SAAS,QAAQ;MACjC,MAAM,QAAQ,SAAS;AAEvB,UAAI,MAAM,SAAS,oBAEjB,OAAM,OAAO;AAGf,UAAI,MAAM,SAAS,oBAEjB,OAAM,OAAO;AAGf,UAAI,MAAM,SAAS,UAAU,eAAe,KAAK,OAAO,MAAM,MAAM,CAAC,EAAE,OAGrE,aAAY,KAAK,MAAM;;AAI3B,YAAO,SAAS,OAAO,OAAO,GAAG,GAAG,YAAY;AAChD,YAAO;;;IAGX;;;;;;ACvDN,SAAgB,YAAY,MAA2B;AACrD,KAAI,cAAc,KAAM,QAAO,KAAK,SAAS,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC,KAAK,GAAG;AAExF,KAAI,WAAW,KAAM,QAAO,KAAK;AAEjC,QAAO;;;;;;;;;;ACaT,MAAM,iBAAiB;CACrB;EACE,OAAO;EACP,KAAK;EACN;CACD;EACE,OAAO;EACP,KAAK;EACN;CACD;EACE,OAAO;EACP,KAAK;EACN;CACD;EACE,OAAO;EACP,KAAK;EACN;CACD;EACE,OAAO;EACP,KAAK;EACN;CACD;EACE,OAAO;EACP,KAAK;EACN;CACD;EACE,OAAO;EACP,KAAK;EACN;CACD;EACE,OAAO;EACP,KAAK;EACN;CACF;AAED,SAAS,OAAO,OAAyB;CACvC,MAAM,YAAY,MAAM,QAAQ,KAAK,SAAS;EAC5C,MAAM,QAAQ,KAAK,MAAM,WAAW;AACpC,SAAO,QAAQ,KAAK,IAAI,KAAK,MAAM,GAAG,OAAO,GAAG;IAC/C,SAAS;AAEZ,QAAO,cAAc,WACjB,MAAM,KAAK,KAAK,GAChB,MAAM,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC,CAAC,KAAK,KAAK;;AAGrD,SAAS,kBAAkB,SAAiB,YAA4B;CACtE,MAAM,QAAQ,QAAQ,MAAM,KAAK;AAEjC,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,IAChC,MAAK,MAAM,MAAM,gBAAgB;EAC/B,IAAI,QAAQ,GAAG,MAAM,KAAK,MAAM,GAAG;AACnC,MAAI,QAAQ,OAAO,WAAY;EAE/B,IAAI,QAAQ;EACZ,MAAMC,iBAA2B,EAAE;AACnC,OAAK,IAAI,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACzC,WAAQ,GAAG,MAAM,KAAK,MAAM,GAAG;AAC/B,OAAI,OAAO;AACT;AACA;;AAGF,WAAQ,GAAG,IAAI,KAAK,MAAM,GAAG;AAC7B,OAAI,OAAO;AACT,QAAI,MAAM,OAAO,WAAY,SAAQ;aAC5B,MAAM,OAAO,GAAI;QACrB;AAEL,QAAI,QAAQ,EAAG;AACf,WAAO,OAAO,eAAe;SAE7B,gBAAe,KAAK,MAAM,GAAG;;;AAKrC,OAAM,IAAI,MAAM,WAAW,WAAW,aAAa;;AAQrD,MAAMC,mBAAiD;CACrD;CACA;CACA;CACA;CACA;CACD;AAGD,SAAS,cAAc,MAAwC;AAC7D,QAAO,iBAAiB,SAAS,KAAK,KAAmC;;AAG3E,SAAS,uBACP,SAC2C;AAC3C,KAAI,MAAM,QAAQ,QAAQ,WAAW,EAAE;EACrC,MAAMC,aAA4C,EAAE;AAEpD,OAAK,MAAM,QAAQ,QAAQ,WACzB,KACE,KAAK,SAAS,sBACb,OAAO,KAAK,UAAU,YAAY,KAAK,UAAU,MAElD,YAAW,KAAK,QAAQ,KAAK;AAIjC,SAAO;;AAGT,QAAO,QAAQ,cAAc,EAAE;;AAGjC,SAAS,eAAe,WAGtB;CACA,MAAM,MAAM,UAAU,YAAY,IAAI;AACtC,KAAI,QAAQ,GAAI,QAAO,EAAE,MAAM,WAAW;AAE1C,QAAO;EACL,MAAM,UAAU,MAAM,GAAG,IAAI;EAC7B,SAAS,UAAU,MAAM,MAAM,EAAE;EAClC;;AAGH,SAAS,eAAe,MAAY,SAAmC;CACrE,IAAIC;CACJ,IAAI,0BAA0B;AAE9B,OAAM,OAAO,SAAS;AACpB,MAAI,KAAK,SAAS,WAAW;AAC3B,OAAI,wBACF,QAAO;AAGT,OAAI,KAAK,MAAM,aAAa,OAAO,SAAS;AAC1C,8BAA0B;AAC1B,YAAQ,CAAC,KAAK;AACd,WAAO;;AAGT;;AAGF,MAAI,yBAAyB;AAC3B,UAAO,KAAK,KAAoB;AAChC,UAAO;;AAGT,MAAI,cAAc,KAAK,IAAI,KAAK,SAAS,WAGvC;OAFmB,uBAAuB,KAAK,CAEhC,OAAO,SAAS;AAC7B,YAAQ,KAAK;AACb,WAAO;;;GAGX;AAEF,KAAI,MACF,QAAO;EACL,MAAM;EACN,UAAU;EACX;;AAGL,SAAgB,gBAAwD;CACtE,MAAM,UAAU;CAEhB,MAAM,eAAe,OACnB,YACA,SACA,QACA,WACG;EACH,MAAM,EAAE,sBAAsB,MAAM,cAAc,OAAO;EACzD,IAAIC;AACJ,MAAI;AACF,cAAW,MAAMC,KAAG,SAAS,WAAW,EAAE,UAAU;WAC7C,GAAG;AACV,SAAM,IAAI,MACR,uBAAuB,WAAW,IAAI,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE,IAChF,EAAE,OAAO,GAAG,CACb;;EAGH,MAAM,MAAMC,OAAK,QAAQ,WAAW;AACpC,aAAW,cAAc,WAAW;AAEpC,MAAI,OAAO,QAAS,QAAQ,SAAS,QAAQ,QAAS;GACpD,MAAM,OAAO,OAAO,QAAQ,IAAI,MAAM,EAAE;GACxC,IAAI,QAAQ;AACZ,OAAI,QACF,SAAQ,kBAAkB,SAAS,QAAQ,MAAM,CAAC;AAEpD,UAAO;IACL,MAAM;IACN;IACA,MAAM,OAAO;IACb;IACA,MAAM,EAAE;IACT;;EAGH,MAAM,SAAS,cAAc,QAAQ,SAAS,QAAQ,KAAK;EAC3D,MAAM,SAAS,WAAW,QAAQ;EAClC,MAAM,aAAa,IAAI,MAAM;GAC3B,MAAM;GACN,OAAO,OAAO;GACd,MAAM;IACJ,GAAG,OAAO;IACV,aAAa,OAAO;IACrB;GACF,CAAC;EACF,IAAI,QAAQ,OAAO,MAAM,WAAW;EACpC,MAAM,gBAAgB,SAAS,CAAC,IAAI,qBAAqB;AAEzD,MAAI,SAAS;GAEX,MAAM,YAAY,eAAe,MAAM,cAAc,IAAI,cAAc,CAAC,IAAI,MAAM,EAAE,QAAQ;AAC5F,OAAI,CAAC,UACH,OAAM,IAAI,MACR,uBAAuB,QAAQ,MAAM,WAAW,kEAAkE,QAAQ,qEAC3H;AAEH,WAAQ;QAER,SAAQ,MAAM,cAAc,IAAI,MAAM;AAGxC,QAAM,OAAO,OAAO,WAAW;AAC/B,SAAO;;CAGT,eAAe,OAAO,MAAY,MAAa;EAC7C,MAAMC,QAAyB,EAAE;AAEjC,QAAM,MAAM,mBAAmB,OAAO,GAAG,WAAW;GAClD,MAAM,OAAO;AACb,OAAI,KAAK,SAAS,QAAS;GAE3B,MAAM,YAAY,YAAY,KAAK;AACnC,OAAI,UAAU,WAAW,EAAG,QAAO;GAEnC,MAAM,aAAa,uBAAuB,KAAK;GAC/C,MAAM,EAAE,MAAM,cAAc,YAAY,eAAe,UAAU;GACjE,MAAM,aAAaD,OAAK,QAAQ,SAAS,aAAa,KAAK,MAAM,KAAK,SAAU,aAAa;AAE7F,SAAM,KACJ,aAAa,YAAY,SAAS,YAAY,KAAK,CAAC,MAAM,YAAY;AACpE,WAAO,OAAO,UAAU,OAAO,SAAS,cAAc,SAAS,MAAM,QAAQ;KAC7E,CACH;AAED,UAAO;IACP;AAEF,QAAM,QAAQ,IAAI,MAAM;;AAG1B,QAAO,OAAO,MAAM,SAAS;AAC3B,QAAM,OAAO,MAAM,KAAK"}