vitepress-openapi
Version:
Generate VitePress API Documentation from OpenAPI Specification.
333 lines (332 loc) • 12.8 kB
TypeScript
import type MarkdownIt from 'markdown-it';
import type { Ref, UnwrapNestedRefs } from 'vue';
import type { OARequest } from '../lib/codeSamples/request';
import type { OperationSlot, ParsedOperation } from '../types';
export type BodyViewType = 'schema' | 'contentType' | 'autogenerated';
export type JsonRendererType = 'vue-json-pretty' | 'shiki' | string;
export type ResponseCodeSelectorType = 'tabs' | 'select';
export type OperationColsType = 1 | 2;
export type OperationBadges = 'deprecated' | 'operationId';
export type PlaygroundJsonEditorMode = 'text' | 'tree' | 'table';
export type Languages = 'es' | 'en' | 'ja' | 'pt-BR' | 'zh' | string;
export type Messages = Record<Languages, Record<string, string>>;
export interface ThemeConfig {
highlighterTheme?: {
light?: any;
dark?: any;
};
}
export interface PathConfig {
showBaseURL?: Ref<boolean>;
}
export interface RequestConfig {
defaultView?: Ref<BodyViewType>;
}
export interface JsonViewerConfig {
deep?: Ref<number>;
renderer?: Ref<JsonRendererType>;
}
export interface SchemaViewerConfig {
deep?: Ref<number>;
}
export interface HeadingLevels {
h1?: number;
h2?: number;
h3?: number;
h4?: number;
h5?: number;
h6?: number;
}
export interface ResponseConfig {
responseCodeSelector?: Ref<ResponseCodeSelectorType>;
maxTabs?: Ref<number>;
body?: {
defaultView?: Ref<BodyViewType>;
};
}
export interface PlaygroundConfig {
jsonEditor?: {
mode?: Ref<PlaygroundJsonEditorMode>;
mainMenuBar?: Ref<boolean>;
navigationBar?: Ref<boolean>;
statusBar?: Ref<boolean>;
};
}
export interface SecurityConfig {
defaultScheme?: Ref<string | null>;
}
export interface OperationConfig {
badges?: Ref<OperationBadges[]>;
slots?: Ref<OperationSlot[]>;
/** @deprecated Use server.getServers instead */
getServers?: GetServersFunction | null;
hiddenSlots?: Ref<OperationSlot[]>;
cols?: Ref<OperationColsType>;
defaultBaseUrl?: string;
}
export interface AvailableLocale {
code: string;
label: string;
}
export interface I18nConfig {
locale?: Ref<Languages>;
fallbackLocale?: Ref<Languages>;
messages?: Messages;
availableLocales?: AvailableLocale[];
}
export interface SpecConfig {
groupByTags?: Ref<boolean>;
collapsePaths?: Ref<boolean>;
showPathsSummary?: Ref<boolean>;
avoidCirculars?: Ref<boolean>;
lazyRendering?: Ref<boolean>;
defaultTag?: string;
defaultTagDescription?: string;
wrapExamples?: boolean;
disableDownload?: Ref<boolean>;
}
export interface ServerConfig {
allowCustomServer?: boolean;
getServers?: GetServersFunction | null;
}
export interface OperationLinkConfig {
linkPrefix?: string;
transformHref?: (href: string) => string;
}
export interface MarkdownConfig {
operationLink?: OperationLinkConfig | false;
externalLinksNewTab?: boolean;
config?: (md: MarkdownIt) => MarkdownIt | undefined;
}
export interface UseThemeConfig {
theme?: Partial<ThemeConfig>;
path?: Partial<PathConfig>;
requestBody?: Partial<RequestConfig>;
jsonViewer?: Partial<JsonViewerConfig>;
schemaViewer?: Partial<SchemaViewerConfig>;
headingLevels?: Partial<HeadingLevels>;
response?: Partial<ResponseConfig>;
playground?: Partial<PlaygroundConfig>;
security?: Partial<SecurityConfig>;
operation?: Partial<OperationConfig>;
i18n?: Partial<I18nConfig>;
spec?: Partial<SpecConfig>;
codeSamples?: Partial<CodeSamplesConfig>;
linksPrefixes?: Partial<LinksPrefixesConfig>;
server?: Partial<ServerConfig>;
markdown?: Partial<MarkdownConfig>;
}
export interface CodeSamplesConfig {
langs: string[];
defaultLang: string;
availableLanguages: LanguageConfig[];
generator: GeneratorFunction;
defaultHeaders: Record<string, string>;
}
export interface LinksPrefixesConfig {
tags: string;
operations: string;
}
interface LanguageConfig {
lang: string;
label: string;
highlighter: string;
icon?: string;
}
export type PartialUseThemeConfig = Partial<UnwrapNestedRefs<UseThemeConfig>>;
type GeneratorFunction = (lang: string, request: OARequest) => Promise<string>;
type GetServersFunction = ({ method, path, operation }: {
method: string;
path: string;
operation: ParsedOperation;
}) => string[] | null;
export declare const DEFAULT_OPERATION_SLOTS: OperationSlot[];
export declare const DEFAULT_BASE_URL = "http://localhost";
export declare const availableLanguages: LanguageConfig[];
export declare function useTheme(initialConfig?: PartialUseThemeConfig): {
isDark: import("vue").WritableComputedRef<boolean, boolean>;
schemaConfig: Partial<RequestConfig> | undefined;
reset: () => void;
getState: () => {
theme?: {
highlighterTheme?: {
light?: any;
dark?: any;
} | undefined;
} | undefined;
path?: {
showBaseURL?: boolean | undefined;
} | undefined;
requestBody?: {
defaultView?: BodyViewType | undefined;
} | undefined;
jsonViewer?: {
deep?: number | undefined;
renderer?: string | undefined;
} | undefined;
schemaViewer?: {
deep?: number | undefined;
} | undefined;
headingLevels?: {
h1?: number | undefined;
h2?: number | undefined;
h3?: number | undefined;
h4?: number | undefined;
h5?: number | undefined;
h6?: number | undefined;
} | undefined;
response?: {
responseCodeSelector?: ResponseCodeSelectorType | undefined;
maxTabs?: number | undefined;
body?: {
defaultView?: BodyViewType | undefined;
} | undefined;
} | undefined;
playground?: {
jsonEditor?: {
mode?: PlaygroundJsonEditorMode | undefined;
mainMenuBar?: boolean | undefined;
navigationBar?: boolean | undefined;
statusBar?: boolean | undefined;
} | undefined;
} | undefined;
security?: {
defaultScheme?: string | null | undefined;
} | undefined;
operation?: {
badges?: OperationBadges[] | undefined;
slots?: OperationSlot[] | undefined;
getServers?: {} | null | undefined;
hiddenSlots?: OperationSlot[] | undefined;
cols?: OperationColsType | undefined;
defaultBaseUrl?: string | undefined;
} | undefined;
i18n?: {
locale?: string | undefined;
fallbackLocale?: string | undefined;
messages?: {
[x: string]: {
[x: string]: string;
};
} | undefined;
availableLocales?: {
code: string;
label: string;
}[] | undefined;
} | undefined;
spec?: {
groupByTags?: boolean | undefined;
collapsePaths?: boolean | undefined;
showPathsSummary?: boolean | undefined;
avoidCirculars?: boolean | undefined;
lazyRendering?: boolean | undefined;
defaultTag?: string | undefined;
defaultTagDescription?: string | undefined;
wrapExamples?: boolean | undefined;
disableDownload?: boolean | undefined;
} | undefined;
codeSamples?: {
langs?: string[] | undefined;
defaultLang?: string | undefined;
availableLanguages?: {
lang: string;
label: string;
highlighter: string;
icon?: string | undefined;
}[] | undefined;
generator?: {} | undefined;
defaultHeaders?: {
[x: string]: string;
} | undefined;
} | undefined;
linksPrefixes?: {
tags?: string | undefined;
operations?: string | undefined;
} | undefined;
server?: {
allowCustomServer?: boolean | undefined;
getServers?: {} | null | undefined;
} | undefined;
markdown?: {
operationLink?: false | {
linkPrefix?: string | undefined;
transformHref?: {} | undefined;
} | undefined;
externalLinksNewTab?: boolean | undefined;
config?: {} | undefined;
} | undefined;
};
getLocale: () => Languages;
setLocale: (value: Languages) => void;
getHighlighterTheme: () => {
light?: any;
dark?: any;
} | undefined;
/** @deprecated Use `getRequestBodyDefaultView` instead. */
getSchemaDefaultView: () => BodyViewType | undefined;
getRequestBodyDefaultView: () => BodyViewType | undefined;
/** @deprecated Use `setRequestBodyDefaultView` instead. */
setSchemaDefaultView: (value: BodyViewType) => void;
setRequestBodyDefaultView: (value: BodyViewType) => void;
getShowBaseURL: () => boolean | undefined;
setShowBaseURL: (value: boolean) => void;
getJsonViewerDeep: () => number | undefined;
setJsonViewerDeep: (value: number) => void;
getJsonViewerRenderer: () => JsonRendererType;
setJsonViewerRenderer: (value: JsonRendererType) => void;
getSchemaViewerDeep: () => number | undefined;
setSchemaViewerDeep: (value: number) => void;
getHeadingLevels: () => Partial<HeadingLevels> | undefined;
getHeadingLevel: (level: keyof HeadingLevels) => `h${1 | 2 | 3 | 4 | 5 | 6}`;
setHeadingLevels: (levels: Partial<UnwrapNestedRefs<HeadingLevels>>) => void;
getResponseCodeSelector: () => ResponseCodeSelectorType | undefined;
setResponseCodeSelector: (value: ResponseCodeSelectorType) => void;
getResponseCodeMaxTabs: () => number | undefined;
setResponseCodeMaxTabs: (value: number) => void;
getResponseBodyDefaultView: () => BodyViewType | undefined;
setResponseBodyDefaultView: (value: BodyViewType) => void;
getPlaygroundJsonEditorMode: () => PlaygroundJsonEditorMode | undefined;
setPlaygroundJsonEditorMode: (value: PlaygroundJsonEditorMode) => void;
getPlaygroundJsonEditorMainMenuBar: () => boolean | undefined;
setPlaygroundJsonEditorMainMenuBar: (value: boolean) => void;
getPlaygroundJsonEditorNavigationBar: () => boolean | undefined;
setPlaygroundJsonEditorNavigationBar: (value: boolean) => void;
getPlaygroundJsonEditorStatusBar: () => boolean | undefined;
setPlaygroundJsonEditorStatusBar: (value: boolean) => void;
getSecurityDefaultScheme: () => string | null | undefined;
setSecurityDefaultScheme: (value: string | null) => void;
getOperationBadges: () => OperationBadges[];
setOperationBadges: (value: OperationBadges[]) => void;
getOperationSlots: () => OperationSlot[] | undefined;
setOperationSlots: (value: OperationSlot[]) => void;
getOperationHiddenSlots: () => OperationSlot[] | undefined;
setOperationHiddenSlots: (value: OperationSlot[]) => void;
getOperationCols: () => OperationColsType | undefined;
setOperationCols: (value: OperationColsType) => void;
getOperationDefaultBaseUrl: () => string;
getOperationServers: () => GetServersFunction | null;
getI18nConfig: () => I18nConfig;
setI18nConfig: (config: Partial<UnwrapNestedRefs<I18nConfig>>) => void;
getSpecConfig: () => Partial<SpecConfig> | undefined;
getWrapExamples: () => boolean | undefined;
getSpecDisableDownload: () => boolean | undefined;
setSpecConfig: (config: Partial<UnwrapNestedRefs<SpecConfig>>) => void;
getCodeSamplesLangs: () => string[];
getCodeSamplesDefaultLang: () => string;
getCodeSamplesAvailableLanguages: () => LanguageConfig[] | undefined;
getCodeSamplesGenerator: () => GeneratorFunction;
getCodeSamplesDefaultHeaders: () => Record<string, string>;
setCodeSamplesConfig: (config: Partial<UnwrapNestedRefs<CodeSamplesConfig>>) => void;
getLinksPrefixesConfig: () => Partial<LinksPrefixesConfig> | undefined;
setLinksPrefixesConfig: (config: Partial<UnwrapNestedRefs<LinksPrefixesConfig>>) => void;
getTagsLinkPrefix: () => string | undefined;
getOperationsLinkPrefix: () => string | undefined;
getServerConfig: () => ServerConfig;
setServerConfig: (config: Partial<UnwrapNestedRefs<ServerConfig>>) => void;
getServerAllowCustomServer: () => boolean;
getMarkdownConfig: () => MarkdownConfig;
getExternalLinksNewTab: () => boolean;
setMarkdownConfig: (config: Partial<UnwrapNestedRefs<MarkdownConfig>>) => void;
getOperationLinkConfig: () => OperationLinkConfig | false | undefined;
};
export {};