vitepress-openapi
Version:
Generate VitePress API Documentation from OpenAPI Specification.
52 lines (51 loc) • 2.58 kB
TypeScript
import type { OpenAPIV3 } from '@scalar/openapi-types';
import type { DefaultTheme } from 'vitepress';
import type { OpenAPIDocument } from '../types';
type MethodAliases = Record<string, string>;
export type SidebarItemTemplateFn = (method: OpenAPIV3.HttpMethods, path: string) => string;
export type SidebarGroupTemplateFn = (path: string, depth: number) => string;
export interface SidebarConfig {
spec?: OpenAPIDocument | null;
linkPrefix?: string;
tagLinkPrefix?: string;
defaultTag?: string;
methodAliases?: MethodAliases;
sidebarItemTemplate?: SidebarItemTemplateFn;
sidebarGroupTemplate?: SidebarGroupTemplateFn;
}
export interface SidebarGroupConfig {
tag: string | string[];
text?: string;
linkPrefix?: string;
addedOperations?: Set<string>;
sidebarItemTemplate?: SidebarItemTemplateFn;
sidebarGroupTemplate?: SidebarGroupTemplateFn;
}
export interface SidebarGroupsConfig {
tags?: string[] | null;
linkPrefix?: string | null;
sidebarItemTemplate?: SidebarItemTemplateFn;
sidebarGroupTemplate?: SidebarGroupTemplateFn;
}
export interface OASidebarItem extends DefaultTheme.SidebarItem {
path?: string;
isOperation?: boolean;
flattenedItems?: OASidebarItem[];
}
export declare function useSidebar({ spec, linkPrefix, tagLinkPrefix, defaultTag, methodAliases, sidebarItemTemplate, sidebarGroupTemplate, }?: SidebarConfig): {
sidebarItemTemplate: SidebarItemTemplateFn;
sidebarGroupTemplate: SidebarGroupTemplateFn;
generateSidebarItem: (method: OpenAPIV3.HttpMethods, path: string, itemLinkPrefix?: string, localItemTemplate?: SidebarItemTemplateFn) => OASidebarItem | null;
generateSidebarGroup: ({ tag, text, linkPrefix: groupLinkPrefix, addedOperations, sidebarItemTemplate: localItemTemplate, sidebarGroupTemplate: localGroupTemplate, }: SidebarGroupConfig) => OASidebarItem;
generateSidebarGroups: ({ tags, linkPrefix: groupsLinkPrefix, sidebarItemTemplate: localItemTemplate, sidebarGroupTemplate: localGroupTemplate, }?: SidebarGroupsConfig) => OASidebarItem[];
itemsByTags: ({ tags, linkPrefix: tagsLinkPrefix, }?: SidebarGroupsConfig) => OASidebarItem[];
itemsByPaths: ({ startsWith, collapsible, depth, linkPrefix: itemLinkPrefix, sidebarItemTemplate, sidebarGroupTemplate, }?: {
startsWith?: string;
collapsible?: boolean;
depth?: number;
linkPrefix?: string;
sidebarItemTemplate?: SidebarItemTemplateFn;
sidebarGroupTemplate?: SidebarGroupTemplateFn;
}) => DefaultTheme.SidebarItem[];
};
export {};