nuxt-og-image 6.0.0-beta.1 → 6.0.0-beta.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.
- package/dist/chunks/tw4-classes.cjs +1 -1
- package/dist/chunks/tw4-classes.mjs +1 -1
- package/dist/chunks/tw4-generator.cjs +1 -1
- package/dist/chunks/tw4-generator.mjs +1 -1
- package/dist/cli.cjs +248 -148
- package/dist/cli.mjs +235 -149
- package/dist/client/200.html +1 -1
- package/dist/client/404.html +1 -1
- package/dist/client/_nuxt/builds/latest.json +1 -1
- package/dist/client/_nuxt/builds/meta/8e2df3bd-1df7-4172-a3c9-b46cdb9070e5.json +1 -0
- package/dist/client/_payload.json +1 -1
- package/dist/client/debug/_payload.json +1 -1
- package/dist/client/debug/index.html +1 -1
- package/dist/client/docs/_payload.json +1 -1
- package/dist/client/docs/index.html +1 -1
- package/dist/client/index.html +1 -1
- package/dist/client/templates/_payload.json +1 -1
- package/dist/client/templates/index.html +1 -1
- package/dist/module.cjs +1 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/shared/{nuxt-og-image.HMyihp-D.mjs → nuxt-og-image.D-QhzI76.mjs} +7 -1
- package/dist/shared/{nuxt-og-image.DroaQ3v-.cjs → nuxt-og-image.iluFGbPR.cjs} +8 -2
- package/package.json +8 -6
- package/dist/client/_nuxt/builds/meta/5205806b-8e5a-41ea-90c0-9cd83a75fc0a.json +0 -1
package/dist/cli.mjs
CHANGED
|
@@ -1,27 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { execSync } from 'node:child_process';
|
|
3
2
|
import { existsSync, readdirSync, mkdirSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
|
|
4
3
|
import { dirname, resolve, join } from 'node:path';
|
|
5
|
-
import { createInterface } from 'node:readline';
|
|
6
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import * as p from '@clack/prompts';
|
|
6
|
+
import { loadFile } from 'magicast';
|
|
7
|
+
import { detectPackageManager, addDependency } from 'nypm';
|
|
7
8
|
|
|
8
|
-
async function confirm(message) {
|
|
9
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
10
|
-
return new Promise((resolve2) => {
|
|
11
|
-
rl.question(`${message} (y/N) `, (answer) => {
|
|
12
|
-
rl.close();
|
|
13
|
-
resolve2(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
9
|
const __dirname$1 = dirname(fileURLToPath(import.meta.url));
|
|
18
10
|
const communityDir = resolve(__dirname$1, "runtime/app/components/Templates/Community");
|
|
19
11
|
const defaultComponentDirs = ["OgImage", "OgImageCommunity", "og-image", "OgImageTemplate"];
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
const RENDERERS = [
|
|
13
|
+
{
|
|
14
|
+
name: "satori",
|
|
15
|
+
label: "Satori",
|
|
16
|
+
description: "SVG-based renderer - fast, works everywhere (recommended)",
|
|
17
|
+
deps: ["satori", "@resvg/resvg-js"]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: "takumi",
|
|
21
|
+
label: "Takumi",
|
|
22
|
+
description: "Rust-based high-performance renderer",
|
|
23
|
+
deps: ["@takumi-rs/core"]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "chromium",
|
|
27
|
+
label: "Chromium",
|
|
28
|
+
description: "Browser screenshot renderer - pixel-perfect but slower",
|
|
29
|
+
deps: ["playwright-core"]
|
|
30
|
+
}
|
|
31
|
+
];
|
|
25
32
|
function getBaseName(filename) {
|
|
26
33
|
return filename.replace(/\.(satori|chromium|takumi)\.vue$/, "");
|
|
27
34
|
}
|
|
@@ -42,7 +49,7 @@ function findTemplateFile(name) {
|
|
|
42
49
|
function ejectTemplate(name, targetDir) {
|
|
43
50
|
const templateFile = findTemplateFile(name);
|
|
44
51
|
if (!templateFile) {
|
|
45
|
-
|
|
52
|
+
p.log.error(`Template "${name}" not found.`);
|
|
46
53
|
listTemplates();
|
|
47
54
|
process.exit(1);
|
|
48
55
|
}
|
|
@@ -52,12 +59,12 @@ function ejectTemplate(name, targetDir) {
|
|
|
52
59
|
mkdirSync(outputDir, { recursive: true });
|
|
53
60
|
const outputPath = join(outputDir, templateFile);
|
|
54
61
|
if (existsSync(outputPath)) {
|
|
55
|
-
|
|
62
|
+
p.log.error(`File already exists: ${outputPath}`);
|
|
56
63
|
process.exit(1);
|
|
57
64
|
}
|
|
58
65
|
const content = readFileSync(templatePath, "utf-8");
|
|
59
66
|
writeFileSync(outputPath, content, "utf-8");
|
|
60
|
-
|
|
67
|
+
p.log.success(`Ejected "${name}" to ${outputPath}`);
|
|
61
68
|
}
|
|
62
69
|
function findOgImageComponents(dir) {
|
|
63
70
|
const components = [];
|
|
@@ -93,14 +100,62 @@ function globFiles(dir, pattern, exclude = []) {
|
|
|
93
100
|
walk(dir);
|
|
94
101
|
return results;
|
|
95
102
|
}
|
|
103
|
+
async function checkNuxtConfig(rootDir) {
|
|
104
|
+
const configPaths = ["nuxt.config.ts", "nuxt.config.js", "nuxt.config.mjs"];
|
|
105
|
+
let configPath = null;
|
|
106
|
+
for (const _p of configPaths) {
|
|
107
|
+
const fullPath = join(rootDir, _p);
|
|
108
|
+
if (existsSync(fullPath)) {
|
|
109
|
+
configPath = fullPath;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (!configPath)
|
|
114
|
+
return { hasDeprecatedFonts: false, hasNuxtFonts: false, configPath: null };
|
|
115
|
+
const mod = await loadFile(configPath).catch(() => null);
|
|
116
|
+
if (!mod)
|
|
117
|
+
return { hasDeprecatedFonts: false, hasNuxtFonts: false, configPath };
|
|
118
|
+
const config = mod.exports.default;
|
|
119
|
+
const hasDeprecatedFonts = !!config?.ogImage?.fonts;
|
|
120
|
+
const modules = config?.modules || [];
|
|
121
|
+
const hasNuxtFonts = modules.some(
|
|
122
|
+
(m) => typeof m === "string" && m === "@nuxt/fonts" || Array.isArray(m) && m[0] === "@nuxt/fonts"
|
|
123
|
+
);
|
|
124
|
+
return { hasDeprecatedFonts, hasNuxtFonts, configPath };
|
|
125
|
+
}
|
|
126
|
+
async function checkMigrationNeeded(rootDir) {
|
|
127
|
+
const result = {
|
|
128
|
+
needsComponentRename: false,
|
|
129
|
+
needsFontsMigration: false,
|
|
130
|
+
needsNuxtFonts: false,
|
|
131
|
+
componentsToRename: []
|
|
132
|
+
};
|
|
133
|
+
const dirs = [rootDir];
|
|
134
|
+
if (existsSync(join(rootDir, "app")))
|
|
135
|
+
dirs.push(join(rootDir, "app"));
|
|
136
|
+
const layersDir = join(rootDir, "layers");
|
|
137
|
+
if (existsSync(layersDir)) {
|
|
138
|
+
const layerDirs = readdirSync(layersDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => join(layersDir, d.name));
|
|
139
|
+
dirs.push(...layerDirs);
|
|
140
|
+
}
|
|
141
|
+
for (const dir of dirs) {
|
|
142
|
+
const components = findOgImageComponents(dir);
|
|
143
|
+
for (const filepath of components) {
|
|
144
|
+
const filename = filepath.split("/").pop();
|
|
145
|
+
if (!hasRendererSuffix(filename)) {
|
|
146
|
+
result.componentsToRename.push({ from: filepath, to: "" });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
result.needsComponentRename = result.componentsToRename.length > 0;
|
|
151
|
+
const configCheck = await checkNuxtConfig(rootDir);
|
|
152
|
+
result.needsFontsMigration = configCheck.hasDeprecatedFonts;
|
|
153
|
+
result.needsNuxtFonts = !configCheck.hasNuxtFonts;
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
96
156
|
function migrateDefineOgImageApi(dryRun) {
|
|
97
157
|
const cwd = process.cwd();
|
|
98
|
-
const excludePatterns = [
|
|
99
|
-
/node_modules/,
|
|
100
|
-
/\.nuxt/,
|
|
101
|
-
/\.output/,
|
|
102
|
-
/dist/
|
|
103
|
-
];
|
|
158
|
+
const excludePatterns = [/node_modules/, /\.nuxt/, /\.output/, /dist/];
|
|
104
159
|
const files = globFiles(cwd, /\.(?:vue|ts|tsx|js|jsx)$/, excludePatterns);
|
|
105
160
|
const changes = [];
|
|
106
161
|
for (const file of files) {
|
|
@@ -121,10 +176,7 @@ function migrateDefineOgImageApi(dryRun) {
|
|
|
121
176
|
const remaining = inner.replace(/renderer\s*:\s*['"][^'"]+['"]\s*,?\s*/g, "").replace(/,\s*$/, "").trim();
|
|
122
177
|
modified = true;
|
|
123
178
|
changeCount++;
|
|
124
|
-
|
|
125
|
-
return `defineOgImageScreenshot({ ${remaining} })`;
|
|
126
|
-
}
|
|
127
|
-
return `defineOgImageScreenshot()`;
|
|
179
|
+
return remaining ? `defineOgImageScreenshot({ ${remaining} })` : `defineOgImageScreenshot()`;
|
|
128
180
|
}
|
|
129
181
|
if (componentMatch || rendererMatch) {
|
|
130
182
|
const componentName = componentMatch ? componentMatch[1] : "NuxtSeo";
|
|
@@ -158,108 +210,178 @@ function migrateDefineOgImageApi(dryRun) {
|
|
|
158
210
|
}
|
|
159
211
|
}
|
|
160
212
|
}
|
|
161
|
-
|
|
162
|
-
|
|
213
|
+
return { changes };
|
|
214
|
+
}
|
|
215
|
+
function migrateV6Components(componentsToRename, defaultRenderer, dryRun) {
|
|
216
|
+
for (const item of componentsToRename) {
|
|
217
|
+
const filename = item.from.split("/").pop();
|
|
218
|
+
const newName = filename.replace(".vue", `.${defaultRenderer}.vue`);
|
|
219
|
+
item.to = item.from.replace(filename, newName);
|
|
220
|
+
}
|
|
221
|
+
if (dryRun) {
|
|
222
|
+
console.log("\nWould rename:");
|
|
223
|
+
for (const { from, to } of componentsToRename) {
|
|
224
|
+
console.log(` ${from.split("/").pop()} \u2192 ${to.split("/").pop()}`);
|
|
225
|
+
}
|
|
163
226
|
return;
|
|
164
227
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
`);
|
|
168
|
-
for (const { file, count } of changes) {
|
|
169
|
-
const relPath = file.replace(`${cwd}/`, "");
|
|
170
|
-
console.log(` ${relPath} (${count} change${count > 1 ? "s" : ""})`);
|
|
228
|
+
for (const { from, to } of componentsToRename) {
|
|
229
|
+
renameSync(from, to);
|
|
230
|
+
console.log(`\u2713 Renamed ${from.split("/").pop()}`);
|
|
171
231
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
232
|
+
}
|
|
233
|
+
async function installRendererDeps(renderers) {
|
|
234
|
+
const cwd = process.cwd();
|
|
235
|
+
const pm = await detectPackageManager(cwd);
|
|
236
|
+
const pmName = pm?.name || "npm";
|
|
237
|
+
const allDeps = [];
|
|
238
|
+
for (const renderer of renderers) {
|
|
239
|
+
const def = RENDERERS.find((r) => r.name === renderer);
|
|
240
|
+
if (def) {
|
|
241
|
+
allDeps.push(...def.deps);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (allDeps.length === 0)
|
|
245
|
+
return;
|
|
246
|
+
const spinner = p.spinner();
|
|
247
|
+
spinner.start(`Installing dependencies with ${pmName}...`);
|
|
248
|
+
for (const dep of allDeps) {
|
|
249
|
+
await addDependency(dep, { cwd, dev: false }).catch(() => {
|
|
250
|
+
spinner.stop(`Failed to install ${dep}`);
|
|
251
|
+
p.log.warn(`Run manually: ${pmName} add ${dep}`);
|
|
252
|
+
});
|
|
179
253
|
}
|
|
254
|
+
spinner.stop("Dependencies installed");
|
|
180
255
|
}
|
|
181
|
-
function
|
|
256
|
+
async function installNuxtFonts() {
|
|
182
257
|
const cwd = process.cwd();
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
258
|
+
const spinner = p.spinner();
|
|
259
|
+
spinner.start("Adding @nuxt/fonts module...");
|
|
260
|
+
const { execa } = await import('execa');
|
|
261
|
+
await execa("npx", ["nuxi", "module", "add", "@nuxt/fonts"], { cwd }).then(() => {
|
|
262
|
+
spinner.stop("@nuxt/fonts module added");
|
|
263
|
+
}).catch(() => {
|
|
264
|
+
spinner.stop("Failed to add @nuxt/fonts");
|
|
265
|
+
p.log.warn("Run manually: npx nuxi module add @nuxt/fonts");
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
async function runMigrate(args2) {
|
|
269
|
+
const dryRun = args2.includes("--dry-run") || args2.includes("-d");
|
|
270
|
+
const skipConfirm = args2.includes("--yes") || args2.includes("-y");
|
|
271
|
+
const rendererIdx = args2.indexOf("--renderer");
|
|
272
|
+
const cliRenderer = rendererIdx !== -1 ? args2[rendererIdx + 1] : null;
|
|
273
|
+
if (cliRenderer && !["satori", "chromium", "takumi"].includes(cliRenderer)) {
|
|
274
|
+
console.error(`Invalid renderer: ${cliRenderer}. Must be satori, chromium, or takumi.`);
|
|
275
|
+
process.exit(1);
|
|
190
276
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
277
|
+
p.intro("nuxt-og-image v6 Migration");
|
|
278
|
+
const cwd = process.cwd();
|
|
279
|
+
const migrationCheck = await checkMigrationNeeded(cwd);
|
|
280
|
+
const noComponentWork = !migrationCheck.needsComponentRename;
|
|
281
|
+
const noFontsWork = !migrationCheck.needsFontsMigration && !migrationCheck.needsNuxtFonts;
|
|
282
|
+
if (noComponentWork && noFontsWork) {
|
|
283
|
+
console.log("\u2713 All OG Image components already have renderer suffixes.");
|
|
284
|
+
p.outro("Done");
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const tasks = [];
|
|
288
|
+
if (migrationCheck.needsComponentRename) {
|
|
289
|
+
tasks.push(`Rename ${migrationCheck.componentsToRename.length} component(s) to include renderer suffix`);
|
|
290
|
+
}
|
|
291
|
+
if (migrationCheck.needsFontsMigration) {
|
|
292
|
+
tasks.push("Migrate ogImage.fonts to @nuxt/fonts config");
|
|
293
|
+
}
|
|
294
|
+
if (migrationCheck.needsNuxtFonts) {
|
|
295
|
+
tasks.push("Install @nuxt/fonts module");
|
|
296
|
+
}
|
|
297
|
+
tasks.push("Update defineOgImage() calls to new API");
|
|
298
|
+
p.note(tasks.map((t) => `\u2022 ${t}`).join("\n"), "Migration tasks");
|
|
299
|
+
if (dryRun) {
|
|
300
|
+
p.log.warn("[Dry run mode - no changes will be made]");
|
|
301
|
+
}
|
|
302
|
+
let selectedRenderers;
|
|
303
|
+
if (skipConfirm) {
|
|
304
|
+
selectedRenderers = cliRenderer ? [cliRenderer] : ["satori"];
|
|
305
|
+
} else {
|
|
306
|
+
const confirmed = await p.confirm({
|
|
307
|
+
message: "This will modify files. Continue?",
|
|
308
|
+
initialValue: false
|
|
309
|
+
});
|
|
310
|
+
if (p.isCancel(confirmed) || !confirmed) {
|
|
311
|
+
p.cancel("Migration cancelled");
|
|
312
|
+
process.exit(0);
|
|
313
|
+
}
|
|
314
|
+
const rendererSelection = await p.multiselect({
|
|
315
|
+
message: "Which renderers do you want to use?",
|
|
316
|
+
options: RENDERERS.map((r) => ({
|
|
317
|
+
value: r.name,
|
|
318
|
+
label: r.label,
|
|
319
|
+
hint: r.description
|
|
320
|
+
})),
|
|
321
|
+
initialValues: ["satori"],
|
|
322
|
+
required: true
|
|
323
|
+
});
|
|
324
|
+
if (p.isCancel(rendererSelection)) {
|
|
325
|
+
p.cancel("Migration cancelled");
|
|
326
|
+
process.exit(0);
|
|
327
|
+
}
|
|
328
|
+
selectedRenderers = rendererSelection;
|
|
329
|
+
if (!dryRun) {
|
|
330
|
+
const installDeps = await p.confirm({
|
|
331
|
+
message: "Install renderer dependencies?",
|
|
332
|
+
initialValue: true
|
|
333
|
+
});
|
|
334
|
+
if (!p.isCancel(installDeps) && installDeps) {
|
|
335
|
+
await installRendererDeps(selectedRenderers);
|
|
202
336
|
}
|
|
203
337
|
}
|
|
204
338
|
}
|
|
205
|
-
if (
|
|
206
|
-
console.log("\
|
|
207
|
-
|
|
339
|
+
if (migrationCheck.needsComponentRename) {
|
|
340
|
+
console.log("\nRenaming components...");
|
|
341
|
+
migrateV6Components(migrationCheck.componentsToRename, selectedRenderers[0] || "satori", dryRun);
|
|
342
|
+
}
|
|
343
|
+
console.log("\nMigrating defineOgImage calls...");
|
|
344
|
+
const apiChanges = migrateDefineOgImageApi(dryRun);
|
|
345
|
+
if (apiChanges.changes.length > 0) {
|
|
346
|
+
for (const { file, count } of apiChanges.changes) {
|
|
347
|
+
const relPath = file.replace(`${cwd}/`, "");
|
|
348
|
+
console.log(` ${relPath} (${count} change${count > 1 ? "s" : ""})`);
|
|
349
|
+
}
|
|
350
|
+
} else {
|
|
351
|
+
console.log(" No API changes needed");
|
|
208
352
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
353
|
+
if (migrationCheck.needsNuxtFonts && !dryRun && !skipConfirm) {
|
|
354
|
+
const addFonts = await p.confirm({
|
|
355
|
+
message: "@nuxt/fonts is recommended for custom fonts. Add it?",
|
|
356
|
+
initialValue: true
|
|
357
|
+
});
|
|
358
|
+
if (!p.isCancel(addFonts) && addFonts) {
|
|
359
|
+
await installNuxtFonts();
|
|
360
|
+
}
|
|
216
361
|
}
|
|
217
362
|
if (dryRun) {
|
|
218
363
|
console.log("\n[Dry run - no changes made]");
|
|
219
|
-
console.log(
|
|
220
|
-
Run without --dry-run to apply changes.`);
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
console.log("");
|
|
224
|
-
for (const { from, to } of toRename) {
|
|
225
|
-
renameSync(from, to);
|
|
226
|
-
console.log(`\u2713 Renamed ${from.split("/").pop()}`);
|
|
364
|
+
console.log("Run without --dry-run to apply changes.");
|
|
227
365
|
}
|
|
228
|
-
|
|
229
|
-
\u2713 Migration complete. ${toRename.length} file(s) renamed.`);
|
|
366
|
+
p.outro(dryRun ? "Dry run complete" : "Migration complete!");
|
|
230
367
|
}
|
|
231
|
-
function
|
|
232
|
-
const
|
|
233
|
-
if (!
|
|
234
|
-
|
|
235
|
-
|
|
368
|
+
async function runEnable(renderer) {
|
|
369
|
+
const def = RENDERERS.find((r) => r.name === renderer);
|
|
370
|
+
if (!def) {
|
|
371
|
+
p.log.error(`Unknown renderer: ${renderer}`);
|
|
372
|
+
p.log.info(`Available: ${RENDERERS.map((r) => r.name).join(", ")}`);
|
|
236
373
|
process.exit(1);
|
|
237
374
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
const cwd = process.cwd();
|
|
242
|
-
let pm = "npm";
|
|
243
|
-
if (existsSync(join(cwd, "pnpm-lock.yaml")))
|
|
244
|
-
pm = "pnpm";
|
|
245
|
-
else if (existsSync(join(cwd, "yarn.lock")))
|
|
246
|
-
pm = "yarn";
|
|
247
|
-
else if (existsSync(join(cwd, "bun.lockb")))
|
|
248
|
-
pm = "bun";
|
|
249
|
-
const installCmd = pm === "npm" ? `${pm} install` : `${pm} add`;
|
|
250
|
-
const cmd = `${installCmd} ${deps.join(" ")}`;
|
|
251
|
-
console.log(`Running: ${cmd}
|
|
252
|
-
`);
|
|
253
|
-
execSync(cmd, { stdio: "inherit", cwd });
|
|
254
|
-
console.log(`
|
|
255
|
-
\u2713 ${renderer} renderer enabled.`);
|
|
375
|
+
p.intro(`Enable ${def.label} renderer`);
|
|
376
|
+
await installRendererDeps([renderer]);
|
|
377
|
+
p.outro("Done");
|
|
256
378
|
}
|
|
257
379
|
const args = process.argv.slice(2);
|
|
258
380
|
const command = args[0];
|
|
259
381
|
if (command === "eject") {
|
|
260
382
|
const templateName = args[1];
|
|
261
383
|
if (!templateName) {
|
|
262
|
-
|
|
384
|
+
p.log.error("Please specify a template name.");
|
|
263
385
|
listTemplates();
|
|
264
386
|
process.exit(1);
|
|
265
387
|
}
|
|
@@ -271,60 +393,24 @@ if (command === "eject") {
|
|
|
271
393
|
} else if (command === "migrate") {
|
|
272
394
|
const version = args[1];
|
|
273
395
|
if (version !== "v6") {
|
|
274
|
-
|
|
275
|
-
process.exit(1);
|
|
276
|
-
}
|
|
277
|
-
const dryRun = args.includes("--dry-run") || args.includes("-d");
|
|
278
|
-
const skipConfirm = args.includes("--yes") || args.includes("-y");
|
|
279
|
-
const rendererIdx = args.indexOf("--renderer");
|
|
280
|
-
const renderer = rendererIdx !== -1 ? args[rendererIdx + 1] || "satori" : "satori";
|
|
281
|
-
if (!["satori", "chromium", "takumi"].includes(renderer)) {
|
|
282
|
-
console.error(`Invalid renderer: ${renderer}. Must be satori, chromium, or takumi.`);
|
|
396
|
+
p.log.error("Usage: npx nuxt-og-image migrate v6 [--dry-run] [--yes] [--renderer <satori|chromium|takumi>]");
|
|
283
397
|
process.exit(1);
|
|
284
398
|
}
|
|
285
|
-
|
|
286
|
-
console.log("This will:");
|
|
287
|
-
console.log(" 1. Rename OgImage components to include renderer suffix (.satori.vue, etc.)");
|
|
288
|
-
console.log(" 2. Update defineOgImage() calls to new component-first API");
|
|
289
|
-
console.log("");
|
|
290
|
-
console.log("\x1B[33m\u26A0 WARNING: This modifies files directly and could break your code.\x1B[0m");
|
|
291
|
-
console.log("\x1B[33m Make sure you have committed or backed up your changes first.\x1B[0m");
|
|
292
|
-
console.log("");
|
|
293
|
-
if (dryRun) {
|
|
294
|
-
console.log("[Dry run mode - no files will be modified]\n");
|
|
295
|
-
migrateV6(true, renderer);
|
|
296
|
-
console.log("");
|
|
297
|
-
migrateDefineOgImageApi(true);
|
|
298
|
-
} else if (skipConfirm) {
|
|
299
|
-
migrateV6(false, renderer);
|
|
300
|
-
console.log("");
|
|
301
|
-
migrateDefineOgImageApi(false);
|
|
302
|
-
} else {
|
|
303
|
-
confirm("Continue with migration?").then((confirmed) => {
|
|
304
|
-
if (!confirmed) {
|
|
305
|
-
console.log("Migration cancelled.");
|
|
306
|
-
process.exit(0);
|
|
307
|
-
}
|
|
308
|
-
console.log("");
|
|
309
|
-
migrateV6(false, renderer);
|
|
310
|
-
console.log("");
|
|
311
|
-
migrateDefineOgImageApi(false);
|
|
312
|
-
});
|
|
313
|
-
}
|
|
399
|
+
runMigrate(args);
|
|
314
400
|
} else if (command === "enable") {
|
|
315
401
|
const renderer = args[1];
|
|
316
402
|
if (!renderer) {
|
|
317
|
-
|
|
318
|
-
|
|
403
|
+
p.log.error("Usage: npx nuxt-og-image enable <renderer>");
|
|
404
|
+
p.log.info(`Available: ${RENDERERS.map((r) => r.name).join(", ")}`);
|
|
319
405
|
process.exit(1);
|
|
320
406
|
}
|
|
321
|
-
|
|
407
|
+
runEnable(renderer);
|
|
322
408
|
} else {
|
|
323
409
|
console.log("nuxt-og-image CLI\n");
|
|
324
410
|
console.log("Commands:");
|
|
325
411
|
console.log(" list List available community templates");
|
|
326
412
|
console.log(" eject <name> Eject a community template to your project");
|
|
327
413
|
console.log(" migrate v6 Migrate to v6 (component suffixes + new API)");
|
|
328
|
-
console.log(" Options: --dry-run, --renderer <satori|chromium|takumi>");
|
|
414
|
+
console.log(" Options: --dry-run, --yes, --renderer <satori|chromium|takumi>");
|
|
329
415
|
console.log(" enable <renderer> Install dependencies for a renderer (satori, chromium, takumi)");
|
|
330
416
|
}
|
package/dist/client/200.html
CHANGED
|
@@ -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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DXObZt09.js"><link rel="preload" as="font" crossorigin href="/__nuxt-og-image/fonts/HubotSans-Regular.woff2"><script type="module" src="/__nuxt-og-image/_nuxt/DXObZt09.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__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"
|
|
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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DXObZt09.js"><link rel="preload" as="font" crossorigin href="/__nuxt-og-image/fonts/HubotSans-Regular.woff2"><script type="module" src="/__nuxt-og-image/_nuxt/DXObZt09.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__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"8e2df3bd-1df7-4172-a3c9-b46cdb9070e5",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1769234619446,false]</script></body></html>
|
package/dist/client/404.html
CHANGED
|
@@ -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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DXObZt09.js"><link rel="preload" as="font" crossorigin href="/__nuxt-og-image/fonts/HubotSans-Regular.woff2"><script type="module" src="/__nuxt-og-image/_nuxt/DXObZt09.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__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"
|
|
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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DXObZt09.js"><link rel="preload" as="font" crossorigin href="/__nuxt-og-image/fonts/HubotSans-Regular.woff2"><script type="module" src="/__nuxt-og-image/_nuxt/DXObZt09.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__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"8e2df3bd-1df7-4172-a3c9-b46cdb9070e5",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1769234619446,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"8e2df3bd-1df7-4172-a3c9-b46cdb9070e5","timestamp":1769234610675}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"8e2df3bd-1df7-4172-a3c9-b46cdb9070e5","timestamp":1769234610675,"prerendered":["/docs","/debug","/templates","/"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"data":-1,"prerenderedAt":1},
|
|
1
|
+
[{"data":-1,"prerenderedAt":1},1769234619444]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"data":-1,"prerenderedAt":1},
|
|
1
|
+
[{"data":-1,"prerenderedAt":1},1769234619445]
|
|
@@ -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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/__nuxt-og-image/debug/_payload.json?
|
|
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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/__nuxt-og-image/debug/_payload.json?8e2df3bd-1df7-4172-a3c9-b46cdb9070e5"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DXObZt09.js"><link rel="preload" as="font" crossorigin href="/__nuxt-og-image/fonts/HubotSans-Regular.woff2"><script type="module" src="/__nuxt-og-image/_nuxt/DXObZt09.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__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"8e2df3bd-1df7-4172-a3c9-b46cdb9070e5",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__" data-src="/__nuxt-og-image/debug/_payload.json?8e2df3bd-1df7-4172-a3c9-b46cdb9070e5">[{"serverRendered":1,"prerenderedAt":2},false,1769234619445]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"data":-1,"prerenderedAt":1},
|
|
1
|
+
[{"data":-1,"prerenderedAt":1},1769234619445]
|
|
@@ -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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/__nuxt-og-image/docs/_payload.json?
|
|
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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/__nuxt-og-image/docs/_payload.json?8e2df3bd-1df7-4172-a3c9-b46cdb9070e5"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DXObZt09.js"><link rel="preload" as="font" crossorigin href="/__nuxt-og-image/fonts/HubotSans-Regular.woff2"><script type="module" src="/__nuxt-og-image/_nuxt/DXObZt09.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__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"8e2df3bd-1df7-4172-a3c9-b46cdb9070e5",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__" data-src="/__nuxt-og-image/docs/_payload.json?8e2df3bd-1df7-4172-a3c9-b46cdb9070e5">[{"serverRendered":1,"prerenderedAt":2},false,1769234619445]</script></body></html>
|
package/dist/client/index.html
CHANGED
|
@@ -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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/__nuxt-og-image/_payload.json?
|
|
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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/__nuxt-og-image/_payload.json?8e2df3bd-1df7-4172-a3c9-b46cdb9070e5"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DXObZt09.js"><link rel="preload" as="font" crossorigin href="/__nuxt-og-image/fonts/HubotSans-Regular.woff2"><script type="module" src="/__nuxt-og-image/_nuxt/DXObZt09.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__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"8e2df3bd-1df7-4172-a3c9-b46cdb9070e5",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__" data-src="/__nuxt-og-image/_payload.json?8e2df3bd-1df7-4172-a3c9-b46cdb9070e5">[{"serverRendered":1,"prerenderedAt":2},false,1769234619444]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"data":-1,"prerenderedAt":1},
|
|
1
|
+
[{"data":-1,"prerenderedAt":1},1769234619445]
|
|
@@ -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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/__nuxt-og-image/templates/_payload.json?
|
|
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/DXObZt09.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.BEExJd9R.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/__nuxt-og-image/templates/_payload.json?8e2df3bd-1df7-4172-a3c9-b46cdb9070e5"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DXObZt09.js"><link rel="preload" as="font" crossorigin href="/__nuxt-og-image/fonts/HubotSans-Regular.woff2"><script type="module" src="/__nuxt-og-image/_nuxt/DXObZt09.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__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"8e2df3bd-1df7-4172-a3c9-b46cdb9070e5",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__" data-src="/__nuxt-og-image/templates/_payload.json?8e2df3bd-1df7-4172-a3c9-b46cdb9070e5">[{"serverRendered":1,"prerenderedAt":2},false,1769234619445]</script></body></html>
|
package/dist/module.cjs
CHANGED
|
@@ -10,7 +10,7 @@ require('ohash');
|
|
|
10
10
|
require('pathe');
|
|
11
11
|
require('pkg-types');
|
|
12
12
|
require('std-env');
|
|
13
|
-
const module$1 = require('./shared/nuxt-og-image.
|
|
13
|
+
const module$1 = require('./shared/nuxt-og-image.iluFGbPR.cjs');
|
|
14
14
|
require('../dist/runtime/logger.js');
|
|
15
15
|
require('node:crypto');
|
|
16
16
|
require('nypm');
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import 'ohash';
|
|
|
8
8
|
import 'pathe';
|
|
9
9
|
import 'pkg-types';
|
|
10
10
|
import 'std-env';
|
|
11
|
-
export { m as default } from './shared/nuxt-og-image.
|
|
11
|
+
export { m as default } from './shared/nuxt-og-image.D-QhzI76.mjs';
|
|
12
12
|
import '../dist/runtime/logger.js';
|
|
13
13
|
import 'node:crypto';
|
|
14
14
|
import 'nypm';
|