fumadocs-core 15.5.0 → 15.5.2

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 (43) hide show
  1. package/dist/{algolia-RQ5VQJAB.js → algolia-NXNLN7TR.js} +1 -3
  2. package/dist/breadcrumb.js +0 -2
  3. package/dist/{chunk-XMCPKVJQ.js → chunk-3JSIVMCJ.js} +3 -4
  4. package/dist/{chunk-NNKVN7WA.js → chunk-5SU2O5AS.js} +1 -1
  5. package/dist/chunk-7GNSIKII.js +47 -0
  6. package/dist/{chunk-FVY6EZ3N.js → chunk-BBP7MIO4.js} +12 -14
  7. package/dist/content/index.js +0 -2
  8. package/dist/dynamic-link.js +2 -3
  9. package/dist/{fetch-W5EHIBOE.js → fetch-ZSD7GUCX.js} +2 -4
  10. package/dist/framework/index.d.ts +1 -1
  11. package/dist/framework/index.js +1 -2
  12. package/dist/framework/next.js +1 -2
  13. package/dist/framework/react-router.js +1 -2
  14. package/dist/framework/tanstack.js +1 -2
  15. package/dist/hide-if-empty.d.ts +14 -0
  16. package/dist/hide-if-empty.js +63 -0
  17. package/dist/highlight/client.js +0 -1
  18. package/dist/highlight/index.js +0 -1
  19. package/dist/i18n/index.d.ts +32 -2
  20. package/dist/i18n/index.js +0 -2
  21. package/dist/link.js +2 -3
  22. package/dist/mdx-plugins/index.js +1 -2
  23. package/dist/{orama-cloud-USLSOSXS.js → orama-cloud-I4WBDIAI.js} +2 -3
  24. package/dist/search/algolia.js +0 -2
  25. package/dist/search/client.d.ts +70 -7
  26. package/dist/search/client.js +20 -13
  27. package/dist/search/orama-cloud.js +0 -2
  28. package/dist/search/server.d.ts +2 -1
  29. package/dist/search/server.js +5 -2
  30. package/dist/server/index.d.ts +2 -1
  31. package/dist/server/index.js +0 -1
  32. package/dist/sidebar.js +0 -1
  33. package/dist/source/index.d.ts +96 -96
  34. package/dist/source/index.js +214 -224
  35. package/dist/static-QTPM5MZT.js +60 -0
  36. package/dist/toc.js +0 -1
  37. package/dist/utils/use-effect-event.js +0 -1
  38. package/dist/utils/use-media-query.js +0 -1
  39. package/dist/utils/use-on-change.js +0 -1
  40. package/package.json +21 -13
  41. package/dist/chunk-MLKGABMK.js +0 -9
  42. package/dist/config-Cm58P4fz.d.ts +0 -32
  43. package/dist/static-VESU2S64.js +0 -61
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  remarkHeading
3
3
  } from "../chunk-Y2774T3B.js";
4
- import "../chunk-MLKGABMK.js";
5
4
 
6
5
  // src/server/get-toc.ts
7
6
  import { remark } from "remark";
package/dist/sidebar.js CHANGED
@@ -2,7 +2,6 @@
2
2
  import {
3
3
  useMediaQuery
4
4
  } from "./chunk-EP5LHGDZ.js";
5
- import "./chunk-MLKGABMK.js";
6
5
 
7
6
  // src/sidebar.tsx
8
7
  import {
@@ -1,6 +1,47 @@
1
1
  import { ReactElement } from 'react';
2
- import { I as I18nConfig } from '../config-Cm58P4fz.js';
3
- import { R as Root, I as Item, F as Folder$1, S as Separator } from '../page-tree-bSt6K__E.js';
2
+ import { I18nConfig } from '../i18n/index.js';
3
+ import { R as Root, I as Item, F as Folder, S as Separator } from '../page-tree-bSt6K__E.js';
4
+ import 'next/dist/server/web/types';
5
+
6
+ /**
7
+ * In memory file system.
8
+ */
9
+ declare class FileSystem<File> {
10
+ files: Map<string, File>;
11
+ folders: Map<string, string[]>;
12
+ constructor();
13
+ read(path: string): File | undefined;
14
+ /**
15
+ * get the direct children of folder (in virtual file path)
16
+ */
17
+ readDir(path: string): string[] | undefined;
18
+ write(path: string, file: File): void;
19
+ getFiles(): string[];
20
+ makeDir(path: string): void;
21
+ }
22
+
23
+ interface LoadOptions {
24
+ transformers?: Transformer[];
25
+ }
26
+ type ContentStorage = FileSystem<MetaFile | PageFile>;
27
+ interface MetaFile<Data extends MetaData = MetaData> {
28
+ path: string;
29
+ absolutePath: string;
30
+ format: 'meta';
31
+ data: Data;
32
+ }
33
+ interface PageFile<Data extends PageData = PageData> {
34
+ path: string;
35
+ absolutePath: string;
36
+ format: 'page';
37
+ slugs: string[];
38
+ data: Data;
39
+ }
40
+ type Transformer = (context: {
41
+ storage: ContentStorage;
42
+ options: LoadOptions;
43
+ }) => void;
44
+ declare function loadFiles(files: VirtualFile[], buildFile: (file: VirtualFile) => MetaFile | PageFile, options: LoadOptions): ContentStorage;
4
45
 
5
46
  interface FileInfo {
6
47
  /**
@@ -37,32 +78,11 @@ interface FolderInfo {
37
78
  dirname: string;
38
79
  }
39
80
  declare function parseFilePath(path: string): FileInfo;
81
+ /**
82
+ * @deprecated use `dirname` and `basename` directly.
83
+ */
40
84
  declare function parseFolderPath(path: string): FolderInfo;
41
85
 
42
- interface LoadOptions {
43
- transformers?: Transformer[];
44
- getSlugs: (info: FileInfo) => string[];
45
- }
46
- interface VirtualFile {
47
- /**
48
- * Relative path
49
- *
50
- * @example `docs/page.mdx`
51
- */
52
- path: string;
53
- type: 'page' | 'meta';
54
- /**
55
- * Specified Slugs for page
56
- */
57
- slugs?: string[];
58
- data: unknown;
59
- }
60
- type Transformer = (context: {
61
- storage: Storage;
62
- options: LoadOptions;
63
- }) => void;
64
- declare function loadFiles<O extends LoadOptions>(files: VirtualFile[], options: O): Storage;
65
-
66
86
  interface LoaderConfig {
67
87
  source: SourceConfig;
68
88
  i18n: boolean;
@@ -73,15 +93,15 @@ interface SourceConfig {
73
93
  }
74
94
  interface LoaderOptions<T extends SourceConfig = SourceConfig, I18n extends I18nConfig | undefined = I18nConfig | undefined> {
75
95
  baseUrl: string;
76
- icon?: NonNullable<BaseOptions['resolveIcon']>;
77
- slugs?: LoadOptions['getSlugs'];
96
+ icon?: NonNullable<BuildPageTreeOptions['resolveIcon']>;
97
+ slugs?: (info: FileInfo) => string[];
78
98
  url?: UrlFn;
79
99
  source: Source<T>;
80
100
  transformers?: Transformer[];
81
101
  /**
82
102
  * Additional options for page tree builder
83
103
  */
84
- pageTree?: Partial<BaseOptions<T['pageData'], T['metaData']>>;
104
+ pageTree?: Partial<Omit<BuildPageTreeOptions<T['pageData'], T['metaData']>, 'storage'>>;
85
105
  /**
86
106
  * Configure i18n
87
107
  */
@@ -94,21 +114,49 @@ interface Source<Config extends SourceConfig> {
94
114
  _config?: Config;
95
115
  files: VirtualFile[] | (() => VirtualFile[]);
96
116
  }
97
- interface Page<Data = PageData> {
117
+ interface SharedFileInfo {
98
118
  /**
99
- * Virtualized file path
119
+ * Virtualized file path (parsed)
120
+ *
121
+ * @deprecated Use `path` instead.
100
122
  */
101
123
  file: FileInfo;
124
+ /**
125
+ * Virtualized file path (relative to content directory)
126
+ *
127
+ * @example `docs/page.mdx`
128
+ */
129
+ path: string;
130
+ /**
131
+ * Absolute path of the file
132
+ */
133
+ absolutePath: string;
134
+ }
135
+ interface VirtualFile {
136
+ /**
137
+ * Virtualized path (relative to content directory)
138
+ *
139
+ * @example `docs/page.mdx`
140
+ */
141
+ path: string;
142
+ /**
143
+ * Absolute path of the file
144
+ */
145
+ absolutePath?: string;
146
+ type: 'page' | 'meta';
147
+ /**
148
+ * Specified Slugs for page
149
+ */
150
+ slugs?: string[];
151
+ data: unknown;
152
+ }
153
+ interface Page<Data = PageData> extends SharedFileInfo {
102
154
  slugs: string[];
103
155
  url: string;
104
156
  data: Data;
105
157
  locale?: string | undefined;
106
158
  }
107
- interface Meta<Data = MetaData> {
108
- /**
109
- * Virtualized file path
110
- */
111
- file: FileInfo;
159
+ interface Meta<Data = MetaData> extends SharedFileInfo {
112
160
  data: Data;
113
161
  }
114
162
  interface LanguageEntry<Data = PageData> {
@@ -143,7 +191,7 @@ interface LoaderOutput<Config extends LoaderConfig> {
143
191
  */
144
192
  getPage: (slugs: string[] | undefined, language?: string) => Page<Config['source']['pageData']> | undefined;
145
193
  getNodePage: (node: Item, language?: string) => Page<Config['source']['pageData']> | undefined;
146
- getNodeMeta: (node: Folder$1, language?: string) => Meta<Config['source']['metaData']> | undefined;
194
+ getNodeMeta: (node: Folder, language?: string) => Meta<Config['source']['metaData']> | undefined;
147
195
  /**
148
196
  * generate static params for Next.js SSG
149
197
  *
@@ -153,6 +201,9 @@ interface LoaderOutput<Config extends LoaderConfig> {
153
201
  generateParams: <TSlug extends string = 'slug', TLang extends string = 'lang'>(slug?: TSlug, lang?: TLang) => (Record<TSlug, string[]> & Record<TLang, string>)[];
154
202
  }
155
203
  declare function createGetUrl(baseUrl: string, i18n?: I18nConfig): UrlFn;
204
+ /**
205
+ * Convert file path into slugs, also encode non-ASCII characters, so they can work in pathname
206
+ */
156
207
  declare function getSlugs(info: FileInfo): string[];
157
208
  declare function loader<Config extends SourceConfig, I18n extends I18nConfig | undefined = undefined>(options: LoaderOptions<Config, I18n>): LoaderOutput<{
158
209
  source: Config;
@@ -179,59 +230,6 @@ type InferMetaType<Utils extends LoaderOutput<any>> = Utils extends LoaderOutput
179
230
  */
180
231
  type UrlFn = (slugs: string[], locale?: string) => string;
181
232
 
182
- interface MetaFile<Data extends MetaData = MetaData> {
183
- file: FileInfo;
184
- format: 'meta';
185
- data: Data;
186
- }
187
- interface PageFile<Data extends PageData = PageData> {
188
- file: FileInfo;
189
- format: 'page';
190
- data: {
191
- slugs: string[];
192
- data: Data;
193
- };
194
- }
195
- type File = MetaFile | PageFile;
196
- interface Folder<Page extends PageData = PageData, Meta extends MetaData = MetaData> {
197
- file: FolderInfo;
198
- children: (MetaFile<Meta> | PageFile<Page> | Folder<Page, Meta>)[];
199
- }
200
- /**
201
- * A virtual file system that solves inconsistent behaviours
202
- *
203
- * Some source providers may not provide the full file structure, this will cause inconsistent outputs for page builder and other transformers
204
- */
205
- declare class Storage {
206
- files: Map<string, File>;
207
- folders: Map<string, Folder<PageData, MetaData>>;
208
- private rootFolder;
209
- constructor();
210
- /**
211
- * @param path - flattened path
212
- * @param format - file format
213
- */
214
- read<F extends File['format']>(path: string, format: F): Extract<File, {
215
- format: F;
216
- }> | undefined;
217
- readDir(path: string): Folder | undefined;
218
- root(): Folder;
219
- write<F extends File['format']>(path: string, format: F, data: Extract<File, {
220
- format: F;
221
- }>['data']): void;
222
- list(): File[];
223
- makeDir(path: string): void;
224
- }
225
-
226
- type fileSystem_Folder<Page extends PageData = PageData, Meta extends MetaData = MetaData> = Folder<Page, Meta>;
227
- type fileSystem_MetaFile<Data extends MetaData = MetaData> = MetaFile<Data>;
228
- type fileSystem_PageFile<Data extends PageData = PageData> = PageFile<Data>;
229
- type fileSystem_Storage = Storage;
230
- declare const fileSystem_Storage: typeof Storage;
231
- declare namespace fileSystem {
232
- export { type fileSystem_Folder as Folder, type fileSystem_MetaFile as MetaFile, type fileSystem_PageFile as PageFile, fileSystem_Storage as Storage };
233
- }
234
-
235
233
  interface BaseOptions<Page extends PageData = PageData, Meta extends MetaData = MetaData> {
236
234
  /**
237
235
  * Remove references to the file path of original nodes (`$ref`)
@@ -240,15 +238,17 @@ interface BaseOptions<Page extends PageData = PageData, Meta extends MetaData =
240
238
  */
241
239
  noRef?: boolean;
242
240
  attachFile?: (node: Item, file?: PageFile<Page>) => Item;
243
- attachFolder?: (node: Folder$1, folder: Folder<Page, Meta>, meta?: MetaFile<Meta>) => Folder$1;
241
+ attachFolder?: (node: Folder, folder: {
242
+ children: (PageFile<Page> | MetaFile<Meta>)[];
243
+ }, meta?: MetaFile<Meta>) => Folder;
244
244
  attachSeparator?: (node: Separator) => Separator;
245
245
  resolveIcon?: (icon: string | undefined) => ReactElement | undefined;
246
246
  }
247
- interface BuildPageTreeOptions extends BaseOptions {
248
- storage: Storage;
247
+ interface BuildPageTreeOptions<Page extends PageData = PageData, Meta extends MetaData = MetaData> extends BaseOptions<Page, Meta> {
248
+ storage: ContentStorage;
249
249
  }
250
- interface BuildPageTreeOptionsWithI18n extends BaseOptions {
251
- storages: Record<string, Storage>;
250
+ interface BuildPageTreeOptionsWithI18n<Page extends PageData = PageData, Meta extends MetaData = MetaData> extends BaseOptions<Page, Meta> {
251
+ storages: Record<string, ContentStorage>;
252
252
  i18n: I18nConfig;
253
253
  }
254
254
  interface PageTreeBuilder {
@@ -260,4 +260,4 @@ interface PageTreeBuilder {
260
260
  }
261
261
  declare function createPageTreeBuilder(getUrl: UrlFn): PageTreeBuilder;
262
262
 
263
- export { type BaseOptions, type BuildPageTreeOptions, type BuildPageTreeOptionsWithI18n, type FileInfo, fileSystem as FileSystem, type FolderInfo, type InferMetaType, type InferPageType, type LanguageEntry, type LoadOptions, type LoaderConfig, type LoaderOptions, type LoaderOutput, type Meta, type MetaData, type Page, type PageData, type PageTreeBuilder, type Source, type SourceConfig, type Transformer, type UrlFn, type VirtualFile, createGetUrl, createPageTreeBuilder, getSlugs, loadFiles, loader, parseFilePath, parseFolderPath };
263
+ export { type BuildPageTreeOptions, type BuildPageTreeOptionsWithI18n, type ContentStorage, type FileInfo, FileSystem, type FolderInfo, type InferMetaType, type InferPageType, type LanguageEntry, type LoadOptions, type LoaderConfig, type LoaderOptions, type LoaderOutput, type Meta, type MetaData, type MetaFile, type Page, type PageData, type PageFile, type PageTreeBuilder, type Source, type SourceConfig, type Transformer, type UrlFn, type VirtualFile, createGetUrl, createPageTreeBuilder, getSlugs, loadFiles, loader, parseFilePath, parseFolderPath };