Rhys Sullivanopenapi works not bad782a4497 months agoHistory
32 lines · 881 B · TypeScript
RawDownload
import YAML from "yaml"; import type { OpenApiJsonObject } from "./types"; const isOpenApiJsonObject = (value: unknown): value is OpenApiJsonObject =>  typeof value === "object" && value !== null && !Array.isArray(value); const parseJsonDocument = (input: string): unknown => JSON.parse(input); const parseYamlDocument = (input: string): unknown => YAML.parse(input); const parseDocument = (input: string): unknown => {  try {    return parseJsonDocument(input);  } catch {    return parseYamlDocument(input);  }}; export const parseOpenApiDocument = (input: string): OpenApiJsonObject => {  const text = input.trim();  if (text.length === 0) {    throw new Error("OpenAPI document is empty");  }   const parsed = parseDocument(text);  if (!isOpenApiJsonObject(parsed)) {    throw new Error("OpenAPI document must parse to an object");  }   return parsed;};