x-satori
Version:
use Vue or Astro file to generate SVG image using Satori
49 lines (47 loc) • 1.16 kB
JavaScript
import {
defineSatoriConfig,
genSatoriSVG
} from "./chunk-JDONRD3H.mjs";
// src/vue.ts
import { parse } from "@vue/compiler-sfc";
import { createSSRApp } from "vue";
import { renderToString } from "vue/server-renderer";
async function satoriVue(opts, vueTemplateStr) {
const { descriptor } = parse(vueTemplateStr);
const renderedHtmlStr = await renderToString(
createSSRApp(
{
props: transformProps(opts.props),
template: descriptor.template?.content ?? ""
},
opts.props
)
);
return await genSatoriSVG(opts, renderedHtmlStr);
}
function transformProps(props) {
const result = {};
if (!props)
return result;
for (const key in props) {
let type;
if (typeof props[key] === "boolean")
type = Boolean;
else if (typeof props[key] === "number")
type = Number;
else if (typeof props[key] === "string")
type = String;
else if (typeof props[key] === "symbol")
type = Symbol;
else
type = Object;
result[key] = { type };
}
return result;
}
var vue_default = satoriVue;
export {
vue_default as default,
defineSatoriConfig,
satoriVue
};