nuxt-og-image 3.0.3 → 3.0.4

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.
@@ -271,5 +271,5 @@
271
271
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BZ7_pRs2.js">
272
272
  <link rel="prefetch" as="style" crossorigin href="/__nuxt-og-image/_nuxt/error-500.DDPYPPm4.css">
273
273
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BqfpauQz.js">
274
- <script type="module" src="/__nuxt-og-image/_nuxt/DKCx7LgD.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1727581796732,false]</script>
275
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"88d843ad-821c-45a1-8731-3df48781467d",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
274
+ <script type="module" src="/__nuxt-og-image/_nuxt/DKCx7LgD.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1727622066876,false]</script>
275
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"90d0d856-b59a-4ecc-94f0-547414a9a752",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
@@ -271,5 +271,5 @@
271
271
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BZ7_pRs2.js">
272
272
  <link rel="prefetch" as="style" crossorigin href="/__nuxt-og-image/_nuxt/error-500.DDPYPPm4.css">
273
273
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BqfpauQz.js">
274
- <script type="module" src="/__nuxt-og-image/_nuxt/DKCx7LgD.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1727581796733,false]</script>
275
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"88d843ad-821c-45a1-8731-3df48781467d",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
274
+ <script type="module" src="/__nuxt-og-image/_nuxt/DKCx7LgD.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1727622066876,false]</script>
275
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"90d0d856-b59a-4ecc-94f0-547414a9a752",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
@@ -1 +1 @@
1
- {"id":"88d843ad-821c-45a1-8731-3df48781467d","timestamp":1727581765951}
1
+ {"id":"90d0d856-b59a-4ecc-94f0-547414a9a752","timestamp":1727622032663}
@@ -0,0 +1 @@
1
+ {"id":"90d0d856-b59a-4ecc-94f0-547414a9a752","timestamp":1727622032663,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -271,5 +271,5 @@
271
271
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BZ7_pRs2.js">
272
272
  <link rel="prefetch" as="style" crossorigin href="/__nuxt-og-image/_nuxt/error-500.DDPYPPm4.css">
273
273
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BqfpauQz.js">
274
- <script type="module" src="/__nuxt-og-image/_nuxt/DKCx7LgD.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1727581796732,false]</script>
275
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"88d843ad-821c-45a1-8731-3df48781467d",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
274
+ <script type="module" src="/__nuxt-og-image/_nuxt/DKCx7LgD.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1727622066876,false]</script>
275
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"90d0d856-b59a-4ecc-94f0-547414a9a752",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
package/dist/module.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "bridge": false
6
6
  },
7
7
  "configKey": "ogImage",
8
- "version": "3.0.2",
8
+ "version": "3.0.3",
9
9
  "builder": {
10
10
  "@nuxt/module-builder": "0.8.4",
11
11
  "unbuild": "2.0.0"
@@ -106,13 +106,18 @@ export async function resolveContext(e) {
106
106
  await ctx._nitro.hooks.callHook("nuxt-og-image:context", ctx);
107
107
  return ctx;
108
108
  }
109
+ const PAYLOAD_REGEX = /<script.+id="nuxt-og-image-options"[^>]*>(.+?)<\/script>/;
110
+ function getPayloadFromHtml(html) {
111
+ const match = String(html).match(PAYLOAD_REGEX);
112
+ return match ? match[1] : null;
113
+ }
109
114
  export function extractAndNormaliseOgImageOptions(html) {
110
- const htmlPayload = html.match(/<script.+id="nuxt-og-image-options"[^>]*>(.+?)<\/script>/)?.[1];
111
- if (!htmlPayload)
115
+ const _payload = getPayloadFromHtml(html);
116
+ if (!_payload)
112
117
  return false;
113
118
  let options = false;
114
119
  try {
115
- const payload2 = parse(htmlPayload);
120
+ const payload2 = parse(_payload);
116
121
  Object.entries(payload2).forEach(([key, value]) => {
117
122
  if (!value)
118
123
  delete payload2[key];
@@ -155,6 +160,7 @@ async function fetchPathHtmlAndExtractOptions(e, path, key) {
155
160
  const cachedHtmlPayload = await htmlPayloadCache.getItem(key);
156
161
  if (!import.meta.dev && cachedHtmlPayload && cachedHtmlPayload.expiresAt < Date.now())
157
162
  return cachedHtmlPayload.value;
163
+ let _payload = null;
158
164
  let html;
159
165
  try {
160
166
  html = await e.$fetch(path, {
@@ -164,14 +170,19 @@ async function fetchPathHtmlAndExtractOptions(e, path, key) {
164
170
  accept: "text/html"
165
171
  }
166
172
  });
167
- if (typeof html !== "string" || !html.includes("<html>")) {
168
- html = await globalThis.$fetch(path, {
173
+ _payload = getPayloadFromHtml(html);
174
+ if (!_payload) {
175
+ const fallbackHtml = await globalThis.$fetch(path, {
169
176
  // follow redirects
170
177
  redirect: "follow",
171
178
  headers: {
172
179
  accept: "text/html"
173
180
  }
174
181
  });
182
+ _payload = getPayloadFromHtml(fallbackHtml);
183
+ if (_payload) {
184
+ html = fallbackHtml;
185
+ }
175
186
  }
176
187
  } catch (err) {
177
188
  return createError({
@@ -179,7 +190,7 @@ async function fetchPathHtmlAndExtractOptions(e, path, key) {
179
190
  statusMessage: `[Nuxt OG Image] Failed to read the path ${path} for og-image extraction. ${err.message}.`
180
191
  });
181
192
  }
182
- if (typeof html !== "string") {
193
+ if (!_payload || !html) {
183
194
  return createError({
184
195
  statusCode: 500,
185
196
  statusMessage: `[Nuxt OG Image] Got invalid response from ${path} for og-image extraction.`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-og-image",
3
3
  "type": "module",
4
- "version": "3.0.3",
4
+ "version": "3.0.4",
5
5
  "description": "Enlightened OG Image generation for Nuxt.",
6
6
  "author": {
7
7
  "website": "https://harlanzw.com",
@@ -1 +0,0 @@
1
- {"id":"88d843ad-821c-45a1-8731-3df48781467d","timestamp":1727581765951,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}