@hanzo/docs-mdx 14.2.6 → 14.2.8

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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/dist/{config-s4QVhqzA.js → adapter-DwaTu9dw.js} +40 -39
  3. package/dist/adapter-DwaTu9dw.js.map +1 -0
  4. package/dist/{build-DbdeZyKK.js → build-d7coQAP7.js} +2 -2
  5. package/dist/build-d7coQAP7.js.map +1 -0
  6. package/dist/{build-mdx-DyJk_jWV.d.ts → build-mdx-CaG9rsmy.d.ts} +7 -7
  7. package/dist/build-mdx-CaG9rsmy.d.ts.map +1 -0
  8. package/dist/{build-mdx-BTwSGUFs.js → build-mdx-k6Y12VXb.js} +12 -4
  9. package/dist/build-mdx-k6Y12VXb.js.map +1 -0
  10. package/dist/bun/index.d.ts +1 -1
  11. package/dist/bun/index.d.ts.map +1 -1
  12. package/dist/bun/index.js +8 -8
  13. package/dist/bun/index.js.map +1 -1
  14. package/dist/{codegen-IYa8t8xV.js → codegen-DzglA9tJ.js} +4 -4
  15. package/dist/codegen-DzglA9tJ.js.map +1 -0
  16. package/dist/config/index.d.ts +2 -2
  17. package/dist/config/index.js +3 -3
  18. package/dist/config/index.js.map +1 -1
  19. package/dist/{core-CCsY8cxS.js → core-DFgQdyqL.js} +12 -12
  20. package/dist/core-DFgQdyqL.js.map +1 -0
  21. package/dist/{core-CgLkZ4NQ.d.ts → core-cnMNewUq.d.ts} +42 -91
  22. package/dist/core-cnMNewUq.d.ts.map +1 -0
  23. package/dist/{fuma-matter-BWdOvvCf.js → frontmatter-DePDVaRD.js} +6 -6
  24. package/dist/frontmatter-DePDVaRD.js.map +1 -0
  25. package/dist/fs-cache-DjtD5cW9.js +31 -0
  26. package/dist/fs-cache-DjtD5cW9.js.map +1 -0
  27. package/dist/{index-Bc_4I1HE.d.ts → index-Jp-qanl0.d.ts} +1 -1
  28. package/dist/index-Jp-qanl0.d.ts.map +1 -0
  29. package/dist/index.d.ts +2 -2
  30. package/dist/{load-from-file-Bx1TjN0x.js → load-from-file-C36LHYQZ.js} +5 -3
  31. package/dist/load-from-file-C36LHYQZ.js.map +1 -0
  32. package/dist/{loaders-BjG6ii1-.js → loaders-hcYVSfeh.js} +1 -1
  33. package/dist/{loaders-BjG6ii1-.js.map → loaders-hcYVSfeh.js.map} +1 -1
  34. package/dist/{mdx-DBBqLhht.js → mdx-DbiNLrgs.js} +9 -9
  35. package/dist/mdx-DbiNLrgs.js.map +1 -0
  36. package/dist/{meta-u6oJ9ej1.js → meta-C3cm2Bl5.js} +4 -4
  37. package/dist/meta-C3cm2Bl5.js.map +1 -0
  38. package/dist/next/index.cjs +21 -20
  39. package/dist/next/index.d.ts +2 -1
  40. package/dist/next/index.d.ts.map +1 -1
  41. package/dist/next/index.js +8 -8
  42. package/dist/next/index.js.map +1 -1
  43. package/dist/node/loader.d.ts.map +1 -1
  44. package/dist/node/loader.js +6 -6
  45. package/dist/node/loader.js.map +1 -1
  46. package/dist/plugins/index-file.d.ts +31 -2
  47. package/dist/plugins/index-file.d.ts.map +1 -0
  48. package/dist/plugins/index-file.js +236 -4
  49. package/dist/plugins/index-file.js.map +1 -0
  50. package/dist/plugins/json-schema.d.ts +1 -1
  51. package/dist/plugins/json-schema.d.ts.map +1 -1
  52. package/dist/plugins/json-schema.js +2 -2
  53. package/dist/plugins/json-schema.js.map +1 -1
  54. package/dist/plugins/last-modified.d.ts +1 -1
  55. package/dist/plugins/last-modified.d.ts.map +1 -1
  56. package/dist/plugins/last-modified.js +5 -5
  57. package/dist/plugins/last-modified.js.map +1 -1
  58. package/dist/{preset-D_quDsKp.js → preset-B14ViDfq.js} +1 -1
  59. package/dist/{preset-D_quDsKp.js.map → preset-B14ViDfq.js.map} +1 -1
  60. package/dist/{remark-include-BnRd6OBo.js → remark-include-DfEJ3erI.js} +4 -4
  61. package/dist/remark-include-DfEJ3erI.js.map +1 -0
  62. package/dist/rolldown-runtime-CjeV3_4I.js +18 -0
  63. package/dist/runtime/browser.d.ts +8 -8
  64. package/dist/runtime/browser.d.ts.map +1 -1
  65. package/dist/runtime/browser.js +12 -14
  66. package/dist/runtime/browser.js.map +1 -1
  67. package/dist/runtime/dynamic.d.ts +4 -2
  68. package/dist/runtime/dynamic.d.ts.map +1 -1
  69. package/dist/runtime/dynamic.js +9 -9
  70. package/dist/runtime/dynamic.js.map +1 -1
  71. package/dist/runtime/server.d.ts +49 -2
  72. package/dist/runtime/server.d.ts.map +1 -0
  73. package/dist/runtime/server.js +4 -10
  74. package/dist/runtime/server.js.map +1 -1
  75. package/dist/runtime/types.d.ts +63 -2
  76. package/dist/runtime/types.d.ts.map +1 -0
  77. package/dist/vite/index.d.ts +4 -3
  78. package/dist/vite/index.d.ts.map +1 -1
  79. package/dist/vite/index.js +18 -19
  80. package/dist/vite/index.js.map +1 -1
  81. package/dist/webpack/mdx.d.ts +3 -2
  82. package/dist/webpack/mdx.d.ts.map +1 -1
  83. package/dist/webpack/mdx.js +6 -6
  84. package/dist/webpack/mdx.js.map +1 -1
  85. package/dist/webpack/meta.d.ts +3 -2
  86. package/dist/webpack/meta.d.ts.map +1 -1
  87. package/dist/webpack/meta.js +5 -5
  88. package/dist/webpack/meta.js.map +1 -1
  89. package/dist/{webpack-fHsy5QQI.js → webpack-Cc8dY43s.js} +2 -2
  90. package/dist/webpack-Cc8dY43s.js.map +1 -0
  91. package/package.json +45 -29
  92. package/dist/build-DbdeZyKK.js.map +0 -1
  93. package/dist/build-mdx-BTwSGUFs.js.map +0 -1
  94. package/dist/build-mdx-Cg4YpCKX.js +0 -5
  95. package/dist/build-mdx-DyJk_jWV.d.ts.map +0 -1
  96. package/dist/codegen-IYa8t8xV.js.map +0 -1
  97. package/dist/config-s4QVhqzA.js.map +0 -1
  98. package/dist/core-CCsY8cxS.js.map +0 -1
  99. package/dist/core-CgLkZ4NQ.d.ts.map +0 -1
  100. package/dist/fuma-matter-BWdOvvCf.js.map +0 -1
  101. package/dist/index-Bc_4I1HE.d.ts.map +0 -1
  102. package/dist/index-file-DsOEtYCF.js +0 -264
  103. package/dist/index-file-DsOEtYCF.js.map +0 -1
  104. package/dist/load-from-file-Bx1TjN0x.js.map +0 -1
  105. package/dist/load-from-file-DPPJI83O.js +0 -5
  106. package/dist/mdx-DBBqLhht.js.map +0 -1
  107. package/dist/meta-u6oJ9ej1.js.map +0 -1
  108. package/dist/remark-include-BnRd6OBo.js.map +0 -1
  109. package/dist/types-CBMeukTI.d.ts +0 -63
  110. package/dist/types-CBMeukTI.d.ts.map +0 -1
  111. package/dist/webpack-fHsy5QQI.js.map +0 -1
@@ -1,13 +1,12 @@
1
- import { a as MetaMethods, i as InternalTypeConfig, n as DocMethods, t as DocData } from "./types-CBMeukTI.js";
1
+ import { IndexFilePlugin } from "./plugins/index-file.js";
2
+ import { z } from "zod";
2
3
  import { Pluggable, Processor, Transformer } from "unified";
3
4
  import * as Plugins from "@hanzo/docs-core/mdx-plugins";
4
5
  import { VFile } from "vfile";
5
6
  import { ProcessorOptions } from "@mdx-js/mdx";
6
7
  import { FSWatcher } from "chokidar";
7
8
  import { StandardSchemaV1 } from "@standard-schema/spec";
8
- import { metaSchema, metaSchema as metaSchema$1, pageSchema, pageSchema as frontmatterSchema } from "@hanzo/docs-core/source/schema";
9
9
  import { Root } from "mdast";
10
- import { MetaData, PageData, Source } from "@hanzo/docs-core/source";
11
10
 
12
11
  //#region src/config/preset.d.ts
13
12
  type ResolvePlugins = Pluggable[] | ((v: Pluggable[]) => Pluggable[]);
@@ -35,6 +34,30 @@ type MDXPresetOptions = ({
35
34
  */
36
35
  declare function applyMdxPreset(options?: MDXPresetOptions): (environment: BuildEnvironment) => Promise<ProcessorOptions>;
37
36
  //#endregion
37
+ //#region ../core/dist/source/schema.d.ts
38
+ /**
39
+ * Zod 4 schema
40
+ */
41
+ declare const metaSchema: z.ZodObject<{
42
+ title: z.ZodOptional<z.ZodString>;
43
+ pages: z.ZodOptional<z.ZodArray<z.ZodString>>;
44
+ description: z.ZodOptional<z.ZodString>;
45
+ root: z.ZodOptional<z.ZodBoolean>;
46
+ defaultOpen: z.ZodOptional<z.ZodBoolean>;
47
+ collapsible: z.ZodOptional<z.ZodBoolean>;
48
+ icon: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$strip>;
50
+ /**
51
+ * Zod 4 schema
52
+ */
53
+ declare const pageSchema: z.ZodObject<{
54
+ title: z.ZodString;
55
+ description: z.ZodOptional<z.ZodString>;
56
+ icon: z.ZodOptional<z.ZodString>;
57
+ full: z.ZodOptional<z.ZodBoolean>;
58
+ _openapi: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
59
+ }, z.core.$strip>;
60
+ //#endregion
38
61
  //#region src/loaders/mdx/remark-postprocess.d.ts
39
62
  interface ExtractedReference {
40
63
  href: string;
@@ -48,7 +71,12 @@ interface PostprocessOptions {
48
71
  /**
49
72
  * stringify MDAST and export via `_markdown`.
50
73
  */
51
- includeProcessedMarkdown?: boolean;
74
+ includeProcessedMarkdown?: boolean | {
75
+ /**
76
+ * include heading IDs into the processed markdown.
77
+ */
78
+ headingIds?: boolean;
79
+ };
52
80
  /**
53
81
  * extract link references, export via `extractedReferences`.
54
82
  */
@@ -62,7 +90,7 @@ interface PostprocessOptions {
62
90
  }
63
91
  //#endregion
64
92
  //#region src/config/define.d.ts
65
- type CollectionSchema<Schema$1 extends StandardSchemaV1, Context> = Schema$1 | ((ctx: Context) => Schema$1);
93
+ type CollectionSchema<Schema extends StandardSchemaV1, Context> = Schema | ((ctx: Context) => Schema);
66
94
  type AnyCollection = DocsCollection | DocCollection | MetaCollection;
67
95
  interface BaseCollection {
68
96
  /**
@@ -76,14 +104,14 @@ interface BaseCollection {
76
104
  */
77
105
  files?: string[];
78
106
  }
79
- interface MetaCollection<Schema$1 extends StandardSchemaV1 = StandardSchemaV1> extends BaseCollection {
107
+ interface MetaCollection<Schema extends StandardSchemaV1 = StandardSchemaV1> extends BaseCollection {
80
108
  type: 'meta';
81
- schema?: CollectionSchema<Schema$1, {
109
+ schema?: CollectionSchema<Schema, {
82
110
  path: string;
83
111
  source: string;
84
112
  }>;
85
113
  }
86
- interface DocCollection<Schema$1 extends StandardSchemaV1 = StandardSchemaV1> extends BaseCollection {
114
+ interface DocCollection<Schema extends StandardSchemaV1 = StandardSchemaV1> extends BaseCollection {
87
115
  type: 'doc';
88
116
  postprocess?: Partial<PostprocessOptions>;
89
117
  mdxOptions?: ProcessorOptions | ((environment: BuildEnvironment) => Promise<ProcessorOptions>);
@@ -95,7 +123,7 @@ interface DocCollection<Schema$1 extends StandardSchemaV1 = StandardSchemaV1> ex
95
123
  * Compile files on-demand
96
124
  */
97
125
  dynamic?: boolean;
98
- schema?: CollectionSchema<Schema$1, {
126
+ schema?: CollectionSchema<Schema, {
99
127
  path: string;
100
128
  source: string;
101
129
  }>;
@@ -123,8 +151,8 @@ interface GlobalConfig {
123
151
  */
124
152
  experimentalBuildCache?: string;
125
153
  }
126
- declare function defineCollections<Schema$1 extends StandardSchemaV1 = StandardSchemaV1>(options: DocCollection<Schema$1>): DocCollection<Schema$1>;
127
- declare function defineCollections<Schema$1 extends StandardSchemaV1 = StandardSchemaV1>(options: MetaCollection<Schema$1>): MetaCollection<Schema$1>;
154
+ declare function defineCollections<Schema extends StandardSchemaV1 = StandardSchemaV1>(options: DocCollection<Schema>): DocCollection<Schema>;
155
+ declare function defineCollections<Schema extends StandardSchemaV1 = StandardSchemaV1>(options: MetaCollection<Schema>): MetaCollection<Schema>;
128
156
  declare function defineDocs<DocSchema extends StandardSchemaV1 = typeof pageSchema, MetaSchema extends StandardSchemaV1 = typeof metaSchema>(options: {
129
157
  /**
130
158
  * The content directory to scan files
@@ -170,83 +198,6 @@ interface DocsCollectionItem extends Omit<DocsCollection, 'dir' | 'meta' | 'docs
170
198
  //#region src/loaders/mdx/remark-include.d.ts
171
199
  declare function remarkInclude(this: Processor): Transformer<Root, Root>;
172
200
  //#endregion
173
- //#region src/runtime/server.d.ts
174
- type MetaCollectionEntry<Data> = Data & MetaMethods;
175
- type DocCollectionEntry<Name extends string = string, Frontmatter = unknown, TC extends InternalTypeConfig = InternalTypeConfig> = DocData & DocMethods & Frontmatter & TC['DocData'][Name];
176
- type AsyncDocCollectionEntry<Name extends string = string, Frontmatter = unknown, TC extends InternalTypeConfig = InternalTypeConfig> = {
177
- load: () => Promise<DocData & TC['DocData'][Name]>;
178
- } & DocMethods & Frontmatter;
179
- interface DocsCollectionEntry<Name extends string = string, Frontmatter extends PageData = PageData, Meta$1 extends MetaData = MetaData, TC extends InternalTypeConfig = InternalTypeConfig> {
180
- docs: DocCollectionEntry<Name, Frontmatter, TC>[];
181
- meta: MetaCollectionEntry<Meta$1>[];
182
- /** @deprecated Use toSource() instead */
183
- toFumadocsSource: () => Source<{
184
- pageData: DocCollectionEntry<Name, Frontmatter, TC>;
185
- metaData: MetaCollectionEntry<Meta$1>;
186
- }>;
187
- toSource: () => Source<{
188
- pageData: DocCollectionEntry<Name, Frontmatter, TC>;
189
- metaData: MetaCollectionEntry<Meta$1>;
190
- }>;
191
- }
192
- interface AsyncDocsCollectionEntry<Name extends string = string, Frontmatter extends PageData = PageData, Meta$1 extends MetaData = MetaData, TC extends InternalTypeConfig = InternalTypeConfig> {
193
- docs: AsyncDocCollectionEntry<Name, Frontmatter, TC>[];
194
- meta: MetaCollectionEntry<Meta$1>[];
195
- /** @deprecated Use toSource() instead */
196
- toFumadocsSource: () => Source<{
197
- pageData: AsyncDocCollectionEntry<Name, Frontmatter, TC>;
198
- metaData: MetaCollectionEntry<Meta$1>;
199
- }>;
200
- toSource: () => Source<{
201
- pageData: AsyncDocCollectionEntry<Name, Frontmatter, TC>;
202
- metaData: MetaCollectionEntry<Meta$1>;
203
- }>;
204
- }
205
- type AwaitableGlobEntries<T> = Record<string, T | (() => Promise<T>)>;
206
- type ServerCreate<Config, TC extends InternalTypeConfig = InternalTypeConfig> = ReturnType<typeof server<Config, TC>>;
207
- interface ServerOptions {
208
- doc?: {
209
- passthroughs?: string[];
210
- };
211
- }
212
- declare function server<Config, TC extends InternalTypeConfig>(options?: ServerOptions): {
213
- doc<Name extends keyof Config & string>(_name: Name, base: string, glob: AwaitableGlobEntries<unknown>): Promise<Config[Name] extends DocCollection<infer Schema extends StandardSchemaV1<unknown, unknown>> | DocsCollection<infer Schema extends StandardSchemaV1<unknown, unknown>, StandardSchemaV1<unknown, unknown>> ? DocCollectionEntry<Name, StandardSchemaV1.InferOutput<Schema>, TC>[] : never>;
214
- docLazy<Name extends keyof Config & string>(_name: Name, base: string, head: AwaitableGlobEntries<unknown>, body: Record<string, () => Promise<unknown>>): Promise<Config[Name] extends DocCollection<infer Schema extends StandardSchemaV1<unknown, unknown>> | DocsCollection<infer Schema extends StandardSchemaV1<unknown, unknown>, StandardSchemaV1<unknown, unknown>> ? AsyncDocCollectionEntry<Name, StandardSchemaV1.InferOutput<Schema>, TC>[] : never>;
215
- meta<Name extends keyof Config & string>(_name: Name, base: string, glob: AwaitableGlobEntries<unknown>): Promise<Config[Name] extends MetaCollection<infer Schema extends StandardSchemaV1<unknown, unknown>> | DocsCollection<StandardSchemaV1<unknown, unknown>, infer Schema extends StandardSchemaV1<unknown, unknown>> ? MetaCollectionEntry<StandardSchemaV1.InferOutput<Schema>>[] : never>;
216
- docs<Name extends keyof Config & string>(name: Name, base: string, metaGlob: AwaitableGlobEntries<unknown>, docGlob: AwaitableGlobEntries<unknown>): Promise<Config[Name] extends DocsCollection<infer Page extends StandardSchemaV1<unknown, unknown>, infer Meta extends StandardSchemaV1<unknown, unknown>> ? StandardSchemaV1.InferOutput<Page> extends PageData ? StandardSchemaV1.InferOutput<Meta> extends MetaData ? DocsCollectionEntry<Name, StandardSchemaV1.InferOutput<Page>, StandardSchemaV1.InferOutput<Meta>, TC> : never : never : never>;
217
- docsLazy<Name extends keyof Config & string>(name: Name, base: string, metaGlob: AwaitableGlobEntries<unknown>, docHeadGlob: AwaitableGlobEntries<unknown>, docBodyGlob: Record<string, () => Promise<unknown>>): Promise<Config[Name] extends DocsCollection<infer Page extends StandardSchemaV1<unknown, unknown>, infer Meta extends StandardSchemaV1<unknown, unknown>> ? StandardSchemaV1.InferOutput<Page> extends PageData ? StandardSchemaV1.InferOutput<Meta> extends MetaData ? AsyncDocsCollectionEntry<Name, StandardSchemaV1.InferOutput<Page>, StandardSchemaV1.InferOutput<Meta>, TC> : never : never : never>;
218
- };
219
- declare function toFumadocsSource<Page$1 extends DocMethods & PageData, Meta$1 extends MetaMethods & MetaData>(pages: Page$1[], metas: Meta$1[]): Source<{
220
- pageData: Page$1;
221
- metaData: Meta$1;
222
- }>;
223
- //#endregion
224
- //#region src/plugins/index-file.d.ts
225
- interface IndexFilePluginOptions {
226
- target?: 'default' | 'vite';
227
- /**
228
- * add `.js` extensions to imports, needed for ESM without bundler resolution
229
- */
230
- addJsExtension?: boolean;
231
- /**
232
- * Generate entry point for browser
233
- * @defaultValue true
234
- */
235
- browser?: boolean;
236
- /**
237
- * Generate entry point for dynamic compilation
238
- * @defaultValue true
239
- */
240
- dynamic?: boolean;
241
- }
242
- interface IndexFilePlugin {
243
- ['index-file']?: {
244
- generateTypeConfig?: (this: PluginContext) => string | void;
245
- serverOptions?: (this: PluginContext, options: ServerOptions) => void;
246
- };
247
- }
248
- declare function indexFile(options?: IndexFilePluginOptions): Plugin;
249
- //#endregion
250
201
  //#region src/core.d.ts
251
202
  type Awaitable<T> = T | Promise<T>;
252
203
  interface EmitEntry {
@@ -276,7 +227,7 @@ interface Plugin extends IndexFilePlugin {
276
227
  */
277
228
  emit?: (this: PluginContext) => Awaitable<EmitEntry[]>;
278
229
  /**
279
- * Configure Fumadocs dev server
230
+ * Configure Hanzo Docs dev server
280
231
  */
281
232
  configureServer?: (this: PluginContext, server: ServerContext) => Awaitable<void>;
282
233
  meta?: {
@@ -370,5 +321,5 @@ declare function createCore(options: CoreOptions): {
370
321
  };
371
322
  type Core = ReturnType<typeof createCore>;
372
323
  //#endregion
373
- export { BaseCollection as A, PostprocessOptions as B, ServerOptions as C, metaSchema$1 as D, frontmatterSchema as E, MetaCollection as F, MDXPresetOptions as H, defineCollections as I, defineConfig as L, DocCollection as M, DocsCollection as N, remarkInclude as O, GlobalConfig as P, defineDocs as R, ServerCreate as S, toFumadocsSource as T, applyMdxPreset as U, DefaultMDXOptions as V, AsyncDocCollectionEntry as _, EmitOptions as a, DocsCollectionEntry as b, PluginContext as c, TransformOptions as d, _Defaults as f, indexFile as g, IndexFilePluginOptions as h, EmitEntry as i, CollectionSchema as j, AnyCollection as k, PluginOption as l, IndexFilePlugin as m, Core as n, EmitOutput as o, createCore as p, CoreOptions as r, Plugin as s, CompilationContext as t, ServerContext as u, AsyncDocsCollectionEntry as v, server as w, MetaCollectionEntry as x, DocCollectionEntry as y, ExtractedReference as z };
374
- //# sourceMappingURL=core-CgLkZ4NQ.d.ts.map
324
+ export { MDXPresetOptions as A, defineConfig as C, metaSchema as D, PostprocessOptions as E, pageSchema as O, defineCollections as S, ExtractedReference as T, CollectionSchema as _, EmitOptions as a, GlobalConfig as b, PluginContext as c, TransformOptions as d, _Defaults as f, BaseCollection as g, AnyCollection as h, EmitEntry as i, applyMdxPreset as j, DefaultMDXOptions as k, PluginOption as l, remarkInclude as m, Core as n, EmitOutput as o, createCore as p, CoreOptions as r, Plugin as s, CompilationContext as t, ServerContext as u, DocCollection as v, defineDocs as w, MetaCollection as x, DocsCollection as y };
325
+ //# sourceMappingURL=core-cnMNewUq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-cnMNewUq.d.ts","names":[],"sources":["../src/config/preset.ts","../../core/dist/source/schema.js","../src/loaders/mdx/remark-postprocess.ts","../src/config/define.ts","../src/config/build.ts","../src/loaders/mdx/remark-include.ts","../src/core.ts"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import { load } from "js-yaml";
2
2
 
3
- //#region src/utils/fuma-matter.ts
3
+ //#region src/utils/frontmatter.ts
4
4
  /**
5
- * Inspired by https://github.com/jonschlinkert/gray-matter
5
+ * Frontmatter parser - inspired by gray-matter
6
6
  */
7
7
  const regex = /^---\r?\n(.+?)\r?\n---\r?\n?/s;
8
8
  /**
9
- * parse frontmatter, it supports only yaml format
9
+ * Parse YAML frontmatter from markdown content
10
10
  */
11
- function fumaMatter(input) {
11
+ function parseFrontmatter(input) {
12
12
  const output = {
13
13
  matter: "",
14
14
  data: {},
@@ -23,5 +23,5 @@ function fumaMatter(input) {
23
23
  }
24
24
 
25
25
  //#endregion
26
- export { fumaMatter as t };
27
- //# sourceMappingURL=fuma-matter-BWdOvvCf.js.map
26
+ export { parseFrontmatter as t };
27
+ //# sourceMappingURL=frontmatter-DePDVaRD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter-DePDVaRD.js","names":[],"sources":["../src/utils/frontmatter.ts"],"sourcesContent":["/**\n * Frontmatter parser - inspired by gray-matter\n */\nimport { load } from 'js-yaml';\n\ninterface FrontmatterOutput {\n /**\n * The frontmatter 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 YAML frontmatter from markdown content\n */\nexport function parseFrontmatter(input: string): FrontmatterOutput {\n const output: FrontmatterOutput = { 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,iBAAiB,OAAkC;CACjE,MAAM,SAA4B;EAAE,QAAQ;EAAI,MAAM,EAAE;EAAE,SAAS;EAAO;CAC1E,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"}
@@ -0,0 +1,31 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+
4
+ //#region src/utils/fs-cache.ts
5
+ const map = /* @__PURE__ */ new Map();
6
+ function createFSCache() {
7
+ return {
8
+ read(file) {
9
+ const fullPath = toFullPath(file);
10
+ const cached = map.get(fullPath);
11
+ if (cached) return cached;
12
+ const read = fs.readFile(fullPath).then((s) => s.toString());
13
+ map.set(fullPath, read);
14
+ return read;
15
+ },
16
+ delete(file) {
17
+ map.delete(toFullPath(file));
18
+ }
19
+ };
20
+ }
21
+ /**
22
+ * make file paths relative to cwd
23
+ */
24
+ function toFullPath(file) {
25
+ if (path.isAbsolute(file)) return path.relative(process.cwd(), file);
26
+ return file;
27
+ }
28
+
29
+ //#endregion
30
+ export { createFSCache as t };
31
+ //# sourceMappingURL=fs-cache-DjtD5cW9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-cache-DjtD5cW9.js","names":[],"sources":["../src/utils/fs-cache.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"],"mappings":";;;;AAGA,MAAM,sBAAM,IAAI,KAA8B;AAE9C,SAAgB,gBAAgB;AAC9B,QAAO;EACL,KAAK,MAA+B;GAClC,MAAM,WAAW,WAAW,KAAK;GACjC,MAAM,SAAS,IAAI,IAAI,SAAS;AAChC,OAAI,OAAQ,QAAO;GAEnB,MAAM,OAAO,GAAG,SAAS,SAAS,CAAC,MAAM,MAAM,EAAE,UAAU,CAAC;AAC5D,OAAI,IAAI,UAAU,KAAK;AACvB,UAAO;;EAGT,OAAO,MAAc;AACnB,OAAI,OAAO,WAAW,KAAK,CAAC;;EAE/B;;;;;AAMH,SAAS,WAAW,MAAc;AAChC,KAAI,KAAK,WAAW,KAAK,CACvB,QAAO,KAAK,SAAS,QAAQ,KAAK,EAAE,KAAK;AAG3C,QAAO"}
@@ -9,4 +9,4 @@ interface WebpackLoaderOptions {
9
9
  }
10
10
  //#endregion
11
11
  export { WebpackLoaderOptions as t };
12
- //# sourceMappingURL=index-Bc_4I1HE.d.ts.map
12
+ //# sourceMappingURL=index-Jp-qanl0.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Jp-qanl0.d.ts","names":[],"sources":["../src/webpack/index.ts"],"mappings":";;;UAEiB,oBAAA;EACf,0BAAA;EACA,UAAA;EACA,MAAA;EACA,KAAA;AAAA"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { a as EmitOptions, c as PluginContext, d as TransformOptions, f as _Defaults, i as EmitEntry, l as PluginOption, n as Core, o as EmitOutput, p as createCore, r as CoreOptions, s as Plugin, t as CompilationContext, u as ServerContext, z as ExtractedReference } from "./core-CgLkZ4NQ.js";
2
- import { t as CompiledMDXProperties } from "./build-mdx-DyJk_jWV.js";
1
+ import { T as ExtractedReference, a as EmitOptions, c as PluginContext, d as TransformOptions, f as _Defaults, i as EmitEntry, l as PluginOption, n as Core, o as EmitOutput, p as createCore, r as CoreOptions, s as Plugin, t as CompilationContext, u as ServerContext } from "./core-cnMNewUq.js";
2
+ import { t as CompiledMDXProperties } from "./build-mdx-CaG9rsmy.js";
3
3
  export { CompilationContext, type CompiledMDXProperties, Core, CoreOptions, EmitEntry, EmitOptions, EmitOutput, type ExtractedReference, Plugin, PluginContext, PluginOption, ServerContext, TransformOptions, _Defaults, createCore };
@@ -1,7 +1,9 @@
1
- import { t as buildConfig } from "./build-DbdeZyKK.js";
1
+ import { t as __exportAll } from "./rolldown-runtime-CjeV3_4I.js";
2
+ import { t as buildConfig } from "./build-d7coQAP7.js";
2
3
  import { pathToFileURL } from "node:url";
3
4
 
4
5
  //#region src/config/load-from-file.ts
6
+ var load_from_file_exports = /* @__PURE__ */ __exportAll({ loadConfig: () => loadConfig });
5
7
  async function compileConfig(core) {
6
8
  const { build } = await import("esbuild");
7
9
  const { configPath, outDir } = core.getOptions();
@@ -34,5 +36,5 @@ async function loadConfig(core, build = false) {
34
36
  }
35
37
 
36
38
  //#endregion
37
- export { loadConfig as t };
38
- //# sourceMappingURL=load-from-file-Bx1TjN0x.js.map
39
+ export { load_from_file_exports as n, loadConfig as t };
40
+ //# sourceMappingURL=load-from-file-C36LHYQZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-from-file-C36LHYQZ.js","names":[],"sources":["../src/config/load-from-file.ts"],"sourcesContent":["import { pathToFileURL } from 'node:url';\nimport type { LoadedConfig } from './build';\nimport { buildConfig } from './build';\nimport type { Core } from '../core';\n\nasync function compileConfig(core: Core) {\n const { build } = await import('esbuild');\n const { configPath, outDir } = core.getOptions();\n\n const transformed = await build({\n entryPoints: [{ in: configPath, out: 'source.config' }],\n bundle: true,\n outdir: outDir,\n target: 'node20',\n write: true,\n platform: 'node',\n format: 'esm',\n packages: 'external',\n outExtension: {\n '.js': '.mjs',\n },\n allowOverwrite: true,\n });\n\n if (transformed.errors.length > 0) {\n throw new Error('failed to compile configuration file');\n }\n}\n\n/**\n * Load config\n *\n * @param build - By default, it assumes the config file has been compiled. Set this `true` to compile the config first.\n */\nexport async function loadConfig(core: Core, build = false): Promise<LoadedConfig> {\n if (build) await compileConfig(core);\n\n const url = pathToFileURL(core.getCompiledConfigPath());\n // always return a new config\n url.searchParams.set('hash', Date.now().toString());\n\n const config = import(url.href).then((loaded) => buildConfig(loaded as Record<string, unknown>));\n\n return await config;\n}\n"],"mappings":";;;;;;AAKA,eAAe,cAAc,MAAY;CACvC,MAAM,EAAE,UAAU,MAAM,OAAO;CAC/B,MAAM,EAAE,YAAY,WAAW,KAAK,YAAY;AAiBhD,MAfoB,MAAM,MAAM;EAC9B,aAAa,CAAC;GAAE,IAAI;GAAY,KAAK;GAAiB,CAAC;EACvD,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,UAAU;EACV,QAAQ;EACR,UAAU;EACV,cAAc,EACZ,OAAO,QACR;EACD,gBAAgB;EACjB,CAAC,EAEc,OAAO,SAAS,EAC9B,OAAM,IAAI,MAAM,uCAAuC;;;;;;;AAS3D,eAAsB,WAAW,MAAY,QAAQ,OAA8B;AACjF,KAAI,MAAO,OAAM,cAAc,KAAK;CAEpC,MAAM,MAAM,cAAc,KAAK,uBAAuB,CAAC;AAEvD,KAAI,aAAa,IAAI,QAAQ,KAAK,KAAK,CAAC,UAAU,CAAC;AAInD,QAAO,MAFQ,OAAO,IAAI,MAAM,MAAM,WAAW,YAAY,OAAkC,CAAC"}
@@ -4,4 +4,4 @@ const mdxLoaderGlob = /\.mdx?(\?.+?)?$/;
4
4
 
5
5
  //#endregion
6
6
  export { metaLoaderGlob as n, mdxLoaderGlob as t };
7
- //# sourceMappingURL=loaders-BjG6ii1-.js.map
7
+ //# sourceMappingURL=loaders-hcYVSfeh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loaders-BjG6ii1-.js","names":[],"sources":["../src/loaders/index.ts"],"sourcesContent":["export const metaLoaderGlob = /\\.(json|yaml)(\\?.+?)?$/;\nexport const mdxLoaderGlob = /\\.mdx?(\\?.+?)?$/;\n"],"mappings":";AAAA,MAAa,iBAAiB;AAC9B,MAAa,gBAAgB"}
1
+ {"version":3,"file":"loaders-hcYVSfeh.js","names":[],"sources":["../src/loaders/index.ts"],"sourcesContent":["export const metaLoaderGlob = /\\.(json|yaml)(\\?.+?)?$/;\nexport const mdxLoaderGlob = /\\.mdx?(\\?.+?)?$/;\n"],"mappings":";AAAA,MAAa,iBAAiB;AAC9B,MAAa,gBAAgB"}
@@ -1,16 +1,16 @@
1
- import { t as mdxLoaderGlob } from "./loaders-BjG6ii1-.js";
2
- import { t as fumaMatter } from "./fuma-matter-BWdOvvCf.js";
3
- import path from "node:path";
4
- import fs from "node:fs/promises";
1
+ import { t as parseFrontmatter } from "./frontmatter-DePDVaRD.js";
2
+ import { t as mdxLoaderGlob } from "./loaders-hcYVSfeh.js";
5
3
  import { z } from "zod";
4
+ import fs from "node:fs/promises";
5
+ import path from "node:path";
6
6
  import { createHash } from "node:crypto";
7
7
 
8
8
  //#region src/loaders/mdx/index.ts
9
- const querySchema = z.object({
9
+ const querySchema = z.looseObject({
10
10
  only: z.literal(["frontmatter", "all"]).default("all"),
11
11
  collection: z.string().optional(),
12
12
  workspace: z.string().optional()
13
- }).loose();
13
+ });
14
14
  const cacheEntry = z.object({
15
15
  code: z.string(),
16
16
  map: z.any().optional(),
@@ -22,7 +22,7 @@ function createMdxLoader({ getCore }) {
22
22
  async load({ getSource, development: isDevelopment, query, compiler, filePath }) {
23
23
  let core = await getCore();
24
24
  const value = await getSource();
25
- const matter = fumaMatter(value);
25
+ const matter = parseFrontmatter(value);
26
26
  const { collection: collectionName, workspace, only } = querySchema.parse(query);
27
27
  if (workspace) core = core.getWorkspaces().get(workspace) ?? core;
28
28
  let after;
@@ -59,7 +59,7 @@ function createMdxLoader({ getCore }) {
59
59
  code: `export const frontmatter = ${JSON.stringify(matter.data)}`,
60
60
  map: null
61
61
  };
62
- const { buildMDX } = await import("./build-mdx-Cg4YpCKX.js");
62
+ const { buildMDX } = await import("./build-mdx-k6Y12VXb.js").then((n) => n.n);
63
63
  const compiled = await buildMDX(core, docCollection, {
64
64
  isDevelopment,
65
65
  source: "\n".repeat(countLines(matter.matter)) + matter.content,
@@ -88,4 +88,4 @@ function countLines(s) {
88
88
 
89
89
  //#endregion
90
90
  export { createMdxLoader as t };
91
- //# sourceMappingURL=mdx-DBBqLhht.js.map
91
+ //# sourceMappingURL=mdx-DbiNLrgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx-DbiNLrgs.js","names":[],"sources":["../src/loaders/mdx/index.ts"],"sourcesContent":["import { parseFrontmatter } from '../../utils/frontmatter';\nimport type { Loader } from '../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 '../config';\nimport { mdxLoaderGlob } from '..';\n\nconst querySchema = z.looseObject({\n only: z.literal(['frontmatter', 'all']).default('all'),\n collection: z.string().optional(),\n workspace: z.string().optional(),\n});\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 = parseFrontmatter(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('./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,\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":";;;;;;;;AAUA,MAAM,cAAc,EAAE,YAAY;CAChC,MAAM,EAAE,QAAQ,CAAC,eAAe,MAAM,CAAC,CAAC,QAAQ,MAAM;CACtD,YAAY,EAAE,QAAQ,CAAC,UAAU;CACjC,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAEF,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,iBAAiB,MAAM;GACtC,MAAM,EAAE,YAAY,gBAAgB,WAAW,SAAS,YAAY,MAAM,MAAM;AAChF,OAAI,UACF,QAAO,KAAK,eAAe,CAAC,IAAI,UAAU,IAAI;GAGhD,IAAI;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,IAAI;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,12 +1,12 @@
1
- import { n as metaLoaderGlob } from "./loaders-BjG6ii1-.js";
1
+ import { n as metaLoaderGlob } from "./loaders-hcYVSfeh.js";
2
2
  import { load } from "js-yaml";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/loaders/meta.ts
6
- const querySchema = z.object({
6
+ const querySchema = z.looseObject({
7
7
  collection: z.string().optional(),
8
8
  workspace: z.string().optional()
9
- }).loose();
9
+ });
10
10
  /**
11
11
  * load meta files, fallback to bundler's built-in plugins when ?collection is unspecified.
12
12
  */
@@ -78,4 +78,4 @@ function createMetaLoader({ getCore }, resolve = {}) {
78
78
 
79
79
  //#endregion
80
80
  export { createMetaLoader as t };
81
- //# sourceMappingURL=meta-u6oJ9ej1.js.map
81
+ //# sourceMappingURL=meta-C3cm2Bl5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-C3cm2Bl5.js","names":[],"sources":["../src/loaders/meta.ts"],"sourcesContent":["import type { Loader, LoaderInput } from './adapter';\nimport type { ConfigLoader } from './config';\nimport { load } from 'js-yaml';\nimport { z } from 'zod';\nimport { metaLoaderGlob } from '.';\nimport type { MetaCollectionItem } from '../config/build';\n\nconst querySchema = z.looseObject({\n collection: z.string().optional(),\n workspace: z.string().optional(),\n});\n\n/**\n * load meta files, fallback to bundler's built-in plugins when ?collection is unspecified.\n */\nexport function createMetaLoader(\n { getCore }: ConfigLoader,\n resolve: {\n json?: 'json' | 'js';\n yaml?: 'js';\n } = {},\n): Loader {\n const { json: resolveJson = 'js' } = resolve;\n\n function parse(filePath: string, source: string) {\n try {\n if (filePath.endsWith('.json')) return JSON.parse(source);\n if (filePath.endsWith('.yaml')) return load(source);\n } catch (e) {\n throw new Error(`invalid data in ${filePath}`, { cause: e });\n }\n\n throw new Error('Unknown file type ' + filePath);\n }\n\n function onMeta(source: string, { filePath, query }: LoaderInput) {\n const parsed = querySchema.safeParse(query);\n if (!parsed.success || !parsed.data.collection) return null;\n const { collection: collectionName, workspace } = parsed.data;\n\n return async (): Promise<unknown> => {\n let core = await getCore();\n if (workspace) {\n core = core.getWorkspaces().get(workspace) ?? core;\n }\n\n const collection = core.getCollection(collectionName);\n let metaCollection: MetaCollectionItem | undefined;\n\n switch (collection?.type) {\n case 'meta':\n metaCollection = collection;\n break;\n case 'docs':\n metaCollection = collection.meta;\n break;\n }\n\n const data = parse(filePath, source);\n\n if (!metaCollection) return data;\n return core.transformMeta(\n {\n collection: metaCollection,\n filePath,\n source,\n },\n data,\n );\n };\n }\n\n return {\n test: metaLoaderGlob,\n async load(input) {\n const result = onMeta(await input.getSource(), input);\n if (result === null) return null;\n const data = await result();\n\n if (input.filePath.endsWith('.json')) {\n return {\n moduleType: resolveJson,\n code:\n resolveJson === 'json'\n ? JSON.stringify(data)\n : `export default ${JSON.stringify(data)}`,\n };\n } else {\n return {\n moduleType: 'js',\n code: `export default ${JSON.stringify(data)}`,\n };\n }\n },\n bun: {\n load(source, input) {\n const result = onMeta(source, input);\n if (result === null)\n return {\n loader: 'object',\n exports: parse(input.filePath, source),\n };\n\n return result().then((data) => ({\n loader: 'object',\n exports: { default: data },\n }));\n },\n },\n };\n}\n"],"mappings":";;;;;AAOA,MAAM,cAAc,EAAE,YAAY;CAChC,YAAY,EAAE,QAAQ,CAAC,UAAU;CACjC,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;;;;AAKF,SAAgB,iBACd,EAAE,WACF,UAGI,EAAE,EACE;CACR,MAAM,EAAE,MAAM,cAAc,SAAS;CAErC,SAAS,MAAM,UAAkB,QAAgB;AAC/C,MAAI;AACF,OAAI,SAAS,SAAS,QAAQ,CAAE,QAAO,KAAK,MAAM,OAAO;AACzD,OAAI,SAAS,SAAS,QAAQ,CAAE,QAAO,KAAK,OAAO;WAC5C,GAAG;AACV,SAAM,IAAI,MAAM,mBAAmB,YAAY,EAAE,OAAO,GAAG,CAAC;;AAG9D,QAAM,IAAI,MAAM,uBAAuB,SAAS;;CAGlD,SAAS,OAAO,QAAgB,EAAE,UAAU,SAAsB;EAChE,MAAM,SAAS,YAAY,UAAU,MAAM;AAC3C,MAAI,CAAC,OAAO,WAAW,CAAC,OAAO,KAAK,WAAY,QAAO;EACvD,MAAM,EAAE,YAAY,gBAAgB,cAAc,OAAO;AAEzD,SAAO,YAA8B;GACnC,IAAI,OAAO,MAAM,SAAS;AAC1B,OAAI,UACF,QAAO,KAAK,eAAe,CAAC,IAAI,UAAU,IAAI;GAGhD,MAAM,aAAa,KAAK,cAAc,eAAe;GACrD,IAAI;AAEJ,WAAQ,YAAY,MAApB;IACE,KAAK;AACH,sBAAiB;AACjB;IACF,KAAK;AACH,sBAAiB,WAAW;AAC5B;;GAGJ,MAAM,OAAO,MAAM,UAAU,OAAO;AAEpC,OAAI,CAAC,eAAgB,QAAO;AAC5B,UAAO,KAAK,cACV;IACE,YAAY;IACZ;IACA;IACD,EACD,KACD;;;AAIL,QAAO;EACL,MAAM;EACN,MAAM,KAAK,OAAO;GAChB,MAAM,SAAS,OAAO,MAAM,MAAM,WAAW,EAAE,MAAM;AACrD,OAAI,WAAW,KAAM,QAAO;GAC5B,MAAM,OAAO,MAAM,QAAQ;AAE3B,OAAI,MAAM,SAAS,SAAS,QAAQ,CAClC,QAAO;IACL,YAAY;IACZ,MACE,gBAAgB,SACZ,KAAK,UAAU,KAAK,GACpB,kBAAkB,KAAK,UAAU,KAAK;IAC7C;OAED,QAAO;IACL,YAAY;IACZ,MAAM,kBAAkB,KAAK,UAAU,KAAK;IAC7C;;EAGL,KAAK,EACH,KAAK,QAAQ,OAAO;GAClB,MAAM,SAAS,OAAO,QAAQ,MAAM;AACpC,OAAI,WAAW,KACb,QAAO;IACL,QAAQ;IACR,SAAS,MAAM,MAAM,UAAU,OAAO;IACvC;AAEH,UAAO,QAAQ,CAAC,MAAM,UAAU;IAC9B,QAAQ;IACR,SAAS,EAAE,SAAS,MAAM;IAC3B,EAAE;KAEN;EACF"}
@@ -1,4 +1,5 @@
1
- //#region rolldown:runtime
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ //#region \0rolldown/runtime.js
2
3
  var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
4
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -335,9 +336,9 @@ function normalizeViteGlobPath(file) {
335
336
  if (file.startsWith("/")) return `.${file}`;
336
337
  return `./${file}`;
337
338
  }
338
- function slash(path$6) {
339
- if (path$6.startsWith("\\\\?\\")) return path$6;
340
- return path$6.replaceAll("\\", "/");
339
+ function slash(path) {
340
+ if (path.startsWith("\\\\?\\")) return path;
341
+ return path.replaceAll("\\", "/");
341
342
  }
342
343
  function ident(code, tab = 1) {
343
344
  return code.split("\n").map((v) => " ".repeat(tab) + v).join("\n");
@@ -347,7 +348,7 @@ function ident(code, tab = 1) {
347
348
  //#region src/core.ts
348
349
  const _Defaults = {
349
350
  configPath: "source.config.ts",
350
- outDir: ".docs"
351
+ outDir: "docs"
351
352
  };
352
353
  async function getPlugins(pluginOptions) {
353
354
  const plugins = [];
@@ -461,28 +462,28 @@ function createCore(options) {
461
462
  }
462
463
  return out;
463
464
  },
464
- async transformMeta(options$1, data) {
465
+ async transformMeta(options, data) {
465
466
  const ctx = {
466
467
  ...this.getPluginContext(),
467
- ...options$1
468
+ ...options
468
469
  };
469
- data = await transformMetadata(options$1, data);
470
+ data = await transformMetadata(options, data);
470
471
  for (const plugin of plugins) if (plugin.meta?.transform) data = await plugin.meta.transform.call(ctx, data) ?? data;
471
472
  return data;
472
473
  },
473
- async transformFrontmatter(options$1, data) {
474
+ async transformFrontmatter(options, data) {
474
475
  const ctx = {
475
476
  ...this.getPluginContext(),
476
- ...options$1
477
+ ...options
477
478
  };
478
- data = await transformMetadata(options$1, data);
479
+ data = await transformMetadata(options, data);
479
480
  for (const plugin of plugins) if (plugin.doc?.frontmatter) data = await plugin.doc.frontmatter.call(ctx, data) ?? data;
480
481
  return data;
481
482
  },
482
- async transformVFile(options$1, file) {
483
+ async transformVFile(options, file) {
483
484
  const ctx = {
484
485
  ...this.getPluginContext(),
485
- ...options$1
486
+ ...options
486
487
  };
487
488
  for (const plugin of plugins) if (plugin.doc?.vfile) file = await plugin.doc.vfile.call(ctx, file) ?? file;
488
489
  return file;
@@ -557,15 +558,15 @@ function toFullPath(file) {
557
558
  }
558
559
 
559
560
  //#endregion
560
- //#region src/utils/fuma-matter.ts
561
+ //#region src/utils/frontmatter.ts
561
562
  /**
562
- * Inspired by https://github.com/jonschlinkert/gray-matter
563
+ * Frontmatter parser - inspired by gray-matter
563
564
  */
564
565
  const regex = /^---\r?\n(.+?)\r?\n---\r?\n?/s;
565
566
  /**
566
- * parse frontmatter, it supports only yaml format
567
+ * Parse YAML frontmatter from markdown content
567
568
  */
568
- function fumaMatter(input) {
569
+ function parseFrontmatter(input) {
569
570
  const output = {
570
571
  matter: "",
571
572
  data: {},
@@ -669,12 +670,12 @@ async function generateServerIndexFile(ctx) {
669
670
  case "docs": {
670
671
  if (collection.docs.dynamic) return;
671
672
  if (collection.docs.async) {
672
- const [metaGlob$1, headGlob, bodyGlob] = await Promise.all([
673
+ const [metaGlob, headGlob, bodyGlob] = await Promise.all([
673
674
  generateMetaCollectionGlob(ctx, collection.meta, true),
674
675
  generateDocCollectionFrontmatterGlob(ctx, collection.docs, true),
675
676
  generateDocCollectionGlob(ctx, collection.docs)
676
677
  ]);
677
- return `await create.docsLazy("${collection.name}", "${base}", ${metaGlob$1}, ${headGlob}, ${bodyGlob})`;
678
+ return `await create.docsLazy("${collection.name}", "${base}", ${metaGlob}, ${headGlob}, ${bodyGlob})`;
678
679
  }
679
680
  const [metaGlob, docGlob] = await Promise.all([generateMetaCollectionGlob(ctx, collection.meta, true), generateDocCollectionGlob(ctx, collection.docs, true)]);
680
681
  return `await create.docs("${collection.name}", "${base}", ${metaGlob}, ${docGlob})`;
@@ -707,7 +708,7 @@ async function generateDynamicIndexFile(ctx) {
707
708
  async function generateCollectionObjectEntry(collection, absolutePath) {
708
709
  const fullPath = path.default.relative(process.cwd(), absolutePath);
709
710
  const content = await indexFileCache.read(fullPath).catch(() => "");
710
- const parsed = fumaMatter(content);
711
+ const parsed = parseFrontmatter(content);
711
712
  const data = await core.transformFrontmatter({
712
713
  collection,
713
714
  filePath: fullPath,
@@ -1,4 +1,5 @@
1
- import { h as IndexFilePluginOptions } from "../core-CgLkZ4NQ.js";
1
+ import "../core-cnMNewUq.js";
2
+ import { IndexFilePluginOptions } from "../plugins/index-file.js";
2
3
  import { NextConfig } from "next";
3
4
 
4
5
  //#region src/next/index.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/next/index.ts"],"sourcesContent":[],"mappings":";;;;UAWiB,gBAAA;;AAAjB;AAkBA;EAAyC,UAAA,CAAA,EAAA,MAAA;EAUnB;;;AAgJtB;;;UA/JU;;iBAKM,SAAA,iBAAyB,iCAUnB,eAAkB;iBAgJlB,WAAA,UAAqB,mBAAgB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/next/index.ts"],"mappings":";;;;;UAWiB,gBAAA;;;AAAjB;EAIE,UAAA;;;;;;EAOA,MAAA;EAEA,KAAA,GAAQ,sBAAA;AAAA;AAAA,iBAKM,SAAA,CAAU,aAAA,GAAe,gBAAA,IAU/B,UAAA,GAAY,UAAA,KAAkB,UAAA;AAAA,iBAgJlB,WAAA,CAAY,OAAA,EAAS,gBAAA,GAAgB,OAAA"}
@@ -1,11 +1,11 @@
1
- import "../preset-D_quDsKp.js";
2
- import "../build-DbdeZyKK.js";
3
- import { t as loadConfig } from "../load-from-file-Bx1TjN0x.js";
4
- import { n as createCore, t as _Defaults } from "../core-CCsY8cxS.js";
5
- import "../codegen-IYa8t8xV.js";
6
- import { n as metaLoaderGlob, t as mdxLoaderGlob } from "../loaders-BjG6ii1-.js";
7
- import { t as indexFile } from "../index-file-DsOEtYCF.js";
8
- import "../fuma-matter-BWdOvvCf.js";
1
+ import "../frontmatter-DePDVaRD.js";
2
+ import { n as metaLoaderGlob, t as mdxLoaderGlob } from "../loaders-hcYVSfeh.js";
3
+ import "../preset-B14ViDfq.js";
4
+ import "../build-d7coQAP7.js";
5
+ import { n as createCore, t as _Defaults } from "../core-DFgQdyqL.js";
6
+ import "../codegen-DzglA9tJ.js";
7
+ import { t as loadConfig } from "../load-from-file-C36LHYQZ.js";
8
+ import indexFile from "../plugins/index-file.js";
9
9
  import * as path$1 from "node:path";
10
10
 
11
11
  //#region src/next/index.ts