@yeskunall/astro-umami
Version:
Add Umami Analytics to your Astro website
28 lines (23 loc) • 1.77 kB
JavaScript
async function g({mode:r,options:i}){let{autotrack:t=!0,beforeSendHandler:e,domains:n=[],doNotTrack:a=!1,endpointUrl:p="https://cloud.umami.is",excludeHash:o=!1,excludeSearch:s=!1,hostUrl:c="https://cloud.umami.is",id:l,tag:d,trackerScriptName:m="script.js",withPartytown:b=!1}=i,h=new URL(p).hostname,f=[t?"":`script.setAttribute("data-auto-track", "${t}")`,e?`script.setAttribute("data-before-send", "${e}")`:"",n.length>0?`script.setAttribute("data-domains", "${n.join(",")}")`:"",a?`script.setAttribute("data-do-not-track", "${a}")`:"",o?`script.setAttribute("data-exclude-hash", "${o}")`:"",s?`script.setAttribute("data-exclude-search", "${s}")`:"",c!=="https://cloud.umami.is"?`script.setAttribute("data-host-url", "${c}")`:"",d?`script.setAttribute("data-tag", "${d}")`:"",b?'script.setAttribute("type", "text/partytown")':""].filter(Boolean).join(`;
`),u=`
var script = document.createElement("script");
var viewTransitionsEnabled = document.querySelector("meta[name='astro-view-transitions-enabled']")?.content;
script.setAttribute("src", "https://${h}/${m}");
script.setAttribute("defer", true);
script.setAttribute("data-website-id", "${l}");
${f};
if (!!viewTransitionsEnabled) {
script.setAttribute("data-astro-rerun", true);
}
var head = document.querySelector("head");
head.appendChild(script);
`;return r==="development"?`
(function () {
localStorage.setItem("umami.disabled", "1");
${u}
})()
`:`
(function () {
${u}
})()
`}function A(r){return{name:"@yeskunall/astro-umami",hooks:{"astro:config:setup":async({command:i,injectScript:t})=>{let e=await g({mode:i==="dev"?"development":"production",options:r});t("head-inline",e)}}}}export{A as default};