UNPKG

fumadocs-docgen

Version:

Useful remark utilities and plugins

105 lines (104 loc) 2.96 kB
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