nuxt-seo-utils 8.0.2 → 8.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.
@@ -0,0 +1 @@
1
+ .social-issue-row[data-v-59fbea83]{align-items:flex-start;border-radius:var(--radius-sm);display:flex;font-size:.8125rem;gap:.5rem;padding:.625rem .75rem;transition:background .15s}.social-issue-row[data-v-59fbea83]:hover{background:var(--color-surface-sunken)}.social-tab-bar[data-v-59fbea83]{border-bottom:1px solid var(--color-border);display:flex;gap:.125rem;overflow-x:auto;padding:.5rem .75rem}.social-tab[data-v-59fbea83]{align-items:center;border-radius:var(--radius-sm);color:var(--color-text-muted);display:flex;font-size:.75rem;font-weight:500;gap:.375rem;padding:.375rem .625rem;transition:color .15s,background .15s;white-space:nowrap}.social-tab[data-v-59fbea83]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.social-tab--active[data-v-59fbea83]{background:#11ad3214;color:var(--seo-green)}.dark .social-tab--active[data-v-59fbea83]{background:#11ad321f}.social-tab__label[data-v-59fbea83]{display:none}@media(min-width:640px){.social-tab__label[data-v-59fbea83]{display:inline}}.social-preview-stage[data-v-59fbea83]{padding:1.5rem}.social-preview-card[data-v-59fbea83]{animation:fade-up .25s cubic-bezier(.22,1,.36,1) forwards;margin:0 auto;max-width:500px}.social-image-placeholder[data-v-59fbea83]{align-items:center;background:var(--color-surface-sunken);background-image:linear-gradient(45deg,oklch(0 0 0/.03) 25%,transparent 0),linear-gradient(-45deg,oklch(0 0 0/.03) 25%,transparent 0),linear-gradient(45deg,transparent 75%,oklch(0 0 0/.03) 0),linear-gradient(-45deg,transparent 75%,oklch(0 0 0/.03) 0);color:var(--color-text-subtle);display:flex;flex-direction:column;font-size:.6875rem;font-weight:500;gap:.375rem;justify-content:center}.dark .social-image-placeholder[data-v-59fbea83],.social-image-placeholder[data-v-59fbea83]{background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.dark .social-image-placeholder[data-v-59fbea83]{background-image:linear-gradient(45deg,oklch(100% 0 0/.03) 25%,transparent 0),linear-gradient(-45deg,oklch(100% 0 0/.03) 25%,transparent 0),linear-gradient(45deg,transparent 75%,oklch(100% 0 0/.03) 0),linear-gradient(-45deg,transparent 75%,oklch(100% 0 0/.03) 0)}.social-image-placeholder--discord[data-v-59fbea83]{background-color:#36393f;color:#72767d}.social-tags-table__row[data-v-59fbea83]{align-items:center;border-radius:var(--radius-sm);display:flex;gap:.75rem;padding:.5rem .625rem;transition:background .15s}.social-tags-table__row[data-v-59fbea83]:hover{background:var(--color-surface-sunken)}.social-tags-table__row[data-v-59fbea83]:nth-child(2n){background:#00000004}.dark .social-tags-table__row[data-v-59fbea83]:nth-child(2n){background:#ffffff04}.social-tags-table__row[data-v-59fbea83]:nth-child(2n):hover{background:var(--color-surface-sunken)}
@@ -0,0 +1 @@
1
+ .devtools-error[data-v-5e62ff09]{flex-direction:column;gap:.75rem;padding:3rem 1.5rem;text-align:center}.devtools-error[data-v-5e62ff09],.devtools-error-icon-wrap[data-v-5e62ff09]{align-items:center;display:flex;justify-content:center}.devtools-error-icon-wrap[data-v-5e62ff09]{background:#dc655f1a;border-radius:var(--radius-lg);height:3rem;width:3rem}.dark .devtools-error-icon-wrap[data-v-5e62ff09]{background:#843c3826}.devtools-error-icon[data-v-5e62ff09]{color:#d74745;font-size:1.5rem}.dark .devtools-error-icon[data-v-5e62ff09]{color:#ed756e}.devtools-error-title[data-v-5e62ff09]{color:var(--color-text);font-size:.875rem;font-weight:600}.devtools-error-message[data-v-5e62ff09]{color:var(--color-text-muted);font-size:.75rem;line-height:1.5;max-width:20rem}.devtools-error-actions[data-v-5e62ff09]{display:flex;gap:.5rem;margin-top:.25rem}.devtools-empty[data-v-dfd08af9]{align-items:center;display:flex;flex-direction:column;margin:0 auto;max-width:32rem;text-align:center}.devtools-empty-icon[data-v-dfd08af9]{align-items:center;border-radius:var(--radius-lg);display:inline-flex;height:4rem;justify-content:center;margin-bottom:1.5rem;width:4rem}.devtools-empty-icon-default[data-v-dfd08af9]{background:#11ad321f;color:var(--seo-green)}.dark .devtools-empty-icon-default[data-v-dfd08af9]{background:#11ad3226}.devtools-empty-icon-error[data-v-dfd08af9]{background:#cc272e1f;color:#cc272e}.dark .devtools-empty-icon-error[data-v-dfd08af9]{background:#cc272e26;color:#ff847d}.devtools-empty-title[data-v-dfd08af9]{color:var(--color-text);font-size:1.125rem;font-weight:600;margin-bottom:.75rem}@media(min-width:640px){.devtools-empty-title[data-v-dfd08af9]{font-size:1.25rem}}.devtools-empty-description[data-v-dfd08af9]{color:var(--color-text-muted);font-size:.875rem;line-height:1.5;margin-bottom:1.25rem}@media(min-width:640px){.devtools-empty-description[data-v-dfd08af9]{font-size:1rem}}.devtools-empty-actions[data-v-dfd08af9]{align-items:center;display:flex;flex-direction:column;gap:.75rem}
@@ -0,0 +1 @@
1
+ import{d as A,u as q,q as H,p as M,s as z,v as J,o as a,g as l,c as w,x as X,w as v,b as i,e as K,F as f,i as e,m as C,y as Q,n as B,j as n,k as p,z as Y,A as F,a as L,r as U,f as h,l as Z}from"./2G7Leuoi.js";import{_ as ee,a as te,p as ae}from"./Z0R8QAQn.js";import{_ as se,a as oe}from"./DoXcoq-0.js";const le={class:"space-y-5 stagger-children"},ne={class:"space-y-1"},re={class:"min-w-0"},ie={class:"font-mono text-xs"},ce={class:"text-xs text-[var(--color-text-muted)]"},ue={class:"social-tab-bar"},de=["onClick"],ge={class:"social-tab__label"},ve={class:"social-preview-stage"},pe={key:0,class:"social-preview-card"},me={class:"rounded-2xl overflow-hidden border border-neutral-200 dark:border-neutral-700"},_e={key:0,class:"aspect-[1.91/1] bg-neutral-100 dark:bg-neutral-800"},he=["src","alt"],xe={key:1,class:"social-image-placeholder aspect-[1.91/1]"},be={class:"p-3"},we={class:"text-xs text-neutral-500"},fe={class:"text-sm font-medium line-clamp-1"},ye={class:"text-xs text-neutral-500 line-clamp-2"},ke={key:1,class:"social-preview-card"},Ie={class:"rounded-lg overflow-hidden border border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-800"},Te={key:0,class:"aspect-[1.91/1] bg-neutral-100 dark:bg-neutral-700"},Ce=["src","alt"],Ne={key:1,class:"social-image-placeholder aspect-[1.91/1]"},$e={class:"p-3"},Se={class:"text-[11px] text-neutral-500 uppercase tracking-wider"},Ue={class:"text-base font-semibold line-clamp-1 mt-0.5"},je={class:"text-sm text-neutral-500 line-clamp-1 mt-0.5"},De={key:2,class:"social-preview-card"},Me={class:"rounded-lg overflow-hidden border border-neutral-200 dark:border-neutral-700"},ze={key:0,class:"aspect-[1.91/1] bg-neutral-100 dark:bg-neutral-800"},Be=["src","alt"],Fe={key:1,class:"social-image-placeholder aspect-[1.91/1]"},Le={class:"p-3 bg-neutral-50 dark:bg-neutral-800"},Oe={class:"text-sm font-semibold line-clamp-2"},Ee={class:"text-xs text-neutral-500 mt-1"},Pe={key:3,class:"social-preview-card"},Re={class:"rounded-lg overflow-hidden border-l-4 border-[#5865F2] bg-[#2f3136] text-white p-4"},Ve={class:"text-xs text-neutral-400 mb-1"},We={class:"text-[#00aff4] text-sm font-semibold hover:underline cursor-pointer"},Ge={class:"text-sm text-neutral-300 mt-1 line-clamp-2"},Ae={key:0,class:"mt-3 rounded-lg overflow-hidden max-w-[300px]"},qe=["src","alt"],He={key:1,class:"social-image-placeholder social-image-placeholder--discord mt-3 max-w-[300px] aspect-video rounded-lg"},Je={key:4,class:"social-preview-card"},Xe={class:"rounded-lg overflow-hidden border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 py-2"},Ke={class:"text-xs text-neutral-500 font-bold mb-1"},Qe={class:"text-[#1264a3] dark:text-[#1d9bd1] text-sm font-bold hover:underline cursor-pointer"},Ye={class:"text-sm text-neutral-600 dark:text-neutral-400 mt-0.5 line-clamp-2"},Ze={key:0,class:"mt-2 rounded overflow-hidden max-w-[360px]"},et=["src","alt"],tt={class:"social-tags-table"},at={class:"text-sm font-mono shrink-0 text-[var(--color-text)]"},st={class:"text-xs text-[var(--color-text-muted)] truncate min-w-0 flex-1 text-right font-mono"},ot={class:"text-sm font-mono shrink-0 text-[var(--color-text)]"},lt={class:"text-xs text-[var(--color-text-muted)] truncate min-w-0 flex-1 text-right font-mono"},nt={class:"rounded-lg overflow-hidden border border-[var(--color-border)]"},rt=["src","alt"],it={class:"flex items-center gap-2 text-xs text-[var(--color-text-muted)] font-mono"},ct={class:"truncate"},ut=A({__name:"social",setup(dt){const{copy:O,copied:E}=q(),N=U(!1),y=U(null),t=U(null),_=U("twitter"),P=[{label:"X / Twitter",value:"twitter",icon:"carbon:logo-x"},{label:"Facebook",value:"facebook",icon:"carbon:logo-facebook"},{label:"LinkedIn",value:"linkedin",icon:"carbon:logo-linkedin"},{label:"Discord",value:"discord",icon:"carbon:logo-discord"},{label:"Slack",value:"slack",icon:"carbon:logo-slack"}],x=h(()=>{if(!t.value)return[];const c=[];if(t.value.og["og:title"]||c.push({type:"warning",property:"og:title",message:"Missing og:title. Social previews will use the page title as fallback."}),t.value.og["og:description"]||c.push({type:"warning",property:"og:description",message:"Missing og:description."}),t.value.ogImages.length||c.push({type:"warning",property:"og:image",message:"No og:image found. Posts with images get higher engagement."}),t.value.og["og:url"]||c.push({type:"warning",property:"og:url",message:"Missing og:url."}),t.value.twitter["twitter:card"]||c.push({type:"warning",property:"twitter:card",message:'Missing twitter:card. Defaults to "summary".'}),t.value.ogImages.length){const o=t.value.ogImages[0];o.url&&!o.url.startsWith("http")&&c.push({type:"error",property:"og:image",message:"og:image must be an absolute URL."});const r=Number.parseInt(o.width||"0"),u=Number.parseInt(o.height||"0");r&&u&&(r<200||u<200)&&c.push({type:"warning",property:"og:image",message:`Image is ${r}x${u}. Minimum recommended: 200x200, ideal: 1200x630.`})}return c}),d=h(()=>t.value?.og["og:title"]||t.value?.twitter["twitter:title"]||t.value?.title||"Untitled"),$=h(()=>t.value?.og["og:description"]||t.value?.twitter["twitter:description"]||t.value?.description||""),g=h(()=>t.value?.ogImages[0]?.url||t.value?.twitter["twitter:image"]||null),k=h(()=>{if(t.value?.og["og:site_name"])return t.value.og["og:site_name"];try{return new URL(t.value?.url||"").hostname}catch{return""}}),R=h(()=>t.value?Object.keys(t.value.og).length:0),V=h(()=>t.value?Object.keys(t.value.twitter).length:0);function W(c,o){const r=ae(c),u=[];r.ogTags["og:image"]&&u.push({url:r.ogTags["og:image"],width:r.ogTags["og:image:width"],height:r.ogTags["og:image:height"],alt:r.ogTags["og:image:alt"]});let I="";try{I=new URL(o).hostname}catch{I=o}return{title:r.title,description:r.description,url:o,siteName:r.ogTags["og:site_name"]||I,og:r.ogTags,ogImages:u,twitter:r.twitterTags,twitterCard:r.twitterTags["twitter:card"]||"summary"}}async function j(){N.value=!0,y.value=null,t.value=null;try{const o=`${window.parent?.location?.origin||window.location.origin}${z.value}`,r=await fetch(o,{headers:{Accept:"text/html"}});if(!r.ok)throw new Error(`HTTP ${r.status}`);const u=await r.text();t.value=W(u,o)}catch(c){y.value=c.message||"Failed to fetch page"}finally{N.value=!1}}return H([()=>M.value,z,J],()=>{M.value&&j()},{immediate:!0}),(c,o)=>{const r=X,u=K,I=ee,T=se,b=Q,S=oe,D=Y,G=te;return a(),l("div",le,[N.value?(a(),w(r,{key:0})):y.value?(a(),w(I,{key:1,error:y.value,title:"Failed to check page"},{default:v(()=>[i(u,{size:"sm",variant:"ghost",icon:"carbon:reset",label:"Retry",onClick:j})]),_:1},8,["error"])):t.value?(a(),l(f,{key:2},[x.value.length?(a(),w(S,{key:0,icon:"carbon:warning",text:"Warnings"},{actions:v(()=>[i(T,{value:x.value.filter(s=>s.type==="error").length,label:"errors",variant:x.value.some(s=>s.type==="error")?"danger":void 0},null,8,["value","variant"]),i(T,{value:x.value.filter(s=>s.type==="warning").length,label:"warnings",variant:x.value.some(s=>s.type==="warning")?"warning":void 0},null,8,["value","variant"])]),default:v(()=>[e("div",ne,[(a(!0),l(f,null,C(x.value,s=>(a(),l("div",{key:s.property+s.message,class:"social-issue-row"},[i(b,{name:s.type==="error"?"carbon:close-filled":"carbon:warning-filled",class:B(["mt-0.5 shrink-0",s.type==="error"?"text-red-500":"text-amber-500"])},null,8,["name","class"]),e("div",re,[e("span",ie,n(s.property),1),e("p",ce,n(s.message),1)])]))),128))])]),_:1})):p("",!0),i(S,{icon:"carbon:view",text:"Social Preview",padding:!1},{default:v(()=>[e("div",ue,[(a(),l(f,null,C(P,s=>e("button",{key:s.value,class:B(["social-tab",{"social-tab--active":_.value===s.value}]),onClick:m=>_.value=s.value},[i(b,{name:s.icon,class:"text-sm"},null,8,["name"]),e("span",ge,n(s.label),1)],10,de)),64))]),e("div",ve,[_.value==="twitter"?(a(),l("div",pe,[e("div",me,[g.value?(a(),l("div",_e,[e("img",{src:g.value,class:"w-full h-full object-cover",alt:d.value},null,8,he)])):(a(),l("div",xe,[i(b,{name:"carbon:image",class:"text-2xl"}),o[1]||(o[1]=e("span",null,"No og:image",-1))])),e("div",be,[e("p",we,n(k.value),1),e("p",fe,n(d.value),1),e("p",ye,n($.value),1)])])])):p("",!0),_.value==="facebook"?(a(),l("div",ke,[e("div",Ie,[g.value?(a(),l("div",Te,[e("img",{src:g.value,class:"w-full h-full object-cover",alt:d.value},null,8,Ce)])):(a(),l("div",Ne,[i(b,{name:"carbon:image",class:"text-2xl"}),o[2]||(o[2]=e("span",null,"No og:image",-1))])),e("div",$e,[e("p",Se,n(k.value),1),e("p",Ue,n(d.value),1),e("p",je,n($.value),1)])])])):p("",!0),_.value==="linkedin"?(a(),l("div",De,[e("div",Me,[g.value?(a(),l("div",ze,[e("img",{src:g.value,class:"w-full h-full object-cover",alt:d.value},null,8,Be)])):(a(),l("div",Fe,[i(b,{name:"carbon:image",class:"text-2xl"}),o[3]||(o[3]=e("span",null,"No og:image",-1))])),e("div",Le,[e("p",Oe,n(d.value),1),e("p",Ee,n(k.value),1)])])])):p("",!0),_.value==="discord"?(a(),l("div",Pe,[e("div",Re,[e("p",Ve,n(k.value),1),e("p",We,n(d.value),1),e("p",Ge,n($.value),1),g.value?(a(),l("div",Ae,[e("img",{src:g.value,class:"w-full object-cover",alt:d.value},null,8,qe)])):(a(),l("div",He,[i(b,{name:"carbon:image",class:"text-xl"}),o[4]||(o[4]=e("span",null,"No image",-1))]))])])):p("",!0),_.value==="slack"?(a(),l("div",Je,[e("div",Xe,[e("p",Ke,n(k.value),1),e("p",Qe,n(d.value),1),e("p",Ye,n($.value),1),g.value?(a(),l("div",Ze,[e("img",{src:g.value,class:"w-full object-cover",alt:d.value},null,8,et)])):p("",!0)])])):p("",!0)])]),_:1}),i(S,{icon:"carbon:tag-group",text:"Open Graph Tags"},{actions:v(()=>[i(T,{value:R.value,label:"og"},null,8,["value"]),i(T,{value:V.value,label:"twitter"},null,8,["value"]),i(u,{size:"xs",variant:"ghost",color:"neutral",icon:"carbon:copy",label:L(E)?"Copied!":"Copy",onClick:o[0]||(o[0]=s=>L(O)(JSON.stringify({og:t.value.og,twitter:t.value.twitter},null,2)))},null,8,["label"])]),default:v(()=>[e("div",tt,[(a(!0),l(f,null,C(t.value.og,(s,m)=>(a(),l("div",{key:m,class:"social-tags-table__row"},[i(D,{color:"primary",variant:"subtle",size:"xs"},{default:v(()=>[...o[5]||(o[5]=[F(" og ",-1)])]),_:1}),e("span",at,n(m),1),e("span",st,n(s),1)]))),128)),(a(!0),l(f,null,C(t.value.twitter,(s,m)=>(a(),l("div",{key:m,class:"social-tags-table__row"},[i(D,{color:"neutral",variant:"subtle",size:"xs"},{default:v(()=>[...o[6]||(o[6]=[F(" twitter ",-1)])]),_:1}),e("span",ot,n(m),1),e("span",lt,n(s),1)]))),128))])]),_:1}),t.value.ogImages.length?(a(),w(S,{key:1,icon:"carbon:image",text:"OG Image"},{actions:v(()=>[t.value.ogImages[0]?.width&&t.value.ogImages[0]?.height?(a(),w(T,{key:0,value:`${t.value.ogImages[0].width}×${t.value.ogImages[0].height}`,label:"px"},null,8,["value"])):p("",!0)]),default:v(()=>[(a(!0),l(f,null,C(t.value.ogImages,(s,m)=>(a(),l("div",{key:m,class:"space-y-2"},[e("div",nt,[e("img",{src:s.url,class:"w-full max-h-64 object-contain bg-neutral-100 dark:bg-neutral-800",alt:s.alt||"OG Image"},null,8,rt)]),e("div",it,[e("span",ct,n(s.url),1)])]))),128))]),_:1})):p("",!0)],64)):!N.value&&!y.value?(a(),w(G,{key:3,icon:"carbon:share",title:"Waiting for connection",description:"Waiting for connection to host app..."})):p("",!0)])}}}),mt=Z(ut,[["__scopeId","data-v-59fbea83"]]);export{mt as default};
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-seo-utils/_nuxt/entry.BDETcH9H.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-seo-utils/_nuxt/2G7Leuoi.js"><script type="module" src="/__nuxt-seo-utils/_nuxt/2G7Leuoi.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:{i18n:{baseUrl:"",defaultLocale:"",rootRedirect:"",redirectStatusCode:302,skipSettingLocaleOnNavigate:false,locales:[],detectBrowserLanguage:{alwaysRedirect:false,cookieCrossOrigin:false,cookieDomain:"",cookieKey:"i18n_redirected",cookieSecure:false,fallbackLocale:"",redirectOn:"root",useCookie:true},experimental:{localeDetector:"",typedPages:true,typedOptionsAndMessages:false,alternateLinkCanonicalQueries:true,devCache:false,cacheLifetime:"",stripMessagesPayload:false,preload:false,strictSeo:false,nitroContextDetection:true,httpCacheDuration:10},domainLocales:{}}},app:{baseURL:"/__nuxt-seo-utils",buildId:"4fc06af4-db03-4190-bad6-822a1e1fc5f2",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774499690511,false]</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-seo-utils/_nuxt/entry.BDETcH9H.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-seo-utils/_nuxt/2G7Leuoi.js"><script type="module" src="/__nuxt-seo-utils/_nuxt/2G7Leuoi.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:{i18n:{baseUrl:"",defaultLocale:"",rootRedirect:"",redirectStatusCode:302,skipSettingLocaleOnNavigate:false,locales:[],detectBrowserLanguage:{alwaysRedirect:false,cookieCrossOrigin:false,cookieDomain:"",cookieKey:"i18n_redirected",cookieSecure:false,fallbackLocale:"",redirectOn:"root",useCookie:true},experimental:{localeDetector:"",typedPages:true,typedOptionsAndMessages:false,alternateLinkCanonicalQueries:true,devCache:false,cacheLifetime:"",stripMessagesPayload:false,preload:false,strictSeo:false,nitroContextDetection:true,httpCacheDuration:10},domainLocales:{}}},app:{baseURL:"/__nuxt-seo-utils",buildId:"4fc06af4-db03-4190-bad6-822a1e1fc5f2",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774499690512,false]</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-seo-utils/_nuxt/entry.BDETcH9H.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-seo-utils/_nuxt/2G7Leuoi.js"><script type="module" src="/__nuxt-seo-utils/_nuxt/2G7Leuoi.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},env:"production"}</script><script>window.__NUXT__={};window.__NUXT__.config={public:{i18n:{baseUrl:"",defaultLocale:"",rootRedirect:"",redirectStatusCode:302,skipSettingLocaleOnNavigate:false,locales:[],detectBrowserLanguage:{alwaysRedirect:false,cookieCrossOrigin:false,cookieDomain:"",cookieKey:"i18n_redirected",cookieSecure:false,fallbackLocale:"",redirectOn:"root",useCookie:true},experimental:{localeDetector:"",typedPages:true,typedOptionsAndMessages:false,alternateLinkCanonicalQueries:true,devCache:false,cacheLifetime:"",stripMessagesPayload:false,preload:false,strictSeo:false,nitroContextDetection:true,httpCacheDuration:10},domainLocales:{}}},app:{baseURL:"/__nuxt-seo-utils",buildId:"4fc06af4-db03-4190-bad6-822a1e1fc5f2",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774499690513,false]</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-seo-utils/_nuxt/entry.BDETcH9H.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-seo-utils/_nuxt/2G7Leuoi.js"><script type="module" src="/__nuxt-seo-utils/_nuxt/2G7Leuoi.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:{i18n:{baseUrl:"",defaultLocale:"",rootRedirect:"",redirectStatusCode:302,skipSettingLocaleOnNavigate:false,locales:[],detectBrowserLanguage:{alwaysRedirect:false,cookieCrossOrigin:false,cookieDomain:"",cookieKey:"i18n_redirected",cookieSecure:false,fallbackLocale:"",redirectOn:"root",useCookie:true},experimental:{localeDetector:"",typedPages:true,typedOptionsAndMessages:false,alternateLinkCanonicalQueries:true,devCache:false,cacheLifetime:"",stripMessagesPayload:false,preload:false,strictSeo:false,nitroContextDetection:true,httpCacheDuration:10},domainLocales:{}}},app:{baseURL:"/__nuxt-seo-utils",buildId:"4fc06af4-db03-4190-bad6-822a1e1fc5f2",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774499690512,false]</script></body></html>
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": ">=3.16.0"
6
6
  },
7
- "version": "8.0.2",
7
+ "version": "8.0.4",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "1.0.2",
10
10
  "unbuild": "3.6.1"
package/dist/module.mjs CHANGED
@@ -4,6 +4,7 @@ import UnheadVite from '@unhead/addons/vite';
4
4
  import { defu } from 'defu';
5
5
  import { installNuxtSiteConfig } from 'nuxt-site-config/kit';
6
6
  import { resolve, extname, relative, dirname, basename } from 'pathe';
7
+ import { readPackageJSON } from 'pkg-types';
7
8
  import { unpackMeta } from '@unhead/vue/utils';
8
9
  import { glob } from 'tinyglobby';
9
10
  import { encodePath, joinURL } from 'ufo';
@@ -596,6 +597,7 @@ const module$1 = defineNuxtModule({
596
597
  return;
597
598
  }
598
599
  const { resolve } = createResolver(import.meta.url);
600
+ const { version } = await readPackageJSON(resolve("../package.json"));
599
601
  await installNuxtSiteConfig();
600
602
  const runtimeDir = resolve("./runtime");
601
603
  if (config.metaDataFiles) {
@@ -674,6 +676,7 @@ const module$1 = defineNuxtModule({
674
676
  });
675
677
  }
676
678
  nuxt.options.alias["#seo-utils"] = runtimeDir;
679
+ nuxt.options.runtimeConfig.public["nuxt-seo-utils-version"] = nuxt.options.runtimeConfig.public["nuxt-seo-utils-version"] || version || "";
677
680
  nuxt.options.runtimeConfig.public["seo-utils"] = defu(nuxt.options.runtimeConfig.public["seo-utils"] || {}, {
678
681
  canonicalQueryWhitelist: config.canonicalQueryWhitelist || [
679
682
  "page",
@@ -1,6 +1,10 @@
1
1
  declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, {
2
+ runtimeConfig: any;
2
3
  siteConfig: {
3
4
  url: string;
5
+ env: any;
6
+ indexable: any;
4
7
  };
8
+ path: string | number | true | Record<string, any> | import("ufo").QueryValue[];
5
9
  }>;
6
10
  export default _default;
@@ -1,10 +1,21 @@
1
1
  import { getSiteConfig } from "#site-config/server/composables";
2
- import { defineEventHandler } from "h3";
2
+ import { defineEventHandler, getQuery } from "h3";
3
+ import { useRuntimeConfig } from "nitropack/runtime";
3
4
  export default defineEventHandler((e) => {
4
5
  const siteConfig = getSiteConfig(e);
6
+ const runtimeConfig = useRuntimeConfig(e);
7
+ const seoUtils = runtimeConfig.public?.["seo-utils"] || {};
8
+ const query = getQuery(e);
5
9
  return {
10
+ runtimeConfig: {
11
+ version: runtimeConfig.public?.["nuxt-seo-utils-version"] || "unknown",
12
+ ...seoUtils
13
+ },
6
14
  siteConfig: {
7
- url: siteConfig.url
8
- }
15
+ url: siteConfig.url,
16
+ env: siteConfig.env,
17
+ indexable: siteConfig.indexable
18
+ },
19
+ path: query.path || "/"
9
20
  };
10
21
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-seo-utils",
3
3
  "type": "module",
4
- "version": "8.0.2",
4
+ "version": "8.0.4",
5
5
  "description": "SEO utilities to improve your Nuxt sites discoverability and shareability",
6
6
  "license": "MIT",
7
7
  "funding": "https://github.com/sponsors/harlan-zw",
@@ -60,9 +60,9 @@
60
60
  "defu": "^6.1.4",
61
61
  "escape-string-regexp": "^5.0.0",
62
62
  "image-size": "^2.0.2",
63
- "nuxt-site-config": "^4.0.2",
64
- "nuxtseo-layer-devtools": "^0.3.1",
65
- "nuxtseo-shared": "^0.7.1",
63
+ "nuxt-site-config": "^4.0.6",
64
+ "nuxtseo-layer-devtools": "^0.4.4",
65
+ "nuxtseo-shared": "^0.8.1",
66
66
  "pathe": "^2.0.3",
67
67
  "pkg-types": "^2.3.0",
68
68
  "scule": "^1.3.0",
@@ -93,7 +93,6 @@
93
93
  "lint-staged": "^16.4.0",
94
94
  "markdownlint-cli": "^0.48.0",
95
95
  "nuxt": "^4.4.2",
96
- "nuxt-content-twoslash": "^0.4.0",
97
96
  "playwright-core": "^1.58.2",
98
97
  "sass": "^1.98.0",
99
98
  "typescript": "^6.0.2",
@@ -103,8 +102,8 @@
103
102
  "vue-tsc": "^3.2.6"
104
103
  },
105
104
  "scripts": {
106
- "build": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxt-module-build build",
107
- "build:client": "nuxt generate devtools",
105
+ "client:build": "nuxt generate devtools",
106
+ "build": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxt-module-build build && npm run client:build",
108
107
  "dev": "nuxt dev playground",
109
108
  "devtools": "nuxt dev devtools --port 3030",
110
109
  "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxt prepare playground && pnpm prepare:fixtures",