UNPKG

vitepress-openapi

Version:

Generate VitePress API Documentation from OpenAPI Specification.

65 lines (64 loc) 2.89 kB
import type { OpenAPIV3 } from '@scalar/openapi-types'; import type { DefaultTheme } from 'vitepress'; import type { OpenAPIDocument } from '../types'; type MethodAliases = Record<string, string>; export interface SidebarItemTemplateParams { method: OpenAPIV3.HttpMethods; path: string; title?: string; } export type SidebarItemTemplateFn = (params: SidebarItemTemplateParams) => string; export interface SidebarGroupTemplateParams { path: string; depth: number; } export type SidebarGroupTemplateFn = (params: SidebarGroupTemplateParams) => string; export interface SidebarItemTemplateForMethodPathParams { method: OpenAPIV3.HttpMethods; path: string; sidebarItemTemplate?: SidebarItemTemplateFn; } 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; 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, 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 {};