fumadocs-openapi
Version:
Generate MDX docs for your OpenAPI spec
91 lines (90 loc) • 2.71 kB
TypeScript
import { NoReference } from "../schema.js";
import { OpenAPIServer } from "../../server/create.js";
import { OperationItem, WebhookItem } from "../../ui/api-page.js";
import "../../server/index.js";
import { OperationObject, PathItemObject, TagObject } from "../../types.js";
import { ProcessedDocument } from "../process-document.js";
//#region src/utils/pages/builder.d.ts
interface BaseEntry {
path: string;
schemaId: string;
info: {
title: string;
description?: string;
};
}
interface OperationOutput extends BaseEntry {
type: 'operation';
item: OperationItem;
}
interface WebhookOutput extends BaseEntry {
type: 'webhook';
item: WebhookItem;
}
interface TagOutput extends BaseEntry {
type: 'tag';
tag: string;
rawTag: TagObject;
operations: OperationItem[];
webhooks: WebhookItem[];
}
interface OutputGroup extends BaseEntry {
type: 'group';
operations: OperationItem[];
webhooks: WebhookItem[];
}
type OutputEntry = TagOutput | OperationOutput | WebhookOutput | OutputGroup;
interface PagesBuilderConfig {
toPages: (builder: PagesBuilder) => void;
}
interface PagesBuilder {
/**
* the input ID in OpenAPI server
*/
id: string;
document: ProcessedDocument;
/**
* add output entry.
*
* When the `path` property is unspecified, it will generate one.
*/
create: (entry: OutputEntry) => void;
/**
* get file path from operation path, useful for generating output paths.
*/
routePathToFilePath: (path: string) => string;
/**
* Extract useful info for rendering
*/
extract: () => ExtractedInfo;
fromExtractedWebhook: (item: WebhookItem) => {
get displayName(): string;
pathItem: NoReference<PathItemObject>;
operation: NoReference<OperationObject>;
} | undefined;
fromExtractedOperation: (item: OperationItem) => {
get displayName(): string;
pathItem: NoReference<PathItemObject>;
operation: NoReference<OperationObject>;
} | undefined;
fromTag: (tag: TagObject) => {
get displayName(): string;
};
fromTagName: (tag: string) => {
info: TagObject;
get displayName(): string;
} | undefined;
}
interface ExtractedInfo {
webhooks: (WebhookItem & {
tags?: string[];
})[];
operations: (OperationItem & {
tags?: string[];
})[];
}
declare function fromServer(server: OpenAPIServer, config: PagesBuilderConfig): Promise<Record<string, OutputEntry[]>>;
declare function fromSchema(schemaId: string, processed: ProcessedDocument, config: PagesBuilderConfig): OutputEntry[];
//#endregion
export { OperationOutput, OutputEntry, OutputGroup, PagesBuilder, PagesBuilderConfig, TagOutput, WebhookOutput, fromSchema, fromServer };
//# sourceMappingURL=builder.d.ts.map