nuxt-og-image 6.2.6 → 6.3.1

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 (45) 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 +16 -1
  6. package/dist/cli.mjs +16 -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/{iJA-9P1Z.js → CD0R49mQ.js} +1 -1
  11. package/dist/devtools/_nuxt/{aOrl9V8N.js → CaQt7uvw.js} +1 -1
  12. package/dist/devtools/_nuxt/{BXPqj_uX.js → CoSxBJd8.js} +1 -1
  13. package/dist/devtools/_nuxt/{jJVhk0xb.js → D0q6HvYk.js} +22 -22
  14. package/dist/devtools/_nuxt/{Bo4lSgm2.js → DA9abGfd.js} +1 -1
  15. package/dist/devtools/_nuxt/{Dy0Vu_Hf.js → DGG_4uof.js} +1 -1
  16. package/dist/devtools/_nuxt/DevtoolsSnippet.CHln_zRX.css +1 -0
  17. package/dist/devtools/_nuxt/builds/latest.json +1 -1
  18. package/dist/devtools/_nuxt/builds/meta/ba8a64d6-5859-4483-b624-49dce7e7b3c9.json +1 -0
  19. package/dist/devtools/_nuxt/{entry.DgipzMgL.css → entry.BPMZ_Jol.css} +1 -1
  20. package/dist/devtools/_nuxt/{pages.DyP4FhjX.css → pages.CPczdJu3.css} +1 -1
  21. package/dist/devtools/debug/index.html +1 -1
  22. package/dist/devtools/docs/index.html +1 -1
  23. package/dist/devtools/index.html +1 -1
  24. package/dist/devtools/templates/index.html +1 -1
  25. package/dist/module.cjs +1 -1
  26. package/dist/module.d.cts +21 -0
  27. package/dist/module.d.mts +21 -0
  28. package/dist/module.d.ts +21 -0
  29. package/dist/module.json +1 -1
  30. package/dist/module.mjs +1 -1
  31. package/dist/runtime/app/utils.js +2 -2
  32. package/dist/runtime/server/og-image/browser/screenshot.js +6 -2
  33. package/dist/runtime/server/og-image/context.js +43 -15
  34. package/dist/runtime/server/og-image/core/vnodes.js +3 -0
  35. package/dist/runtime/server/utils.js +2 -2
  36. package/dist/runtime/shared/urlEncoding.d.ts +11 -13
  37. package/dist/runtime/shared/urlEncoding.js +27 -11
  38. package/dist/runtime/shared.d.ts +1 -1
  39. package/dist/runtime/shared.js +1 -2
  40. package/dist/runtime/types.d.ts +5 -0
  41. package/dist/shared/{nuxt-og-image.CA6cPvTd.mjs → nuxt-og-image.CYm-mAcA.mjs} +21 -2
  42. package/dist/shared/{nuxt-og-image.DVJetxwr.cjs → nuxt-og-image.PUNoqZDW.cjs} +22 -3
  43. package/package.json +8 -8
  44. package/dist/devtools/_nuxt/DevtoolsSnippet.BaNDy_jv.css +0 -1
  45. 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.PUNoqZDW.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.CYm-mAcA.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.PUNoqZDW.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.CYm-mAcA.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,17 @@ 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.log.step(`Secret: ${secret}`);
1272
+ p__namespace.log.message("");
1273
+ p__namespace.log.message("Set the environment variable:");
1274
+ p__namespace.log.message(` NUXT_OG_IMAGE_SECRET=${secret}`);
1275
+ p__namespace.log.message("");
1276
+ p__namespace.log.message("The secret is automatically picked up via runtime config.");
1277
+ p__namespace.outro("");
1278
+ }
1267
1279
  function showHelp() {
1268
1280
  p__namespace.intro("nuxt-og-image CLI");
1269
1281
  p__namespace.note([
@@ -1276,7 +1288,8 @@ function showHelp() {
1276
1288
  "enable <renderer> Install dependencies for a renderer (satori, browser, takumi)",
1277
1289
  " Options: --edge (install wasm versions for edge runtimes)",
1278
1290
  "migrate v6 Migrate to v6 (component suffixes + new API)",
1279
- " Options: --dry-run, --yes, --renderer <renderer>"
1291
+ " Options: --dry-run, --yes, --renderer <renderer>",
1292
+ "generate-secret Generate a signing secret for URL tamper protection"
1280
1293
  ].join("\n"), "Commands");
1281
1294
  p__namespace.outro("");
1282
1295
  }
@@ -1308,6 +1321,8 @@ if (hasHelp || !command) {
1308
1321
  runMigrate(args);
1309
1322
  } else if (command === "switch") {
1310
1323
  runSwitch(args.slice(1));
1324
+ } else if (command === "generate-secret") {
1325
+ generateSecret();
1311
1326
  } else if (command === "enable") {
1312
1327
  const renderer = args[1];
1313
1328
  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,17 @@ 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.log.step(`Secret: ${secret}`);
1255
+ p.log.message("");
1256
+ p.log.message("Set the environment variable:");
1257
+ p.log.message(` NUXT_OG_IMAGE_SECRET=${secret}`);
1258
+ p.log.message("");
1259
+ p.log.message("The secret is automatically picked up via runtime config.");
1260
+ p.outro("");
1261
+ }
1250
1262
  function showHelp() {
1251
1263
  p.intro("nuxt-og-image CLI");
1252
1264
  p.note([
@@ -1259,7 +1271,8 @@ function showHelp() {
1259
1271
  "enable <renderer> Install dependencies for a renderer (satori, browser, takumi)",
1260
1272
  " Options: --edge (install wasm versions for edge runtimes)",
1261
1273
  "migrate v6 Migrate to v6 (component suffixes + new API)",
1262
- " Options: --dry-run, --yes, --renderer <renderer>"
1274
+ " Options: --dry-run, --yes, --renderer <renderer>",
1275
+ "generate-secret Generate a signing secret for URL tamper protection"
1263
1276
  ].join("\n"), "Commands");
1264
1277
  p.outro("");
1265
1278
  }
@@ -1291,6 +1304,8 @@ if (hasHelp || !command) {
1291
1304
  runMigrate(args);
1292
1305
  } else if (command === "switch") {
1293
1306
  runSwitch(args.slice(1));
1307
+ } else if (command === "generate-secret") {
1308
+ generateSecret();
1294
1309
  } else if (command === "enable") {
1295
1310
  const renderer = args[1];
1296
1311
  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/D0q6HvYk.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BPMZ_Jol.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D0q6HvYk.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/D0q6HvYk.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:"ba8a64d6-5859-4483-b624-49dce7e7b3c9",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774834107552,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/D0q6HvYk.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BPMZ_Jol.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D0q6HvYk.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/D0q6HvYk.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:"ba8a64d6-5859-4483-b624-49dce7e7b3c9",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774834107552,false]</script></body></html>