UNPKG

@alauda/doom

Version:

Doctor Doom making docs.

53 lines (52 loc) 1.79 kB
import virtual from 'doom-@api-virtual'; import { last, upperFirst } from 'es-toolkit'; import { get } from 'es-toolkit/compat'; export const modelName = (ref) => { const lastPart = last(ref.split('.')); return upperFirst(lastPart.startsWith('#') ? lastPart.slice(1) : lastPart); }; // https://swagger.io/docs/specification/v3_0/components/#components-structure const COMPONENTS = [ 'schemas', 'parameters', 'securitySchemes', 'requestBodies', 'responses', 'headers', 'examples', 'links', 'callbacks', ]; const COMPONENTS_REFS = COMPONENTS.map((component) => `#/components/${component}/`); export const resolveRef = (openapi, ref) => { const refs = ref.startsWith('#/') ? [ref] : COMPONENTS_REFS.map((prefix) => `${prefix}${ref}`); for (const ref of refs) { const resolved = get(openapi, ref.slice(2).split('/')); if (resolved) { return resolved; } } }; const DEFAULT_COMMON_REFS = { 'v1alpha1.ListMeta': 'list-meta/', 'v1.ObjectMeta': 'object-meta/', }; const K8S_DOC_PREFIX = 'https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/'; export const COMMON_REFS = { ...Object.fromEntries(Object.entries(DEFAULT_COMMON_REFS).map(([key, value]) => [ key, `${K8S_DOC_PREFIX}${value}`, ])), ...virtual.references, }; export const omitRoutePathRefs = (routePath) => Object.fromEntries(Object.entries(COMMON_REFS).filter(([, value]) => routePath !== value.split('#')[0])); export const CJK_PATTERN = /\p{sc=Han}/u; export const handleCJKWhitespaces = (text) => { if (!text) { return ''; } text = text.at(0)?.match(CJK_PATTERN) ? text : ` ${text}`; return text.at(-1)?.match(CJK_PATTERN) ? text : `${text} `; };