fumadocs-docgen
Version:
Useful remark utilities and plugins
105 lines (104 loc) • 2.96 kB
TypeScript
import { z } from "zod";
import { Code, Root } from "mdast";
import { Transformer } from "unified";
import { VFile } from "vfile";
import { Expression } from "estree";
import { MdxJsxAttribute } from "mdast-util-mdx";
//#region src/remark-docgen.d.ts
type Awaitable<T> = T | Promise<T>;
interface DocGenerator {
name: string;
/**
* Transform codeblocks to another mdast element
*/
run: (input: unknown, context: Context) => Awaitable<object | object[] | undefined>;
onFile?: (tree: Root, file: VFile) => void;
}
interface Context {
node: Code;
path: string;
cwd: string;
}
interface RemarkDocGenOptions {
generators?: DocGenerator[];
}
declare function remarkDocGen({
generators
}: RemarkDocGenOptions): Transformer<Root, Root>;
//#endregion
//#region src/utils.d.ts
declare function createElement(name: string, attributes: object[], children?: unknown): object;
declare function expressionToAttribute(key: string, value: Expression): MdxJsxAttribute;
//#endregion
//#region src/file-generator.d.ts
interface FileGeneratorOptions {
/** @defaultValue true */
trim?: boolean;
/**
* Resolve reference files relative to `vfile.path`
*
* @defaultValue false
*/
relative?: boolean;
}
type FileGeneratorInput = z.output<typeof fileGeneratorSchema>;
declare const fileGeneratorSchema: z.ZodObject<{
file: z.ZodString;
codeblock: z.ZodDefault<z.ZodUnion<readonly [z.ZodObject<{
lang: z.ZodOptional<z.ZodString>;
meta: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, z.ZodBoolean]>>;
}, z.core.$strip>;
declare function fileGenerator({
relative,
trim
}?: FileGeneratorOptions): DocGenerator;
//#endregion
//#region src/remark-install.d.ts
interface PackageManager {
name: string;
/**
* Convert from npm to another package manager
*/
command: (command: string) => string;
}
type RemarkInstallOptions = {
Tabs?: string;
Tab?: string;
/**
* Persist Tab value (Fumadocs UI only)
*
* @defaultValue false
*/
persist?: {
id: string;
} | false;
packageManagers?: PackageManager[];
};
/**
* It generates the following structure from a code block with `package-install` as language
*
* @example
* ```tsx
* <Tabs items={["npm", "pnpm", "yarn", "bun"]}>
* <Tab value="pnpm">...</Tab>
* ...
* </Tabs>
* ```
*
* @deprecated Use `remarkNpm` from `fumadocs-core/mdx-plugins` instead, it's a drop-in replacement.
*/
declare function remarkInstall({
Tab,
Tabs,
persist,
packageManagers
}?: RemarkInstallOptions): Transformer<Root, Root>;
//#endregion
//#region src/remark-show.d.ts
declare function remarkShow(options?: {
variables?: Record<string, unknown>;
}): Transformer<Root, Root>;
//#endregion
export { DocGenerator, FileGeneratorInput, FileGeneratorOptions, RemarkDocGenOptions, RemarkInstallOptions, createElement, expressionToAttribute, fileGenerator, fileGeneratorSchema, remarkDocGen, remarkInstall, remarkShow };
//# sourceMappingURL=index.d.ts.map