UNPKG

vitepress-openapi

Version:

Generate VitePress API Documentation from OpenAPI Specification.

52 lines (51 loc) 2.58 kB
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 {};