vitepress-openapi
Version:
Generate VitePress API Documentation from OpenAPI Specification.
27 lines (21 loc) • 805 B
text/typescript
import type { Ref } from 'vue'
import type { ParsedOperation } from '../types'
import { ref } from 'vue'
import { useTheme } from '../composables/useTheme'
export interface OperationData {
operationId: string
security: {
selectedSchemeId: Ref<string>
}
}
export const OPERATION_DATA_KEY = Symbol('operationData')
export function initOperationData({ operation }: { operation: ParsedOperation }): OperationData {
const firstSecurityScheme = operation.securityUi?.[0]?.id || ''
const defaultSecurityScheme = useTheme().getSecurityDefaultScheme() || firstSecurityScheme
return {
operationId: operation.operationId,
security: {
selectedSchemeId: ref(operation.securityUi?.some(s => s.id === defaultSecurityScheme) ? defaultSecurityScheme : firstSecurityScheme),
},
}
}