81
const result: ParsedMcpIcons = [];
82
for (const icon of icons.icons || []) {
83
>
const uri = validateIcon(icon, launch, logger);
mcpIcons.ts
84
>
if (!uri) {
85
continue;
86
}
88
>
// check for sizes as string for back-compat with early 2025-11-25 drafts
89
>
const sizesArr = typeof icon.sizes === 'string' ? (icon.sizes as string).split(' ') : Array.isArray(icon.sizes) ? icon.sizes : [];
90
>
result.push({
91
>
src: uri,
92
>
theme: icon.theme === 'light' ? IconTheme.Light : icon.theme === 'dark' ? IconTheme.Dark : IconTheme.Any,
93
>
sizes: sizesArr.map(size => {
94
>
const [widthStr, heightStr] = size.toLowerCase().split('x');
95
>
return { width: Number(widthStr) || 0, height: Number(heightStr) || 0 };
96
>
}).sort((a, b) => a.width - b.width)
97
>
});
98
>
}
99
100
result.sort((a, b) => a.sizes[0]?.width - b.sizes[0]?.width);