fumadocs-core 15.6.12 → 15.7.1
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 +12 -15
- 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 +72 -28
- package/dist/source/index.js +292 -196
- package/package.json +14 -9
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,12 @@ type Transformer = (context: {
|
|
|
42
43
|
storage: ContentStorage;
|
|
43
44
|
options: LoadOptions;
|
|
44
45
|
}) => void;
|
|
45
|
-
|
|
46
|
+
/**
|
|
47
|
+
* @returns a map of locale and its content storage.
|
|
48
|
+
*
|
|
49
|
+
* in the storage, locale codes are removed from file paths, hence the same file will have same file paths in every storage.
|
|
50
|
+
*/
|
|
51
|
+
declare function loadFiles(files: VirtualFile[], options: LoadOptions, i18n: I18nConfig): Record<string, ContentStorage>;
|
|
46
52
|
|
|
47
53
|
interface FileInfo {
|
|
48
54
|
/**
|
|
@@ -86,7 +92,7 @@ declare function parseFolderPath(path: string): FolderInfo;
|
|
|
86
92
|
|
|
87
93
|
interface LoaderConfig {
|
|
88
94
|
source: SourceConfig;
|
|
89
|
-
i18n:
|
|
95
|
+
i18n: I18nConfig | undefined;
|
|
90
96
|
}
|
|
91
97
|
interface SourceConfig {
|
|
92
98
|
pageData: PageData;
|
|
@@ -94,15 +100,15 @@ interface SourceConfig {
|
|
|
94
100
|
}
|
|
95
101
|
interface LoaderOptions<T extends SourceConfig = SourceConfig, I18n extends I18nConfig | undefined = I18nConfig | undefined> {
|
|
96
102
|
baseUrl: string;
|
|
97
|
-
icon?: NonNullable<
|
|
103
|
+
icon?: NonNullable<BaseOptions['resolveIcon']>;
|
|
98
104
|
slugs?: (info: FileInfo) => string[];
|
|
99
105
|
url?: UrlFn;
|
|
100
|
-
source: Source<T
|
|
106
|
+
source: Source<T> | Source<T>[];
|
|
101
107
|
transformers?: Transformer[];
|
|
102
108
|
/**
|
|
103
109
|
* Additional options for page tree builder
|
|
104
110
|
*/
|
|
105
|
-
pageTree?: Partial<
|
|
111
|
+
pageTree?: Partial<BaseOptions<T['pageData'], T['metaData']>>;
|
|
106
112
|
/**
|
|
107
113
|
* Configure i18n
|
|
108
114
|
*/
|
|
@@ -165,7 +171,7 @@ interface LanguageEntry<Data = PageData> {
|
|
|
165
171
|
pages: Page<Data>[];
|
|
166
172
|
}
|
|
167
173
|
interface LoaderOutput<Config extends LoaderConfig> {
|
|
168
|
-
pageTree: Config['i18n'] extends
|
|
174
|
+
pageTree: Config['i18n'] extends I18nConfig ? Record<string, Root> : Root;
|
|
169
175
|
getPageTree: (locale?: string) => Root;
|
|
170
176
|
getPageByHref: (href: string, options?: {
|
|
171
177
|
language?: string;
|
|
@@ -204,7 +210,7 @@ interface LoaderOutput<Config extends LoaderConfig> {
|
|
|
204
210
|
declare function createGetUrl(baseUrl: string, i18n?: I18nConfig): UrlFn;
|
|
205
211
|
declare function loader<Config extends SourceConfig, I18n extends I18nConfig | undefined = undefined>(options: LoaderOptions<Config, I18n>): LoaderOutput<{
|
|
206
212
|
source: Config;
|
|
207
|
-
i18n: I18n
|
|
213
|
+
i18n: I18n;
|
|
208
214
|
}>;
|
|
209
215
|
/**
|
|
210
216
|
* Convert file path into slugs, also encode non-ASCII characters, so they can work in pathname
|
|
@@ -231,34 +237,72 @@ type InferMetaType<Utils extends LoaderOutput<any>> = Utils extends LoaderOutput
|
|
|
231
237
|
*/
|
|
232
238
|
type UrlFn = (slugs: string[], locale?: string) => string;
|
|
233
239
|
|
|
234
|
-
interface
|
|
240
|
+
interface LegacyTransformerOptions<Page extends PageData, Meta extends MetaData> {
|
|
235
241
|
/**
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
* @defaultValue false
|
|
242
|
+
* @deprecated use `transformers` instead
|
|
239
243
|
*/
|
|
240
|
-
noRef?: boolean;
|
|
241
244
|
attachFile?: (node: Item, file?: PageFile<Page>) => Item;
|
|
245
|
+
/**
|
|
246
|
+
* @deprecated use `transformers` instead
|
|
247
|
+
*/
|
|
242
248
|
attachFolder?: (node: Folder, folder: {
|
|
243
249
|
children: (PageFile<Page> | MetaFile<Meta>)[];
|
|
244
250
|
}, meta?: MetaFile<Meta>) => Folder;
|
|
251
|
+
/**
|
|
252
|
+
* @deprecated use `transformers` instead
|
|
253
|
+
*/
|
|
245
254
|
attachSeparator?: (node: Separator) => Separator;
|
|
246
|
-
resolveIcon?: (icon: string | undefined) => ReactElement | undefined;
|
|
247
255
|
}
|
|
248
|
-
|
|
249
|
-
|
|
256
|
+
|
|
257
|
+
interface PageTreeBuilderContext<Page extends PageData = PageData, Meta extends MetaData = MetaData> {
|
|
258
|
+
/**
|
|
259
|
+
* @internal resolve paths without extensions
|
|
260
|
+
*/
|
|
261
|
+
resolveName: (name: string, format: 'meta' | 'page') => string;
|
|
262
|
+
options: BaseOptions<Page, Meta>;
|
|
263
|
+
transformers: PageTreeTransformer<Page, Meta>[];
|
|
264
|
+
builder: PageTreeBuilder<Page, Meta>;
|
|
265
|
+
storage: ContentStorage<Page, Meta>;
|
|
266
|
+
getUrl: UrlFn;
|
|
267
|
+
storages?: Record<string, ContentStorage<Page, Meta>>;
|
|
268
|
+
locale?: string;
|
|
269
|
+
}
|
|
270
|
+
interface PageTreeTransformer<Page extends PageData = any, Meta extends MetaData = any> {
|
|
271
|
+
name?: string;
|
|
272
|
+
file?: (this: PageTreeBuilderContext<Page, Meta>, node: Item, filePath?: string) => Item;
|
|
273
|
+
folder?: (this: PageTreeBuilderContext<Page, Meta>, node: Folder, folderPath: string, metaPath?: string) => Folder;
|
|
274
|
+
separator?: (this: PageTreeBuilderContext<Page, Meta>, node: Separator) => Separator;
|
|
275
|
+
root?: (this: PageTreeBuilderContext<Page, Meta>, node: Root) => Root;
|
|
250
276
|
}
|
|
251
|
-
interface
|
|
252
|
-
|
|
253
|
-
|
|
277
|
+
interface BaseOptions<Page extends PageData = PageData, Meta extends MetaData = MetaData> extends LegacyTransformerOptions<Page, Meta> {
|
|
278
|
+
/**
|
|
279
|
+
* Remove references to the file path of original nodes (`$ref`)
|
|
280
|
+
*
|
|
281
|
+
* @defaultValue false
|
|
282
|
+
*/
|
|
283
|
+
noRef?: boolean;
|
|
284
|
+
transformers?: PageTreeTransformer<Page, Meta>[];
|
|
285
|
+
resolveIcon?: (icon: string | undefined) => ReactNode | undefined;
|
|
286
|
+
/**
|
|
287
|
+
* generate fallback page tree
|
|
288
|
+
*
|
|
289
|
+
* @defaultValue true
|
|
290
|
+
*/
|
|
291
|
+
generateFallback?: boolean;
|
|
254
292
|
}
|
|
255
|
-
interface PageTreeBuilder {
|
|
256
|
-
build: (options:
|
|
293
|
+
interface PageTreeBuilder<Page extends PageData = PageData, Meta extends MetaData = MetaData> {
|
|
294
|
+
build: (options: BaseOptions<Page, Meta> & {
|
|
295
|
+
id?: string;
|
|
296
|
+
storage: ContentStorage<Page, Meta>;
|
|
297
|
+
}) => Root;
|
|
257
298
|
/**
|
|
258
299
|
* Build page tree and fallback to the default language if the localized page doesn't exist
|
|
259
300
|
*/
|
|
260
|
-
buildI18n: (options:
|
|
301
|
+
buildI18n: (options: BaseOptions<Page, Meta> & {
|
|
302
|
+
id?: string;
|
|
303
|
+
storages: Record<string, ContentStorage<Page, Meta>>;
|
|
304
|
+
}) => Record<string, Root>;
|
|
261
305
|
}
|
|
262
306
|
declare function createPageTreeBuilder(getUrl: UrlFn): PageTreeBuilder;
|
|
263
307
|
|
|
264
|
-
export { type
|
|
308
|
+
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 };
|