Fix gh-api for strokewidths

This commit is contained in:
Eric Fennis
2023-06-04 17:52:03 +02:00
parent ffc03ea1f6
commit 606706e8e0
4 changed files with 40 additions and 2 deletions

View File

@@ -0,0 +1,35 @@
import { eventHandler, setResponseHeader, defaultContentType } from 'h3'
import { renderToString } from 'react-dom/server'
import { createElement } from 'react'
import SvgPreview from '../../../lib/SvgPreview/index.tsx';
import createLucideIcon, { IconNode } from 'lucide-react/src/createLucideIcon'
import { parseSync } from 'svgson';
export default eventHandler((event) => {
const { params } = event.context
const [strokeWidth, svgData] = params.data.split('/');
const data = svgData.slice(0, -4);
const src = Buffer.from(data, 'base64').toString('utf8');
const Icon = createLucideIcon(
'icon',
parseSync(src.includes('<svg') ? src : `<svg>${src}</svg>`).children.map(
({ name, attributes }) => [name, attributes]
) as IconNode
);
const svg = Buffer.from(
// We can't use jsx here, is not supported here by nitro.
renderToString(createElement(Icon, { strokeWidth })).replace(
/>/,
'><style>@media screen and (prefers-color-scheme: dark) { svg { stroke: #fff } }</style>'
)
).toString('utf8');
defaultContentType(event, 'image/svg+xml')
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000')
return svg
})

View File

@@ -16,7 +16,7 @@
"postbuild:vercelJson": "node ../scripts/writeVercelOutput.mjs",
"dev": "npx nitropack dev",
"build:api": "npx nitropack build",
"prebuild": "pnpm build:iconNodes && pnpm build:metaJson && pnpm build:releaseJson && pnpm build:relatedIcons && pnpm build:iconDetails",
"prebuild": "pnpm prebuild:iconNodes && pnpm prebuild:metaJson && pnpm prebuild:releaseJson && pnpm prebuild:relatedIcons && pnpm prebuild:iconDetails",
"build": "pnpm run \"/^prebuild:.*/\" && pnpm build:api && pnpm build:docs && pnpm postbuild:vercelJson",
"preview": "node .output/server/index.mjs"
},
@@ -47,6 +47,7 @@
"shiki-processor": "^0.1.3",
"simple-git": "^3.18.0",
"svg-pathdata": "^6.0.3",
"svgson": "^5.2.1",
"vue": "^3.2.47"
}
}

3
pnpm-lock.yaml generated
View File

@@ -111,6 +111,9 @@ importers:
svg-pathdata:
specifier: ^6.0.3
version: 6.0.3
svgson:
specifier: ^5.2.1
version: 5.2.1
vue:
specifier: ^3.2.47
version: 3.2.47

View File

@@ -1,5 +1,4 @@
packages:
- 'packages/*'
- 'tools/*'
- 'site'
- 'docs'