11import { eventHandler , setResponseHeader , defaultContentType } from 'h3' ;
2- import { Resvg , initWasm } from '@resvg/resvg-wasm' ;
32import iconNodes from '../../../data/iconNodes' ;
4- import wasm from './loadWasm' ;
53import { createElement } from 'react' ;
64import { renderToStaticMarkup } from 'react-dom/server' ;
75import createLucideIcon from 'lucide-react/src/createLucideIcon' ;
8-
9- var initializedResvg = initWasm ( wasm ) ;
6+ import sharp from 'sharp' ;
107
118export default eventHandler ( async ( event ) => {
129 const { params = { } } = event . context ;
13- await initializedResvg ;
14-
1510 const imageSize = 96 ;
1611 const name = params . data . split ( '/' ) . at ( - 3 ) ;
1712 const iconSizeString = params . data . split ( '/' ) . at ( - 2 ) ;
@@ -45,9 +40,7 @@ export default eventHandler(async (event) => {
4540 )
4641 . replace ( / < \/ s v g > / , '</g></svg>' ) ;
4742
48- const resvg = new Resvg ( svg , { background : '#000' } ) ;
49- const pngData = resvg . render ( ) ;
50- const pngBuffer = Buffer . from ( pngData . asPng ( ) ) ;
43+ const pngBuffer = await sharp ( Buffer . from ( svg ) ) . png ( ) . toBuffer ( ) ;
5144
5245 defaultContentType ( event , 'image/svg+xml' ) ;
5346 setResponseHeader ( event , 'Cache-Control' , 'public,max-age=31536000' ) ;
@@ -67,7 +60,7 @@ export default eventHandler(async (event) => {
6760 <image
6861 width="${ imageSize } "
6962 height="${ prevSvg ? imageSize * 2 : imageSize } "
70- href="data:image/png;base64,${ pngBuffer . toString ( 'base64' ) } "
63+ href="data:image/png;base64,${ pngBuffer . toString ( 'base64' ) } "
7164 image-rendering="pixelated"
7265 />
7366 </mask>
0 commit comments