fumadocs-core 15.6.11 → 15.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breadcrumb.d.ts +1 -1
- package/dist/chunk-HUTQC33E.js +8 -0
- package/dist/chunk-KLUGJRZC.js +72 -0
- package/dist/{chunk-3NX26V7I.js → chunk-NJLFLPV4.js} +0 -2
- package/dist/{page-tree-bSt6K__E.d.ts → definitions-Q95-psoo.d.ts} +16 -12
- package/dist/highlight/client.d.ts +6 -1
- package/dist/highlight/client.js +14 -74
- package/dist/highlight/index.js +1 -1
- package/dist/i18n/index.d.ts +5 -14
- package/dist/i18n/index.js +4 -70
- package/dist/i18n/index.server.d.ts +3 -0
- package/dist/i18n/index.server.js +11 -0
- package/dist/i18n/middleware.d.ts +12 -0
- package/dist/i18n/middleware.js +7 -0
- package/dist/mdx-plugins/index.js +1 -1
- package/dist/search/server.d.ts +15 -14
- package/dist/search/server.js +47 -22
- package/dist/server/index.d.ts +5 -4
- package/dist/server/index.js +23 -22
- package/dist/source/index.d.ts +80 -27
- package/dist/source/index.js +271 -185
- package/dist/utils/use-effect-event.js +1 -1
- package/package.json +17 -12
package/dist/server/index.js
CHANGED
|
@@ -18,30 +18,30 @@ function getTableOfContents(content, remarkPlugins) {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
// src/utils/page-tree.tsx
|
|
21
|
-
function flattenTree(
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
function flattenTree(nodes) {
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const node of nodes) {
|
|
24
24
|
if (node.type === "folder") {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
if (node.index) out.push(node.index);
|
|
26
|
+
out.push(...flattenTree(node.children));
|
|
27
|
+
} else if (node.type === "page") {
|
|
28
|
+
out.push(node);
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
31
32
|
}
|
|
32
33
|
function findNeighbour(tree, url, options) {
|
|
33
34
|
const { separateRoot = true } = options ?? {};
|
|
34
35
|
const roots = separateRoot ? getPageTreeRoots(tree) : [tree];
|
|
36
|
+
if (tree.fallback) roots.push(tree.fallback);
|
|
35
37
|
for (const root of roots) {
|
|
36
38
|
const list = flattenTree(root.children);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
}
|
|
39
|
+
const idx = list.findIndex((item) => item.url === url);
|
|
40
|
+
if (idx === -1) continue;
|
|
41
|
+
return {
|
|
42
|
+
previous: list[idx - 1],
|
|
43
|
+
next: list[idx + 1]
|
|
44
|
+
};
|
|
45
45
|
}
|
|
46
46
|
return {};
|
|
47
47
|
}
|
|
@@ -49,9 +49,7 @@ function getPageTreeRoots(pageTree) {
|
|
|
49
49
|
const result = pageTree.children.flatMap((child) => {
|
|
50
50
|
if (child.type !== "folder") return [];
|
|
51
51
|
const roots = getPageTreeRoots(child);
|
|
52
|
-
if (child.root)
|
|
53
|
-
roots.push(child);
|
|
54
|
-
}
|
|
52
|
+
if (child.root) roots.push(child);
|
|
55
53
|
return roots;
|
|
56
54
|
});
|
|
57
55
|
if (!("type" in pageTree)) result.push(pageTree);
|
|
@@ -87,10 +85,13 @@ function findParentFromTree(node, url) {
|
|
|
87
85
|
return node;
|
|
88
86
|
}
|
|
89
87
|
}
|
|
88
|
+
if ("fallback" in node && node.fallback) {
|
|
89
|
+
return findParentFromTree(node.fallback, url);
|
|
90
|
+
}
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
// src/
|
|
93
|
-
var
|
|
93
|
+
// src/source/page-tree/definitions.ts
|
|
94
|
+
var definitions_exports = {};
|
|
94
95
|
|
|
95
96
|
// src/server/git-api.ts
|
|
96
97
|
async function getGithubLastEdit({
|
|
@@ -190,7 +191,7 @@ function createMetadataImage(options) {
|
|
|
190
191
|
};
|
|
191
192
|
}
|
|
192
193
|
export {
|
|
193
|
-
|
|
194
|
+
definitions_exports as PageTree,
|
|
194
195
|
createMetadataImage,
|
|
195
196
|
findNeighbour,
|
|
196
197
|
flattenTree,
|
package/dist/source/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { R as Root, I as Item, F as Folder, S as Separator } from '../definitions-Q95-psoo.js';
|
|
2
3
|
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
4
|
|
|
6
5
|
/**
|
|
7
6
|
* In memory file system.
|
|
@@ -9,22 +8,24 @@ import 'next/dist/server/web/types';
|
|
|
9
8
|
declare class FileSystem<File> {
|
|
10
9
|
files: Map<string, File>;
|
|
11
10
|
folders: Map<string, string[]>;
|
|
12
|
-
constructor();
|
|
11
|
+
constructor(inherit?: FileSystem<File>);
|
|
13
12
|
read(path: string): File | undefined;
|
|
14
13
|
/**
|
|
15
14
|
* get the direct children of folder (in virtual file path)
|
|
16
15
|
*/
|
|
17
16
|
readDir(path: string): string[] | undefined;
|
|
18
17
|
write(path: string, file: File): void;
|
|
18
|
+
delete(path: string): boolean;
|
|
19
|
+
deleteDir(path: string): boolean;
|
|
19
20
|
getFiles(): string[];
|
|
20
21
|
makeDir(path: string): void;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
interface LoadOptions {
|
|
24
25
|
transformers?: Transformer[];
|
|
25
|
-
|
|
26
|
+
buildFile: (file: VirtualFile) => MetaFile | PageFile;
|
|
26
27
|
}
|
|
27
|
-
type ContentStorage = FileSystem<MetaFile | PageFile
|
|
28
|
+
type ContentStorage<Page extends PageData = PageData, Meta extends MetaData = MetaData> = FileSystem<MetaFile<Meta> | PageFile<Page>>;
|
|
28
29
|
interface MetaFile<Data extends MetaData = MetaData> {
|
|
29
30
|
path: string;
|
|
30
31
|
absolutePath: string;
|
|
@@ -42,7 +43,21 @@ type Transformer = (context: {
|
|
|
42
43
|
storage: ContentStorage;
|
|
43
44
|
options: LoadOptions;
|
|
44
45
|
}) => void;
|
|
45
|
-
declare
|
|
46
|
+
declare const parsers: {
|
|
47
|
+
dir(path: string): [string, string?];
|
|
48
|
+
dot(path: string): [string, string?];
|
|
49
|
+
none(path: string): [string, string?];
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* @returns a map of locale and its content storage.
|
|
53
|
+
*
|
|
54
|
+
* in the storage, locale codes are removed from file paths, hence the same file will have same file paths in every storage.
|
|
55
|
+
*/
|
|
56
|
+
declare function loadFiles(files: VirtualFile[], options: LoadOptions, i18n: {
|
|
57
|
+
parser: keyof typeof parsers;
|
|
58
|
+
languages: string[];
|
|
59
|
+
defaultLanguage: string;
|
|
60
|
+
}): Record<string, ContentStorage>;
|
|
46
61
|
|
|
47
62
|
interface FileInfo {
|
|
48
63
|
/**
|
|
@@ -86,7 +101,7 @@ declare function parseFolderPath(path: string): FolderInfo;
|
|
|
86
101
|
|
|
87
102
|
interface LoaderConfig {
|
|
88
103
|
source: SourceConfig;
|
|
89
|
-
i18n:
|
|
104
|
+
i18n: I18nConfig | undefined;
|
|
90
105
|
}
|
|
91
106
|
interface SourceConfig {
|
|
92
107
|
pageData: PageData;
|
|
@@ -94,7 +109,7 @@ interface SourceConfig {
|
|
|
94
109
|
}
|
|
95
110
|
interface LoaderOptions<T extends SourceConfig = SourceConfig, I18n extends I18nConfig | undefined = I18nConfig | undefined> {
|
|
96
111
|
baseUrl: string;
|
|
97
|
-
icon?: NonNullable<
|
|
112
|
+
icon?: NonNullable<BaseOptions['resolveIcon']>;
|
|
98
113
|
slugs?: (info: FileInfo) => string[];
|
|
99
114
|
url?: UrlFn;
|
|
100
115
|
source: Source<T>;
|
|
@@ -102,7 +117,7 @@ interface LoaderOptions<T extends SourceConfig = SourceConfig, I18n extends I18n
|
|
|
102
117
|
/**
|
|
103
118
|
* Additional options for page tree builder
|
|
104
119
|
*/
|
|
105
|
-
pageTree?: Partial<
|
|
120
|
+
pageTree?: Partial<BaseOptions<T['pageData'], T['metaData']>>;
|
|
106
121
|
/**
|
|
107
122
|
* Configure i18n
|
|
108
123
|
*/
|
|
@@ -165,7 +180,7 @@ interface LanguageEntry<Data = PageData> {
|
|
|
165
180
|
pages: Page<Data>[];
|
|
166
181
|
}
|
|
167
182
|
interface LoaderOutput<Config extends LoaderConfig> {
|
|
168
|
-
pageTree: Config['i18n'] extends
|
|
183
|
+
pageTree: Config['i18n'] extends I18nConfig ? Record<string, Root> : Root;
|
|
169
184
|
getPageTree: (locale?: string) => Root;
|
|
170
185
|
getPageByHref: (href: string, options?: {
|
|
171
186
|
language?: string;
|
|
@@ -204,7 +219,7 @@ interface LoaderOutput<Config extends LoaderConfig> {
|
|
|
204
219
|
declare function createGetUrl(baseUrl: string, i18n?: I18nConfig): UrlFn;
|
|
205
220
|
declare function loader<Config extends SourceConfig, I18n extends I18nConfig | undefined = undefined>(options: LoaderOptions<Config, I18n>): LoaderOutput<{
|
|
206
221
|
source: Config;
|
|
207
|
-
i18n: I18n
|
|
222
|
+
i18n: I18n;
|
|
208
223
|
}>;
|
|
209
224
|
/**
|
|
210
225
|
* Convert file path into slugs, also encode non-ASCII characters, so they can work in pathname
|
|
@@ -231,34 +246,72 @@ type InferMetaType<Utils extends LoaderOutput<any>> = Utils extends LoaderOutput
|
|
|
231
246
|
*/
|
|
232
247
|
type UrlFn = (slugs: string[], locale?: string) => string;
|
|
233
248
|
|
|
234
|
-
interface
|
|
249
|
+
interface LegacyTransformerOptions<Page extends PageData, Meta extends MetaData> {
|
|
235
250
|
/**
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
* @defaultValue false
|
|
251
|
+
* @deprecated use `transformers` instead
|
|
239
252
|
*/
|
|
240
|
-
noRef?: boolean;
|
|
241
253
|
attachFile?: (node: Item, file?: PageFile<Page>) => Item;
|
|
254
|
+
/**
|
|
255
|
+
* @deprecated use `transformers` instead
|
|
256
|
+
*/
|
|
242
257
|
attachFolder?: (node: Folder, folder: {
|
|
243
258
|
children: (PageFile<Page> | MetaFile<Meta>)[];
|
|
244
259
|
}, meta?: MetaFile<Meta>) => Folder;
|
|
260
|
+
/**
|
|
261
|
+
* @deprecated use `transformers` instead
|
|
262
|
+
*/
|
|
245
263
|
attachSeparator?: (node: Separator) => Separator;
|
|
246
|
-
resolveIcon?: (icon: string | undefined) => ReactElement | undefined;
|
|
247
264
|
}
|
|
248
|
-
|
|
249
|
-
|
|
265
|
+
|
|
266
|
+
interface PageTreeBuilderContext<Page extends PageData = PageData, Meta extends MetaData = MetaData> {
|
|
267
|
+
/**
|
|
268
|
+
* @internal
|
|
269
|
+
*/
|
|
270
|
+
resolveName: (name: string, format: 'meta' | 'page') => string;
|
|
271
|
+
options: BaseOptions<Page, Meta>;
|
|
272
|
+
transformers: PageTreeTransformer<Page, Meta>[];
|
|
273
|
+
builder: PageTreeBuilder<Page, Meta>;
|
|
274
|
+
storage: ContentStorage<Page, Meta>;
|
|
275
|
+
getUrl: UrlFn;
|
|
276
|
+
storages?: Record<string, ContentStorage<Page, Meta>>;
|
|
277
|
+
locale?: string;
|
|
250
278
|
}
|
|
251
|
-
interface
|
|
252
|
-
|
|
253
|
-
|
|
279
|
+
interface PageTreeTransformer<Page extends PageData = any, Meta extends MetaData = any> {
|
|
280
|
+
name?: string;
|
|
281
|
+
file?: (this: PageTreeBuilderContext<Page, Meta>, node: Item, filePath?: string) => Item;
|
|
282
|
+
folder?: (this: PageTreeBuilderContext<Page, Meta>, node: Folder, folderPath: string, metaPath?: string) => Folder;
|
|
283
|
+
separator?: (this: PageTreeBuilderContext<Page, Meta>, node: Separator) => Separator;
|
|
284
|
+
root?: (this: PageTreeBuilderContext<Page, Meta>, node: Root) => Root;
|
|
285
|
+
}
|
|
286
|
+
interface BaseOptions<Page extends PageData = PageData, Meta extends MetaData = MetaData> extends LegacyTransformerOptions<Page, Meta> {
|
|
287
|
+
/**
|
|
288
|
+
* Remove references to the file path of original nodes (`$ref`)
|
|
289
|
+
*
|
|
290
|
+
* @defaultValue false
|
|
291
|
+
*/
|
|
292
|
+
noRef?: boolean;
|
|
293
|
+
transformers?: PageTreeTransformer<Page, Meta>[];
|
|
294
|
+
resolveIcon?: (icon: string | undefined) => ReactNode | undefined;
|
|
254
295
|
}
|
|
255
|
-
interface PageTreeBuilder {
|
|
256
|
-
build: (options:
|
|
296
|
+
interface PageTreeBuilder<Page extends PageData = PageData, Meta extends MetaData = MetaData> {
|
|
297
|
+
build: (options: BaseOptions<Page, Meta> & {
|
|
298
|
+
id?: string;
|
|
299
|
+
storage: ContentStorage<Page, Meta>;
|
|
300
|
+
/**
|
|
301
|
+
* generate fallback page tree
|
|
302
|
+
*
|
|
303
|
+
* @defaultValue true
|
|
304
|
+
*/
|
|
305
|
+
generateFallback?: boolean;
|
|
306
|
+
}) => Root;
|
|
257
307
|
/**
|
|
258
308
|
* Build page tree and fallback to the default language if the localized page doesn't exist
|
|
259
309
|
*/
|
|
260
|
-
buildI18n: (options:
|
|
310
|
+
buildI18n: (options: BaseOptions<Page, Meta> & {
|
|
311
|
+
id?: string;
|
|
312
|
+
storages: Record<string, ContentStorage<Page, Meta>>;
|
|
313
|
+
}) => Record<string, Root>;
|
|
261
314
|
}
|
|
262
315
|
declare function createPageTreeBuilder(getUrl: UrlFn): PageTreeBuilder;
|
|
263
316
|
|
|
264
|
-
export { type
|
|
317
|
+
export { type BaseOptions, 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 PageTreeBuilderContext, type PageTreeTransformer, type Source, type SourceConfig, type Transformer, type UrlFn, type VirtualFile, createGetUrl, createPageTreeBuilder, getSlugs, loadFiles, loader, parseFilePath, parseFolderPath };
|