vitepress-openapi
Version:
Generate VitePress API Documentation from OpenAPI Specification.
65 lines (64 loc) • 2.89 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 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 {};