fumadocs-mdx 14.2.2 → 14.2.4

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 (116) hide show
  1. package/dist/adapter-DG-viEbG.js +144 -0
  2. package/dist/adapter-DG-viEbG.js.map +1 -0
  3. package/dist/bin.d.ts +1 -1
  4. package/dist/bin.js +21 -12
  5. package/dist/bin.js.map +1 -0
  6. package/dist/build-BTTNEFmV.js +100 -0
  7. package/dist/build-BTTNEFmV.js.map +1 -0
  8. package/dist/build-mdx-10MrLupc.d.ts +53 -0
  9. package/dist/build-mdx-10MrLupc.d.ts.map +1 -0
  10. package/dist/build-mdx-BVeBo4jT.js +153 -0
  11. package/dist/build-mdx-BVeBo4jT.js.map +1 -0
  12. package/dist/build-mdx-ChjP7zAn.js +5 -0
  13. package/dist/bun/index.d.ts +10 -21
  14. package/dist/bun/index.d.ts.map +1 -0
  15. package/dist/bun/index.js +30 -49
  16. package/dist/bun/index.js.map +1 -0
  17. package/dist/codegen-DleOVLNr.js +101 -0
  18. package/dist/codegen-DleOVLNr.js.map +1 -0
  19. package/dist/config/index.d.ts +2 -18
  20. package/dist/config/index.js +50 -53
  21. package/dist/config/index.js.map +1 -0
  22. package/dist/core-DG43f_AU.d.ts +364 -0
  23. package/dist/core-DG43f_AU.d.ts.map +1 -0
  24. package/dist/core-DjldE3H9.js +212 -0
  25. package/dist/core-DjldE3H9.js.map +1 -0
  26. package/dist/fuma-matter-CHgJa_-B.js +27 -0
  27. package/dist/fuma-matter-CHgJa_-B.js.map +1 -0
  28. package/dist/index-Bc_4I1HE.d.ts +12 -0
  29. package/dist/index-Bc_4I1HE.d.ts.map +1 -0
  30. package/dist/index-file-D9HsrWU_.js +264 -0
  31. package/dist/index-file-D9HsrWU_.js.map +1 -0
  32. package/dist/index.d.ts +3 -61
  33. package/dist/index.js +1 -0
  34. package/dist/load-from-file-B7Rswy9i.js +5 -0
  35. package/dist/load-from-file-Doc98oEB.js +38 -0
  36. package/dist/load-from-file-Doc98oEB.js.map +1 -0
  37. package/dist/loaders-BVwYfelL.js +7 -0
  38. package/dist/loaders-BVwYfelL.js.map +1 -0
  39. package/dist/mdx-DMZ9tsAa.js +91 -0
  40. package/dist/mdx-DMZ9tsAa.js.map +1 -0
  41. package/dist/meta-DyieTM4Z.js +81 -0
  42. package/dist/meta-DyieTM4Z.js.map +1 -0
  43. package/dist/next/index.cjs +863 -1076
  44. package/dist/next/index.d.ts +17 -28
  45. package/dist/next/index.d.ts.map +1 -0
  46. package/dist/next/index.js +141 -170
  47. package/dist/next/index.js.map +1 -0
  48. package/dist/node/loader.d.ts +4 -2
  49. package/dist/node/loader.d.ts.map +1 -0
  50. package/dist/node/loader.js +26 -38
  51. package/dist/node/loader.js.map +1 -0
  52. package/dist/plugins/index-file.d.ts +2 -14
  53. package/dist/plugins/index-file.js +5 -8
  54. package/dist/plugins/json-schema.d.ts +14 -23
  55. package/dist/plugins/json-schema.d.ts.map +1 -0
  56. package/dist/plugins/json-schema.js +70 -78
  57. package/dist/plugins/json-schema.js.map +1 -0
  58. package/dist/plugins/last-modified.d.ts +21 -32
  59. package/dist/plugins/last-modified.d.ts.map +1 -0
  60. package/dist/plugins/last-modified.js +70 -78
  61. package/dist/plugins/last-modified.js.map +1 -0
  62. package/dist/preset-gmDZnBcg.js +61 -0
  63. package/dist/preset-gmDZnBcg.js.map +1 -0
  64. package/dist/remark-include-D3G3mAnv.js +247 -0
  65. package/dist/remark-include-D3G3mAnv.js.map +1 -0
  66. package/dist/runtime/browser.d.ts +32 -41
  67. package/dist/runtime/browser.d.ts.map +1 -0
  68. package/dist/runtime/browser.js +56 -63
  69. package/dist/runtime/browser.js.map +1 -0
  70. package/dist/runtime/dynamic.d.ts +13 -21
  71. package/dist/runtime/dynamic.d.ts.map +1 -0
  72. package/dist/runtime/dynamic.js +64 -76
  73. package/dist/runtime/dynamic.js.map +1 -0
  74. package/dist/runtime/server.d.ts +2 -14
  75. package/dist/runtime/server.js +111 -8
  76. package/dist/runtime/server.js.map +1 -0
  77. package/dist/runtime/types.d.ts +2 -61
  78. package/dist/runtime/types.js +1 -0
  79. package/dist/types-B6myALSk.d.ts +63 -0
  80. package/dist/types-B6myALSk.d.ts.map +1 -0
  81. package/dist/vite/index.d.ts +28 -39
  82. package/dist/vite/index.d.ts.map +1 -0
  83. package/dist/vite/index.js +79 -122
  84. package/dist/vite/index.js.map +1 -0
  85. package/dist/webpack/mdx.d.ts +6 -3
  86. package/dist/webpack/mdx.d.ts.map +1 -0
  87. package/dist/webpack/mdx.js +21 -34
  88. package/dist/webpack/mdx.js.map +1 -0
  89. package/dist/webpack/meta.d.ts +6 -3
  90. package/dist/webpack/meta.d.ts.map +1 -0
  91. package/dist/webpack/meta.js +23 -37
  92. package/dist/webpack/meta.js.map +1 -0
  93. package/dist/webpack--VSEE6Zp.js +15 -0
  94. package/dist/webpack--VSEE6Zp.js.map +1 -0
  95. package/loader-mdx.cjs +1 -3
  96. package/loader-meta.cjs +1 -3
  97. package/package.json +38 -38
  98. package/dist/build-mdx-5XLFMP5P.js +0 -8
  99. package/dist/chunk-257RZJEQ.js +0 -17
  100. package/dist/chunk-2PY3JUIC.js +0 -126
  101. package/dist/chunk-4EUH5CD2.js +0 -173
  102. package/dist/chunk-4JSFLXXT.js +0 -8
  103. package/dist/chunk-5OBUOALK.js +0 -141
  104. package/dist/chunk-DTFUANSF.js +0 -40
  105. package/dist/chunk-KWSETXYC.js +0 -274
  106. package/dist/chunk-OLD35ARB.js +0 -116
  107. package/dist/chunk-S7KOJHHO.js +0 -89
  108. package/dist/chunk-STLEUNK7.js +0 -335
  109. package/dist/chunk-USQZ5OLE.js +0 -116
  110. package/dist/chunk-VWJKRQZR.js +0 -19
  111. package/dist/chunk-WFDF56IJ.js +0 -290
  112. package/dist/chunk-WSQ23PNV.js +0 -179
  113. package/dist/chunk-ZAYZWFWP.js +0 -89
  114. package/dist/core-X5ggQtBM.d.ts +0 -350
  115. package/dist/index-BqkSNsGO.d.ts +0 -8
  116. package/dist/load-from-file-FHW724YY.js +0 -8
@@ -0,0 +1,364 @@
1
+ import { a as MetaMethods, i as InternalTypeConfig, n as DocMethods, t as DocData } from "./types-B6myALSk.js";
2
+ import { Pluggable, Processor, Transformer } from "unified";
3
+ import * as Plugins from "fumadocs-core/mdx-plugins";
4
+ import { VFile } from "vfile";
5
+ import { ProcessorOptions } from "@mdx-js/mdx";
6
+ import { FSWatcher } from "chokidar";
7
+ import { StandardSchemaV1 } from "@standard-schema/spec";
8
+ import { metaSchema, metaSchema as metaSchema$1, pageSchema, pageSchema as frontmatterSchema } from "fumadocs-core/source/schema";
9
+ import { Root } from "mdast";
10
+ import { MetaData, PageData, Source } from "fumadocs-core/source";
11
+
12
+ //#region src/config/preset.d.ts
13
+ type ResolvePlugins = Pluggable[] | ((v: Pluggable[]) => Pluggable[]);
14
+ type DefaultMDXOptions = Omit<NonNullable<ProcessorOptions>, 'rehypePlugins' | 'remarkPlugins' | '_ctx'> & {
15
+ rehypePlugins?: ResolvePlugins;
16
+ remarkPlugins?: ResolvePlugins;
17
+ /**
18
+ * Properties to export from `vfile.data`
19
+ */
20
+ valueToExport?: string[];
21
+ remarkStructureOptions?: Plugins.StructureOptions | false;
22
+ remarkHeadingOptions?: Plugins.RemarkHeadingOptions;
23
+ remarkImageOptions?: Plugins.RemarkImageOptions | false;
24
+ remarkCodeTabOptions?: Plugins.RemarkCodeTabOptions | false;
25
+ remarkNpmOptions?: Plugins.RemarkNpmOptions | false;
26
+ rehypeCodeOptions?: Plugins.RehypeCodeOptions | false;
27
+ };
28
+ type MDXPresetOptions = ({
29
+ preset?: 'fumadocs';
30
+ } & DefaultMDXOptions) | ({
31
+ preset: 'minimal';
32
+ } & ProcessorOptions);
33
+ /**
34
+ * apply MDX processor presets
35
+ */
36
+ declare function applyMdxPreset(options?: MDXPresetOptions): (environment: BuildEnvironment) => Promise<ProcessorOptions>;
37
+ //#endregion
38
+ //#region src/loaders/mdx/remark-postprocess.d.ts
39
+ interface ExtractedReference {
40
+ href: string;
41
+ }
42
+ interface PostprocessOptions {
43
+ _format: 'md' | 'mdx';
44
+ /**
45
+ * Properties to export from `vfile.data`
46
+ */
47
+ valueToExport?: string[];
48
+ /**
49
+ * stringify MDAST and export via `_markdown`.
50
+ */
51
+ includeProcessedMarkdown?: boolean;
52
+ /**
53
+ * extract link references, export via `extractedReferences`.
54
+ */
55
+ extractLinkReferences?: boolean;
56
+ /**
57
+ * store MDAST and export via `_mdast`.
58
+ */
59
+ includeMDAST?: boolean | {
60
+ removePosition?: boolean;
61
+ };
62
+ }
63
+ //#endregion
64
+ //#region src/config/define.d.ts
65
+ type CollectionSchema<Schema$1 extends StandardSchemaV1, Context> = Schema$1 | ((ctx: Context) => Schema$1);
66
+ type AnyCollection = DocsCollection | DocCollection | MetaCollection;
67
+ interface BaseCollection {
68
+ /**
69
+ * Directory to scan
70
+ */
71
+ dir: string;
72
+ /**
73
+ * what files to include/exclude (glob patterns)
74
+ *
75
+ * Include all files if not specified
76
+ */
77
+ files?: string[];
78
+ }
79
+ interface MetaCollection<Schema$1 extends StandardSchemaV1 = StandardSchemaV1> extends BaseCollection {
80
+ type: 'meta';
81
+ schema?: CollectionSchema<Schema$1, {
82
+ path: string;
83
+ source: string;
84
+ }>;
85
+ }
86
+ interface DocCollection<Schema$1 extends StandardSchemaV1 = StandardSchemaV1> extends BaseCollection {
87
+ type: 'doc';
88
+ postprocess?: Partial<PostprocessOptions>;
89
+ mdxOptions?: ProcessorOptions | ((environment: BuildEnvironment) => Promise<ProcessorOptions>);
90
+ /**
91
+ * Load files with async
92
+ */
93
+ async?: boolean;
94
+ /**
95
+ * Compile files on-demand
96
+ */
97
+ dynamic?: boolean;
98
+ schema?: CollectionSchema<Schema$1, {
99
+ path: string;
100
+ source: string;
101
+ }>;
102
+ }
103
+ interface DocsCollection<DocSchema extends StandardSchemaV1 = StandardSchemaV1, MetaSchema extends StandardSchemaV1 = StandardSchemaV1> {
104
+ type: 'docs';
105
+ dir: string;
106
+ docs: DocCollection<DocSchema>;
107
+ meta: MetaCollection<MetaSchema>;
108
+ }
109
+ interface GlobalConfig {
110
+ plugins?: PluginOption[];
111
+ /**
112
+ * Configure global MDX options
113
+ */
114
+ mdxOptions?: MDXPresetOptions | (() => Promise<MDXPresetOptions>);
115
+ workspaces?: Record<string, {
116
+ dir: string;
117
+ config: Record<string, unknown>;
118
+ }>;
119
+ /**
120
+ * specify a directory to access & store cache (disabled during development mode).
121
+ *
122
+ * The cache will never be updated, delete the cache folder to clean.
123
+ */
124
+ experimentalBuildCache?: string;
125
+ }
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>;
128
+ declare function defineDocs<DocSchema extends StandardSchemaV1 = typeof pageSchema, MetaSchema extends StandardSchemaV1 = typeof metaSchema>(options: {
129
+ /**
130
+ * The content directory to scan files
131
+ *
132
+ * @defaultValue 'content/docs'
133
+ */
134
+ dir?: string;
135
+ docs?: Omit<DocCollection<DocSchema>, 'dir' | 'type'>;
136
+ meta?: Omit<MetaCollection<MetaSchema>, 'dir' | 'type'>;
137
+ }): DocsCollection<DocSchema, MetaSchema>;
138
+ declare function defineConfig(config?: GlobalConfig): GlobalConfig;
139
+ //#endregion
140
+ //#region src/config/build.d.ts
141
+ type BuildEnvironment = 'bundler' | 'runtime';
142
+ interface LoadedConfig {
143
+ collections: Map<string, CollectionItem>;
144
+ global: GlobalConfig;
145
+ getMDXOptions(collection?: DocCollectionItem, environment?: BuildEnvironment): ProcessorOptions | Promise<ProcessorOptions>;
146
+ workspaces: Record<string, {
147
+ dir: string;
148
+ config: LoadedConfig;
149
+ }>;
150
+ }
151
+ type CollectionItem = MetaCollectionItem | DocCollectionItem | DocsCollectionItem;
152
+ interface PrimitiveCollectionItem {
153
+ name: string;
154
+ cwd: string;
155
+ /**
156
+ * content directory (absolute)
157
+ */
158
+ dir: string;
159
+ hasFile: (filePath: string) => boolean;
160
+ isFileSupported: (filePath: string) => boolean;
161
+ patterns: string[];
162
+ }
163
+ type MetaCollectionItem = PrimitiveCollectionItem & Omit<MetaCollection, 'files' | 'dir'>;
164
+ type DocCollectionItem = PrimitiveCollectionItem & Omit<DocCollection, 'files' | 'dir'>;
165
+ interface DocsCollectionItem extends Omit<DocsCollection, 'dir' | 'meta' | 'docs'>, Omit<PrimitiveCollectionItem, 'patterns'> {
166
+ meta: MetaCollectionItem;
167
+ docs: DocCollectionItem;
168
+ }
169
+ //#endregion
170
+ //#region src/loaders/mdx/remark-include.d.ts
171
+ declare function remarkInclude(this: Processor): Transformer<Root, Root>;
172
+ //#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
+ toFumadocsSource: () => Source<{
183
+ pageData: DocCollectionEntry<Name, Frontmatter, TC>;
184
+ metaData: MetaCollectionEntry<Meta$1>;
185
+ }>;
186
+ }
187
+ interface AsyncDocsCollectionEntry<Name extends string = string, Frontmatter extends PageData = PageData, Meta$1 extends MetaData = MetaData, TC extends InternalTypeConfig = InternalTypeConfig> {
188
+ docs: AsyncDocCollectionEntry<Name, Frontmatter, TC>[];
189
+ meta: MetaCollectionEntry<Meta$1>[];
190
+ toFumadocsSource: () => Source<{
191
+ pageData: AsyncDocCollectionEntry<Name, Frontmatter, TC>;
192
+ metaData: MetaCollectionEntry<Meta$1>;
193
+ }>;
194
+ }
195
+ type AwaitableGlobEntries<T> = Record<string, T | (() => Promise<T>)>;
196
+ type ServerCreate<Config, TC extends InternalTypeConfig = InternalTypeConfig> = ReturnType<typeof server<Config, TC>>;
197
+ interface ServerOptions {
198
+ doc?: {
199
+ passthroughs?: string[];
200
+ };
201
+ }
202
+ declare function server<Config, TC extends InternalTypeConfig>(options?: ServerOptions): {
203
+ 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>;
204
+ 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>;
205
+ 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>;
206
+ 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>;
207
+ 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>;
208
+ };
209
+ declare function toFumadocsSource<Page$1 extends DocMethods & PageData, Meta$1 extends MetaMethods & MetaData>(pages: Page$1[], metas: Meta$1[]): Source<{
210
+ pageData: Page$1;
211
+ metaData: Meta$1;
212
+ }>;
213
+ //#endregion
214
+ //#region src/plugins/index-file.d.ts
215
+ interface IndexFilePluginOptions {
216
+ target?: 'default' | 'vite';
217
+ /**
218
+ * add `.js` extensions to imports, needed for ESM without bundler resolution
219
+ */
220
+ addJsExtension?: boolean;
221
+ /**
222
+ * Generate entry point for browser
223
+ * @defaultValue true
224
+ */
225
+ browser?: boolean;
226
+ /**
227
+ * Generate entry point for dynamic compilation
228
+ * @defaultValue true
229
+ */
230
+ dynamic?: boolean;
231
+ }
232
+ interface IndexFilePlugin {
233
+ ['index-file']?: {
234
+ generateTypeConfig?: (this: PluginContext) => string | void;
235
+ serverOptions?: (this: PluginContext, options: ServerOptions) => void;
236
+ };
237
+ }
238
+ declare function indexFile(options?: IndexFilePluginOptions): Plugin;
239
+ //#endregion
240
+ //#region src/core.d.ts
241
+ type Awaitable<T> = T | Promise<T>;
242
+ interface EmitEntry {
243
+ /**
244
+ * path relative to output directory
245
+ */
246
+ path: string;
247
+ content: string;
248
+ }
249
+ interface PluginContext {
250
+ core: Core;
251
+ }
252
+ type CompilationContext<Collection> = PluginContext & TransformOptions<Collection>;
253
+ interface TransformOptions<Collection> {
254
+ collection: Collection;
255
+ filePath: string;
256
+ source: string;
257
+ }
258
+ interface Plugin extends IndexFilePlugin {
259
+ name?: string;
260
+ /**
261
+ * on config loaded/updated
262
+ */
263
+ config?: (this: PluginContext, config: LoadedConfig) => Awaitable<void | LoadedConfig>;
264
+ /**
265
+ * Generate files (e.g. types, index file, or JSON schemas)
266
+ */
267
+ emit?: (this: PluginContext) => Awaitable<EmitEntry[]>;
268
+ /**
269
+ * Configure Fumadocs dev server
270
+ */
271
+ configureServer?: (this: PluginContext, server: ServerContext) => Awaitable<void>;
272
+ meta?: {
273
+ /**
274
+ * Transform metadata
275
+ */
276
+ transform?: (this: CompilationContext<MetaCollectionItem>, data: unknown) => Awaitable<unknown | void>;
277
+ };
278
+ doc?: {
279
+ /**
280
+ * Transform frontmatter
281
+ */
282
+ frontmatter?: (this: CompilationContext<DocCollectionItem>, data: Record<string, unknown>) => Awaitable<Record<string, unknown> | void>;
283
+ /**
284
+ * Transform `vfile` on compilation stage
285
+ */
286
+ vfile?: (this: CompilationContext<DocCollectionItem>, file: VFile) => Awaitable<VFile | void>;
287
+ };
288
+ }
289
+ type PluginOption = Awaitable<Plugin | PluginOption[] | false | undefined>;
290
+ interface ServerContext {
291
+ /**
292
+ * the file watcher, by default all content files are watched, along with other files.
293
+ *
294
+ * make sure to filter when listening to events
295
+ */
296
+ watcher?: FSWatcher;
297
+ }
298
+ interface CoreOptions {
299
+ environment: string;
300
+ configPath: string;
301
+ outDir: string;
302
+ plugins?: PluginOption[];
303
+ /**
304
+ * the workspace info if this instance is created as a workspace
305
+ */
306
+ workspace?: {
307
+ parent: Core;
308
+ name: string;
309
+ dir: string;
310
+ };
311
+ }
312
+ interface EmitOptions {
313
+ /**
314
+ * filter the plugins to run emit
315
+ */
316
+ filterPlugin?: (plugin: Plugin) => boolean;
317
+ /**
318
+ * filter the workspaces to run emit
319
+ */
320
+ filterWorkspace?: (workspace: string) => boolean;
321
+ /**
322
+ * write files
323
+ */
324
+ write?: boolean;
325
+ }
326
+ interface EmitOutput {
327
+ entries: EmitEntry[];
328
+ workspaces: Record<string, EmitEntry[]>;
329
+ }
330
+ declare const _Defaults: {
331
+ configPath: string;
332
+ outDir: string;
333
+ };
334
+ declare function createCore(options: CoreOptions): {
335
+ /**
336
+ * Convenient cache store, reset when config changes
337
+ */
338
+ cache: Map<string, unknown>;
339
+ init({
340
+ config: newConfig
341
+ }: {
342
+ config: Awaitable<LoadedConfig>;
343
+ }): Promise<void>;
344
+ getWorkspaces(): Map<string, /*elided*/any>;
345
+ getOptions(): CoreOptions;
346
+ getConfig(): LoadedConfig;
347
+ /**
348
+ * The file path of compiled config file, the file may not exist (e.g. on Vite, or still compiling)
349
+ */
350
+ getCompiledConfigPath(): string;
351
+ getPlugins(): Plugin[];
352
+ getCollections(): CollectionItem[];
353
+ getCollection(name: string): CollectionItem | undefined;
354
+ getPluginContext(): PluginContext;
355
+ initServer(server: ServerContext): Promise<void>;
356
+ emit(emitOptions?: EmitOptions): Promise<EmitOutput>;
357
+ transformMeta(options: TransformOptions<MetaCollectionItem>, data: unknown): Promise<unknown>;
358
+ transformFrontmatter(options: TransformOptions<DocCollectionItem>, data: Record<string, unknown>): Promise<Record<string, unknown>>;
359
+ transformVFile(options: TransformOptions<DocCollectionItem>, file: VFile): Promise<VFile>;
360
+ };
361
+ type Core = ReturnType<typeof createCore>;
362
+ //#endregion
363
+ 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 };
364
+ //# sourceMappingURL=core-DG43f_AU.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-DG43f_AU.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":";;;;;;;;;;;;KAKK,cAAA,GAAiB,mBAAmB,gBAAgB;KAE7C,iBAAA,GAAoB,KAC9B,YAAY;kBAGI;kBACA;;;;;EAPb,sBAAc,CAAA,EAcQ,OAAA,CAAQ,gBAdhB,GAAA,KAAA;EAAG,oBAAA,CAAA,EAeG,OAAA,CAAQ,oBAfX;EAAmB,kBAAA,CAAA,EAgBlB,OAAA,CAAQ,kBAhBU,GAAA,KAAA;EAAgB,oBAAA,CAAA,EAiBhC,OAAA,CAAQ,oBAjBwB,GAAA,KAAA;EAAS,gBAAA,CAAA,EAkB7C,OAAA,CAAQ,gBAlBqC,GAAA,KAAA;EAEtD,iBAAA,CAAA,EAiBU,OAAA,CAAQ,iBAjBD,GAAA,KAAA;CACf;AAAZ,KAgCU,gBAAA,GAhCV,CAAA;EAD8B,MAAA,CAAA,EAAA,UAAA;CAId,GA8Ba,iBA9Bb,CAAA,GAAA,CAAA;EACA,MAAA,EAAA,SAAA;CAOS,GAyBnB,gBAzB2B,CAAA;;;;AAId,iBA0BL,cAAA,CA1Ba,OAAA,CAAA,EA2BlB,gBA3BkB,CAAA,EAAA,CAAA,WAAA,EA4BZ,gBA5BY,EAAA,GA4BS,OA5BT,CA4BiB,gBA5BjB,CAAA;;;UCdZ,kBAAA;;;UAIA,kBAAA;;;;;;;ADV+B;;EAEP,wBAAA,CAAA,EAAA,OAAA;EAAgB;;AAEzD;EACc,qBAAA,CAAA,EAAA,OAAA;EAAZ;;;EAIgB,YAAA,CAAA,EAAA,OAAA,GAAA;IAOS,cAAQ,CAAA,EAAA,OAAA;EACV,CAAA;;;;KEZb,kCAAgC,6BACxC,kBACO,YAAY;KAEX,aAAA,GAAgB,iBAAiB,gBAAgB;UAE5C,cAAA;;;AFX+B;EAE1B,GAAA,EAAA,MAAA;EAAmB;;;AAEzC;;EACE,KAAA,CAAA,EAAA,MAAA,EAAA;;AAGgB,UEiBD,cFjBC,CAAA,iBEkBD,gBFlBC,GEkBkB,gBFlBlB,CAAA,SEmBR,cFnBQ,CAAA;EACA,IAAA,EAAA,MAAA;EAOS,MAAQ,CAAA,EEcxB,gBFdwB,CEcP,QFdO,EAAA;IACV,IAAQ,EAAA,MAAA;IACV,MAAQ,EAAA,MAAA;EACN,CAAA,CAAA;;AAEH,UEYL,aFZa,CAAA,iBEab,gBFba,GEaM,gBFbN,CAAA,SEcpB,cFdoB,CAAA;EAAiB,IAAA,EAAA,KAAA;EAgBnC,WAAA,CAAA,EECI,OFDY,CECJ,kBFAO,CAAA;EAQf,UAAA,CAAA,EEPD,gBFOe,GAAA,CAAA,CAAA,WAAA,EEPmB,gBFOnB,EAAA,GEPwC,OFOxC,CEPgD,gBFOhD,CAAA,CAAA;EACnB;;;EAC2B,KAAA,CAAA,EAAA,OAAA;EAAO;;;;EC1C5B,MAAA,CAAA,EC6CN,gBD7CwB,CC6CP,QD7CO,EAAA;IAIlB,IAAA,EAAA,MAAA;;;;ACLL,UAiDK,cAjDW,CAAA,kBAkDR,gBAlDQ,GAkDW,gBAlDX,EAAA,mBAmDP,gBAnDO,GAmDY,gBAnDZ,CAAA,CAAA;EAAgB,IAAA,EAAA,MAAA;EACxC,GAAA,EAAA,MAAA;EACO,IAAA,EAsDH,aAtDG,CAsDW,SAtDX,CAAA;EAAY,IAAA,EAuDf,cAvDe,CAuDA,UAvDA,CAAA;;AAEX,UAwDK,YAAA,CAxDQ;EAAG,OAAA,CAAA,EAyDhB,YAzDgB,EAAA;EAAiB;;;EAE5B,UAAA,CAAA,EA4DF,gBA5DgB,GAAA,CAAA,GAAA,GA4DU,OA5DV,CA4DkB,gBA5DlB,CAAA,CAAA;EAcd,UAAA,CAAA,EAgDF,MAhDgB,CAAA,MAAA,EAAA;IACd,GAAA,EAAA,MAAA;IAAmB,MAAA,EAmDtB,MAnDsB,CAAA,MAAA,EAAA,OAAA,CAAA;EAIR,CAAA,CAAA;EAAjB;;;AAGX;;EACoC,sBAAA,CAAA,EAAA,MAAA;;AAIpB,iBAmDA,iBAnDA,CAAA,iBAmDiC,gBAnDjC,GAmDoD,gBAnDpD,CAAA,CAAA,OAAA,EAoDL,aApDK,CAoDS,QApDT,CAAA,CAAA,EAqDb,aArDa,CAqDC,QArDD,CAAA;AACD,iBAqDC,iBArDD,CAAA,iBAqDkC,gBArDlC,GAqDqD,gBArDrD,CAAA,CAAA,OAAA,EAsDJ,cAtDI,CAsDW,QAtDX,CAAA,CAAA,EAuDZ,cAvDY,CAuDG,QAvDH,CAAA;AAAkC,iBA+DjC,UA/DiC,CAAA,kBAgE7B,gBAhE6B,GAAA,OAgEH,UAhEG,EAAA,mBAiE5B,gBAjE4B,GAAA,OAiEF,UAjEE,CAAA,CAAA,OAAA,EAAA;EAA6B;;;;;EAJtD,GAAA,CAAA,EAAA,MAAA;EAmBP,IAAA,CAAA,EA2DR,IA3DQ,CA2DH,aA3DiB,CA2DH,SA3DG,CAAA,EAAA,KAAA,GAAA,MAAA,CAAA;EACX,IAAA,CAAA,EA2DX,IA3DW,CA2DN,cA3DM,CA2DS,UA3DT,CAAA,EAAA,KAAA,GAAA,MAAA,CAAA;CAAmB,CAAA,EA4DnC,cA5DmC,CA4DpB,SA5DoB,EA4DT,UA5DS,CAAA;AAClB,iBAgFL,YAAA,CAhFK,MAAA,CAAA,EAgFgB,YAhFhB,CAAA,EAgFoC,YAhFpC;;;KC/CT,gBAAA;UAEK,YAAA;eACF,YAAY;UACjB;6BAEO,iCACC,mBACb,mBAAmB,QAAQ;cAClB;;YAIA;;;AHpBT,KGyBO,cAAA,GAAiB,kBHzBV,GGyB+B,iBHzB/B,GGyBmD,kBHzBnD;UG2BT,uBAAA,CH3BY;EAAmB,IAAA,EAAA,MAAA;EAAgB,GAAA,EAAA,MAAA;EAAS;AAElE;;EACE,GAAA,EAAA,MAAA;EAD8B,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,OAAA;EAId,eAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,OAAA;EACA,QAAA,EAAA,MAAA,EAAA;;AAQO,KGwBb,kBAAA,GAAqB,uBHxBA,GGwB0B,IHxB1B,CGwB+B,cHxB/B,EAAA,OAAA,GAAA,KAAA,CAAA;AACV,KGwBX,iBAAA,GAAoB,uBHxBD,GGwB2B,IHxB3B,CGwBgC,aHxBhC,EAAA,OAAA,GAAA,KAAA,CAAA;AACN,UGyBR,kBAAA,SACP,IH1BuB,CG0BlB,cH1BkB,EAAA,KAAA,GAAA,MAAA,GAAA,MAAA,CAAA,EG0BwB,IH1BxB,CG0B6B,uBH1B7B,EAAA,UAAA,CAAA,CAAA;EACZ,IAAA,EG0Bb,kBH1BqB;EACP,IAAA,EG0Bd,iBH1BsB;;;;iBIyKd,aAAA,OAAoB,YAAY,YAAY,MAAM;;;KC1LtD,4BAA4B,OAAO;KAEnC,mFAGC,qBAAqB,sBAC9B,UAAU,aAAa,cAAc,cAAc;KAE3C,wFAGC,qBAAqB;cAEpB,QAAQ,UAAU,cAAc;IAC1C,aACF;UAEe,sEAEK,WAAW,yBAClB,WAAW,qBACb,qBAAqB;QAE1B,mBAAmB,MAAM,aAAa;QACtC,oBAAoB;EL1BvB,gBAAA,EAAc,GAAA,GK2BO,ML3BP,CAAA;IAAG,QAAA,EK4BR,kBL5BQ,CK4BW,IL5BX,EK4BiB,WL5BjB,EK4B8B,EL5B9B,CAAA;IAAmB,QAAA,EK6B3B,mBL7B2B,CK6BP,ML7BO,CAAA;EAAgB,CAAA,CAAA;;AAE7C,UK+BK,wBL/BY,CAAA,aAAA,MAAA,GAAA,MAAA,EAAA,oBKiCP,QLjCO,GKiCI,QLjCJ,EAAA,eKkCd,QLlCc,GKkCH,QLlCG,EAAA,WKmChB,kBLnCgB,GKmCK,kBLnCL,CAAA,CAAA;EACf,IAAA,EKoCN,uBLpCM,CKoCkB,ILpClB,EKoCwB,WLpCxB,EKoCqC,ELpCrC,CAAA,EAAA;EAAZ,IAAA,EKqCM,mBLrCN,CKqC0B,MLrC1B,CAAA,EAAA;EAD8B,gBAAA,EAAA,GAAA,GKuCN,MLvCM,CAAA;IAId,QAAA,EKoCJ,uBLpCI,CKoCoB,ILpCpB,EKoC0B,WLpC1B,EKoCuC,ELpCvC,CAAA;IACA,QAAA,EKoCJ,mBLpCI,CKoCgB,MLpChB,CAAA;EAOS,CAAA,CAAA;;KKiCtB,oBL/B0B,CAAA,CAAA,CAAA,GK+BA,ML/BA,CAAA,MAAA,EK+Be,CL/Bf,GAAA,CAAA,GAAA,GK+B0B,OL/B1B,CK+BkC,CL/BlC,CAAA,CAAA,CAAA;AACN,KKgCb,YLhCqB,CAAA,MAAA,EAAA,WKgCW,kBLhCX,GKgCgC,kBLhChC,CAAA,GKgCsD,ULhCtD,CAAA,OKiCxB,MLjCwB,CKiCjB,MLjCiB,EKiCT,ELjCS,CAAA,CAAA;AACZ,UKmCJ,aAAA,CLnCY;EACP,GAAA,CAAA,EAAQ;IAAiB,YAAA,CAAA,EAAA,MAAA,EAAA;EAgBnC,CAAA;AASZ;AACW,iBKcK,MLdL,CAAA,MAAA,EAAA,WKc+B,kBLd/B,CAAA,CAAA,OAAA,CAAA,EKc4D,aLd5D,CAAA,EAAA;EACM,GAAA,CAAA,aAAA,MK4CgB,ML5ChB,GAAA,MAAA,CAAA,CAAA,KAAA,EK6CJ,IL7CI,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EK+CL,oBL/CK,CAAA,OAAA,CAAA,CAAA,EK+CwB,OL/CxB,CK+CwB,ML/CxB,CK+CwB,IL/CxB,CAAA,SK+CwB,aL/CxB,CAAA,KAAA,gBK8DmB,gBL9DnB,CAAA,OAAA,EAAA,OAAA,CAAA,CAAA,GK8DmB,cL9DnB,CAAA,KAAA,gBK8DmB,gBL9DnB,CAAA,OAAA,EAAA,OAAA,CAAA,EK8DmB,gBL9DnB,CAAA,OAAA,EAAA,OAAA,CAAA,CAAA,GK8DmB,kBL9DnB,CK8DmB,IL9DnB,EK8DmB,gBAAA,CAAA,WL9DnB,CK8DmB,ML9DnB,CAAA,EK8DmB,EL9DnB,CAAA,EAAA,GAAA,KAAA,CAAA;EAA6B,OAAA,CAAA,aAAA,MKmET,MLnES,GAAA,MAAA,CAAA,CAAA,KAAA,EKoEjC,ILpEiC,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EKsElC,oBLtEkC,CAAA,OAAA,CAAA,EAAA,IAAA,EKuElC,MLvEkC,CAAA,MAAA,EAAA,GAAA,GKuEb,OLvEa,CAAA,OAAA,CAAA,CAAA,CAAA,EKuEI,OLvEJ,CKuEI,MLvEJ,CKuEI,ILvEJ,CAAA,SKuEI,aLvEJ,CAAA,KAAA,gBKyFV,gBLzFU,CAAA,OAAA,EAAA,OAAA,CAAA,CAAA,GKyFV,cLzFU,CAAA,KAAA,gBKyFV,gBLzFU,CAAA,OAAA,EAAA,OAAA,CAAA,EKyFV,gBLzFU,CAAA,OAAA,EAAA,OAAA,CAAA,CAAA,GKyFV,uBLzFU,CKyFV,ILzFU,EKyFV,gBAAA,CAAA,WLzFU,CKyFV,MLzFU,CAAA,EKyFV,ELzFU,CAAA,EAAA,GAAA,KAAA,CAAA;EAAR,IAAA,CAAA,aAAA,MK8FJ,ML9FI,GAAA,MAAA,CAAA,CAAA,KAAA,EK+FzB,IL/FyB,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EKiG1B,oBLjG0B,CAAA,OAAA,CAAA,CAAA,EKiGG,OLjGH,CKiGG,MLjGH,CKiGG,ILjGH,CAAA,SKiGG,cLjGH,CAAA,KAAA,gBK+GD,gBL/GC,CAAA,OAAA,EAAA,OAAA,CAAA,CAAA,GK+GD,cL/GC,CK+GD,gBL/GC,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,KAAA,gBK+GD,gBL/GC,CAAA,OAAA,EAAA,OAAA,CAAA,CAAA,GK+GD,mBL/GC,CK+GD,gBAAA,CAAA,WL/GC,CK+GD,ML/GC,CAAA,CAAA,EAAA,GAAA,KAAA,CAAA;EAAO,IAAA,CAAA,aAAA,MKqHX,MLrHW,GAAA,MAAA,CAAA,CAAA,IAAA,EKsHjC,ILtHiC,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EKwH7B,oBLxH6B,CAAA,OAAA,CAAA,EAAA,OAAA,EKyH9B,oBLzH8B,CAAA,OAAA,CAAA,CAAA,EKyHD,OLzHC,CKyHD,MLzHC,CKyHD,ILzHC,CAAA,SKyHD,cLzHC,CAAA,KAAA,cKmIuB,gBLnIvB,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,KAAA,cKmImC,gBLnInC,CAAA,OAAA,EAAA,OAAA,CAAA,CAAA,GKmImC,gBAAA,CAAA,WLnInC,CKmImC,ILnInC,CAAA,SKmImC,QLnInC,GKmImC,gBAAA,CAAA,WLnInC,CKmImC,ILnInC,CAAA,SKmImC,QLnInC,GKmImC,mBLnInC,CKmImC,ILnInC,EKmImC,gBAAA,CAAA,WLnInC,CKmImC,ILnInC,CAAA,EKmImC,gBAAA,CAAA,WLnInC,CKmImC,ILnInC,CAAA,EKmImC,ELnInC,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,CAAA;8BKgJP,uBAC1B,8BAEI,4CACG,4CACA,qBAAqB,oBAAiB,QAAA,OAAA,cAAA,kCAUW,uDAAY,sCAAA,gBAAA,CAAA,YAAA,cAAA,WAAA,gBAAA,CAAA,YAAA,cAAA,WAAA,yBAAA,MAAA,gBAAA,CAAA,YAAA,OAAA,gBAAA,CAAA,YAAA,OAAA;;iBAgBhE,gCACD,aAAa,yBACb,cAAc,iBAEpB,iBACA,WACN;EJ/Nc,QAAA,EIgOL,MJhOK;EAIA,QAAA,EI6NL,MJ7NK;;;;UKDA,sBAAA;;;;;;;;;;ENPZ,OAAA,CAAA,EAAA,OAAc;EAAG;;;;EAEV,OAAA,CAAA,EAAA,OAAA;;AACV,UMyBe,eAAA,CNzBf;EAD8B,CAAA,YAAA,EAAA,EAAA;IAId,kBAAA,CAAA,EAAA,CAAA,IAAA,EMwBc,aNxBd,EAAA,GAAA,MAAA,GAAA,IAAA;IACA,aAAA,CAAA,EAAA,CAAA,IAAA,EMwBS,aNxBT,EAAA,OAAA,EMwBiC,aNxBjC,EAAA,GAAA,IAAA;EAOS,CAAA;;AAEI,iBM6BP,SAAA,CN7BO,OAAA,CAAA,EM6BY,sBN7BZ,CAAA,EM6B0C,MN7B1C;;;KON1B,eAAe,IAAI,QAAQ;UAEf,SAAA;;;;;;;APZZ,UOoBY,aAAA,CPpBE;EAAG,IAAA,EOqBd,IPrBc;;AAAmC,KOwB7C,kBPxB6C,CAAA,UAAA,CAAA,GOwBZ,aPxBY,GOwBI,gBPxBJ,COwBqB,UPxBrB,CAAA;AAAS,UO0BjD,gBP1BiD,CAAA,UAAA,CAAA,CAAA;EAEtD,UAAA,EOyBE,UPzBe;EACf,QAAA,EAAA,MAAA;EAAZ,MAAA,EAAA,MAAA;;AAGgB,UO0BD,MAAA,SAAe,eP1Bd,CAAA;EACA,IAAA,CAAA,EAAA,MAAA;EAOS;;;EAGF,MAAQ,CAAA,EAAA,CAAA,IAAA,EOqBf,aPrBe,EAAA,MAAA,EOqBQ,YPrBR,EAAA,GOqByB,SPrBzB,CAAA,IAAA,GOqB0C,YPrB1C,CAAA;EACZ;;;EAiBT,IAAA,CAAA,EAAA,CAAA,IAAA,EOQI,aPRY,EAAA,GOQM,SPPH,COOa,SPJpC,EAAA,CAAA;EAKQ;;;EAE8B,eAAA,CAAA,EAAA,CAAA,IAAA,EOEnB,aPFmB,EAAA,MAAA,EOEI,aPFJ,EAAA,GOEsB,SPFtB,CAAA,IAAA,CAAA;EAAR,IAAA,CAAA,EAAA;IAAO;;;uBOSjC,mBAAmB,uCAEtB;ENrDQ,CAAA;EAIA,GAAA,CAAA,EAAA;;;;ICLL,WAAA,CAAA,EAAA,CAAgB,IAAA,EK8DhB,kBL9DgB,CK8DG,iBL9DH,CAAA,EAAA,IAAA,EK+DhB,ML/DgB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GKgEnB,SLhEmB,CKgET,MLhES,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,IAAA,CAAA;IAAgB;;;IAErB,KAAA,CAAA,EAAA,CAAA,IAAA,EKmEJ,kBLnEI,CKmEe,iBLnEf,CAAA,EAAA,IAAA,EKmEyC,KLnEzC,EAAA,GKmEmD,SLnEnD,CKmE6D,KLnE7D,GAAA,IAAA,CAAA;EAAM,CAAA;AAE7B;AAA4B,KKqEhB,YAAA,GAAe,SLrEC,CKqES,MLrET,GKqEkB,YLrElB,EAAA,GAAA,KAAA,GAAA,SAAA,CAAA;AAAiB,UKuE5B,aAAA,CLvE4B;EAAgB;;AAE7D;AAcA;;EACoC,OAAA,CAAA,EK4DxB,SL5DwB;;AAIzB,UK2DM,WAAA,CL3DN;EAHD,WAAA,EAAA,MAAA;EAAc,UAAA,EAAA,MAAA;EAMP,MAAA,EAAA,MAAA;EACA,OAAA,CAAA,EK2DL,YL3DK,EAAA;EAAmB;;;EAKrB,SAAA,CAAA,EAAA;IAAkC,MAAA,EK4DrC,IL5DqC;IAA6B,IAAA,EAAA,MAAA;IAAR,GAAA,EAAA,MAAA;EAY1C,CAAA;;AAhBlB,UKsEO,WAAA,CLtEP;EAAc;AAmBxB;;EACuC,YAAA,CAAA,EAAA,CAAA,MAAA,EKsDb,MLtDa,EAAA,GAAA,OAAA;EAClB;;;EAKb,eAAA,CAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,GAAA,OAAA;EACe;;;EAGN,KAAA,CAAA,EAAA,OAAY;;AAMd,UKmDE,UAAA,CLnDF;EAAkC,OAAA,EKoDtC,SLpDsC,EAAA;EAAR,UAAA,EKqD3B,MLrD2B,CAAA,MAAA,EKqDZ,SLrDY,EAAA,CAAA;;AAE1B,cKsDF,SLtDE,EAAA;EAAM,UAAA,EAAA,MAAA;EAgBL,MAAA,EAAA,MAAA;CAAiC;AAAmB,iBKuDpD,UAAA,CLvDoD,OAAA,EKuDhC,WLvDgC,CAAA,EAAA;EAC3C;;;EACtB,KAAA,KAAA,CAAA,MAAA,EAAA,OAAA,CAAA;EAAa,IAAA,CAAA;IAAA,MAAA;EACiC,CADjC,EAAA;IACA,MAAA,EKgFgC,SLhFf,CKgFyB,YLhFzB,CAAA;EAAgB,CAAA,CAAA,EKgFwB,OLhFxB,CAAA,IAAA,CAAA;EAAmB,aAAA,EAAA,KAAA,CAAA,MAAA,EAAA,UAAA,GAAA,CAAA;EAC1C,UAAA,EAAA,aAAA;EAAf,SAAA,EAAA,EKmHM,YLnHN;EACO;;;EAQF,qBAAU,EAAA,EAAA,MAAA;EACN,UAAA,EAAA,QAAA,EAAA;EAA0B,cAAA,EAAA,EKqHxB,cLrHwB,EAAA;EACzB,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EKuHY,cLvHZ,GAAA,SAAA;EAA0B,gBAAA,EAAA,EK0HvB,aL1HuB;EASnB,UAAA,CAAA,MAAA,EKsHC,aLtHD,CAAA,EKsHiB,OLtHjB,CAAA,IAAA,CAAA;EAAd,IAAA,CAAA,WAAA,CAAA,EK+Hc,WL/Hd,CAAA,EK+HiC,OL/HjC,CK+HyC,UL/HzC,CAAA;EAAL,aAAA,CAAA,OAAA,EKgLM,gBLhLN,CKgLuB,kBLhLvB,CAAA,EAAA,IAAA,EAAA,OAAA,CAAA,EKkLF,OLlLE,CAAA,OAAA,CAAA;EACoB,oBAAA,CAAA,OAAA,EK+Ld,gBL/Lc,CK+LG,iBL/LH,CAAA,EAAA,IAAA,EKgMjB,MLhMiB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EKiMtB,OLjMsB,CKiMd,MLjMc,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;EAAf,cAAA,CAAA,OAAA,EK+MC,gBL/MD,CK+MkB,iBL/MlB,CAAA,EAAA,IAAA,EKgNF,KLhNE,CAAA,EKiNP,OLjNO,CKiNC,KLjND,CAAA;CAAL;AACU,KKyQP,IAAA,GAAO,ULzQA,CAAA,OKyQkB,ULzQlB,CAAA"}
@@ -0,0 +1,212 @@
1
+ import { n as ident } from "./codegen-DleOVLNr.js";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+
5
+ //#region src/utils/validation.ts
6
+ var ValidationError = class extends Error {
7
+ constructor(message, issues) {
8
+ super(`${message}:\n${issues.map((issue) => ` ${issue.path}: ${issue.message}`).join("\n")}`);
9
+ this.title = message;
10
+ this.issues = issues;
11
+ }
12
+ async toStringFormatted() {
13
+ const picocolorsModule = await import("picocolors");
14
+ const picocolors = picocolorsModule.default ?? picocolorsModule;
15
+ return [picocolors.bold(`[MDX] ${this.title}:`), ...this.issues.map((issue) => picocolors.redBright(`- ${picocolors.bold(issue.path?.join(".") ?? "*")}: ${issue.message}`))].join("\n");
16
+ }
17
+ };
18
+ async function validate(schema, data, context, errorMessage) {
19
+ if (typeof schema === "function" && !("~standard" in schema)) schema = schema(context);
20
+ if ("~standard" in schema) {
21
+ const result = await schema["~standard"].validate(data);
22
+ if (result.issues) throw new ValidationError(errorMessage, result.issues);
23
+ return result.value;
24
+ }
25
+ return data;
26
+ }
27
+
28
+ //#endregion
29
+ //#region src/core.ts
30
+ const _Defaults = {
31
+ configPath: "source.config.ts",
32
+ outDir: ".source"
33
+ };
34
+ async function getPlugins(pluginOptions) {
35
+ const plugins = [];
36
+ for await (const option of pluginOptions) {
37
+ if (!option) continue;
38
+ if (Array.isArray(option)) plugins.push(...await getPlugins(option));
39
+ else plugins.push(option);
40
+ }
41
+ return plugins;
42
+ }
43
+ function createCore(options) {
44
+ let config;
45
+ let plugins;
46
+ const workspaces = /* @__PURE__ */ new Map();
47
+ async function transformMetadata({ collection, filePath, source }, data) {
48
+ if (collection.schema) data = await validate(collection.schema, data, {
49
+ path: filePath,
50
+ source
51
+ }, collection.type === "doc" ? `invalid frontmatter in ${filePath}` : `invalid data in ${filePath}`);
52
+ return data;
53
+ }
54
+ return {
55
+ cache: /* @__PURE__ */ new Map(),
56
+ async init({ config: newConfig }) {
57
+ config = await newConfig;
58
+ this.cache.clear();
59
+ workspaces.clear();
60
+ plugins = await getPlugins([
61
+ postprocessPlugin(),
62
+ options.plugins,
63
+ config.global.plugins
64
+ ]);
65
+ for (const plugin of plugins) {
66
+ const out = await plugin.config?.call(this.getPluginContext(), config);
67
+ if (out) config = out;
68
+ }
69
+ if (!options.workspace) await Promise.all(Object.entries(config.workspaces).map(async ([name, workspace]) => {
70
+ const core = createCore({
71
+ ...options,
72
+ outDir: path.join(options.outDir, name),
73
+ workspace: {
74
+ name,
75
+ parent: this,
76
+ dir: workspace.dir
77
+ }
78
+ });
79
+ await core.init({ config: workspace.config });
80
+ workspaces.set(name, core);
81
+ }));
82
+ },
83
+ getWorkspaces() {
84
+ return workspaces;
85
+ },
86
+ getOptions() {
87
+ return options;
88
+ },
89
+ getConfig() {
90
+ return config;
91
+ },
92
+ getCompiledConfigPath() {
93
+ return path.join(options.outDir, "source.config.mjs");
94
+ },
95
+ getPlugins() {
96
+ return plugins;
97
+ },
98
+ getCollections() {
99
+ return Array.from(config.collections.values());
100
+ },
101
+ getCollection(name) {
102
+ return config.collections.get(name);
103
+ },
104
+ getPluginContext() {
105
+ return { core: this };
106
+ },
107
+ async initServer(server) {
108
+ const ctx = this.getPluginContext();
109
+ for (const plugin of plugins) await plugin.configureServer?.call(ctx, server);
110
+ for (const workspace of workspaces.values()) await workspace.initServer(server);
111
+ },
112
+ async emit(emitOptions = {}) {
113
+ const { filterPlugin, filterWorkspace, write = false } = emitOptions;
114
+ const start = performance.now();
115
+ const ctx = this.getPluginContext();
116
+ const added = /* @__PURE__ */ new Set();
117
+ const out = {
118
+ entries: [],
119
+ workspaces: {}
120
+ };
121
+ for (const li of await Promise.all(plugins.map((plugin) => {
122
+ if (filterPlugin && !filterPlugin(plugin) || !plugin.emit) return;
123
+ return plugin.emit.call(ctx);
124
+ }))) {
125
+ if (!li) continue;
126
+ for (const item of li) {
127
+ if (added.has(item.path)) continue;
128
+ out.entries.push(item);
129
+ added.add(item.path);
130
+ }
131
+ }
132
+ if (write) {
133
+ await Promise.all(out.entries.map(async (entry) => {
134
+ const file = path.join(options.outDir, entry.path);
135
+ await fs.mkdir(path.dirname(file), { recursive: true });
136
+ await fs.writeFile(file, entry.content);
137
+ }));
138
+ console.log(options.workspace ? `[MDX: ${options.workspace.name}] generated files in ${performance.now() - start}ms` : `[MDX] generated files in ${performance.now() - start}ms`);
139
+ }
140
+ for (const [name, workspace] of workspaces) {
141
+ if (filterWorkspace && !filterWorkspace(name)) continue;
142
+ out.workspaces[name] = (await workspace.emit(emitOptions)).entries;
143
+ }
144
+ return out;
145
+ },
146
+ async transformMeta(options$1, data) {
147
+ const ctx = {
148
+ ...this.getPluginContext(),
149
+ ...options$1
150
+ };
151
+ data = await transformMetadata(options$1, data);
152
+ for (const plugin of plugins) if (plugin.meta?.transform) data = await plugin.meta.transform.call(ctx, data) ?? data;
153
+ return data;
154
+ },
155
+ async transformFrontmatter(options$1, data) {
156
+ const ctx = {
157
+ ...this.getPluginContext(),
158
+ ...options$1
159
+ };
160
+ data = await transformMetadata(options$1, data);
161
+ for (const plugin of plugins) if (plugin.doc?.frontmatter) data = await plugin.doc.frontmatter.call(ctx, data) ?? data;
162
+ return data;
163
+ },
164
+ async transformVFile(options$1, file) {
165
+ const ctx = {
166
+ ...this.getPluginContext(),
167
+ ...options$1
168
+ };
169
+ for (const plugin of plugins) if (plugin.doc?.vfile) file = await plugin.doc.vfile.call(ctx, file) ?? file;
170
+ return file;
171
+ }
172
+ };
173
+ }
174
+ function postprocessPlugin() {
175
+ const LinkReferenceTypes = `{
176
+ /**
177
+ * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.
178
+ */
179
+ extractedReferences: import("fumadocs-mdx").ExtractedReference[];
180
+ }`;
181
+ return { "index-file": {
182
+ generateTypeConfig() {
183
+ const lines = [];
184
+ lines.push("{");
185
+ lines.push(" DocData: {");
186
+ for (const collection of this.core.getCollections()) {
187
+ let postprocessOptions;
188
+ switch (collection.type) {
189
+ case "doc":
190
+ postprocessOptions = collection.postprocess;
191
+ break;
192
+ case "docs":
193
+ postprocessOptions = collection.docs.postprocess;
194
+ break;
195
+ }
196
+ if (postprocessOptions?.extractLinkReferences) lines.push(ident(`${collection.name}: ${LinkReferenceTypes},`, 2));
197
+ }
198
+ lines.push(" }");
199
+ lines.push("}");
200
+ return lines.join("\n");
201
+ },
202
+ serverOptions(options) {
203
+ options.doc ??= {};
204
+ options.doc.passthroughs ??= [];
205
+ options.doc.passthroughs.push("extractedReferences");
206
+ }
207
+ } };
208
+ }
209
+
210
+ //#endregion
211
+ export { createCore as n, ValidationError as r, _Defaults as t };
212
+ //# sourceMappingURL=core-DjldE3H9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-DjldE3H9.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: '.source',\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(\"fumadocs-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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"}
@@ -0,0 +1,27 @@
1
+ import { load } from "js-yaml";
2
+
3
+ //#region src/utils/fuma-matter.ts
4
+ /**
5
+ * Inspired by https://github.com/jonschlinkert/gray-matter
6
+ */
7
+ const regex = /^---\r?\n(.+?)\r?\n---\r?\n?/s;
8
+ /**
9
+ * parse frontmatter, it supports only yaml format
10
+ */
11
+ function fumaMatter(input) {
12
+ const output = {
13
+ matter: "",
14
+ data: {},
15
+ content: input
16
+ };
17
+ const match = regex.exec(input);
18
+ if (!match) return output;
19
+ output.matter = match[0];
20
+ output.content = input.slice(match[0].length);
21
+ output.data = load(match[1]) ?? {};
22
+ return output;
23
+ }
24
+
25
+ //#endregion
26
+ export { fumaMatter as t };
27
+ //# sourceMappingURL=fuma-matter-CHgJa_-B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuma-matter-CHgJa_-B.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"}