nuxt-og-image 1.4.3 → 1.4.5

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
 
@@ -477,7 +477,7 @@ The selector to take a screenshot of. This is useful if you want to exclude head
477
477
 
478
478
  ```ts
479
479
  defineOgImageScreenshot({
480
- mask: '.page-content'
480
+ selector: '.page-content'
481
481
  })
482
482
  ```
483
483
 
package/dist/module.d.ts CHANGED
@@ -43,6 +43,9 @@ interface ModuleOptions {
43
43
  forcePrerender: boolean;
44
44
  satoriProvider: boolean;
45
45
  browserProvider: boolean;
46
+ experimentalInlineWasm: boolean;
47
+ experimentalRuntimeBrowser: boolean;
48
+ playground: boolean;
46
49
  }
47
50
  declare const _default: _nuxt_schema.NuxtModule<ModuleOptions>;
48
51
 
package/dist/module.json CHANGED
@@ -5,5 +5,5 @@
5
5
  "bridge": false
6
6
  },
7
7
  "configKey": "ogImage",
8
- "version": "1.4.3"
8
+ "version": "1.4.5"
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",
@@ -208,7 +213,10 @@ 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,
219
+ playground: process.env.NODE_ENV === "development" || nuxt.options.dev
212
220
  };
213
221
  },
214
222
  async setup(config, nuxt) {
@@ -262,7 +270,7 @@ export {}
262
270
  }
263
271
  });
264
272
  });
265
- if (nuxt.options.dev) {
273
+ if (config.playground) {
266
274
  const playgroundDir = distResolve("./client");
267
275
  const {
268
276
  middleware: rpcMiddleware
@@ -305,7 +313,7 @@ export {}
305
313
  ];
306
314
  exposeModuleConfig("nuxt-og-image", { ...config, assetDirs });
307
315
  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));
316
+ const isWebWorkerEnv = process.env.NODE_ENV !== "development" && (provider === "stackblitz" || edgeProvidersSupported.includes(nitroPreset));
309
317
  nuxt.hooks.hook("nitro:config", async (nitroConfig) => {
310
318
  nitroConfig.externals = defu(nitroConfig.externals || {}, {
311
319
  inline: [runtimeDir]
@@ -314,8 +322,10 @@ export {}
314
322
  nitroConfig.publicAssets.push({ dir: moduleAssetDir, maxAge: 31536e3 });
315
323
  const providerPath = `${runtimeDir}/nitro/providers`;
316
324
  if (config.browserProvider) {
317
- nitroConfig.virtual["#nuxt-og-image/browser"] = `
318
- export default async function() {
325
+ nitroConfig.virtual["#nuxt-og-image/browser"] = config.experimentalRuntimeBrowser ? `export default async function() {
326
+ return await import('${providerPath}/browser/node').then(m => m.default)
327
+ }
328
+ ` : `export default async function() {
319
329
  return (process.env.prerender || process.env.dev === 'true') ? await import('${providerPath}/browser/node').then(m => m.default) : () => {}
320
330
  }
321
331
  `;
@@ -337,25 +347,37 @@ export default function() {
337
347
  if (provider === 'satori')
338
348
  return ${config.satoriProvider ? `await import('${relative(nuxt.options.rootDir, resolve("./runtime/nitro/renderers/satori"))}').then(m => m.default)` : null}
339
349
  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
350
+ ${config.experimentalRuntimeBrowser ? `return await import('${relative(nuxt.options.rootDir, resolve("./runtime/nitro/renderers/browser"))}').then(m => m.default)` : ""}
351
+ ${!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
352
  }
342
353
  `;
343
354
  });
344
355
  nuxt.hooks.hook("nitro:init", async (nitro) => {
345
356
  let screenshotQueue = [];
346
357
  nitro.hooks.hook("compiled", async (_nitro) => {
347
- if (_nitro.options.preset === "cloudflare" || _nitro.options.preset === "vercel-edge") {
358
+ if (edgeProvidersSupported.includes(_nitro.options.preset)) {
348
359
  await copy(resolve("./runtime/public-assets/inter-latin-ext-400-normal.woff"), resolve(_nitro.options.output.publicDir, "inter-latin-ext-400-normal.woff"));
349
360
  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");
361
+ if (!config.experimentalInlineWasm) {
362
+ await copy(resolve("./runtime/public-assets/svg2png.wasm"), resolve(_nitro.options.output.serverDir, "svg2png.wasm"));
363
+ await copy(resolve("./runtime/public-assets/yoga.wasm"), resolve(_nitro.options.output.serverDir, "yoga.wasm"));
364
+ }
365
+ const indexFile = resolve(_nitro.options.output.serverDir, _nitro.options.preset === "netlify-edge" ? "server.mjs" : "index.mjs");
353
366
  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
- );
367
+ const indexContents = (await readFile(indexFile, "utf-8")).replace(".cwd(),", '?.cwd || "/",');
368
+ if (!config.experimentalInlineWasm) {
369
+ await writeFile(
370
+ indexFile,
371
+ 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)')
372
+ );
373
+ } else {
374
+ const svg2pngWasm = await readFile(resolve("./runtime/public-assets/svg2png.wasm"), "base64");
375
+ const yogaWasm = await readFile(resolve("./runtime/public-assets/yoga.wasm"), "base64");
376
+ await writeFile(
377
+ indexFile,
378
+ indexContents.replace('"/* NUXT_OG_IMAGE_SVG2PNG_WASM */"', `Buffer.from("${svg2pngWasm}", "base64")`).replace('"/* NUXT_OG_IMAGE_YOGA_WASM */"', `Buffer.from("${yogaWasm}", "base64")`)
379
+ );
380
+ }
359
381
  }
360
382
  }
361
383
  });
@@ -363,7 +385,7 @@ export default function() {
363
385
  createRouter({ routes: nitro.options.routeRules })
364
386
  );
365
387
  nitro.hooks.hook("prerender:generate", async (ctx) => {
366
- if (ctx.route.includes(".") || ctx.route.endsWith("__og_image__/html"))
388
+ if (ctx.route.includes("."))
367
389
  return;
368
390
  const html = ctx.contents;
369
391
  if (!html)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-og-image",
3
3
  "type": "module",
4
- "version": "1.4.3",
4
+ "version": "1.4.5",
5
5
  "packageManager": "pnpm@7.8.0",
6
6
  "license": "MIT",
7
7
  "funding": "https://github.com/sponsors/harlan-zw",