nuxt-og-image 6.2.6 → 6.3.0

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.
Files changed (41) hide show
  1. package/dist/chunks/tw4.cjs +1 -1
  2. package/dist/chunks/tw4.mjs +1 -1
  3. package/dist/chunks/uno.cjs +1 -1
  4. package/dist/chunks/uno.mjs +1 -1
  5. package/dist/cli.cjs +24 -1
  6. package/dist/cli.mjs +24 -1
  7. package/dist/devtools/200.html +1 -1
  8. package/dist/devtools/404.html +1 -1
  9. package/dist/devtools/_nuxt/{Co3OAyKc.js → BNA9K40e.js} +1 -1
  10. package/dist/devtools/_nuxt/{jJVhk0xb.js → BSxwzHhf.js} +3 -3
  11. package/dist/devtools/_nuxt/{aOrl9V8N.js → Bpmn-wMY.js} +1 -1
  12. package/dist/devtools/_nuxt/{BXPqj_uX.js → CoSxBJd8.js} +1 -1
  13. package/dist/devtools/_nuxt/{Dy0Vu_Hf.js → Cw6IxO5j.js} +1 -1
  14. package/dist/devtools/_nuxt/{iJA-9P1Z.js → D1nfKtji.js} +1 -1
  15. package/dist/devtools/_nuxt/{Bo4lSgm2.js → DA9abGfd.js} +1 -1
  16. package/dist/devtools/_nuxt/builds/latest.json +1 -1
  17. package/dist/devtools/_nuxt/builds/meta/20c4a6d7-a8d9-4f9c-a8e8-bb611f6dfcfb.json +1 -0
  18. package/dist/devtools/debug/index.html +1 -1
  19. package/dist/devtools/docs/index.html +1 -1
  20. package/dist/devtools/index.html +1 -1
  21. package/dist/devtools/templates/index.html +1 -1
  22. package/dist/module.cjs +1 -1
  23. package/dist/module.d.cts +21 -0
  24. package/dist/module.d.mts +21 -0
  25. package/dist/module.d.ts +21 -0
  26. package/dist/module.json +1 -1
  27. package/dist/module.mjs +1 -1
  28. package/dist/runtime/app/utils.js +2 -2
  29. package/dist/runtime/server/og-image/browser/screenshot.js +6 -2
  30. package/dist/runtime/server/og-image/context.js +43 -15
  31. package/dist/runtime/server/og-image/core/vnodes.js +3 -0
  32. package/dist/runtime/server/utils.js +2 -2
  33. package/dist/runtime/shared/urlEncoding.d.ts +11 -13
  34. package/dist/runtime/shared/urlEncoding.js +27 -11
  35. package/dist/runtime/shared.d.ts +1 -1
  36. package/dist/runtime/shared.js +1 -2
  37. package/dist/runtime/types.d.ts +5 -0
  38. package/dist/shared/{nuxt-og-image.CA6cPvTd.mjs → nuxt-og-image.D8duo3Ar.mjs} +20 -2
  39. package/dist/shared/{nuxt-og-image.DVJetxwr.cjs → nuxt-og-image.DBQcjcr6.cjs} +21 -3
  40. package/package.json +1 -1
  41. package/dist/devtools/_nuxt/builds/meta/116b189e-4f49-45f9-b21c-dfb518abeb03.json +0 -1
@@ -5,7 +5,7 @@ const node_url = require('node:url');
5
5
  const exsolve = require('exsolve');
6
6
  const pathe = require('pathe');
7
7
  const cssProvider = require('./css-provider.cjs');
8
- const module$1 = require('../shared/nuxt-og-image.DVJetxwr.cjs');
8
+ const module$1 = require('../shared/nuxt-og-image.DBQcjcr6.cjs');
9
9
  require('node:fs');
10
10
  require('@nuxt/kit');
11
11
  require('defu');
@@ -3,7 +3,7 @@ import { pathToFileURL } from 'node:url';
3
3
  import { resolveModulePath } from 'exsolve';
4
4
  import { dirname, join } from 'pathe';
5
5
  import { extractVariantBaseClasses, resolveVariantPrefixes } from './css-provider.mjs';
6
- import { g as resolveVarsDeep, s as simplifyCss, p as postProcessStyles, l as loadLightningCss, e as extractCssVars, b as extractUniversalVars, c as extractPerClassVars, d as extractClassStyles } from '../shared/nuxt-og-image.CA6cPvTd.mjs';
6
+ import { g as resolveVarsDeep, s as simplifyCss, p as postProcessStyles, l as loadLightningCss, e as extractCssVars, b as extractUniversalVars, c as extractPerClassVars, d as extractClassStyles } from '../shared/nuxt-og-image.D8duo3Ar.mjs';
7
7
  import 'node:fs';
8
8
  import '@nuxt/kit';
9
9
  import 'defu';
@@ -4,7 +4,7 @@ const promises = require('node:fs/promises');
4
4
  const defu = require('defu');
5
5
  const logger_js = require('../../dist/runtime/logger.js');
6
6
  const cssProvider = require('./css-provider.cjs');
7
- const module$1 = require('../shared/nuxt-og-image.DVJetxwr.cjs');
7
+ const module$1 = require('../shared/nuxt-og-image.DBQcjcr6.cjs');
8
8
  require('exsolve');
9
9
  require('node:fs');
10
10
  require('node:url');
@@ -2,7 +2,7 @@ import { readFile } from 'node:fs/promises';
2
2
  import { defu } from 'defu';
3
3
  import { logger } from '../../dist/runtime/logger.js';
4
4
  import { extractVariantBaseClasses, resolveVariantPrefixes } from './css-provider.mjs';
5
- import { s as simplifyCss, e as extractCssVars, a as extractPropertyInitialValues, b as extractUniversalVars, c as extractPerClassVars, d as extractClassStyles, p as postProcessStyles, f as extractVarsFromCss, r as resolveExtractedVars } from '../shared/nuxt-og-image.CA6cPvTd.mjs';
5
+ import { s as simplifyCss, e as extractCssVars, a as extractPropertyInitialValues, b as extractUniversalVars, c as extractPerClassVars, d as extractClassStyles, p as postProcessStyles, f as extractVarsFromCss, r as resolveExtractedVars } from '../shared/nuxt-og-image.D8duo3Ar.mjs';
6
6
  import 'exsolve';
7
7
  import 'node:fs';
8
8
  import 'node:url';
package/dist/cli.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
+ const node_crypto = require('node:crypto');
4
5
  const fs = require('node:fs');
5
6
  const node_url = require('node:url');
6
7
  const p = require('@clack/prompts');
@@ -1264,6 +1265,25 @@ async function runEnable(renderer, args2) {
1264
1265
  await installRendererDeps([renderer], isEdge);
1265
1266
  p__namespace.outro("Done");
1266
1267
  }
1268
+ function generateSecret() {
1269
+ const secret = node_crypto.randomBytes(32).toString("hex");
1270
+ p__namespace.intro("nuxt-og-image generate-secret");
1271
+ p__namespace.note([
1272
+ `${secret}`,
1273
+ "",
1274
+ "Add this to your nuxt.config.ts:",
1275
+ "",
1276
+ " ogImage: {",
1277
+ " security: {",
1278
+ ` secret: process.env.OG_IMAGE_SECRET,`,
1279
+ " }",
1280
+ " }",
1281
+ "",
1282
+ "Then set the environment variable:",
1283
+ ` OG_IMAGE_SECRET=${secret}`
1284
+ ].join("\n"), "Generated Secret");
1285
+ p__namespace.outro("");
1286
+ }
1267
1287
  function showHelp() {
1268
1288
  p__namespace.intro("nuxt-og-image CLI");
1269
1289
  p__namespace.note([
@@ -1276,7 +1296,8 @@ function showHelp() {
1276
1296
  "enable <renderer> Install dependencies for a renderer (satori, browser, takumi)",
1277
1297
  " Options: --edge (install wasm versions for edge runtimes)",
1278
1298
  "migrate v6 Migrate to v6 (component suffixes + new API)",
1279
- " Options: --dry-run, --yes, --renderer <renderer>"
1299
+ " Options: --dry-run, --yes, --renderer <renderer>",
1300
+ "generate-secret Generate a signing secret for URL tamper protection"
1280
1301
  ].join("\n"), "Commands");
1281
1302
  p__namespace.outro("");
1282
1303
  }
@@ -1308,6 +1329,8 @@ if (hasHelp || !command) {
1308
1329
  runMigrate(args);
1309
1330
  } else if (command === "switch") {
1310
1331
  runSwitch(args.slice(1));
1332
+ } else if (command === "generate-secret") {
1333
+ generateSecret();
1311
1334
  } else if (command === "enable") {
1312
1335
  const renderer = args[1];
1313
1336
  if (!renderer) {
package/dist/cli.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import { randomBytes } from 'node:crypto';
2
3
  import { existsSync, mkdirSync, writeFileSync, readdirSync, readFileSync, renameSync } from 'node:fs';
3
4
  import { fileURLToPath } from 'node:url';
4
5
  import * as p from '@clack/prompts';
@@ -1247,6 +1248,25 @@ async function runEnable(renderer, args2) {
1247
1248
  await installRendererDeps([renderer], isEdge);
1248
1249
  p.outro("Done");
1249
1250
  }
1251
+ function generateSecret() {
1252
+ const secret = randomBytes(32).toString("hex");
1253
+ p.intro("nuxt-og-image generate-secret");
1254
+ p.note([
1255
+ `${secret}`,
1256
+ "",
1257
+ "Add this to your nuxt.config.ts:",
1258
+ "",
1259
+ " ogImage: {",
1260
+ " security: {",
1261
+ ` secret: process.env.OG_IMAGE_SECRET,`,
1262
+ " }",
1263
+ " }",
1264
+ "",
1265
+ "Then set the environment variable:",
1266
+ ` OG_IMAGE_SECRET=${secret}`
1267
+ ].join("\n"), "Generated Secret");
1268
+ p.outro("");
1269
+ }
1250
1270
  function showHelp() {
1251
1271
  p.intro("nuxt-og-image CLI");
1252
1272
  p.note([
@@ -1259,7 +1279,8 @@ function showHelp() {
1259
1279
  "enable <renderer> Install dependencies for a renderer (satori, browser, takumi)",
1260
1280
  " Options: --edge (install wasm versions for edge runtimes)",
1261
1281
  "migrate v6 Migrate to v6 (component suffixes + new API)",
1262
- " Options: --dry-run, --yes, --renderer <renderer>"
1282
+ " Options: --dry-run, --yes, --renderer <renderer>",
1283
+ "generate-secret Generate a signing secret for URL tamper protection"
1263
1284
  ].join("\n"), "Commands");
1264
1285
  p.outro("");
1265
1286
  }
@@ -1291,6 +1312,8 @@ if (hasHelp || !command) {
1291
1312
  runMigrate(args);
1292
1313
  } else if (command === "switch") {
1293
1314
  runSwitch(args.slice(1));
1315
+ } else if (command === "generate-secret") {
1316
+ generateSecret();
1294
1317
  } else if (command === "enable") {
1295
1318
  const renderer = args[1];
1296
1319
  if (!renderer) {
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/jJVhk0xb.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.DgipzMgL.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/jJVhk0xb.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHHO6nw6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Co3OAyKc.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/jJVhk0xb.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT_SITE_CONFIG__={_priority:{env:-15,url:-3},env:"production",url:"https:\u002F\u002Fnuxtseo.com"}</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"116b189e-4f49-45f9-b21c-dfb518abeb03",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774546027086,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/BSxwzHhf.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.DgipzMgL.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BSxwzHhf.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHHO6nw6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BNA9K40e.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/BSxwzHhf.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT_SITE_CONFIG__={_priority:{env:-15,url:-3},env:"production",url:"https:\u002F\u002Fnuxtseo.com"}</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"20c4a6d7-a8d9-4f9c-a8e8-bb611f6dfcfb",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774750928761,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/jJVhk0xb.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.DgipzMgL.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/jJVhk0xb.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHHO6nw6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Co3OAyKc.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/jJVhk0xb.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT_SITE_CONFIG__={_priority:{env:-15,url:-3},env:"production",url:"https:\u002F\u002Fnuxtseo.com"}</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"116b189e-4f49-45f9-b21c-dfb518abeb03",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774546027086,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/BSxwzHhf.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.DgipzMgL.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BSxwzHhf.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHHO6nw6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BNA9K40e.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/BSxwzHhf.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT_SITE_CONFIG__={_priority:{env:-15,url:-3},env:"production",url:"https:\u002F\u002Fnuxtseo.com"}</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"20c4a6d7-a8d9-4f9c-a8e8-bb611f6dfcfb",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774750928761,false]</script></body></html>