import type { ApiScanResultItem, PluginConfigScanResultItem, ScanConfigSchema, } from '@ones-open/cli-utils' import fse from 'fs-extra' import { dump } from 'js-yaml' export const exportResults = async ( apiScanResults: ApiScanResultItem[], pluginConfigScanResults: PluginConfigScanResultItem[], scanConfig: ScanConfigSchema, outputPath: string, ) => { const { output: { level }, } = scanConfig if (outputPath) { const apiResults = apiScanResults .map((item) => { const { value, location, matched = [] } = item const shouldSkip = level === 'matched' && matched.length === 0 if (shouldSkip) { return null } return { code: value, location: `${location.file}:${location.line}:${location.column}`, matched, } }) .filter((item) => !!item) const pluginConfigResults = pluginConfigScanResults.map((item) => { const { value, correspondingApis, matched = [] } = item const shouldSkip = level === 'matched' && matched.length === 0 if (shouldSkip) { return null } return { action: value, correspondingAPIs: correspondingApis, matched, } }) await fse.outputFile( outputPath, dump({ apis: apiResults, pluginConfigItems: pluginConfigResults, }), 'utf-8', ) } }