@effing/satori 0.11.0 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,9 @@ function satoriPoolPlugin() {
5
5
  return {
6
6
  name: "@effing/satori:worker",
7
7
  apply: "build",
8
+ config() {
9
+ return { ssr: { external: ["tinypool"] } };
10
+ },
8
11
  configResolved(config) {
9
12
  resolvedConfig = config;
10
13
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/vite/index.ts"],"sourcesContent":["import { fileURLToPath } from \"url\";\n\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\n/**\n * Vite plugin that bundles the `@effing/satori` worker into the SSR output and\n * rewrites `createSatoriPool()` calls to point at it.\n *\n * **This plugin is required for production SSR builds.** Without it the worker\n * path resolved via `import.meta.url` breaks after Vite bundles the pool code,\n * because the URL points at the build output directory instead of `node_modules`.\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import { satoriPoolPlugin } from \"@effing/satori/vite\";\n *\n * export default defineConfig({\n * plugins: [satoriPoolPlugin()],\n * });\n * ```\n */\nexport function satoriPoolPlugin(): Plugin {\n let resolvedConfig: ResolvedConfig;\n\n return {\n name: \"@effing/satori:worker\",\n apply: \"build\",\n\n configResolved(config) {\n resolvedConfig = config;\n },\n\n transform(code, _id, options) {\n if (!options?.ssr) return;\n\n const pattern = /\\bcreateSatoriPool\\(\\s*(\\)|\\{)/g;\n let matched = false;\n const result = code.replace(pattern, (_match, capture: string) => {\n matched = true;\n if (capture === \")\") {\n return 'createSatoriPool({ workerFile: import.meta.dirname + \"/satori-worker.js\" })';\n }\n // capture === \"{\"\n return 'createSatoriPool({ workerFile: import.meta.dirname + \"/satori-worker.js\", ';\n });\n\n if (!matched) return;\n return { code: result, map: null };\n },\n\n async writeBundle(outputOptions) {\n if (!resolvedConfig.build.ssr) return;\n\n const workerEntry = fileURLToPath(\n new URL(\"../worker/index.js\", import.meta.url),\n );\n const outDir = outputOptions.dir ?? resolvedConfig.build.outDir;\n\n const { build } = await import(\"vite\");\n await build({\n configFile: false,\n logLevel: \"silent\",\n build: {\n write: true,\n emptyOutDir: false,\n outDir,\n lib: {\n entry: workerEntry,\n formats: [\"es\"],\n fileName: () => \"satori-worker.js\",\n },\n rollupOptions: {\n external: [\"@resvg/resvg-js\"],\n },\n },\n });\n },\n };\n}\n"],"mappings":";AAAA,SAAS,qBAAqB;AAsBvB,SAAS,mBAA2B;AACzC,MAAI;AAEJ,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IAEP,eAAe,QAAQ;AACrB,uBAAiB;AAAA,IACnB;AAAA,IAEA,UAAU,MAAM,KAAK,SAAS;AAC5B,UAAI,CAAC,SAAS,IAAK;AAEnB,YAAM,UAAU;AAChB,UAAI,UAAU;AACd,YAAM,SAAS,KAAK,QAAQ,SAAS,CAAC,QAAQ,YAAoB;AAChE,kBAAU;AACV,YAAI,YAAY,KAAK;AACnB,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT,CAAC;AAED,UAAI,CAAC,QAAS;AACd,aAAO,EAAE,MAAM,QAAQ,KAAK,KAAK;AAAA,IACnC;AAAA,IAEA,MAAM,YAAY,eAAe;AAC/B,UAAI,CAAC,eAAe,MAAM,IAAK;AAE/B,YAAM,cAAc;AAAA,QAClB,IAAI,IAAI,sBAAsB,YAAY,GAAG;AAAA,MAC/C;AACA,YAAM,SAAS,cAAc,OAAO,eAAe,MAAM;AAEzD,YAAM,EAAE,MAAM,IAAI,MAAM,OAAO,MAAM;AACrC,YAAM,MAAM;AAAA,QACV,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,UACL,OAAO;AAAA,UACP,aAAa;AAAA,UACb;AAAA,UACA,KAAK;AAAA,YACH,OAAO;AAAA,YACP,SAAS,CAAC,IAAI;AAAA,YACd,UAAU,MAAM;AAAA,UAClB;AAAA,UACA,eAAe;AAAA,YACb,UAAU,CAAC,iBAAiB;AAAA,UAC9B;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/vite/index.ts"],"sourcesContent":["import { fileURLToPath } from \"url\";\n\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\n/**\n * Vite plugin that bundles the `@effing/satori` worker into the SSR output and\n * rewrites `createSatoriPool()` calls to point at it.\n *\n * **This plugin is required for production SSR builds.** Without it the worker\n * path resolved via `import.meta.url` breaks after Vite bundles the pool code,\n * because the URL points at the build output directory instead of `node_modules`.\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import { satoriPoolPlugin } from \"@effing/satori/vite\";\n *\n * export default defineConfig({\n * plugins: [satoriPoolPlugin()],\n * });\n * ```\n */\nexport function satoriPoolPlugin(): Plugin {\n let resolvedConfig: ResolvedConfig;\n\n return {\n name: \"@effing/satori:worker\",\n apply: \"build\",\n\n config() {\n return { ssr: { external: [\"tinypool\"] } };\n },\n\n configResolved(config) {\n resolvedConfig = config;\n },\n\n transform(code, _id, options) {\n if (!options?.ssr) return;\n\n const pattern = /\\bcreateSatoriPool\\(\\s*(\\)|\\{)/g;\n let matched = false;\n const result = code.replace(pattern, (_match, capture: string) => {\n matched = true;\n if (capture === \")\") {\n return 'createSatoriPool({ workerFile: import.meta.dirname + \"/satori-worker.js\" })';\n }\n // capture === \"{\"\n return 'createSatoriPool({ workerFile: import.meta.dirname + \"/satori-worker.js\", ';\n });\n\n if (!matched) return;\n return { code: result, map: null };\n },\n\n async writeBundle(outputOptions) {\n if (!resolvedConfig.build.ssr) return;\n\n const workerEntry = fileURLToPath(\n new URL(\"../worker/index.js\", import.meta.url),\n );\n const outDir = outputOptions.dir ?? resolvedConfig.build.outDir;\n\n const { build } = await import(\"vite\");\n await build({\n configFile: false,\n logLevel: \"silent\",\n build: {\n write: true,\n emptyOutDir: false,\n outDir,\n lib: {\n entry: workerEntry,\n formats: [\"es\"],\n fileName: () => \"satori-worker.js\",\n },\n rollupOptions: {\n external: [\"@resvg/resvg-js\"],\n },\n },\n });\n },\n };\n}\n"],"mappings":";AAAA,SAAS,qBAAqB;AAsBvB,SAAS,mBAA2B;AACzC,MAAI;AAEJ,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IAEP,SAAS;AACP,aAAO,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE;AAAA,IAC3C;AAAA,IAEA,eAAe,QAAQ;AACrB,uBAAiB;AAAA,IACnB;AAAA,IAEA,UAAU,MAAM,KAAK,SAAS;AAC5B,UAAI,CAAC,SAAS,IAAK;AAEnB,YAAM,UAAU;AAChB,UAAI,UAAU;AACd,YAAM,SAAS,KAAK,QAAQ,SAAS,CAAC,QAAQ,YAAoB;AAChE,kBAAU;AACV,YAAI,YAAY,KAAK;AACnB,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT,CAAC;AAED,UAAI,CAAC,QAAS;AACd,aAAO,EAAE,MAAM,QAAQ,KAAK,KAAK;AAAA,IACnC;AAAA,IAEA,MAAM,YAAY,eAAe;AAC/B,UAAI,CAAC,eAAe,MAAM,IAAK;AAE/B,YAAM,cAAc;AAAA,QAClB,IAAI,IAAI,sBAAsB,YAAY,GAAG;AAAA,MAC/C;AACA,YAAM,SAAS,cAAc,OAAO,eAAe,MAAM;AAEzD,YAAM,EAAE,MAAM,IAAI,MAAM,OAAO,MAAM;AACrC,YAAM,MAAM;AAAA,QACV,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,UACL,OAAO;AAAA,UACP,aAAa;AAAA,UACb;AAAA,UACA,KAAK;AAAA,YACH,OAAO;AAAA,YACP,SAAS,CAAC,IAAI;AAAA,YACd,UAAU,MAAM;AAAA,UAClB;AAAA,UACA,eAAe;AAAA,YACb,UAAU,CAAC,iBAAiB;AAAA,UAC9B;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effing/satori",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "description": "Render JSX to PNG using Satori with emoji support",
5
5
  "type": "module",
6
6
  "exports": {
@@ -38,7 +38,7 @@
38
38
  "@resvg/resvg-js": "^2.6.2",
39
39
  "react": "^18.0.0 || ^19.0.0",
40
40
  "tinypool": "^1.0.0",
41
- "vite": "^5.0.0 || ^6.0.0"
41
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "react": {