UNPKG

apisurf

Version:

Analyze API surface changes between npm package versions to catch breaking changes

49 lines (48 loc) 1.82 kB
import { formatInspectConsoleOutput } from './formatInspectConsoleOutput.js'; import { formatInspectMarkdownOutput } from './formatInspectMarkdownOutput.js'; import { formatInspectHtmlOutput } from './formatInspectHtmlOutput.js'; import { formatInspectReportOutput } from './formatInspectReportOutput.js'; /** * Formats inspect results according to the specified output format. */ export function formatInspectOutput(result, format, verbose = false) { switch (format) { case 'json': return formatInspectJsonOutput(result); case 'markdown': return formatInspectMarkdownOutput(result, verbose); case 'html': return formatInspectHtmlOutput(result); case 'report': return formatInspectReportOutput(result); case 'console': default: return formatInspectConsoleOutput(result, verbose); } } /** * Formats inspect results as JSON. */ function formatInspectJsonOutput(result) { // Convert Map to object for JSON serialization const apiSurfacesObj = {}; for (const [key, surface] of result.apiSurfaces) { apiSurfacesObj[key] = { ...surface, namedExports: Array.from(surface.namedExports), typeOnlyExports: Array.from(surface.typeOnlyExports), typeDefinitions: surface.typeDefinitions ? Object.fromEntries(Array.from(surface.typeDefinitions.entries()).map(([name, def]) => [ name, { ...def, properties: def.properties ? Object.fromEntries(def.properties) : undefined } ])) : undefined }; } return JSON.stringify({ ...result, apiSurfaces: apiSurfacesObj }, null, 2); }