import { OutputEntry } from "./utils/pages/builder.js"; import { SchemaToPagesOptions } from "./utils/pages/preset-auto.js"; import { OpenAPIServer } from "./server/index.js"; import { DistributiveOmit } from "./types.js"; import { PagesToTextOptions } from "./utils/pages/to-text.js"; //#region src/generate-file.d.ts interface OutputFile { path: string; content: string; } interface IndexConfig { items: IndexItem[] | ((ctx: BeforeWriteContext) => IndexItem[]); /** * Generate URLs for cards */ url: ((filePath: string) => string) | { baseUrl: string; /** * Base content directory */ contentDir: string; }; } interface IndexItem { /** output path of index page */ path: string; title?: string; description?: string; /** * Specify linked pages: * - items in `inputs` to include all generated pages of a specific schema. * - file paths (using forward slash). */ only?: string[]; } interface GenerateFilesConfig extends PagesToTextOptions { /** * the OpenAPI server object */ input: OpenAPIServer; /** * Output directory */ output: string; /** * Generate index files with cards linking to generated pages. */ index?: IndexConfig; /** * Generate `meta.json` files. * * Note: for flexibility, it's recommended to define them on your own. */ meta?: boolean | MetaOptions; /** * Can add/change/remove output files before writing to file system **/ beforeWrite?: (this: BeforeWriteContext, files: OutputFile[]) => void | Promise; } interface MetaOptions { folderStyle?: 'folder' | 'separator'; } type Config = SchemaToPagesOptions & GenerateFilesConfig & { /** * Re-generate when **schema files are changed**, ignores custom input functions & URLs. * * Note: it is recommended to configure & use `chokidar` on your own, this is only for simple cases. */ watch?: boolean; }; interface BeforeWriteContext { readonly generated: Record; readonly generatedEntries: Record; } declare function generateFiles(options: Config): Promise; declare function generateFilesOnly(options: DistributiveOmit): Promise; //#endregion export { Config, OutputFile, generateFiles, generateFilesOnly };