import { eventHandler, setResponseHeader } from 'h3'; import iconNodes from '~/.vitepress/data/iconNodes/index.ts'; import { IconNodeWithKeys } from '~/.vitepress/theme/types'; import iconMetaData from '~/.vitepress/data/iconMetaData'; import releaseMeta from '~/.vitepress/data/releaseMetaData.json'; import categories from '~/.vitepress/data/categoriesData.json'; const dataResponse = { icons: Object.entries(iconNodes).reduce((acc, [name, iconNode]) => { const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs }]) => { return [name, attrs]; }); acc[name] = { iconNode: newIconNode, aliases: (iconMetaData[name]?.aliases ?? []).map((alias) => typeof alias === 'string' ? alias : alias.name, ), tags: iconMetaData[name].tags ?? [], categories: iconMetaData[name].categories ?? [], ...releaseMeta[name], }; return acc; }, {}), aliases: Object.entries(iconNodes).reduce((acc, [name]) => { for (const alias of iconMetaData[name]?.aliases ?? []) { acc[typeof alias === 'string' ? alias : alias.name] = name; } return acc; }, {}), categories, }; export default eventHandler((event) => { setResponseHeader(event, 'Cache-Control', 'public, max-age=86400'); setResponseHeader(event, 'Access-Control-Allow-Origin', '*'); return dataResponse; });