- let { serverURL, website_id, option, UV_PV } = theme.umami_analytics - const isServerURL = !!serverURL - const baseURL = serverURL ? serverURL.replace(/\/$/, '') : 'https://cloud.umami.is' - const apiUrl = serverURL ? serverURL.replace(/\/$/, '') + '/api' : 'https://api.umami.is/v1' script. (() => { const option = !{JSON.stringify(option)} const config = !{JSON.stringify(UV_PV)} const runTrack = () => { umami.track(props => ({ ...props, url: window.location.pathname, title: GLOBAL_CONFIG_SITE.title })) } const loadUmamiJS = () => { btf.getScript('!{baseURL}/script.js', { 'data-website-id': '!{website_id}', 'data-auto-track': 'false', ...option }).then(runTrack) } const getData = async (isPost) => { const now = Date.now() const keyUrl = isPost ? `&url=${window.location.pathname}` : '' const headerList = { 'Accept': 'application/json' } if (!{isServerURL}) headerList['Authorization'] = `Bearer ${config.token}` else headerList['x-umami-api-key'] = config.token const res = await fetch(`!{apiUrl}/websites/!{website_id}/stats?startAt=0000000000&endAt=${now}${keyUrl}`, { method: "GET", headers: headerList }) return await res.json() } const insertData = async () => { try { if (GLOBAL_CONFIG_SITE.isPost && config.page_pv) { const pagePV = document.getElementById('umamiPV') if (pagePV) { const data = await getData(true) pagePV.textContent = data.pageviews.value } } else { const data = (config.site_uv || config.site_pv) && await getData() if (config.site_uv) { const siteUV = document.getElementById('umami-site-uv') if (siteUV) siteUV.textContent = data.visitors.value } if (config.site_pv) { const sitePV = document.getElementById('umami-site-pv') if (sitePV) sitePV.textContent = data.pageviews.value } } } catch (e) { console.error('Failed to load Umami Analytics:', e) } } btf.addGlobalFn('pjaxComplete', runTrack, 'umami_analytics_run_track') btf.addGlobalFn('pjaxComplete', insertData, 'umami_analytics_insert') loadUmamiJS() insertData() })()