fumadocs-mdx
Version:
The built-in source for Fumadocs
83 lines (79 loc) • 3.44 kB
TypeScript
import { StandardSchemaV1 } from '@standard-schema/spec';
import { Source, PageData, MetaData } from 'fumadocs-core/source';
import { a as DocCollection, M as MetaCollection, b as DocsCollection, G as GlobalConfig } from './define-DnJzAZrj.js';
import { ProcessorOptions } from '@mdx-js/mdx';
import { FC } from 'react';
import { MDXProps } from 'mdx/types';
import { StructuredData } from 'fumadocs-core/mdx-plugins';
import { TableOfContents } from 'fumadocs-core/server';
interface LoadedConfig {
collections: Map<string, DocCollection | MetaCollection | DocsCollection>;
global: GlobalConfig;
getDefaultMDXOptions(mode?: 'default' | 'remote'): Promise<ProcessorOptions>;
}
interface BaseCollectionEntry {
/**
* Raw file path of collection entry, including absolute path (not normalized).
*/
_file: FileInfo;
}
interface FileInfo {
path: string;
absolutePath: string;
}
interface MarkdownProps {
body: FC<MDXProps>;
structuredData: StructuredData;
toc: TableOfContents;
_exports: Record<string, unknown>;
/**
* Only available when `lastModifiedTime` is enabled on MDX loader
*/
lastModified?: Date;
}
interface RuntimeFile {
info: FileInfo;
data: Record<string, unknown>;
}
interface AsyncRuntimeFile {
info: FileInfo;
data: Record<string, unknown>;
content: string;
lastModified?: Date;
}
type DocOut<Schema extends StandardSchemaV1> = Override<MarkdownProps & {
/**
* Read the original content of file from file system.
*/
get content(): string;
}, StandardSchemaV1.InferOutput<Schema> & BaseCollectionEntry>;
type Override<A, B> = Omit<A, keyof B> & B;
type MetaOut<Schema extends StandardSchemaV1> = StandardSchemaV1.InferOutput<Schema> & BaseCollectionEntry;
interface Runtime {
doc: <C>(files: RuntimeFile[]) => C extends DocCollection<infer Schema, false> ? DocOut<Schema>[] : never;
meta: <C>(files: RuntimeFile[]) => C extends MetaCollection<infer Schema> ? MetaOut<Schema>[] : never;
docs: <C>(docs: RuntimeFile[], metas: RuntimeFile[]) => C extends DocsCollection<infer DocSchema, infer MetaSchema, false> ? {
docs: DocOut<DocSchema>[];
meta: MetaOut<MetaSchema>[];
toFumadocsSource: () => Source<{
pageData: DocOut<DocSchema> extends PageData ? DocOut<DocSchema> : never;
metaData: MetaOut<MetaSchema> extends MetaData ? MetaOut<MetaSchema> : never;
}>;
} : never;
}
type AsyncDocOut<Schema extends StandardSchemaV1> = StandardSchemaV1.InferOutput<Schema> & BaseCollectionEntry & {
content: string;
load: () => Promise<MarkdownProps>;
};
interface RuntimeAsync {
doc: <C>(files: AsyncRuntimeFile[], collection: string, config: LoadedConfig) => C extends DocCollection<infer Schema, true> ? AsyncDocOut<Schema>[] : never;
docs: <C>(docs: AsyncRuntimeFile[], metas: RuntimeFile[], collection: string, config: LoadedConfig) => C extends DocsCollection<infer DocSchema, infer MetaSchema, true> ? {
docs: AsyncDocOut<DocSchema>[];
meta: MetaOut<MetaSchema>[];
toFumadocsSource: () => Source<{
pageData: AsyncDocOut<DocSchema> extends PageData ? AsyncDocOut<DocSchema> : never;
metaData: MetaOut<MetaSchema> extends MetaData ? MetaOut<MetaSchema> : never;
}>;
} : never;
}
export type { BaseCollectionEntry as B, LoadedConfig as L, Runtime as R, RuntimeAsync as a };