@nuxt/scripts 1.3.5 → 1.3.7
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/devtools-client/200.html +1 -1
- package/dist/devtools-client/404.html +1 -1
- package/dist/devtools-client/_nuxt/builds/latest.json +1 -1
- package/dist/devtools-client/_nuxt/builds/meta/3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7.json +1 -0
- package/dist/devtools-client/docs/index.html +1 -1
- package/dist/devtools-client/first-party/index.html +1 -1
- package/dist/devtools-client/index.html +1 -1
- package/dist/devtools-client/registry/index.html +1 -1
- package/dist/module.d.mts +23 -1
- package/dist/module.d.ts +23 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +40 -18
- package/dist/runtime/registry/google-tag-manager.d.ts +9 -1
- package/dist/runtime/server/utils/cached-upstream.d.ts +2 -0
- package/dist/runtime/server/utils/cached-upstream.js +94 -23
- package/dist/types.d.mts +1 -1
- package/package.json +1 -1
- package/dist/devtools-client/_nuxt/builds/meta/173480db-0944-415b-962d-d619682f0042.json +0 -1
|
@@ -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-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",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-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1787317802286,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",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-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1787317802286,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7","timestamp":1787317796267}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7","timestamp":1787317796267,"prerendered":[]}
|
|
@@ -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-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",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-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1787317802285,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",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-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1787317802286,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",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-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1787317802286,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",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-scripts/_nuxt/Bf2Kt1P0.js"}}</script><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.CYUdJFoE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B551Pnuh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BKdLzFmX.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CH5oUfNi.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CP7c-Js6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/C_v3_O0R.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CC0GKROJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/B8_EBdhg.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/CxN78VhB.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BDNMzG2s.js"><script type="module" src="/__nuxt-scripts/_nuxt/Bf2Kt1P0.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DMbpbO54.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/qhed-kSA.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BgS3c2Ky.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/VbXTXTou.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/BZCL-v6S.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-404.Bq2JQbJs.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTP8MRtW.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-scripts/_nuxt/error-500.5E_FOzlc.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-scripts/_nuxt/KxC4Q3ev.js"><script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"system";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"3c4ca254-ebb3-4ed7-9255-ef9aa26e9bc7",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1787317802286,false]</script></body></html>
|
package/dist/module.d.mts
CHANGED
|
@@ -32,6 +32,28 @@ interface ResolvedProxySecret {
|
|
|
32
32
|
*/
|
|
33
33
|
declare function resolveProxySecret(rootDir: string, isDev: boolean, configSecret?: string, autoGenerate?: boolean): Promise<ResolvedProxySecret | undefined>;
|
|
34
34
|
declare function isProxyDisabled(registryKey: string, registry?: NuxtConfigScriptRegistry, runtimeConfig?: Record<string, any>): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Nitro presets with no server runtime: `/_scripts/p/**` cannot be served, so
|
|
37
|
+
* proxy URLs written into bundled scripts would 404/405 in production.
|
|
38
|
+
* Nitro accepts each name in hyphen, underscore, and camelCase form.
|
|
39
|
+
*/
|
|
40
|
+
declare const STATIC_PROXY_PRESETS: string[];
|
|
41
|
+
/**
|
|
42
|
+
* Normalize a preset id the way Nitro resolves it: camelCase and underscore
|
|
43
|
+
* spellings (`githubPages`, `github_pages`) map to the hyphen form (`github-pages`).
|
|
44
|
+
*/
|
|
45
|
+
declare function normalizeNitroPreset(preset: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Whether the build targets static output with no Nitro server runtime.
|
|
48
|
+
* `nuxi generate` and `nuxt build --prerender` set `_generate` and `nitro.static`
|
|
49
|
+
* through CLI overrides; static presets arrive via `nitro.preset`, `NITRO_PRESET`,
|
|
50
|
+
* or `SERVER_PRESET` in any of Nitro's accepted spellings.
|
|
51
|
+
*/
|
|
52
|
+
declare function isStaticProxyTarget(options: {
|
|
53
|
+
generate?: boolean;
|
|
54
|
+
nitroStatic?: boolean;
|
|
55
|
+
preset?: string;
|
|
56
|
+
}): boolean;
|
|
35
57
|
declare function applyAutoInject(registry: NuxtConfigScriptRegistry, runtimeConfig: Record<string, any>, proxyPrefix: string, registryKey: string, autoInject: ResolvedProxyAutoInject, alias?: ProxyAliasConfig): void;
|
|
36
58
|
declare function resolveConfiguredProxyDomains(config: Record<string, any> | undefined, proxyConfig?: Pick<ProxyConfig, 'autoInject' | 'configDomainFields'>): string[];
|
|
37
59
|
/**
|
|
@@ -220,5 +242,5 @@ interface ModuleHooks {
|
|
|
220
242
|
}
|
|
221
243
|
declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
|
|
222
244
|
|
|
223
|
-
export { applyAutoInject, _default as default, findMissingRequiredFields, isProxyDisabled, resolveConfiguredProxyDomains, resolveProxySecret };
|
|
245
|
+
export { STATIC_PROXY_PRESETS, applyAutoInject, _default as default, findMissingRequiredFields, isProxyDisabled, isStaticProxyTarget, normalizeNitroPreset, resolveConfiguredProxyDomains, resolveProxySecret };
|
|
224
246
|
export type { ModuleHooks, ModuleOptions, ResolvedProxySecret };
|
package/dist/module.d.ts
CHANGED
|
@@ -32,6 +32,28 @@ interface ResolvedProxySecret {
|
|
|
32
32
|
*/
|
|
33
33
|
declare function resolveProxySecret(rootDir: string, isDev: boolean, configSecret?: string, autoGenerate?: boolean): Promise<ResolvedProxySecret | undefined>;
|
|
34
34
|
declare function isProxyDisabled(registryKey: string, registry?: NuxtConfigScriptRegistry, runtimeConfig?: Record<string, any>): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Nitro presets with no server runtime: `/_scripts/p/**` cannot be served, so
|
|
37
|
+
* proxy URLs written into bundled scripts would 404/405 in production.
|
|
38
|
+
* Nitro accepts each name in hyphen, underscore, and camelCase form.
|
|
39
|
+
*/
|
|
40
|
+
declare const STATIC_PROXY_PRESETS: string[];
|
|
41
|
+
/**
|
|
42
|
+
* Normalize a preset id the way Nitro resolves it: camelCase and underscore
|
|
43
|
+
* spellings (`githubPages`, `github_pages`) map to the hyphen form (`github-pages`).
|
|
44
|
+
*/
|
|
45
|
+
declare function normalizeNitroPreset(preset: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Whether the build targets static output with no Nitro server runtime.
|
|
48
|
+
* `nuxi generate` and `nuxt build --prerender` set `_generate` and `nitro.static`
|
|
49
|
+
* through CLI overrides; static presets arrive via `nitro.preset`, `NITRO_PRESET`,
|
|
50
|
+
* or `SERVER_PRESET` in any of Nitro's accepted spellings.
|
|
51
|
+
*/
|
|
52
|
+
declare function isStaticProxyTarget(options: {
|
|
53
|
+
generate?: boolean;
|
|
54
|
+
nitroStatic?: boolean;
|
|
55
|
+
preset?: string;
|
|
56
|
+
}): boolean;
|
|
35
57
|
declare function applyAutoInject(registry: NuxtConfigScriptRegistry, runtimeConfig: Record<string, any>, proxyPrefix: string, registryKey: string, autoInject: ResolvedProxyAutoInject, alias?: ProxyAliasConfig): void;
|
|
36
58
|
declare function resolveConfiguredProxyDomains(config: Record<string, any> | undefined, proxyConfig?: Pick<ProxyConfig, 'autoInject' | 'configDomainFields'>): string[];
|
|
37
59
|
/**
|
|
@@ -220,5 +242,5 @@ interface ModuleHooks {
|
|
|
220
242
|
}
|
|
221
243
|
declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
|
|
222
244
|
|
|
223
|
-
export { applyAutoInject, _default as default, findMissingRequiredFields, isProxyDisabled, resolveConfiguredProxyDomains, resolveProxySecret };
|
|
245
|
+
export { STATIC_PROXY_PRESETS, applyAutoInject, _default as default, findMissingRequiredFields, isProxyDisabled, isStaticProxyTarget, normalizeNitroPreset, resolveConfiguredProxyDomains, resolveProxySecret };
|
|
224
246
|
export type { ModuleHooks, ModuleOptions, ResolvedProxySecret };
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -2041,6 +2041,22 @@ function isProxyDisabled(registryKey, registry2, runtimeConfig) {
|
|
|
2041
2041
|
}
|
|
2042
2042
|
return false;
|
|
2043
2043
|
}
|
|
2044
|
+
const STATIC_PROXY_PRESETS = [
|
|
2045
|
+
"static",
|
|
2046
|
+
"github-pages",
|
|
2047
|
+
"gitlab-pages",
|
|
2048
|
+
"cloudflare-pages-static",
|
|
2049
|
+
"netlify-static",
|
|
2050
|
+
"vercel-static",
|
|
2051
|
+
"zeabur-static",
|
|
2052
|
+
"zerops-static"
|
|
2053
|
+
];
|
|
2054
|
+
function normalizeNitroPreset(preset) {
|
|
2055
|
+
return preset.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).replace(/_/g, "-");
|
|
2056
|
+
}
|
|
2057
|
+
function isStaticProxyTarget(options) {
|
|
2058
|
+
return !!options.generate || options.nitroStatic === true || STATIC_PROXY_PRESETS.includes(normalizeNitroPreset(options.preset || ""));
|
|
2059
|
+
}
|
|
2044
2060
|
function applyAutoInject(registry2, runtimeConfig, proxyPrefix, registryKey, autoInject, alias) {
|
|
2045
2061
|
if (isProxyDisabled(registryKey, registry2, runtimeConfig))
|
|
2046
2062
|
return;
|
|
@@ -2243,7 +2259,16 @@ const module$1 = defineNuxtModule({
|
|
|
2243
2259
|
const assetsPrefix = `${scriptsBase}/assets`;
|
|
2244
2260
|
const proxyConfigs = {};
|
|
2245
2261
|
const proxyHandlerPath = await resolvePath("./runtime/server/proxy-handler");
|
|
2246
|
-
|
|
2262
|
+
const staticProxyTarget = isStaticProxyTarget({
|
|
2263
|
+
// `_generate` arrives untyped through the nuxi generate CLI override. Nitro's
|
|
2264
|
+
// preset option already merges CLI args, env, and nuxt.config by module setup.
|
|
2265
|
+
generate: nuxt.options._generate,
|
|
2266
|
+
nitroStatic: nuxt.options.nitro?.static,
|
|
2267
|
+
preset: nuxt.options.nitro?.preset || process.env.NITRO_PRESET || process.env.SERVER_PRESET
|
|
2268
|
+
});
|
|
2269
|
+
if (!staticProxyTarget) {
|
|
2270
|
+
addServerHandler({ route: `${proxyPrefix}/**`, handler: proxyHandlerPath });
|
|
2271
|
+
}
|
|
2247
2272
|
if (nuxt.options.dev && config.registry?.vercelAnalytics) {
|
|
2248
2273
|
addServerHandler({
|
|
2249
2274
|
route: "/_vercel/insights/**",
|
|
@@ -2393,6 +2418,7 @@ const module$1 = defineNuxtModule({
|
|
|
2393
2418
|
}
|
|
2394
2419
|
const partytownScripts = /* @__PURE__ */ new Set();
|
|
2395
2420
|
let anyNeedsProxy = false;
|
|
2421
|
+
const proxyConfiguredKeys = [];
|
|
2396
2422
|
const registryKeys = Object.keys(config.registry || {});
|
|
2397
2423
|
for (const key of registryKeys) {
|
|
2398
2424
|
const script = scriptByKey.get(key);
|
|
@@ -2403,8 +2429,10 @@ const module$1 = defineNuxtModule({
|
|
|
2403
2429
|
const inputOptions = entry?.[0] || {};
|
|
2404
2430
|
const mergedOverrides = { ...inputOptions, ...scriptOptions };
|
|
2405
2431
|
const resolved = resolveCapabilities(script, mergedOverrides);
|
|
2406
|
-
if (resolved.proxy)
|
|
2432
|
+
if (resolved.proxy) {
|
|
2407
2433
|
anyNeedsProxy = true;
|
|
2434
|
+
proxyConfiguredKeys.push(key);
|
|
2435
|
+
}
|
|
2408
2436
|
if (resolved.partytown) {
|
|
2409
2437
|
partytownScripts.add(key);
|
|
2410
2438
|
const forwards = getPartytownForwards(script);
|
|
@@ -2420,7 +2448,7 @@ const module$1 = defineNuxtModule({
|
|
|
2420
2448
|
}
|
|
2421
2449
|
const proxyAlias = config.proxy?.alias;
|
|
2422
2450
|
let domainAliases = {};
|
|
2423
|
-
if (anyNeedsProxy) {
|
|
2451
|
+
if (anyNeedsProxy && !staticProxyTarget) {
|
|
2424
2452
|
const builtConfigs = buildProxyConfigsFromRegistry(registryScripts, scriptByKey);
|
|
2425
2453
|
Object.assign(proxyConfigs, builtConfigs);
|
|
2426
2454
|
const domainPrivacy = {};
|
|
@@ -2505,15 +2533,6 @@ They will load directly from third-party servers.`
|
|
|
2505
2533
|
if (totalDomains > 0 && nuxt.options.dev) {
|
|
2506
2534
|
logger.success(`Proxy mode enabled for ${registryKeys.length} script(s), ${totalDomains} domain(s) proxied (privacy: ${privacyLabel})`);
|
|
2507
2535
|
}
|
|
2508
|
-
const proxyStaticPresets = ["static", "github-pages", "cloudflare-pages-static", "netlify-static", "azure-static", "firebase-static"];
|
|
2509
|
-
const proxyPreset = process.env.NITRO_PRESET || "";
|
|
2510
|
-
if (proxyStaticPresets.includes(proxyPreset)) {
|
|
2511
|
-
logger.warn(
|
|
2512
|
-
`Proxy collection endpoints require a server runtime (detected: ${proxyPreset || "static"}).
|
|
2513
|
-
Scripts will be bundled, but collection requests will not be proxied and URL signing will be unavailable.
|
|
2514
|
-
Options: configure platform rewrites, switch to server-rendered mode, or disable with proxy: false.`
|
|
2515
|
-
);
|
|
2516
|
-
}
|
|
2517
2536
|
if (nuxt.options.dev) {
|
|
2518
2537
|
nuxt.options.runtimeConfig.public["nuxt-scripts-devtools"] = buildDevtoolsData(proxyPrefix, privacyLabel, devtoolsScripts, aliasToDomain);
|
|
2519
2538
|
}
|
|
@@ -2527,6 +2546,12 @@ Options: configure platform rewrites, switch to server-rendered mode, or disable
|
|
|
2527
2546
|
logger.warn("[partytown] Custom resolveUrl already set. Add proxy rules to your resolveUrl manually.");
|
|
2528
2547
|
}
|
|
2529
2548
|
}
|
|
2549
|
+
} else if (anyNeedsProxy) {
|
|
2550
|
+
logger.warn(
|
|
2551
|
+
`[nuxt-scripts] Static output detected (nuxi generate or a static Nitro preset); the scripts proxy requires a server runtime.
|
|
2552
|
+
Proxying, its privacy anonymization, and proxy URL signing are disabled for: ${proxyConfiguredKeys.join(", ")}. Scripts still bundle, and their requests go directly to their third-party origins.
|
|
2553
|
+
Deploy the Nuxt server output (nuxt build) to enable proxying.`
|
|
2554
|
+
);
|
|
2530
2555
|
}
|
|
2531
2556
|
const moduleInstallPromises = /* @__PURE__ */ new Map();
|
|
2532
2557
|
addBuildPlugin(NuxtScriptsCheckScripts(), {
|
|
@@ -2596,17 +2621,14 @@ Options: configure platform rewrites, switch to server-rendered mode, or disable
|
|
|
2596
2621
|
{ endpoints: enabledEndpoints },
|
|
2597
2622
|
nuxt.options.runtimeConfig.public["nuxt-scripts"]
|
|
2598
2623
|
);
|
|
2599
|
-
const staticPresets = ["static", "github-pages", "cloudflare-pages-static", "netlify-static", "azure-static", "firebase-static"];
|
|
2600
|
-
const nitroPreset = process.env.NITRO_PRESET || "";
|
|
2601
|
-
const isStaticTarget = staticPresets.includes(nitroPreset);
|
|
2602
2624
|
const isSpa = nuxt.options.ssr === false;
|
|
2603
2625
|
if (config.security === false) {
|
|
2604
2626
|
if (anyHandlerRequiresSigning && !nuxt.options.dev) {
|
|
2605
2627
|
logger.info("[security] Proxy security disabled via `security: false`. Proxy endpoints will pass requests through without signature verification.");
|
|
2606
2628
|
}
|
|
2607
|
-
} else if (anyHandlerRequiresSigning && (isSpa ||
|
|
2629
|
+
} else if (anyHandlerRequiresSigning && (isSpa || staticProxyTarget)) {
|
|
2608
2630
|
logger.warn(
|
|
2609
|
-
`[security] URL signing requires a server runtime${
|
|
2631
|
+
`[security] URL signing requires a server runtime${staticProxyTarget ? " (static output)" : " (ssr: false)"}.
|
|
2610
2632
|
Proxy endpoints will work without signature verification.
|
|
2611
2633
|
To enable signing, deploy with a server-rendered target or configure platform-level rewrites.`
|
|
2612
2634
|
);
|
|
@@ -2641,4 +2663,4 @@ Options: configure platform rewrites, switch to server-rendered mode, or disable
|
|
|
2641
2663
|
}
|
|
2642
2664
|
});
|
|
2643
2665
|
|
|
2644
|
-
export { applyAutoInject, module$1 as default, findMissingRequiredFields, isProxyDisabled, resolveConfiguredProxyDomains, resolveProxySecret };
|
|
2666
|
+
export { STATIC_PROXY_PRESETS, applyAutoInject, module$1 as default, findMissingRequiredFields, isProxyDisabled, isStaticProxyTarget, normalizeNitroPreset, resolveConfiguredProxyDomains, resolveProxySecret };
|
|
@@ -62,9 +62,17 @@ export interface GoogleTagManagerApi {
|
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* Enhanced window type with GTM
|
|
65
|
+
*
|
|
66
|
+
* `dataLayer` is deliberately NOT declared globally. Its name is configurable through the
|
|
67
|
+
* `l` / `dataLayer` options, so `window.dataLayer` is not guaranteed to exist, and declaring it
|
|
68
|
+
* here makes this package irreconcilable with any other package that declares `Window.dataLayer`
|
|
69
|
+
* (for example `@gtm-support/core`, used by `@gtm-support/vue-gtm`): the two declarations cannot
|
|
70
|
+
* merge, so consumers of both get an unsuppressable TS2430 at every one of their own `Window`
|
|
71
|
+
* augmentations. Read it through the typed proxy returned by `useScriptGoogleTagManager()`
|
|
72
|
+
* instead, which is also the only access path that respects a custom dataLayer name.
|
|
65
73
|
*/
|
|
66
74
|
declare global {
|
|
67
|
-
interface Window extends GoogleTagManagerApi {
|
|
75
|
+
interface Window extends Pick<GoogleTagManagerApi, 'google_tag_manager'> {
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
export { GoogleTagManagerOptions };
|
|
@@ -57,6 +57,8 @@ export interface CachedBinaryResult extends CachedBinaryResponse {
|
|
|
57
57
|
body: Buffer;
|
|
58
58
|
status: number;
|
|
59
59
|
}
|
|
60
|
+
/** How long a failed upstream fetch is replayed before the upstream is tried again. */
|
|
61
|
+
export declare const UPSTREAM_FAILURE_MAX_AGE = 60;
|
|
60
62
|
export declare function isSafeHttpsUrl(url: URL): boolean;
|
|
61
63
|
/**
|
|
62
64
|
* Cache upstream binary/image fetches. Returns a helper that restores the
|
|
@@ -6,6 +6,10 @@ import { NUXT_SCRIPTS_CACHE_BASE } from "./cache-config.js";
|
|
|
6
6
|
import { closePublicNetworkDispatcher, createPublicNetworkDispatcher, isPublicNetworkHostname } from "./network-host.js";
|
|
7
7
|
const DEFAULT_BINARY_MAX_RESPONSE_BYTES = 10 * 1024 * 1024;
|
|
8
8
|
const DEFAULT_JSON_MAX_RESPONSE_BYTES = 2 * 1024 * 1024;
|
|
9
|
+
const TIMEOUT_ERROR_NAMES = /* @__PURE__ */ new Set(["AbortError", "BodyTimeoutError", "HeadersTimeoutError", "TimeoutError"]);
|
|
10
|
+
const DEFAULT_UPSTREAM_TIMEOUT_MS = 1e4;
|
|
11
|
+
const MAX_TRACKED_FAILURES = 512;
|
|
12
|
+
export const UPSTREAM_FAILURE_MAX_AGE = 60;
|
|
9
13
|
export function isSafeHttpsUrl(url) {
|
|
10
14
|
return url.protocol === "https:" && !url.username && !url.password && (!url.port || url.port === "443") && isPublicNetworkHostname(url.hostname);
|
|
11
15
|
}
|
|
@@ -15,6 +19,51 @@ function upstreamError(message, statusCode, statusMessage, cause) {
|
|
|
15
19
|
statusMessage
|
|
16
20
|
});
|
|
17
21
|
}
|
|
22
|
+
function asUpstreamError(error) {
|
|
23
|
+
if (typeof error?.statusCode === "number")
|
|
24
|
+
return error;
|
|
25
|
+
const timedOut = isTimeoutError(error);
|
|
26
|
+
return upstreamError(
|
|
27
|
+
`Upstream request failed: ${error?.message || "unknown error"}`,
|
|
28
|
+
timedOut ? 504 : 502,
|
|
29
|
+
timedOut ? "Gateway Timeout" : "Upstream request failed",
|
|
30
|
+
error
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
function isTimeoutError(error) {
|
|
34
|
+
const candidate = error;
|
|
35
|
+
const code = candidate?.cause?.code;
|
|
36
|
+
return TIMEOUT_ERROR_NAMES.has(candidate?.name || "") || TIMEOUT_ERROR_NAMES.has(candidate?.cause?.name || "") || typeof code === "string" && code.includes("TIMEOUT");
|
|
37
|
+
}
|
|
38
|
+
function createFailureGate(maxAge) {
|
|
39
|
+
const failures = /* @__PURE__ */ new Map();
|
|
40
|
+
const failureWindow = Math.min(UPSTREAM_FAILURE_MAX_AGE, maxAge) * 1e3;
|
|
41
|
+
return {
|
|
42
|
+
replay(key) {
|
|
43
|
+
const failure = failures.get(key);
|
|
44
|
+
if (!failure)
|
|
45
|
+
return;
|
|
46
|
+
if (Date.now() >= failure.until) {
|
|
47
|
+
failures.delete(key);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
throw upstreamError(failure.error.message, failure.error.statusCode, failure.error.statusMessage);
|
|
51
|
+
},
|
|
52
|
+
record(key, error) {
|
|
53
|
+
const failure = error;
|
|
54
|
+
if (failures.size >= MAX_TRACKED_FAILURES)
|
|
55
|
+
failures.delete(failures.keys().next().value);
|
|
56
|
+
failures.set(key, {
|
|
57
|
+
until: Date.now() + failureWindow,
|
|
58
|
+
error: {
|
|
59
|
+
message: failure?.message || "Upstream request failed",
|
|
60
|
+
statusCode: failure?.statusCode ?? 502,
|
|
61
|
+
statusMessage: failure?.statusMessage || "Upstream request failed"
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
18
67
|
function resolveMaxResponseBytes(value, fallback) {
|
|
19
68
|
const maxBytes = value ?? fallback;
|
|
20
69
|
if (!Number.isSafeInteger(maxBytes) || maxBytes < 0)
|
|
@@ -138,10 +187,11 @@ async function fetchBoundedUpstream(url, options) {
|
|
|
138
187
|
}
|
|
139
188
|
}
|
|
140
189
|
if (!options.ignoreResponseError && response.status >= 400 && response.status < 600) {
|
|
190
|
+
const upstreamFault = response.status >= 500;
|
|
141
191
|
await rejectResponse(response, upstreamError(
|
|
142
192
|
`Upstream request failed with status ${response.status}`,
|
|
143
|
-
response.status,
|
|
144
|
-
response.statusText || "Upstream request failed"
|
|
193
|
+
upstreamFault ? 502 : response.status,
|
|
194
|
+
upstreamFault ? "Upstream request failed" : response.statusText || "Upstream request failed"
|
|
145
195
|
));
|
|
146
196
|
}
|
|
147
197
|
const contentType = response.headers.get("content-type");
|
|
@@ -168,16 +218,35 @@ async function fetchBoundedUpstream(url, options) {
|
|
|
168
218
|
return { contentType, data, status: response.status };
|
|
169
219
|
}
|
|
170
220
|
} catch (error) {
|
|
171
|
-
primaryError = error;
|
|
172
|
-
throw
|
|
221
|
+
primaryError = asUpstreamError(error);
|
|
222
|
+
throw primaryError;
|
|
173
223
|
} finally {
|
|
174
224
|
await closePublicNetworkDispatcher(network, primaryError);
|
|
175
225
|
}
|
|
176
226
|
}
|
|
177
227
|
export function createCachedBinaryFetch(name, maxAge, config = {}) {
|
|
178
228
|
const maxResponseBytes = resolveMaxResponseBytes(config.maxResponseBytes, DEFAULT_BINARY_MAX_RESPONSE_BYTES);
|
|
229
|
+
const failureGate = createFailureGate(maxAge);
|
|
230
|
+
const cacheKey = (url, opts) => {
|
|
231
|
+
if (!opts)
|
|
232
|
+
return hash(url);
|
|
233
|
+
const parts = [url];
|
|
234
|
+
if (opts.headers) {
|
|
235
|
+
const entries = Object.entries(opts.headers).sort(([a], [b]) => a.localeCompare(b));
|
|
236
|
+
for (const [k, v] of entries)
|
|
237
|
+
parts.push(`${k}=${v}`);
|
|
238
|
+
}
|
|
239
|
+
if (opts.redirect)
|
|
240
|
+
parts.push(`redirect=${opts.redirect}`);
|
|
241
|
+
if (opts.ignoreResponseError !== void 0)
|
|
242
|
+
parts.push(`ignoreResponseError=${opts.ignoreResponseError}`);
|
|
243
|
+
return hash(parts);
|
|
244
|
+
};
|
|
245
|
+
const gateKey = (url, opts) => `${cacheKey(url, opts)}:${opts?.timeout ?? DEFAULT_UPSTREAM_TIMEOUT_MS}`;
|
|
179
246
|
const cached = defineCachedFunction(
|
|
180
247
|
async (url, opts) => {
|
|
248
|
+
const key = gateKey(url, opts);
|
|
249
|
+
failureGate.replay(key);
|
|
181
250
|
const response = await fetchBoundedUpstream(url, {
|
|
182
251
|
allowContentType: config.allowContentType,
|
|
183
252
|
allowUrl: config.allowUrl,
|
|
@@ -186,7 +255,10 @@ export function createCachedBinaryFetch(name, maxAge, config = {}) {
|
|
|
186
255
|
maxRedirects: config.maxRedirects,
|
|
187
256
|
maxResponseBytes,
|
|
188
257
|
redirect: opts?.redirect ?? (config.allowUrl ? "follow" : "manual"),
|
|
189
|
-
timeoutMs: opts?.timeout ??
|
|
258
|
+
timeoutMs: opts?.timeout ?? DEFAULT_UPSTREAM_TIMEOUT_MS
|
|
259
|
+
}).catch((error) => {
|
|
260
|
+
failureGate.record(key, error);
|
|
261
|
+
throw error;
|
|
190
262
|
});
|
|
191
263
|
return {
|
|
192
264
|
base64: response.data.byteLength ? Buffer.from(response.data).toString("base64") : "",
|
|
@@ -200,21 +272,7 @@ export function createCachedBinaryFetch(name, maxAge, config = {}) {
|
|
|
200
272
|
maxAge,
|
|
201
273
|
swr: true,
|
|
202
274
|
staleMaxAge: maxAge,
|
|
203
|
-
getKey:
|
|
204
|
-
if (!opts)
|
|
205
|
-
return hash(url);
|
|
206
|
-
const parts = [url];
|
|
207
|
-
if (opts.headers) {
|
|
208
|
-
const entries = Object.entries(opts.headers).sort(([a], [b]) => a.localeCompare(b));
|
|
209
|
-
for (const [k, v] of entries)
|
|
210
|
-
parts.push(`${k}=${v}`);
|
|
211
|
-
}
|
|
212
|
-
if (opts.redirect)
|
|
213
|
-
parts.push(`redirect=${opts.redirect}`);
|
|
214
|
-
if (opts.ignoreResponseError !== void 0)
|
|
215
|
-
parts.push(`ignoreResponseError=${opts.ignoreResponseError}`);
|
|
216
|
-
return hash(parts);
|
|
217
|
-
}
|
|
275
|
+
getKey: cacheKey
|
|
218
276
|
}
|
|
219
277
|
);
|
|
220
278
|
return async (url, opts) => {
|
|
@@ -227,8 +285,13 @@ export function createCachedBinaryFetch(name, maxAge, config = {}) {
|
|
|
227
285
|
}
|
|
228
286
|
export function createCachedJsonFetch(name, maxAge, getKey, config) {
|
|
229
287
|
const maxResponseBytes = resolveMaxResponseBytes(config.maxResponseBytes, DEFAULT_JSON_MAX_RESPONSE_BYTES);
|
|
288
|
+
const failureGate = createFailureGate(maxAge);
|
|
289
|
+
const cacheKey = (url, opts) => hash(getKey(url, opts));
|
|
290
|
+
const gateKey = (url, opts) => `${cacheKey(url, opts)}:${opts?.timeout ?? DEFAULT_UPSTREAM_TIMEOUT_MS}`;
|
|
230
291
|
return defineCachedFunction(
|
|
231
292
|
async (url, opts) => {
|
|
293
|
+
const key = gateKey(url, opts);
|
|
294
|
+
failureGate.replay(key);
|
|
232
295
|
const response = await fetchBoundedUpstream(url, {
|
|
233
296
|
allowUrl: config.allowUrl,
|
|
234
297
|
contentTypePrefixes: config.contentTypePrefixes,
|
|
@@ -237,7 +300,10 @@ export function createCachedJsonFetch(name, maxAge, getKey, config) {
|
|
|
237
300
|
maxRedirects: config.maxRedirects,
|
|
238
301
|
maxResponseBytes,
|
|
239
302
|
redirect: "follow",
|
|
240
|
-
timeoutMs: opts?.timeout ??
|
|
303
|
+
timeoutMs: opts?.timeout ?? DEFAULT_UPSTREAM_TIMEOUT_MS
|
|
304
|
+
}).catch((error) => {
|
|
305
|
+
failureGate.record(key, error);
|
|
306
|
+
throw error;
|
|
241
307
|
});
|
|
242
308
|
const text = new TextDecoder().decode(response.data);
|
|
243
309
|
let data;
|
|
@@ -250,7 +316,12 @@ export function createCachedJsonFetch(name, maxAge, getKey, config) {
|
|
|
250
316
|
throw upstreamError("Upstream response is not valid JSON", 502, "Invalid upstream response", cause);
|
|
251
317
|
}
|
|
252
318
|
}
|
|
253
|
-
|
|
319
|
+
try {
|
|
320
|
+
config.validateResponse?.(data);
|
|
321
|
+
} catch (error) {
|
|
322
|
+
failureGate.record(key, error);
|
|
323
|
+
throw error;
|
|
324
|
+
}
|
|
254
325
|
return data;
|
|
255
326
|
},
|
|
256
327
|
{
|
|
@@ -259,7 +330,7 @@ export function createCachedJsonFetch(name, maxAge, getKey, config) {
|
|
|
259
330
|
maxAge,
|
|
260
331
|
swr: true,
|
|
261
332
|
staleMaxAge: maxAge,
|
|
262
|
-
getKey:
|
|
333
|
+
getKey: cacheKey
|
|
263
334
|
}
|
|
264
335
|
);
|
|
265
336
|
}
|
package/dist/types.d.mts
CHANGED
|
@@ -6,6 +6,6 @@ declare module '@nuxt/schema' {
|
|
|
6
6
|
|
|
7
7
|
export { type FirstPartyPrivacy } from '../dist/runtime/types.js'
|
|
8
8
|
|
|
9
|
-
export { type applyAutoInject, default, type findMissingRequiredFields, type isProxyDisabled, type resolveConfiguredProxyDomains, type resolveProxySecret } from './module.mjs'
|
|
9
|
+
export { type STATIC_PROXY_PRESETS, type applyAutoInject, default, type findMissingRequiredFields, type isProxyDisabled, type isStaticProxyTarget, type normalizeNitroPreset, type resolveConfiguredProxyDomains, type resolveProxySecret } from './module.mjs'
|
|
10
10
|
|
|
11
11
|
export { type ModuleHooks, type ModuleOptions, type ResolvedProxySecret } from './module.mjs'
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"173480db-0944-415b-962d-d619682f0042","timestamp":1786893482052,"prerendered":[]}
|