nuxt-og-image 3.0.9 → 3.1.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.
- package/dist/client/200.html +8 -8
- package/dist/client/404.html +8 -8
- package/dist/client/_nuxt/{CSc2nTFY.js → BeUwqJEY.js} +1 -1
- package/dist/client/_nuxt/{By_ruW9X.js → Ce3NjAxN.js} +113 -113
- package/dist/client/_nuxt/{CwIwlfa-.js → DwSUWO6N.js} +1 -1
- package/dist/client/_nuxt/builds/latest.json +1 -1
- package/dist/client/_nuxt/builds/meta/52ed68a4-7100-435e-b5ed-e39bac0de095.json +1 -0
- package/dist/client/_nuxt/{entry.ChwSb1tJ.css → entry.CGZ3zn-m.css} +1 -1
- package/dist/client/_nuxt/error-404.CSJ9Dkgh.css +1 -0
- package/dist/client/_nuxt/error-500.BJcKCN8F.css +1 -0
- package/dist/client/index.html +8 -8
- package/dist/module.json +1 -1
- package/dist/runtime/app/utils.js +7 -26
- package/dist/runtime/server/og-image/context.js +48 -27
- package/dist/runtime/server/routes/debug.json.d.ts +1 -0
- package/dist/runtime/server/routes/debug.json.js +2 -0
- package/dist/runtime/server/util/plugins.d.ts +1 -1
- package/dist/runtime/server/util/plugins.js +11 -3
- package/dist/runtime/shared.d.ts +1 -0
- package/dist/runtime/shared.js +27 -0
- package/package.json +5 -4
- package/dist/client/_nuxt/builds/meta/d9a165f2-5e19-460e-be70-9359a1d41711.json +0 -1
- package/dist/client/_nuxt/error-404.DGYJY-kl.css +0 -1
- package/dist/client/_nuxt/error-500.BTkdHbNU.css +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useSiteConfig } from "#imports";
|
|
1
2
|
import compatibility from "#og-image/compatibility";
|
|
2
3
|
import { componentNames } from "#og-image-virtual/component-names.mjs";
|
|
3
4
|
import { defineEventHandler, setHeader } from "h3";
|
|
@@ -6,6 +7,7 @@ export default defineEventHandler(async (e) => {
|
|
|
6
7
|
setHeader(e, "Content-Type", "application/json");
|
|
7
8
|
const runtimeConfig = useOgImageRuntimeConfig();
|
|
8
9
|
return {
|
|
10
|
+
siteConfigUrl: useSiteConfig(e).url,
|
|
9
11
|
componentNames,
|
|
10
12
|
runtimeConfig,
|
|
11
13
|
compatibility
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { NitroApp } from 'nitropack';
|
|
1
|
+
import type { NitroApp } from 'nitropack/runtime/app';
|
|
2
2
|
export declare function nuxtContentPlugin(nitroApp: NitroApp): void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { defu } from "defu";
|
|
2
2
|
import { stringify } from "devalue";
|
|
3
|
-
import {
|
|
3
|
+
import { withQuery } from "ufo";
|
|
4
|
+
import { generateMeta, getOgImagePath, useOgImageRuntimeConfig } from "../../shared.js";
|
|
4
5
|
import { normaliseOptions } from "./options.js";
|
|
5
6
|
export function nuxtContentPlugin(nitroApp) {
|
|
6
7
|
const { isNuxtContentDocumentDriven, strictNuxtContentPaths, defaults } = useOgImageRuntimeConfig();
|
|
@@ -17,7 +18,14 @@ export function nuxtContentPlugin(nitroApp) {
|
|
|
17
18
|
if (path && shouldRenderOgImage) {
|
|
18
19
|
const ogImageConfig = (typeof content.ogImage === "object" ? content.ogImage : {}) || {};
|
|
19
20
|
const optionsWithDefault = defu(ogImageConfig, defaults);
|
|
20
|
-
|
|
21
|
+
let src = optionsWithDefault.url || getOgImagePath(path, optionsWithDefault);
|
|
22
|
+
if (optionsWithDefault._query && Object.keys(optionsWithDefault._query).length)
|
|
23
|
+
src = withQuery(src, { _query: optionsWithDefault._query });
|
|
24
|
+
const meta = generateMeta(src, optionsWithDefault);
|
|
25
|
+
if (optionsWithDefault.url) {
|
|
26
|
+
content.head = defu({ meta }, content.head);
|
|
27
|
+
return content;
|
|
28
|
+
}
|
|
21
29
|
const payload = {
|
|
22
30
|
title: content.title,
|
|
23
31
|
excerpt: content.description || content.excerpt,
|
|
@@ -52,7 +60,7 @@ export function nuxtContentPlugin(nitroApp) {
|
|
|
52
60
|
{ name: "twitter:image:height", content: optionsWithDefault.height },
|
|
53
61
|
{ name: "twitter:image:alt", content: optionsWithDefault.alt }
|
|
54
62
|
]
|
|
55
|
-
});
|
|
63
|
+
}, content.head);
|
|
56
64
|
}
|
|
57
65
|
return content;
|
|
58
66
|
});
|
package/dist/runtime/shared.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OgImageOptions, OgImageRuntimeConfig } from './types.js';
|
|
2
2
|
export * from './pure.js';
|
|
3
|
+
export declare function generateMeta(url: string, resolvedOptions: OgImageOptions): import("@unhead/schema").Meta<import("@unhead/schema").UserTagConfigWithoutInnerContent>[];
|
|
3
4
|
export declare function getOgImagePath(pagePath: string, _options?: Partial<OgImageOptions>): string;
|
|
4
5
|
export declare function useOgImageRuntimeConfig(): OgImageRuntimeConfig;
|
package/dist/runtime/shared.js
CHANGED
|
@@ -1,7 +1,34 @@
|
|
|
1
1
|
import { useRuntimeConfig } from "#imports";
|
|
2
2
|
import { defu } from "defu";
|
|
3
3
|
import { joinURL } from "ufo";
|
|
4
|
+
import { getExtension } from "./pure.js";
|
|
4
5
|
export * from "./pure.js";
|
|
6
|
+
export function generateMeta(url, resolvedOptions) {
|
|
7
|
+
let urlExtension = getExtension(url) || resolvedOptions.extension;
|
|
8
|
+
if (urlExtension === "jpg")
|
|
9
|
+
urlExtension = "jpeg";
|
|
10
|
+
const meta = [
|
|
11
|
+
{ property: "og:image", content: url },
|
|
12
|
+
{ property: "og:image:type", content: `image/${urlExtension}` },
|
|
13
|
+
{ name: "twitter:card", content: "summary_large_image" },
|
|
14
|
+
// we don't need this but avoids issue when using useSeoMeta({ twitterImage })
|
|
15
|
+
{ name: "twitter:image", content: url },
|
|
16
|
+
{ name: "twitter:image:src", content: url }
|
|
17
|
+
];
|
|
18
|
+
if (resolvedOptions.width) {
|
|
19
|
+
meta.push({ property: "og:image:width", content: resolvedOptions.width });
|
|
20
|
+
meta.push({ name: "twitter:image:width", content: resolvedOptions.width });
|
|
21
|
+
}
|
|
22
|
+
if (resolvedOptions.height) {
|
|
23
|
+
meta.push({ property: "og:image:height", content: resolvedOptions.height });
|
|
24
|
+
meta.push({ name: "twitter:image:height", content: resolvedOptions.height });
|
|
25
|
+
}
|
|
26
|
+
if (resolvedOptions.alt) {
|
|
27
|
+
meta.push({ property: "og:image:alt", content: resolvedOptions.alt });
|
|
28
|
+
meta.push({ name: "twitter:image:alt", content: resolvedOptions.alt });
|
|
29
|
+
}
|
|
30
|
+
return meta;
|
|
31
|
+
}
|
|
5
32
|
export function getOgImagePath(pagePath, _options) {
|
|
6
33
|
const baseURL = useRuntimeConfig().app.baseURL;
|
|
7
34
|
const options = defu(_options, useOgImageRuntimeConfig().defaults);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-og-image",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.1.1",
|
|
5
5
|
"description": "Enlightened OG Image generation for Nuxt.",
|
|
6
6
|
"author": {
|
|
7
7
|
"website": "https://harlanzw.com",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"satori-html": "^0.3.2",
|
|
60
60
|
"sirv": "^3.0.0",
|
|
61
61
|
"std-env": "^3.8.0",
|
|
62
|
-
"strip-literal": "^2.1.
|
|
62
|
+
"strip-literal": "^2.1.1",
|
|
63
63
|
"ufo": "^1.5.4",
|
|
64
64
|
"unplugin": "^1.16.0",
|
|
65
65
|
"unwasm": "^0.3.9",
|
|
@@ -99,11 +99,12 @@
|
|
|
99
99
|
"playwright": "^1.49.0",
|
|
100
100
|
"sass": "^1.81.0",
|
|
101
101
|
"sharp": "^0.33.5",
|
|
102
|
-
"typescript": "5.6.3",
|
|
103
102
|
"unocss": "^0.64.1",
|
|
104
|
-
"vitest": "^2.1.5"
|
|
103
|
+
"vitest": "^2.1.5",
|
|
104
|
+
"typescript": "5.6.3"
|
|
105
105
|
},
|
|
106
106
|
"resolutions": {
|
|
107
|
+
"typescript": "5.6.3",
|
|
107
108
|
"@vue/server-renderer": "3.5.13",
|
|
108
109
|
"vue": "3.5.13",
|
|
109
110
|
"vue-router": "4.4.5"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"d9a165f2-5e19-460e-be70-9359a1d41711","timestamp":1732330751730,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.spotlight[data-v-56c30bd1]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-56c30bd1]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-56c30bd1]{background-color:#ffffff4d}.gradient-border[data-v-56c30bd1]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-56c30bd1]{background-color:#1414144d}.gradient-border[data-v-56c30bd1]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-56c30bd1]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-56c30bd1]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-56c30bd1]{position:fixed}.left-0[data-v-56c30bd1]{left:0}.right-0[data-v-56c30bd1]{right:0}.z-10[data-v-56c30bd1]{z-index:10}.z-20[data-v-56c30bd1]{z-index:20}.grid[data-v-56c30bd1]{display:grid}.mb-16[data-v-56c30bd1]{margin-bottom:4rem}.mb-8[data-v-56c30bd1]{margin-bottom:2rem}.max-w-520px[data-v-56c30bd1]{max-width:520px}.min-h-screen[data-v-56c30bd1]{min-height:100vh}.w-full[data-v-56c30bd1]{width:100%}.flex[data-v-56c30bd1]{display:flex}.cursor-pointer[data-v-56c30bd1]{cursor:pointer}.place-content-center[data-v-56c30bd1]{place-content:center}.items-center[data-v-56c30bd1]{align-items:center}.justify-center[data-v-56c30bd1]{justify-content:center}.overflow-hidden[data-v-56c30bd1]{overflow:hidden}.bg-white[data-v-56c30bd1]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-56c30bd1]{padding-left:1rem;padding-right:1rem}.px-8[data-v-56c30bd1]{padding-left:2rem;padding-right:2rem}.py-2[data-v-56c30bd1]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-56c30bd1]{text-align:center}.text-8xl[data-v-56c30bd1]{font-size:6rem;line-height:1}.text-xl[data-v-56c30bd1]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-56c30bd1]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-56c30bd1]{font-weight:300}.font-medium[data-v-56c30bd1]{font-weight:500}.leading-tight[data-v-56c30bd1]{line-height:1.25}.font-sans[data-v-56c30bd1]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-56c30bd1]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-56c30bd1]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-56c30bd1]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-56c30bd1]{padding-left:0;padding-right:0}.sm\:px-6[data-v-56c30bd1]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-56c30bd1]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-56c30bd1]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-56c30bd1]{font-size:1.25rem;line-height:1.75rem}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.spotlight[data-v-9bb6b492]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-9bb6b492]{position:fixed}.-bottom-1\/2[data-v-9bb6b492]{bottom:-50%}.left-0[data-v-9bb6b492]{left:0}.right-0[data-v-9bb6b492]{right:0}.grid[data-v-9bb6b492]{display:grid}.mb-16[data-v-9bb6b492]{margin-bottom:4rem}.mb-8[data-v-9bb6b492]{margin-bottom:2rem}.h-1\/2[data-v-9bb6b492]{height:50%}.max-w-520px[data-v-9bb6b492]{max-width:520px}.min-h-screen[data-v-9bb6b492]{min-height:100vh}.place-content-center[data-v-9bb6b492]{place-content:center}.overflow-hidden[data-v-9bb6b492]{overflow:hidden}.bg-white[data-v-9bb6b492]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-9bb6b492]{padding-left:2rem;padding-right:2rem}.text-center[data-v-9bb6b492]{text-align:center}.text-8xl[data-v-9bb6b492]{font-size:6rem;line-height:1}.text-xl[data-v-9bb6b492]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-9bb6b492]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-9bb6b492]{font-weight:300}.font-medium[data-v-9bb6b492]{font-weight:500}.leading-tight[data-v-9bb6b492]{line-height:1.25}.font-sans[data-v-9bb6b492]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-9bb6b492]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-9bb6b492]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-9bb6b492]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-9bb6b492]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-9bb6b492]{font-size:2.25rem;line-height:2.5rem}}
|