mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-12 13:38:32 +00:00
* update nitro * try this? * Try this * update vercel output * Add await * Fix endpoints * Adjust 404 catch all * Fix output * Adjust react in api * Fix types * Remove @resvg/resvg-wasm * Format code * Fix failing check * Apply feedback * Format code
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { eventHandler, setResponseHeader } from 'h3';
|
|
import iconNodes from '../../data/iconNodes/index.ts';
|
|
import { IconNodeWithKeys } from '../../theme/types';
|
|
import iconMetaData from '../../data/iconMetaData';
|
|
import releaseMeta from '../../data/releaseMetaData.json';
|
|
import categories from '../../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;
|
|
});
|