nuxt-og-image 1.4.2 → 1.4.4

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.
package/README.md CHANGED
@@ -43,7 +43,7 @@ Enlightened OG Image generation for Nuxt 3.
43
43
  - 🤖 Browser provider: Supporting painless, complex templates
44
44
  - ✨ Prerendering enabled for static images
45
45
  - 📸 Feeling lazy? Just generate screenshots with options for hiding elements, waiting for animations, and more
46
- - ⚙️ Works with Cloudflare Workers, Vercel Edge, Netlify, and more
46
+ - ⚙️ Satori support in Vercel Edge and Cloudflare Workers
47
47
 
48
48
  ## Install
49
49
 
@@ -80,7 +80,9 @@ _nuxt.config.ts_
80
80
  export default defineNuxtConfig({
81
81
  // Recommended
82
82
  runtimeConfig: {
83
- siteUrl: process.env.NUXT_PUBLIC_SITE_URL || 'https://example.com',
83
+ public: {
84
+ siteUrl: process.env.NUXT_PUBLIC_SITE_URL || 'https://example.com',
85
+ }
84
86
  },
85
87
  // OR
86
88
  ogImage: {
@@ -475,7 +477,7 @@ The selector to take a screenshot of. This is useful if you want to exclude head
475
477
 
476
478
  ```ts
477
479
  defineOgImageScreenshot({
478
- mask: '.page-content'
480
+ selector: '.page-content'
479
481
  })
480
482
  ```
481
483
 
package/dist/module.d.ts CHANGED
@@ -43,6 +43,8 @@ interface ModuleOptions {
43
43
  forcePrerender: boolean;
44
44
  satoriProvider: boolean;
45
45
  browserProvider: boolean;
46
+ experimentalInlineWasm: boolean;
47
+ experimentalRuntimeBrowser: boolean;
46
48
  }
47
49
  declare const _default: _nuxt_schema.NuxtModule<ModuleOptions>;
48
50
 
package/dist/module.json CHANGED
@@ -5,5 +5,5 @@
5
5
  "bridge": false
6
6
  },
7
7
  "configKey": "ogImage",
8
- "version": "1.4.2"
8
+ "version": "1.4.4"
9
9
  }
package/dist/module.mjs CHANGED
@@ -186,6 +186,11 @@ function stripOgImageOptions(html) {
186
186
  const PATH = "/__nuxt_og_image__";
187
187
  const PATH_ENTRY = `${PATH}/entry`;
188
188
  const PATH_PLAYGROUND = `${PATH}/client`;
189
+ const edgeProvidersSupported = [
190
+ "cloudflare",
191
+ "vercel-edge",
192
+ "netlify-edge"
193
+ ];
189
194
  const module = defineNuxtModule({
190
195
  meta: {
191
196
  name: "nuxt-og-image",
@@ -199,7 +204,7 @@ const module = defineNuxtModule({
199
204
  return {
200
205
  // when we run `nuxi generate` we need to force prerendering
201
206
  forcePrerender: !nuxt.options.dev && nuxt.options._generate,
202
- host: nuxt.options.runtimeConfig.public?.siteUrl,
207
+ host: process.env.NUXT_PUBLIC_SITE_URL || nuxt.options.runtimeConfig.public?.siteUrl,
203
208
  defaults: {
204
209
  component: "OgImageBasic",
205
210
  width: 1200,
@@ -208,7 +213,9 @@ const module = defineNuxtModule({
208
213
  satoriProvider: true,
209
214
  browserProvider: true,
210
215
  fonts: [],
211
- satoriOptions: {}
216
+ satoriOptions: {},
217
+ experimentalInlineWasm: process.env.NITRO_PRESET === "netlify-edge" || nuxt.options.nitro.preset === "netlify-edge" || false,
218
+ experimentalRuntimeBrowser: false
212
219
  };
213
220
  },
214
221
  async setup(config, nuxt) {
@@ -305,7 +312,7 @@ export {}
305
312
  ];
306
313
  exposeModuleConfig("nuxt-og-image", { ...config, assetDirs });
307
314
  const nitroPreset = process.env.NITRO_PRESET || nuxt.options.nitro.preset;
308
- const isWebWorkerEnv = process.env.NODE_ENV !== "development" && (provider === "stackblitz" || ["cloudflare", "vercel-edge", "netlify-edge", "lambda"].includes(nitroPreset));
315
+ const isWebWorkerEnv = process.env.NODE_ENV !== "development" && (provider === "stackblitz" || edgeProvidersSupported.includes(nitroPreset));
309
316
  nuxt.hooks.hook("nitro:config", async (nitroConfig) => {
310
317
  nitroConfig.externals = defu(nitroConfig.externals || {}, {
311
318
  inline: [runtimeDir]
@@ -314,8 +321,10 @@ export {}
314
321
  nitroConfig.publicAssets.push({ dir: moduleAssetDir, maxAge: 31536e3 });
315
322
  const providerPath = `${runtimeDir}/nitro/providers`;
316
323
  if (config.browserProvider) {
317
- nitroConfig.virtual["#nuxt-og-image/browser"] = `
318
- export default async function() {
324
+ nitroConfig.virtual["#nuxt-og-image/browser"] = config.experimentalRuntimeBrowser ? `export default async function() {
325
+ return await import('${providerPath}/browser/node').then(m => m.default)
326
+ }
327
+ ` : `export default async function() {
319
328
  return (process.env.prerender || process.env.dev === 'true') ? await import('${providerPath}/browser/node').then(m => m.default) : () => {}
320
329
  }
321
330
  `;
@@ -337,25 +346,37 @@ export default function() {
337
346
  if (provider === 'satori')
338
347
  return ${config.satoriProvider ? `await import('${relative(nuxt.options.rootDir, resolve("./runtime/nitro/renderers/satori"))}').then(m => m.default)` : null}
339
348
  if (provider === 'browser')
340
- return (process.env.prerender || process.env.dev) ? ${config.browserProvider ? `await import('${relative(nuxt.options.rootDir, resolve("./runtime/nitro/renderers/browser"))}').then(m => m.default)` : null} : null
349
+ ${config.experimentalRuntimeBrowser ? `return await import('${relative(nuxt.options.rootDir, resolve("./runtime/nitro/renderers/browser"))}').then(m => m.default)` : ""}
350
+ ${!config.experimentalRuntimeBrowser ? `return (process.env.prerender || process.env.dev) ? ${config.browserProvider ? `await import('${relative(nuxt.options.rootDir, resolve("./runtime/nitro/renderers/browser"))}').then(m => m.default)` : null} : null` : ""}
341
351
  }
342
352
  `;
343
353
  });
344
354
  nuxt.hooks.hook("nitro:init", async (nitro) => {
345
355
  let screenshotQueue = [];
346
356
  nitro.hooks.hook("compiled", async (_nitro) => {
347
- if (_nitro.options.preset === "cloudflare" || _nitro.options.preset === "vercel-edge") {
357
+ if (edgeProvidersSupported.includes(_nitro.options.preset)) {
348
358
  await copy(resolve("./runtime/public-assets/inter-latin-ext-400-normal.woff"), resolve(_nitro.options.output.publicDir, "inter-latin-ext-400-normal.woff"));
349
359
  await copy(resolve("./runtime/public-assets/inter-latin-ext-700-normal.woff"), resolve(_nitro.options.output.publicDir, "inter-latin-ext-700-normal.woff"));
350
- await copy(resolve("./runtime/public-assets/svg2png.wasm"), resolve(_nitro.options.output.serverDir, "svg2png.wasm"));
351
- await copy(resolve("./runtime/public-assets/yoga.wasm"), resolve(_nitro.options.output.serverDir, "yoga.wasm"));
352
- const indexFile = resolve(_nitro.options.output.serverDir, "index.mjs");
360
+ if (config.experimentalInlineWasm) {
361
+ await copy(resolve("./runtime/public-assets/svg2png.wasm"), resolve(_nitro.options.output.serverDir, "svg2png.wasm"));
362
+ await copy(resolve("./runtime/public-assets/yoga.wasm"), resolve(_nitro.options.output.serverDir, "yoga.wasm"));
363
+ }
364
+ const indexFile = resolve(_nitro.options.output.serverDir, _nitro.options.preset === "netlify-edge" ? "server.mjs" : "index.mjs");
353
365
  if (await pathExists(indexFile)) {
354
- const indexContents = await readFile(indexFile, "utf-8");
355
- await writeFile(
356
- indexFile,
357
- indexContents.replace('"/* NUXT_OG_IMAGE_SVG2PNG_WASM */"', 'import("./svg2png.wasm").then(m => m.default || m)').replace('"/* NUXT_OG_IMAGE_YOGA_WASM */"', 'import("./yoga.wasm").then(m => m.default || m)').replace(".cwd(),", '?.cwd || "/",')
358
- );
366
+ const indexContents = (await readFile(indexFile, "utf-8")).replace(".cwd(),", '?.cwd || "/",');
367
+ if (!config.experimentalInlineWasm) {
368
+ await writeFile(
369
+ indexFile,
370
+ indexContents.replace('"/* NUXT_OG_IMAGE_SVG2PNG_WASM */"', 'import("./svg2png.wasm").then(m => m.default || m)').replace('"/* NUXT_OG_IMAGE_YOGA_WASM */"', 'import("./yoga.wasm").then(m => m.default || m)')
371
+ );
372
+ } else {
373
+ const svg2pngWasm = await readFile(resolve("./runtime/public-assets/svg2png.wasm"), "base64");
374
+ const yogaWasm = await readFile(resolve("./runtime/public-assets/yoga.wasm"), "base64");
375
+ await writeFile(
376
+ indexFile,
377
+ indexContents.replace('"/* NUXT_OG_IMAGE_SVG2PNG_WASM */"', `Buffer.from("${svg2pngWasm}", "base64")`).replace('"/* NUXT_OG_IMAGE_YOGA_WASM */"', `Buffer.from("${yogaWasm}", "base64")`)
378
+ );
379
+ }
359
380
  }
360
381
  }
361
382
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-og-image",
3
3
  "type": "module",
4
- "version": "1.4.2",
4
+ "version": "1.4.4",
5
5
  "packageManager": "pnpm@7.8.0",
6
6
  "license": "MIT",
7
7
  "funding": "https://github.com/sponsors/harlan-zw",